问题标签 [language-theory]
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.
language-agnostic - 语言评估问题:渴望与。懒惰的
我正在阅读 Shriram 的 PLAI,这让我陷入了以下问题:
你能证明急切和懒惰的政权总是会产生相同的答案吗?(Shriram 要求查看他开发的语言,但还有其他方法可以证明这一点以及如何证明吗?)
急切的评估总是会随着更少的步骤而减少吗?
这是 Clojure 中的替换代码和热切评估代码。
theory - 文本协议哪个不是常规语言?
表示与文本网络协议相关的语法方式的常用方法是使用 ABNF。
就像任何与 EBNF 相关的元语法一样,ABNF 能够描述上下文无关的语法。
这些上下文无关的语法可以代表一种非常规语言,对吧?
实现网络堆栈的常用方法是开发状态机。是否有任何不是常规语言的文本网络协议?
language-agnostic - 除了 Logo 和 Emacs Lisp,还有哪些纯动态作用域语言?
有哪些动态范围语言的例子?选择这种设计的原因是什么?是因为它易于实施吗?
python - 究竟什么是“注册机”?
从http://code.google.com/p/unladen-swallow/wiki/ProjectPlan我引用:
“使用 JIT 还可以让我们将 Python 从基于堆栈的机器转移到注册机器,这已被证明可以提高其他类似语言的性能(Ierusalimschy 等人,2005 年;Shi 等人,2005 年)。”
在大学里,我为带有递归过程的语言构建了一个简单的编译器——它为每个调用的过程维护堆栈帧——这样它们就可以被递归调用,这样参数和返回值就可以工作......
2件事:
1)考虑到上面引用中使用的术语,我认为我实施的东西将被视为“基于堆栈的机器”是否正确?
2) 如果我在第 (1) 点的假设是正确的,那么“注册机”是如何工作的?即它与基于堆栈的机器有何不同?
谢谢!
programming-languages - 关于基于契约/约束的类型系统的好信息?
问题:
我正在寻找关于类型系统的良好介绍,它们基于合同/约束
(抱歉,我不记得哪个术语适合类型系统)。
我需要这些信息才能实现这种实验类型的系统。
据我所知,XSD(Xml Schema Definition)中使用了这种类型系统。
不是定义数据类型,而是定义一组可能值的约束。
例子:
我用一个参数定义了一些方法,它要么是"nothing"
,要么与整数范围匹配[0..100]
。
这种方法将接受以下值:
我希望,我可以说清楚自己。
programming-languages - “闭包”和“块”之间究竟有什么区别?
我发现很多人交替使用闭包和阻塞这两个词。这些人中的大多数都无法解释他们在说什么。
一些 Java 程序员(甚至来自非常昂贵的咨询公司的程序员)将匿名内部类称为“块”和“闭包”——但我知道这不是真的。(您不能从定义它们的方法的范围内传递可变变量......)
我在找:
- 块的精确的计算机科学定义
- 闭包的精确计算机科学定义
- 并澄清两者之间的区别。
我真的很想看到关于这些的链接、文章或书籍参考。
types - 数据类型编程
我知道“命令式”和“函数式”编程,但在“数据类型”编程方面我几乎找不到。有没有这样的事情,它与其他范式有什么关系?
programming-languages - 所有的迭代算法都可以递归表达吗?
如果没有,是否有一个很好的反例来显示不存在递归对应的迭代算法?
如果是所有迭代算法都可以递归表示的情况,有没有更难做到的情况?
另外,编程语言在这一切中扮演什么角色?我可以想象,与纯 Java 程序员相比,Scheme 程序员对迭代(=尾递归)和堆栈使用有不同的看法。
terminology - 运行时定义
什么是运行时?而且我的意思不是“在运行时”=程序/脚本正在运行。我是说
<your-interpreted-language-here> 运行时