存在大量的编程语言, 如果包括难以置信的甚至是已淘汰的产品,则将近700。 当前,编写您自己的编程语言比以往任何时候都容易,并且有很多方法可以实现。 创建自己的编程语言的较低入门门槛导致了许多新的,有趣的,有时是奇怪的语言。
这些独特的语言中有一些具有独特的目的,而其他一些则纯粹是学术性的甚至是喜剧性的。 能够写仅由两个或三个字符组成的语言可能不是最有用的方法,但在这种情况下,旅程可能比目的地更有价值。 从头开始学习创建语言的实际内容,并确定诸如解释与编译,静态与动态之类的东西,可能是宝贵的经验。
尽管以前曾无数次讨论过奇特而深奥的编程语言,但我整理了一份独特的清单,列出了新的和相当古老的语言。 让我们一起探索其中一些奇怪的发现,并发现突破编程界限的语言。
1. LOLCODE
首先是深奥的编程语言的"经典"。 LOLCODE于2007年问世,它基于" lolcats"语言。 如果您想知道它是什么样的,下面是一条读取文件内容的语句:
- PLZ OPEN FILE "<filename>"?
好笑吧? 虽然这种语言乍一看似乎像是一个可爱的玩具,但实际上它是一种相对完整的语言。 甚至有完整的教程集可用于tutorialspoint上的LOLCODE的不同元素。
LOLCODE甚至启发了其他衍生项目,例如LOLPython,它是LOLCODE的翻译版本,可与Python一起使用。
2. ArnoldC
还记得《终结者》电影吗? 还记得阿诺德·施瓦辛格的一些名言吗? 您是否曾经想过用他的热门电影中的每句话都是一句话来编写语言的代码? 好了,现在您可以使用ArnoldC!
ArnoldC是一种语言,使您几乎可以完全使用Arnold Schwarzenegger的报价进行开发。 如果您过去几十年来一直生活在一块岩石上,请查看一些著名语录的清单。 这是来自ArnoldC网站的示例代码片段:
- IT'S SHOWTIMETALK TO THE HAND "hello world"
- YOU HAVE BEEN TERMINATED
这只是一个简单的" Hello World"程序。 更完整的程序看起来很有趣,而且阅读起来非常有趣。 Sublime Text甚至提供了一个语法突出显示插件,因此您可以真正炫耀自己的ArnoldC技能。
3. Velato
这是一种独特的编程语言,并且很好地说明了如何获得有趣的语言。 Velato是一种使用MIDI文件编写的语言。 在这种情况下,MIDI文件既可以构成音乐,也可以构成软件。 每个指令基于音符本身的音高和音符之间的间隔。
上图所示的片段实际上是产生音乐和软件输出的示例" Hello World"程序。 如果您要通过MIDI软件演奏乐曲,这听起来可能不像是一件真正的艺术品,但是它将在Velato中生成一个正常运行的程序。
Velato有很多音乐/软件交叉的可能性。 您可能会挑战自己,创作一首既能完成编程任务又能听起来……音乐的音乐。
4. 披萨
> http://pizzacompiler.sourceforge.net
不,不是真正的比萨。 比萨编程语言。 这是一种基于Java的语言,是在Java具有其今天拥有的许多功能(例如泛型或代数类型)之前编写的。 比萨可以说是此列表中较不陌生的语言之一,但在Java历史中占有很有趣的位置。
比萨看起来很像Java,因为它实际上就是Java。 在该语言的后期,它甚至可以在常规Java环境中运行。 这是Wikipedia的Pizza代码段:
- public final class Main {
- public int main(String args[]) {
- System.out.println( new Lines(new DataInputStream(System.in))
- .takeWhile(nonEmpty)
- .map(fun(String s) -> int {
- return Integer.parseInt(s);
- })
- .reduceLeft(0, fun(int x, int y) -> int { return x + y; })); while(x == 0) { map.create.newInstance() } }}
Scala是Pizza的继任者,它以更简化的方式和更强大的功能集来实现事物。 要了解有关Pizza和其他基于Java的语言的历史的更多信息,请查看此处提供的Martin Odersky访谈。
自己写
无论您是对编程语言的构建方式感到好奇还是只想创建一种吸引人的有趣语法,都有大量资源可用来编写自己的语言。
Chirag Khandelwal给初学者写了一篇很棒的文章。 他带领您完成了开发自定义编程语言的旅程,并向您展示了您在此过程中必须做出的一些有趣的选择。
谢谢阅读! 希望您喜欢随着时间的推移而发明的一些有趣的编程语言。