问题标签 [language-design]

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.

0 投票
8 回答
4149 浏览

c++ - 为什么编译需要这么长时间?

我正在设计一种编程语言,我在想的一个问题是为什么编程语言需要很长时间才能编译。假设 c++ 需要很长时间,因为它需要在每次编译文件时解析和编译头文件。但是我听说预编译的头文件需要很长时间?我怀疑 C++ 不是唯一有这个问题的语言。

0 投票
13 回答
2618 浏览

language-design - 谈到编程语言,Magic 的定义是什么?

“魔法”这个词在这里被广泛使用,例如“语言 X 有太多魔法”或“平台 Y 通常避免魔法”。然而,这个词的定义似乎很不明确,人们看到它就知道了。例如,Java 被认为包含的魔法很少,但它的垃圾收集器对程序员隐藏了很多东西。如果魔术只是意味着隐藏细节的抽象,那么既然没有人再用汇编语言编写大型程序,为什么它被认为是一件坏事呢?如果魔法意味着更多,那么它意味着什么?

0 投票
5 回答
2822 浏览

actionscript-3 - 不可变集合 Actionscript 3

我最近一直在尝试在 AS3 中实现一些干净的编码实践。其中之一是不放弃对包含对象的数组的引用。关键是我控制一个类的添加和删除,而数组的所有其他用户都接收只读版本。

目前只读版本是我写的一个ArrayIterator类,它实现了一个典型的Iterator接口(hasNext,getNext)。它还扩展了Proxy,因此它可以像 Array 一样用于每个循环。

所以我的问题是这不应该是许多语言的基本特征吗?将引用传递给集合的只读视图的能力?

同样,现在 AS3 中的集合的类型安全性得到了改进,以Vector类的形式,当我将 aa Vector 包装在VectorIterator中时,为了不变性,我失去了输入。有没有办法在 AS3 中实现这两个愿望,不变性和打字?

0 投票
9 回答
1570 浏览

.net - 编写迷你语言

我有一个应用程序需要允许用户编写类似于 excel 的表达式:

(H1 + (D1 / C3)) * I8

还有更复杂的事情,比如

如果(H1 = '真',D3 * .2,D3 * .5)

我只能用正则表达式做这么多。任何关于正确方法的建议以及我可以从中学习的任何资源都将不胜感激。

谢谢!

0 投票
23 回答
3406 浏览

c++ - 人们离开 C++ 需要什么?

即使是大多数喜欢 C++ 的人也承认,它有很多与其作为系统/性能编程语言的利基无关的缺陷。其中包括其过时的模块管理系统(头文件)、对前向声明的要求、使其语法无法确定的语法怪癖(例如用于模板声明的 <> 尖括号)、包含在文本级别而不是真实语言操作的宏用于解决宏所用事物的功能,重复功能,如数组和字符串(这些类型的 STL 和 C 版本),几乎没有语法糖,以及普遍缺乏现代功能,如线程、垃圾收集、委托/闭包,等(注意:是的,在内存非常有限或实时环境中,您可能有充分的理由不想要垃圾收集,

另一方面,C++ 是唯一一种可以让您高效编写代码并接近金属,而且至少提供一些高级抽象的主流语言。它成熟、标准化,拥有大量编译器实现和库以及大型遗留代码库。

对于那些使用 C++ 作为主要语言的人来说,是什么让你个人认为它的缺点是值得忍受的?怎样才能让你改变主意并决定使用一种新的语言,这种语言的缺陷更少?你使用 C++ 是因为你真的喜欢它,还是因为遗留问题而不情愿地使用它,或者因为它的利基市场没有其他成熟的主流语言存在?

0 投票
4 回答
366 浏览

javascript - 可以从 javascript 中的原型模型中学到什么?

这个问题是从语言设计的角度来看的。

我应该稍微解释一下情况。我正在研究一个不支持原型的 javascript 变体,但是它已经过期了一个体面的类型系统(最重要的是支持 instanceof)。ecmascript 规范并不重要,所以我可以自由地实现一些不同且更适合的东西。

在变体中:-

  • 您不使用 声明构造函数function foo(),而是在模板文件中声明构造函数,这意味着构造函数存在于命名空间中(由文件的路径确定)
  • 目前,所有行为的继承都是通过应用模板来完成的,这意味着所有共享函数都被复制到每个单独的对象(毕竟没有原型)。

从来没有做过网络开发人员,这让我处于一个有点奇怪的位置,从来没有在愤怒中使用过原型。尽管这并没有阻止我对他们发表意见。

据我了解,我对原型模型的主要问题是

  • 对象命名空间、obj.prototype、obj.constructor 不必要的乱扔垃圾(这是一个不成熟的反对意见,试图保留将对象视为映射的能力,也许它们不是?)
  • 在运行时更改共享行为的能力似乎没有必要,因为直接使用额外的间接级别会更直接obj.shared.foo()。特别是它是一个相当大的实现头痛
  • 人们似乎不太了解原型,例如原型和构造函数之间的区别。

所以为了解决这些问题,我的想法是有一个特殊的 operator constructorsof。基本上,原则是每个对象都有一个构造函数列表,有时您会想要访问这些构造函数。

感谢所有反馈,我很感激可能很难欣赏我的 POV,因为我试图传达很多东西,但这是一个重要的决定和专家意见可能是无价的。

  • 任何可以提高我对原型模型的理解的东西,好的和坏的。
  • 对我的提议的想法

谢谢,

麦克风

编辑:希望提案现在有意义。

0 投票
14 回答
1341 浏览

regex - 为什么正则表达式不能使用关键字而不是字符?

好吧,我几乎不了解 RegEx 基础知识,但为什么他们不能将其设计为使用关键字(如 SQL)而不是一些神秘的通配符和符号?

由于 RegEx 在运行时被解释/解析,是为了性能吗?(未编译)

或者也许是为了写作速度?考虑到当您学习一些“简单”的字符组合时,键入 1 个字符而不是关键字会变得更容易?

0 投票
2 回答
1989 浏览

.net - 为什么 VB.NET 中的可选类属性有一种奇怪的语法?

我只是好奇为什么 VB.NET 中的类/属性属性有一个奇怪的可选语法,例如:

VB.NET 允许您设置这样的可选参数以避免订单限制(这很可爱),但在这种情况下,它迫使您这样做。

例如这是不可能的:

即使参数与原始定义的顺序相同。

这有什么好的理由吗?还是只是 .NET 设计者在这个问题上懒惰?

0 投票
5 回答
3025 浏览

c# - VB.NET 中的 foreach 是否比 c# 中的更快?

我的同事说,在之前的一次采访中,他了解到 VB.Net 中的 foreach 比 c# 中的 foreach 更快。他被告知这是因为两者都有不同的 CLR 实现。

从 C++ 的角度来看,我很好奇为什么会这样,我被告知我需要先阅读 CLR。谷歌搜索 foreach 和 CLR 并不能帮助我理解。

有没有人很好地解释为什么 foreach 在 VB.Net 中比在 c# 中更快?还是我的同事被误导了?

0 投票
5 回答
31440 浏览

c# - 为什么在字符串中添加 null 是合法的?

MSDN 关于字符串基础的文章显示了这一点:

为什么不与 null 连接会引发空引用异常?是为了让程序员的生活更轻松,这样他们就不必在连接之前检查 null 了吗?