问题标签 [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 投票
4 回答
689 浏览

scripting - 游戏脚本需要哪些语言功能?

我正在研究设计一种游戏脚本语言,并且想知道游戏行业中雇用的人认为什么是好的游戏脚本语言的基本项目/属性。这包括以下内容:

  • 静态与动态类型
  • 它应该针对谁:程序员还是设计师?
  • 语法(必须看起来像 C 吗?)
  • 应该有多高?(例如 C vs Lisp——或者命令式 vs 函数式)
  • 它必须能够做什么。它需要多快?

另外,我从一些消息来源听说脚本往往非常简单,因为它们是由设计师而不是程序员编写的。是这样吗?

0 投票
9 回答
2338 浏览

php - php的整体设计理念是什么?

我最近通过一个客户端的 Drupal 应用程序第一次接触 PHP (5)。体验当然没有什么困难(例如文档很好),但我从来没有想过,“这真的很聪明!”,或者“哇,这使用起来很有趣!” 此外,我无法准确预测函数将如何命名,也无法确定要遵循的指导原则。

这与 Ruby 形成鲜明对比,例如,在 Ruby 中,一切都是对象,方法是可预测的和伪多态的,块使用起来很有趣(仅举几个例子)。其他语言的对比亮点:Python 的列表推导改变了你对迭代的看法,C 用它的指针和位操作把你带回了硬件,javascript 的无名函数和对哈希的高级支持令人惊讶,甚至 SQL 在它的硬性迫使你欣赏你的数据并以相关的方式思考它。

那么考虑到这一点,php的亮点是什么?该语言的整体设计理念是什么?我知道 php 总体上并不享有很高的声誉,但我一直听说这是一个认知问题,因为大量非专业开发人员敲打复制和粘贴代码。

编辑:

好的,所以共识是 PHP 是 web 程序员的扳手。我可以接受。我只是在寻找一个洞察力,但我想我已经有了它。例如,我当然很欣赏 mod_php/libphp。而且我能够在没有任何 PHP 经验的情况下在两周内完成我的应用程序,所以我想这也是不言而喻的。

感谢您的帖子。

0 投票
6 回答
64249 浏览

programming-languages - 静态绑定和动态绑定有什么区别?

绑定时间可以分为两种类型:静态和动态。静态绑定和动态绑定有什么区别?

你能举一个简单的例子来进一步说明吗?

0 投票
11 回答
8390 浏览

c++ - 像 C++ 中分离声明和定义的优点和缺点是什么?

在 C++ 中,函数、变量和常量的声明和定义可以像这样分开:

事实上,在类的定义中,经常会出现这种情况。一个类通常在 .h 文件中声明其成员,然后在相应的 .C 文件中定义这些成员。

这种方法的优点和缺点是什么?

0 投票
18 回答
39228 浏览

c - C 宏有什么用?

我已经写了一点 C 语言,我可以很好地阅读它以大致了解它在做什么,但是每次我遇到一个宏时,它都让我彻底崩溃。我最终不得不记住宏是什么,并在阅读时将其替换在脑海中。我遇到的那些直观易懂的总是像小函数一样,所以我一直想知道为什么它们不只是函数。

我可以理解需要在预处理器中为调试或跨平台构建定义不同的构建类型,但定义任意替换的能力似乎只会使已经很难理解的语言变得更加难以理解。

为什么要为 C 引入如此复杂的预处理器?有没有人有一个使用它的例子,这会让我明白为什么它似乎仍然用于#debug 样式条件编译以外的其他目的?

编辑:

阅读了许多答案,我仍然不明白。最常见的答案是内联代码。如果 inline 关键字不这样做,那么要么它有充分的理由不这样做,要么实现需要修复。我不明白为什么需要一种完全不同的机制,这意味着“真正内联这段代码”(除了在内联之前编写的代码之外)。我也不理解提到的“如果它太愚蠢而不能放入函数中”的想法。当然,任何接受输入并产生输出的代码都最好放在函数中。我想我可能没有得到它,因为我不习惯编写 C 的微优化,但预处理器感觉就像是一些简单问题的复杂解决方案。

0 投票
4 回答
1673 浏览

c# - 为什么没有非整数枚举?

为什么不能创建非整数枚举?我想知道这是否是语言设计决定,或者在编译器中实现它是否存在问题。

换句话说,在语言中实现非整数枚举是否可行,但没有正当的需要?或者,如果它不可行但合理,那么有什么障碍?

有人告诉我在 C# 中没有这个功能的原因或理由是什么,非常拜托。

0 投票
2 回答
4185 浏览

python - Python Virtual Machine architecture diagrams/references

Someone could point out sites/books where I can find introductory documentation about the architecture of the Python VM?

I'm interested in the C version, but if there are easy-to-follow references about other implementations it could be helpful too.

I'm trying to find any kind of resources of higher level than plain source code (however, UML diagrams or something like that would be nice) And also, information about the design decisions involved, including tradeoffs between the different factors (performance, stability, simplicity).

0 投票
5 回答
3291 浏览

memory-management - 基于区域的内存管理

我正在设计一种高级语言,我希望它具有 C++ 的速度(它将使用 LLVM),但要像 C# 一样安全和高级。垃圾回收很慢,new/delete 不安全。我决定尝试使用“基于区域的内存管理”(网上有几篇关于它的论文,主要是针对函数式语言)。唯一使用它的“有用”语言是 Cyclone,但它也有 GC。基本上,对象是在词法堆栈上分配的,并在块关闭时被释放。对象只能引用同一区域或更高区域中的其他对象,以防止悬空引用。为了使这更灵活,我添加了可以在堆栈上上下移动的并行区域,并通过循环保留。在大多数情况下,类型系统将能够验证分配,

前任:

这看起来实用吗?我需要添加非词法范围的引用计数区域吗?我是否需要添加可以引用任何对象但检查区域删除的弱变量?您能想到任何算法很难与该系统一起使用或会泄漏吗?

0 投票
7 回答
3350 浏览

language-design - 不可为空的引用类型

我正在设计一种语言,我想知道默认情况下使引用类型不可为空并使用“?”是否合理。对于可空值和引用类型。这有什么问题吗?你会怎么做:

0 投票
2 回答
1562 浏览

language-design - 可变或不可变闭包

在命令式、面向对象的语言中,具有可变或不可变闭包是否更有意义?

例如:

如果闭包是可变的,这将打印:

如果它是不可变的,它将打印:

我意识到即使使用不可变的闭包,您仍然可以这样做:

那么,拥有可变闭包或不可变闭包会更好,还是两者都有选择?不可变闭包似乎更容易实现,所以在这一点上,我想我会继续这样做,除非有充分的理由不这样做。