Have you written your own esoteric (or not) language? What did it look like?
我看到一些关于stackoverflow用户最喜欢的深奥(或非)编程语言的问题。还有一些关于语言实现的问题。然而,我很好奇你们中是否有人真正地编写了自己的编程语言(不管它是否深奥),我还想知道它是什么样子的。
我喜欢阅读并尝试学习新的和创造性的语言,所以我认为看到StackOverflow社区提供的东西会很高兴。:)
几年前我为了好玩写了一本。
我已经为教学写了一套7种"微型"语言。每种语言都是为了说明以下完整编程语言之一的关键思想:
- C的非类型化版本
- 方案
- C
- 系统F
- 毫升
- Salm Talk
- Prolog语言
语言故意看起来很像另一种语言,这样学生只看到本质上的差异,而不是毫无意义的差异。我想再做两件事,基于哈斯克尔和克鲁。
山姆·卡明有了最初的想法,在设计上帮助了很多。
我尝试编写的第一种语言之一是MIDI文件汇编语言。您将定义节奏和工具库,然后定义许多注释行(注释名称、当前度量的起始节拍、持续时间、可选重音)、用条形线("meas")标点的符号以及动态(p p p、pp、p、mp、mf、f、ff、fff)。
如果没有宏语言来重复序列、更改频道和铺设新的曲目,它就不能真正使用。这就需要我的第一个哈希表,以及一个巧妙的交叉手指调用qsort来按时间顺序交错通道(隐含地由每个音符打开/音符关闭事件携带)。
一年后,当我回到它的时候,它已经成为了比特腐烂的牺牲品。经过不小的挣扎,我重新发现排序和输出everything函数是由一个显式的eof代码触发的。一首宏观扩展的歌曲很容易就有20000行,其中至关重要的EOF行,因此,当试图找出到底哪里出了问题时,有1/20000的机会被发现!
我有点高兴的是,所有的证据都安全地藏在微波炉推车下面的一个死CPU里。恐怖!!
编辑:经过进一步的思考,MIDI格式有一些有趣的东西。它有一个可变长度的整数类型(IIRC使用符号位来表示最后一个字节)。它是面向字节的,设计用于运行9条并行线;它有一些疯狂的时间同步,我从来没有理解过。但我所关心的是Windows95媒体播放器可以解释输出(它甚至可以使用声卡中内置的8bit通用MIDI音色库;这些铜钹被严重扭曲)。
我一直在研究DIFL,它是一种声明性的文本冒险语言,但随着时间的推移,它的声明性会降低。它的主要特点是一个非常松散的对象系统和一个基于多种方法的动作系统。(好吧,它的主要功能是,假设我完成了它。)
当然是我的Python细菌的密码