作为从unix C一路走过来的从业者,使用过c/c++ java python golang 等,慢慢的从对新语言的恐惧,到坦然面对,今天不谈具体的东西,就谈点简单的对语言的胡思乱想,今天的写的不是从严肃的计算机科学角度,而是从编程者的主观认知角度。
所谓的高级语言就是提供更丰富的语法糖,编译器,运行时和库等;有自己的类型系统,编程模式,最好有垃圾回收,并发支持等等额外特性;从本质上讲,编程语言就是以一种约定的语法糖来进行编码。除了汇编能一条条的和机器指令对应,我们日常接触到的语言都摆脱不了语言的编译器和运行时的影响,从根本上讲,我们写的代码不叫程序,我们仅仅写了一部分语法糖的片段,通过编译器的编译,编译器添加的很多其他东西进去,最终才形成了可执行程序。这个可执行程序以os认可的可执行程序格式(PE或者ELF)存放,最后被OS执行和调度(其运行起来就是OS的进程或者线程)。
从这个角度看,所有的高级语言编程,就是语法糖片段的书写,说白了,就是高级语言本身已经定义了一整套工作框架,你说做的只是按照这门语言的约定,撰写语法糖片段,按照约定填空而已(所以不要轻易的说自己精通什么什么语言,其实你只是个熟练的填空工人而已)