如何自创一门计算机语言?

如题所述

         如果你仅仅有一般程序设计的基础,直接要设计一门语言是有难度的。结合我个人的经验,以下路径应该比较适合语言初学者:你需要有基本的编译原理常识。构造基本的编译原理常识,一方面来自于你对已有语言的使用经验,了解基本术语。比如我用C,那么我起码知道语言要素包括宏、表达式、语句、语句块、函数、指针等;我还知道C语言有编译、链接和执行三个阶段。这些基本概念对你宏观掌握你的学习进程是很有必要的。另外一方面编译原理的常识,要来自图书。比如龙书、SICP。

         在这一步,你得知道大部分语言的处理都要分为词法、语法、语义和代码生成四个阶段。每个阶段,分别是做什么的。了解具体的编译算法。了解到什么程度,取决于你使用第三方工具,还是需要自己从字符开始处理。个人建议,乔姆斯基文法体系、(扩展)巴克斯范式(EBNF),正则表达式,和LL(1)的递归下降分析法是必须要掌握的。对LL(k),LR(k)要有概念。其中,四则运算表达式的分析是很好的练习。对语法的感觉。

         初学者设计语言的难度有两点。第一,不知道什么样的语法/语义是你需要的;第二,不知道你设计的文法能否实现。你是需要一个类似于自然语言的脚本,还是只是一个表达式。经过3阶段的训练我认为你已经有了独立撰写语法的能力。可以写一个基础版本的出来。实现你的语言,特别是词法和语法部分。这一步最好能Log出尽可能多的信息,例如词列表并打印出分析树。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-29

         创造一门语言,有时跟你想创业的思路一样,有的人想要有一个独特的,别人都没有想过都没有做过的思路,然后开始创业,但它有可能永远没有想出这样一个点子,或者刚想出来就发现别人已经做过了。而另外一些人呢?

         他不理会「语言专家」的这样那样的批评,他做了一个可用的语言,并且很多人愿意用,即使在语言专家眼里他的语言很可笑,但他的语言却一直生存下来,被广泛传播。这就是所谓「执行力」的重要性。

         想要创造一门语言,最重要的是执行力,是「立即开始做」,发现有什么问题可以改,可以重构。等你需要参考其他语言的时候,再去参考,这会比你现在去读那些其他语言更有收获。

第2个回答  2017-10-29

         一门语言在程序语言的角度上是不是好,跟他的library毫无关系,跟他能够写出怎样的library才有关系。一个library还不存在,有可能代表他写不出来,也有可能代表只是没人去写。当你试图创造一门语言的时候,你就不能以大众的标准来衡量他。

         其实哪个语言不能有numpy?只是没做罢了。所以在numpy这一点上,大部分语言都是一样——能做。你关心的就是这些,能,还是不能。而不是有,还是没有。这是微软很多年前的后来改名叫midori的C#操作系统项目早就给C#实验性添加的东西就不说了,F#的computation expression也好,erlang的actor也好,哪个不比go的channel强?再说了,Java的库为什么用起来就是不如C#的舒服,这完全是因为Java的语法导致的,而不是人类的想象力导致的。

相似回答