共同模式
从前几年开始,招聘启事上对语言的要求已经从一种扩展成两种了。那么学习一门新语言是不是从零开始?
其实不然,语言的目标,语言的功能,语言最终要在硬件上运行,这些共性让语言都有一些共同点。
程序语言都需要有
- 数据
- 常量、变量(是否可变)。JS之前声明变量只有var,不能从类型上对常量进行约束,后来加了const。
- 全局、局部(作用域)。有一类bug是由全局污染引起的,多个地方对同一个全局变量修改。所以作用域的控制有助于减少这类bug。
- 数据类型(类型)。
- 计算(算术、关系、逻辑,优先级)
- 控制(顺序,选择,循环)
- 传输
这个也挺好理解,程序都是信息转换器。那么信息,也就是数据,一定是必须的。
现在的计算机都是冯诺伊曼结构,其中控制器和计算器是这个结构的核心,那么语言也要完成这两个功能。
机器是人的辅助,所以传输通道少不来了。
总结
学习一门语言,先掌握这几个点。然后再慢慢拓展。
分析
阶段:产出:主要工作
- 词法:识别出单词种别和单词本身的值
- 语法:语法树
- 语义:符号表:静态语义错误和类型分析
- 中间代码:记号系统
- 代码优化
- 目标代码生成:特定的机器码