Programming languages 编程语言的新范式、语法特征和行为,还是不太为人所知?
我为他们设计了一些教育性编程语言和解释器,但我的问题始终是它们最终“正常”和“枯燥”,大部分类似于某种现有语言(ASM和BASIC) 我发现很难为语法特性提出新的想法,“整洁的东西”和新的或经过修改的编程范例我一直认为,在这种情况下,很难想出好的新东西,而不是有趣/无用的新东西。 我想知道你是否能帮助我发挥你的创造力:Programming languages 编程语言的新范式、语法特征和行为,还是不太为人所知?,programming-languages,language-design,Programming Languages,Language Design,我为他们设计了一些教育性编程语言和解释器,但我的问题始终是它们最终“正常”和“枯燥”,大部分类似于某种现有语言(ASM和BASIC) 我发现很难为语法特性提出新的想法,“整洁的东西”和新的或经过修改的编程范例我一直认为,在这种情况下,很难想出好的新东西,而不是有趣/无用的新东西。 我想知道你是否能帮助我发挥你的创造力: 在语言语法和内置函数以及可能甚至新的范例方面,我可以在我的语言中使用哪些功能来保持它的无用性,但更有趣、有趣和/或与编程不同 有很多不寻常的语言特征B-< /P>< P> A
- 在语言语法和内置函数以及可能甚至新的范例方面,我可以在我的语言中使用哪些功能来保持它的无用性,但更有趣、有趣和/或与编程不同
有很多不寻常的语言特征B-< /P>< P> ASM和BASIC都是命令式语言,所以您可能需要考虑函数式编程语言的特性,尤其是lambdas和映射。您可能还需要考虑有趣的控制流,例如,能够抛出异常,然后,由于捕获异常并做出特定调用,从异常抛出的点恢复(尽管使用修改的环境)。此外,协同例程或其他形式的语言级并行性通常也很有趣。
看看Forth。这是原创的东西。太原创了 我一直认为将CSP应用于基于堆栈的语言会很好。可能会非常有趣。除了Michael对函数式语言的评论之外,看看闭包和块(就像在Objective-C中所做的那样)。通过这些,您可以将函数或代码片段视为一级对象,并可以根据需要传递和调用。一些很酷的东西可以用它来完成,而且它也逐渐成为大规模多核系统编程的范例 您还可以研究curry,这意味着绑定函数的一些参数,这样您就可以在更少的参数上使用它。这样,您就可以创建一个base-b对数函数,您可以使用它为base-2、base-10等对数创建函数 还有一些不太实用的东西(比如在语言中):看看Ruby把所有东西都当作对象(偶数)的方式,你可以用它做很多事情。就像一个具有内省功能的面向对象运行时,一个“免费”的解释器,等等。实现OOP比你想象的要容易 在过去的30多年里已经做了很多事情,不要把自己局限于70年代风格的编程如果你正在寻找灵感,请查看Ruby、Python、Scala、Objective-C、JavaScript(阅读道格拉斯·克罗克福德的JavaScript:好的部分)等。提供了各种深奥编程语言的古怪和奇妙的范例,包括许多用户创作。也许其中有一些理智的灵感 我一直认为很难想出好的新东西 你是对的。这就是为什么John Backus、Ken Iverson、Niklaus Wirth、Robin Milner、Kristen Nygaard和Ole Johan Dahl、Alan Kay和Barbara Liskov都获得了胜利——他们为编程语言的设计提供了很好的新思想 如果你想在自己的设计中添加一些有趣的东西,这些人是很好的偷盗对象。请参阅。有许多有用的链接,特别是在本节中那么多的“新”其实只是“被遗忘的旧”。我将对当今一些“流行”的编程语言保持我的想法。有许多事情可以探索,其中一些正在进行积极的研究。我认为一些有用的东西是:
- 非函数语言中的实连续体
- 下面是将它们添加到C++的尝试:
- 允许用户创建新语法元素的语言
- FORTH和J可能是起点
- Pogoscript也很有趣,因为像if/elseif/else和while/wend-arten-not-special这样的流控制结构可以在用户代码中创建
- 自定义用户定义的操作符其实并不新鲜:我认为Haskell、Nemerle、Kaleidoscope和其他一些人已经在这样做了,但即使这样也不会“无聊”