问题标签 [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.

0 投票
9 回答
7983 浏览

c# - 构建一个简单的解释器

我正在启动一个需要实现轻量级解释器的项目。解释器用于执行简单的科学算法。该解释器将使用的编程语言应该很简单,因为它针对的是非软件开发人员(例如,数学家)。

解释器应该支持基本的编程语言特性:

  • 实数、变量、多维数组
  • 二进制 (+, -, *, /, %) 和布尔 (==, !=, <, >, <=, >=) 运算
  • 循环(for、while)、条件表达式(if)
  • 职能

MathWorks MatLab是我前进的一个很好的例子,只是简单得多。解释器将用作演示算法的环境;简单的算法,例如查找数据集/数组的平均值,或者稍微复杂的算法,例如高斯消除RSA

我在该主题上找到的最佳/最实用的资源是 Ron Ayoub 的代码项目条目(使用解释器模式解析代数表达式)——这是我的问题的缩小版本的完美示例。

紫龙书好像太多了,还有什么更实用的?

解释器将使用 C# 实现为 .NET 库。然而,任何平台的资源都是受欢迎的,因为这个问题的设计架构部分是最具挑战性的。

有什么实用资源吗?

(请避免“这不是微不足道的”或“为什么要重新发明轮子”的回答)

0 投票
12 回答
127136 浏览

language-agnostic - 什么是类型安全?

“类型安全”是什么意思?

0 投票
17 回答
210686 浏览

multithreading - 术语“线程安全”是什么意思?

这是否意味着两个线程不能同时更改底层数据?或者这是否意味着当多个线程正在执行该代码段时,给定的代码段将以可预测的结果运行?

0 投票
12 回答
1469 浏览

python - Python 3.0 和语言演变

Python 3.0 打破了与以前版本的向后兼容性,并将语言分为两条路径(至少暂时如此)。你知道在成熟期经历过如此重要设计阶段的任何其他语言吗?

另外,您认为这就是编程语言应该发展的方式,还是付出的代价太高了?

0 投票
3 回答
1287 浏览

programming-languages - 什么是关系参数?

一个听起来很复杂的术语,简单的谷歌搜索没有很好的解释……还有更多的学术导向的人可以解释这个吗?

0 投票
182 回答
80196 浏览

programming-languages - 你讨厌你最喜欢的语言的五件事是什么?

最近在 Stack Overflow 上出现了一大群 Perl 仇恨,所以我想我应该把我的“关于你最喜欢的语言的五件事”的问题带到 Stack Overflow。用你最喜欢的语言,告诉我你讨厌它的五件事。这些可能只是让您烦恼、承认设计缺陷、公认的性能问题或任何其他类别的事情。你只需要讨厌它,它必须是你最喜欢的语言。

不要将它与另一种语言进行比较,也不要谈论你已经讨厌的语言。不要用你最喜欢的语言谈论你喜欢的事情。我只想听听你讨厌但容忍的事情,这样你就可以使用所有其他的东西,我想听听你希望其他人使用的语言。

每当有人试图将他们最喜欢的语言强加给我时,我都会问这个问题,有时作为面试问题。如果有人找不到他最喜欢的工具的五个讨厌的地方,那么他对它的了解还不够充分,无法提倡它或使用它赚大钱。他还没有在足够多的不同情况下使用它来充分探索它。他提倡将其作为一种文化或宗教,这意味着如果我不选择他最喜欢的技术,那我就错了。

我不在乎你使用哪种语言。不想使用特定语言?然后不要。您通过尽职调查做出明智的选择,但仍然不使用它?美好的。有时正确的答案是“你有一个强大的编程团队,拥有良好的实践和丰富的 Bar 经验。换成 Foo 会很愚蠢。”


这对于代码审查来说也是一个很好的问题。真正了解代码库的人会对它提出各种建议,而不太了解它的人则会有非具体的抱怨。我会问诸如“如果你可以重新开始这个项目,你会做些什么不同的事情?” 在这片梦幻之地,用户和程序员可以抱怨任何他们不喜欢的事情。“我想要一个更好的界面”、“我想将模型与视图分离”、“我会使用这个模块而不是另一个模块”、“我会重命名这组方法”,或者他们真正不需要的任何东西不喜欢现在的情况。这就是我了解特定开发人员对代码库了解多少的方式。这也是一个关于程序员有多少的线索'

仇恨不是弄清楚人们知道多少的唯一维度,但我发现它是一个非常好的维度。他们讨厌的事情也让我知道他们对这个主题的思考程度。

0 投票
2 回答
323 浏览

language-agnostic - 最大化数据,最小化代码——限制和问题是什么?

我想设计具有客户端(可能是 C# gui)和服务器组件(Java、C++、Perl)的非常高可用性(永远不要关闭服务器、推出功能而不重启等)应用程序。

我从(minimize-code-maximize-data.htmlYegge)那里得到了一些建议,我想让大多数逻辑从数据库中动态读取,以便所有配置(包括所有 GUI 配置、文本翻译等、业务规则以及data) 将驻留在服务器上的数据库中,而不是驻留在需要重新启动才能读入可执行内存的代码中。

我希望能够在不重新启动客户端或服务器的情况下自定义应用程序的任何方面,并让应用程序以尽可能短的延迟反映更改(动态类加载等)。

设计这样一个“永不杀死”系统的性能和其他限制是什么?有没有人设法创建这样的应用程序?主要的教训是什么?什么时候这不符合成本效益并且需要更传统的构建、发布、质量保证、几个小时的停机时间方法?

0 投票
5 回答
926 浏览

programming-languages - 为什么在命令式或 OO 语言(如 C/C++/C#/Java...)中不存在交换/交换运算符?

我一直想知道为什么像交换两个变量的内容这样简单而基本的操作对于许多语言来说不是内置的。

它是计算机科学课程中最基本的编程练习之一;它在许多算法中大量使用(例如排序);时不时地需要它,并且必须使用临时变量或使用模板/通用函数。

它甚至是许多处理器上的基本机器指令,因此带有临时变量的标准方案将得到优化。

已经创建了许多不太明显的运算符,例如赋值运算符(例如 +=,它可能是为了反映累积的机器指令而创建的,例如 add ax,bx),或 ?? C# 中的运算符。

那么,是什么原因呢?还是它真的存在,而我总是错过它?

0 投票
5 回答
152 浏览

web-applications - 语言的选择是否会影响谁将使用该应用程序,尤其是在 Web 应用程序方面?

我认为这主要适用于 Web 应用程序,因为您经常在 Web 应用程序中看到语言和数据库供应商之类的东西,但在桌面应用程序中却没有那么多。

如果一个 Web 应用程序是使用 X 语言创建的,这会对谁部署该应用程序有任何明显的影响吗?例如,使用 .NET 产品的公司是否会考虑使用满足其需求的 Python 应用程序,或者他们是否倾向于找到可以使用的 .NET 产品?

编辑 1:细化问题以指代要部署的应用程序,而不仅仅是使用。

0 投票
18 回答
1857 浏览

compiler-construction - 是否存在任何具有本地化编程语言版本的编译器?

我经常想知道为什么非英语程序员在编程时被迫使用不同的语言,而提供一个可以用本地化版本替换关键字的 IDE 似乎很容易。为什么德国人不能使用“während..macht”循环?

日本、德国、法国、西班牙、博茨瓦纳的程序员是否只是广泛使用宏/定义语句来让生活更容易忍受,还是他们只是习惯了 print 的功能意义,if, then, while, do, begin, end , var, double, 函数等?

也许越来越多地使用框架(J2EE/.NET)使这变得更加复杂,但似乎仍然值得。另一方面,如果克林贡语成为美国事实上的编程语言,我可能会后悔提出这个建议。