目前进展
到现在,我们还远远不能做出一个真正的编译器,甚至对编译过程中的诸多细节也一知半解,模糊不清。虽然如此,但我们还是对整个流程有一个大的理解,这帮助我们后续的设计。目前,我们已知:
后续计划
直接对编译的细节进行完善的讲解,内容太多,也不是我们的计划。如果需要完善的讲解,看相关编译原理的书或许更加合适。我们的目的就是针对编译原理小白做出一门真正的语言,直接体会编译核心要点。后续的内容,我们会具体设计一门实用的简单编程语言来展现完整的过程,源代码是新语言,目标代码为Python语言,设计过程需要对诸如Python,Java,C/C++等主流最热门语言有所了解。
设计背景
编程语言是人与计算机之间沟通的桥梁,它可以把人们想要完成的任务交给计算机完成。对于很多编程群体来说,或许程序效率之类的考虑反而是次要的,他们更需要的是一种简单易用的编程工具,比如学生(尤其初学者)。而对于学生,往往很多时候都需要借助大量数学知识去解决问题,因此我们想做一种简单易用的数学风格语言,以适合大学生做一些日常普通的学习任务。
除了让目标语言贴近数学外,我们还想让其支持通用的分布式编程。截止目前,大多数分布式编程一般针对具体应用场景,并且学习门槛都比较高,对编程新手不太友好,且通用性较差,比如云计算,CUDA编程等。因此我们想让设计的语言具有分布式编程的特点,且具有一定的通用性,具体做法就是通过语言设计总结出有效的编程规范,然后通过编译器屏蔽数据同步的复杂细节。
在具体设计之前,我们可以回顾当前最热门的几门语言来提供思路:Java,Python,C/C++。这些语言都各有优点和缺点,C语言简单高效,但在面向对象编程方面能力不足;C++功能强大,但函数规范和库繁杂;Java规范易用,但日渐规模臃肿;Python简单易用,但语言规范方面稍欠。很显然语言的规范性,易用性,功能性都是值得考虑的地方。
经过深思熟虑和反复推敲之后,我们做出了具有如下基本功能的分布式数学计算语言SimpleSYNC: