问题标签 [programming-languages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ 中的默认传递引用语义
编辑:这个问题更多的是关于语言工程而不是 C++ 本身。我以 C++ 为例来展示我想要的东西,主要是因为我每天都在使用它。我不想知道它在 C++ 上是如何工作的,但我想就如何完成它展开讨论。
这不是它现在的工作方式,这是我希望它可以完成的方式,这肯定会破坏 C 的兼容性,但这就是我认为 extern "C" 的全部意义所在。
我的意思是,在您现在声明的每个函数或方法中,您必须明确写入该对象将通过在其上加上引用运算符的引用发送。我希望每一个非 POD 类型都可以通过引用自动发送,因为我经常使用它,实际上对于大小超过 32 位的每个对象,这几乎是我的每个类。
让我们举例说明一下现在的情况,假设a,b和c是类:
现在我希望:
现在,do_nothing_on_c() 可以像今天一样运行。
这至少对我来说会很有趣,感觉更清楚,而且如果你知道每个非 POD 参数都是通过引用来的,我相信如果你必须明确声明它,错误将是相同的。
这种变化的另一个观点,来自 C 的人,在我看来,引用运算符是一种获取变量address的方法,这就是我用来获取指针的方式。我的意思是,它是同一个运算符,但在不同的上下文中具有不同的语义,这对您来说是不是也有点不对劲?
programming-languages - 什么是指针?
请参阅:了解指针
在许多 C 风格的语言和一些较旧的语言(如 Fortran)中,可以使用Pointers。
作为一个只真正使用基本、javascript 和 actionscript 编程的人,你能向我解释一下指针是什么,它最有用的是什么?
谢谢!
programming-languages - 芥末之类的网络编程语言
有没有像 Fog Creek 的 Wasabi 一样功能的开源或商业网络编程语言?就像您用这种父语言编写 Web 应用程序一样,然后它会编译为 Linux 主机的 php 和 Windows 主机的 ASP.NET。
email - 以编程方式发送大量电子邮件
我需要能够定期向订阅用户发送电子邮件警报。PHP 似乎很难发送一条消息,所以我正在寻找好的替代方案。
如果实现速度足够快,任何语言都可以。发送的邮件数量最终将达到数千。
如果可以避免购买许可软件,那就更好了。
programming-languages - 为 Windows 脚本宿主 (WSH) 编写语言
有没有人有过WSH
以 , , 和(以及其他)方式进行定位的VBScript
经验JScript
,以便PerlScript
可以从命令行使用该语言并嵌入到服务器端网页中?我该去哪里获得这样的信息?xbScript
ForthScript
language-agnostic - 强制转换的能力不会破坏类型变量的目的吗?
所以,我假设我们已经输入了语言,因为我们犯了很多错误......所以输入是让编译器为我们做很多检查并帮助我们的一种方式(请让我知道是不是我的假设不正确)。
但是,如果我们将强制转换引入类型化语言,难道我们不会重新引入我们在无法类型化变量时遇到的大多数问题吗?
我也知道我的假设并不是我们键入变量的唯一原因。请分享我们输入语言的其他一些原因。
programming-languages - 游戏项目开发
我想开发一个包含 3D 世界的游戏,其中简单的 3D 形状相互交互,其中涉及“真实”的物理。
我没有视频游戏编程的经验,我愿意学习,所以我想问一下你会使用哪种编程语言和/或库来制作一个由相互交互的 3D 形状组成的游戏,并且像物理一样“真实” ?
我知道这个问题有多个答案,但我想了解目前最常用的技术是什么。
.net - .NET 中类加载器的等价物
有谁知道是否可以在.NET 中定义等效于“java 自定义类加载器”的内容?
提供一点背景:
我正在开发一种针对 CLR 的新编程语言,称为“Liberty”。该语言的特点之一是它能够定义“类型构造函数”,这是由编译器在编译时执行并生成类型作为输出的方法。它们是泛型的一种概括(该语言中确实有普通的泛型),并允许编写这样的代码(以“Liberty”语法):
“元组”的定义如下:
在这个特定的示例中,类型构造函数tuple
提供了类似于 VB 和 C# 中的匿名类型的东西。
但是,与匿名类型不同,“元组”具有名称并且可以在公共方法签名中使用。
这意味着我需要一种方法,让最终由编译器发出的类型可以跨多个程序集共享。例如,我想要
tuple<x as int>
在程序集 A 中定义的类型最终与tuple<x as int>
程序集 B 中定义的类型相同。
当然,这样做的问题是程序集 A 和程序集 B 将在不同的时间编译,这意味着它们最终都会发出自己不兼容的元组类型版本。
我研究了使用某种“类型擦除”来做到这一点,这样我就可以拥有一个包含一堆这样的类型的共享库(这是“Liberty”语法):
然后将访问从 i、j 和 k 元组字段重定向到Field1
、Field2
和Field3
.
然而,这并不是一个真正可行的选择。这意味着在编译时tuple<x as int>
最终tuple<y as int>
会成为不同的类型,而在运行时它们将被视为相同的类型。这会给诸如平等和类型标识之类的事情带来很多问题。这对我的口味来说太抽象了。
其他可能的选择是使用“状态包对象”。但是,使用状态包会破坏语言中支持“类型构造函数”的全部目的。想法是启用“自定义语言扩展”以在编译时生成新类型,编译器可以使用这些新类型进行静态类型检查。
在 Java 中,这可以使用自定义类加载器来完成。基本上可以发出使用元组类型的代码,而无需在磁盘上实际定义类型。然后可以定义一个自定义的“类加载器”,它将在运行时动态生成元组类型。这将允许在编译器内部进行静态类型检查,并将跨编译边界统一元组类型。
然而不幸的是,CLR 不提供对自定义类加载的支持。CLR 中的所有加载都是在程序集级别完成的。可以为每个“构造类型”定义一个单独的程序集,但这会很快导致性能问题(有许多只有一种类型的程序集会使用太多资源)。
所以,我想知道的是:
是否可以在 .NET 中模拟 Java 类加载器之类的东西,我可以在其中发出对不存在类型的引用,然后在需要使用它的代码运行之前在运行时动态生成对该类型的引用?
笔记:
*我实际上已经知道这个问题的答案,我在下面提供了答案。然而,我花了大约 3 天的时间进行研究,并进行了大量的 IL 黑客攻击,以便提出解决方案。我认为在这里记录它是一个好主意,以防其他人遇到同样的问题。*
python - 你能在 Python 的核心类型上修改补丁方法吗?
Ruby 可以向 Number 类和其他核心类型添加方法以获得如下效果:
但似乎 Python 无法做到这一点。这是真的?如果是这样,为什么?这与无法修改类型的事实有关吗?
更新:与其谈论猴子补丁的不同定义,我只想关注上面的例子。正如你们中的一些人回答的那样,我已经得出结论,它不能做到。但我想更详细地解释为什么它不能完成,如果 Python 中可用的话,也许有什么功能允许这样做。
回答你们中的一些人:我可能想要这样做的原因仅仅是美学/可读性。
这读起来更像英语,并清楚地表明哪个是测试值,哪个是预期值,应该是:
这个概念是Rspec和其他一些 Ruby 框架所基于的。