目前进展
到现在,我们还远远不能做出一个真正的编译器,甚至对编译过程中的诸多细节也一知半解,模糊不清。虽然如此,但我们还是对整个流程有一个大的理解,这帮助我们后续的设计。目前,我们已知:
- 编译器是将源代码通过复杂的处理过程转化为目标代码的程序。
- 编译过程分两个阶段,第一阶段源代码进,语法树出;第二阶段语法树进,目标代码出。第一阶段称为分析,处理者统称前端;第二阶段称为综合,处理者统称后端。
- 编译过程,其本质就是文本到树再到文本,有结构化思维的人会很容易想到,这其实就是阅读和写作的过程,从书里的文本建立你脑海中的知识结构,再把这知识结构用你自己的语言表达出来。
- 编译好比英文文章翻译中文文章,源代码是英文文章,目标代码是中文文章,语法树体现翻译要点各种关系,是你翻译过程的主要笔记。
- 前端处理:词法分析、语法分析、语义分析。
- 后端处理:中间代码生成,目标代码生成,贯穿各个阶段的优化。
后续计划
直接对编译的细节进行完善的讲解,内容太多,也不是我们的计划。如果需要完善的讲解,看相关编译原理的书或许更加合适。我们的目的就是针对编译原理小白做出一门真正的语言,直接体会编译核心要点。后续的内容,我们会具体设计一门实用的简单编程语言来展现完整的过程,源代码是新语言,目标代码为Python语言,设计过程需要对诸如Python,Java,C/C++等主流最热门语言有所了解。
设计背景
编程语言是人与计算机之间沟通的桥梁,它可以把人们想要完成的任务交给计算机完成。对于很多编程群体来说,或许程序效率之类的考虑反而是次要的,他们更需要的是一种简单易用的编程工具,比如学生(尤其初学者)。而对于学生,往往很多时候都需要借助大量数学知识去解决问题,因此我们想做一种简单易用的数学风格语言,以适合大学生做一些日常普通的学习任务。
除了让目标语言贴近数学外,我们还想让其支持通用的分布式编程。截止目前,大多数分布式编程一般针对具体应用场景,并且学习门槛都比较高,对编程新手不太友好,且通用性较差,比如云计算,CUDA编程等。因此我们想让设计的语言具有分布式编程的特点,且具有一定的通用性,具体做法就是通过语言设计总结出有效的编程规范,然后通过编译器屏蔽数据同步的复杂细节。
在具体设计之前,我们可以回顾当前最热门的几门语言来提供思路:Java,Python,C/C++。这些语言都各有优点和缺点,C语言简单高效,但在面向对象编程方面能力不足;C++功能强大,但函数规范和库繁杂;Java规范易用,但日渐规模臃肿;Python简单易用,但语言规范方面稍欠。很显然语言的规范性,易用性,功能性都是值得考虑的地方。
经过深思熟虑和反复推敲之后,我们做出了具有如下基本功能的分布式数学计算语言SimpleSYNC:
- 支持分布式编程,且具有较好的通用性
- 语言风格贴近数学,编程设计门槛较低
- 原生支持复数类型,让数学计算更省心
- 统一繁杂的数值类型:整数/实数/复数
- 支持数学式的函数定义,方便科学计算
- 拥有多种实用数组类型,简化问题模型
原文地址:https://blog.csdn.net/weixin_45792450/article/details/134629647
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_16911.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!