编程和人生随笔-生活工作点滴

平凡却又深刻的编程理念:编程语言和抽象

2019-07-28  本文已影响22人  进击的叻叻

编程语言是一种语言,主要用于给计算机传递可执行的操作指令序列。目前计算机依旧还是采用冯·诺依曼体系结构,简单来说,计算机顺序执行程序的每一条二进制代码的指令,最后将返回处理返回到输出设备上。

然而,对于现代的程序员们,编程绝大多数不是这样的。
我们基本不会写计算机能“懂"的语言;我们写着那些高级语言,如C++, C#, Java, JavaScript, Python等。
我们编写的代码,往往也不再是执行一些复杂运算的单机小程序,而是分布在多机甚至异构的计算机系统上的多个程序共同协作的大型服务,虽然我们每个人往往只负责其中一小部分。
我们写的代码的也可能不再是代码目测那样的”顺序“执行,输出的结果也往往不是直接送往输出设备。

为什么?因为编程过程的抽象屏蔽了计算机运行的细节
对于程序员来说,编程语言是计算机能力的抽象。编程语言的级别的高低,说的就是抽象层次的高低;简单来说,离计算机懂得语言越远,语言越抽象层次越高。
同时,在具体代码设计里,我们的代码还是对业务逻辑的抽象,而且一般而言越良好的设计,代码的抽象层次越分明。经典的设计模式,就是一种高于编程语言之上的抽象

无论对于编程语言还是代码设计,抽象层次的高低都可以理解成离计算机I/O的远近——离I/O越远,抽象层次越高。

无论是理解编程语言还是编程设计,对抽象的理解都是十分关键的。比如,对于校招面试,我认为主要的还是考核对编程抽象的能力(比如数据结构和算法,分治思想,设计模式的理解和应用,而非具体技术实践能力。一来前者更多关注关于长远发展的编程基础能力,二来参加校招的由于缺乏工程经验一般也不会有特别靠谱的技术实践能力。


我认为,人类语言的发展也大致如此。从越接近人类I/O(视觉)的壁画、象形文字,到人越容易表达和传递的文字(汉字,英文)。而在人们不断地沟通交流,我们也会逐渐形成抽象层次更高的词汇,比如术语,成语等,以便更快速或更有效地表达信息。而卓越的人更是能将其知识和经验总结出抽象层次更高的系统的理论模型,简化了对复杂场景的理解和应对,正如卓越的程序员一般。

记得《人类简史》提及,智人之所以最终站在地球食物链顶端在于能够传达一些根本不存在的事物的信息。人类懂得”虚构“一些事物或概念,并让周围的人相信和接受。我觉得,这应该就是抽象能力的呈现;然后人类创造和完善了语言,具象化了抽象的力量。而阅读,就在学习或适应书里描述的抽象,刷新我们的抽象思维,继而有利地影响我们的生活,包括我们的编程工作。

上一篇 下一篇

猜你喜欢

热点阅读