木兰中科发,安能辨我是Python
我给大家说明一下,其实任何人都能很轻松的生成自己的编程语言
学过编译原理的人知道,一个编译程序,分为词法分析,语法分析,语义分析,中间代码生成,机器无关优化,目标代码生成,机器相关优化。
其中,词法分析,语法分析,语义分析,中间代码生成,称为编译器前端,最终产物是中间代码,目前已经有统一的中间代码了
机器无关优化,目标代码生成,机器相关优化,称为编译器后端,这个是平台体系相关的。
重点来了,编译器前端,目前是有自动生成工具的,而且非常成熟,并且是开源的,只要自己写些脚本文件,把你自己定义的语言的关键字,语法语义之类的东西定义清楚,就能生成一个你自己的编译器,可以编译出中间代码。
而由中间代码生成目标代码的编译器后端,由于是机器相关的,比如各种超级计算机,后端是要自己研发的。但是但是,如果是微型机X86平台,那么由中间代码生成X86目标代码编译程序,他是有成品软件可以帮你生成的,而且是开源的!!
所以呢,如果我自己想做一个编程语言,就定义为“疯花生语言”,我只要把关键字,以及相关语义语法规定好,至于用英文还是中文或者日文甚至火星文都没关系,只要我规定好就行,脚本文件一写,就有软件替我生成“疯花生语言”的编译器,整个过程需要多久呢?不多,2周。
所以呢,这个所谓的木兰语言,其实就是把python当作中间代码,把python编译器当作后端,至于前端那些,他只是用文言文来做关键字,并定义好相关的语法语义,用软件生成了一个前端而已,确实没技术含量。
并不是说编译器这东西没技术含量了,编译器的技术含量高的很,只不过技术含量高的部分在后端,编译器相关的论文,基本上都集中在代码优化部分。所以,但凡有人号称开发出了自己的编程语言,只要问他,你的后端是如何实现的,你的代码优化是怎么做的,就可以知道这人水不水了。
页:
[1]