问题标签 [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.
java - 为什么 Java 不允许 Throwable 的泛型子类?
根据Java 语言规范,第 3 版:
我想了解为什么做出这个决定。通用异常有什么问题?
(据我所知,泛型只是编译时的语法糖,Object
无论如何它们都会在.class
文件中被翻译,所以有效地声明一个泛型类就好像它里面的所有东西都是一个Object
. 如果我错了,请纠正我.)
language-design - 为什么许多语言区分大小写?
为什么许多语言区分大小写?
仅仅是继承的问题吗?C++ 是区分大小写的,因为 C 是,Java 是区分大小写的,因为 C++ 是,等等?还是背后有更务实的原因?
python - 从函数返回多个值的优雅方法
似乎在大多数主流编程语言中,从一个函数返回多个值是一件非常尴尬的事情。
典型的解决方案是创建一个结构或一个普通的旧数据类并返回它,或者通过引用或指针传递至少一些参数而不是返回它们。
使用引用/指针非常尴尬,因为它依赖于副作用并且意味着您还有另一个参数要传递。
恕我直言,类/结构解决方案也很尴尬,因为您最终会得到一百万个仅用于从函数返回值的小类/结构,从而产生不必要的混乱和冗长。
此外,很多时候总是需要一个返回值,其余的仅在某些情况下由调用者使用。这些解决方案都不允许调用者忽略不需要的返回类型。
我所知道的可以优雅地处理多个返回值的一种语言是 Python。对于那些不熟悉的人,它使用元组解包:
有没有人对这个问题有任何其他好的解决方案?欢迎使用除 Python 之外的现有主流语言和您在非主流语言中看到的语言级解决方案的两种习语。
compiler-construction - 你自己的编程语言会是什么样子?
你自己的(我认为是完美的)编程语言会是什么样子?举一个小例子,解释你的新奇想法!
我真的对语法很感兴趣。
c++ - 没有歧义的命名空间规范
为什么有些语言,如 C++ 和 Python,即使不存在歧义,也需要指定对象的命名空间?我知道这有后门,比如using namespace x
在 C++ 或from x import *
Python 中。但是,当只有一个可访问的命名空间包含给定的标识符并且不存在歧义时,我无法理解不希望语言“做正确的事情”背后的理由。对我来说,这只是不必要的冗长和违反 DRY,因为你被迫指定编译器已经知道的东西。
例如:
比。
javascript - JavaScript 中“this”关键字行为的基本原理是什么?
我是从语言设计的角度来问这个的。所以我试图找出
- 的行为的基本原理是
this
什么? - 的行为在多大程度上
this
是错误的,或者可以改进?
为了澄清我为什么不安this
,请考虑以下示例:
注意f()
所属的对象是多么容易丢失:从a
,分离this
成为全局对象(window
对于浏览器)。
现在考虑:
根本不使用this
,我们能够建立和维护对象上下文,而不管方法在哪里或如何使用。我不禁想到,凭借闭包提供的力量,它this
变得多余,甚至可能有点危险......
我不是针对 的仇杀this
,也不是要开始争论;我只是想更好地理解它。我确实很欣赏“this”可能很有用,但也认识到它也可能令人困惑......当然会让初学者感到困惑,也许在足够模糊的情况下也会让专家感到困惑。
with
然而,在该语言的其他核心方面似乎可以回避(即 Crockford 和or new
)的时代,它仍然是该语言中一个被大量使用且似乎备受推崇的部分。那我错过了什么,那是this
必不可少的吗?
language-design - 为什么语法糖有时被认为是一件坏事?
恕我直言,语法糖通常使程序比从一组非常简约的原语进行编码更具可读性和更容易理解。我真的没有看到好的,深思熟虑的语法糖的缺点。为什么有些人基本上认为语法糖充其量是多余的,最坏的情况是应该避免的?
编辑:我不想说出名字,但自从人们问起,似乎大多数 C++ 和 Java 程序员,例如,坦率地说,他们并不关心他们的语言完全缺乏语法糖。在很多情况下,他们并不一定只是喜欢语言的其他部分就足以使缺少糖分值得权衡,而是他们真的不在乎。此外,Lisp 程序员似乎几乎为他们语言的奇怪符号感到自豪(我不会称它为语法,因为它在技术上不是),尽管在这种情况下,它更容易理解,因为它允许 Lisp 的元编程工具与它们一样强大。
performance - 如何最小化编程语言的编译时间?
我更多地考虑我正在设计的编程语言。我想知道,有什么方法可以最小化它的编译时间?
language-agnostic - 空的目的是什么?
我在一个编译器类,我们的任务是从头开始创建我们自己的语言。目前我们的困境是是否包含“null”类型。null 提供什么目的?我们团队中的一些人认为这不是绝对必要的,而其他人则支持 null 只是因为它可以提供额外的灵活性。
你有什么想法,特别是支持或反对null?您是否曾经创建过需要 null 的功能?
c# - 为什么 if 语句中的这个字符串初始化会阻止我打印?
如果我有一点问题
但我不能打印你的价值我不知道为什么