1.
理论上,软件开发应该是一种有趣的智力游戏,以洞察、归纳、协调各种逻辑作为内容的游戏。
但现实中,编程却并不总是令人愉悦的事情。抛开社会性的因素,很多问题都源于我们使用的工具一直过于原始。
原始的工具使得我们需要过多地关注细节,过多地在意细节使得思维的层次降低,表达变得没有效率,无法胜任更复杂的逻辑。
这就是一切的开始,寻找更高层次的工具,才能处理更高层次的事情。
2.
从历史来看,这种趋势其实是很清晰的:
汇编语言:不需要记机器码,以抽象的指令为基础编程。
高级语言:不需要关心cpu指令和寄存器分配,以抽象的变量为基础编程。
操作系统:托管了任务调度、内存分配、文件系统等,在抽象的平台之上编程。
虚拟机:托管了内存空间的使用,以抽象的对象为基础编程。
函数/流程控制语句:相比goto,提供更高层次的流程描述方式。
面向对象:相比全局函数+分支流程,提供更高层次的描述局部差异的方式。
dsl(正则表达式、sql):提供更高层次的描述特定领域逻辑的方式。
这些变革已经如此地深入人心,是因为可以让我们在更高的层次思考。
设想一下一种语言不支持正则表达式,或者不支持for/while,相信抓狂的人不会占少数。
除非有很高的收益(如执行效率),没有人会想回到过去。
相比之下,动态语言、函数式语言等,有些使得代码更加简洁,有些使得某些需求的实现更为简单。
但总体而言,并没有使思维层次得到提高,所以仍无法和上述相比。
3.
我寻找的,是下一个能与之相比的内容。
今天,硬件和平台的发展速度要远远高于语言的发展速度。
从面向对象以来,编程语言一直没有本质的发展,这是很离奇的现象。
这是一个计划的开始,
计划中可能会借鉴:历史、相关学科的积淀、主流语言的细节、成熟的开发环境,
靠谱或不靠谱地畅想对逻辑描述/开发环境的改进。
希望能够坚持。