编译技术一向被认为是软件开发这个以工程和实践为主的学科当中真正的"火箭科技"。一个程序员,当他掌握了基本的编程技能,并且具备一些实践经验以后,如果要求在编程技术上进一步深造,则无非有三个方向:
- 其一是钻研高超的算法;
- 其二是深入计算机和网络体系结构;
- 其三则是提升编程的抽象层次。
三条路线彼此相关,触类旁通,殊途同归,无分优劣。不过从编程技术本身来说,提升程序的抽象层次具有化繁为简、四两拨千斤的妙趣,尤其引人入胜。六十年来计算机和软件技术的一切发展,就是抽象层次不断提升的过程。从最早的硬件开关、机器语言、顺序加跳转的指令流,到后来的高级语言、结构化编程,再到近二十年来相继兴起的面向对象、构件技术和面向服务架构,无不遵循着这一逻辑。
提升抽象层次有多种手段,函数库、类库、框架、构件、服务,不一而足。而在所有的手段当中,计算机语言是层次最高、能力最强、最富妙趣的一种,别的手段能够达到的效果,语言都可以更轻松的实现,而语言所具备的某些效果,则没有别的手段可以企及,语言是提升软件抽象层次的终极手段。这并不奇怪,人类的抽象能力最终归于语言,这是在哲学范畴内已经被深入讨论过的命题。因此,计算机语言的理论及其处理,被很多一流学者认为是计算机科学中最成熟、最优雅、与实践结合最完美的部分,其重要性不言而喻。
在实践中,如果一个程序员具备强悍的计算机语言处理能力,则他的程序编写和设计能力将会比其他人有层次上的超越,往往能够做出创新性的成果,给开发的效率和效果带来本质性的提升。不但如此,在编译技术中,有很多思想和具体的算法,在很多其他场合能发挥意想不到的效果,可以说编译技术是软件开发的一个思想和工具的宝库。然而在为数几百万的专业程序员队伍当中,能够主动利用这一宝库,运用现有工具熟练处理语言者,已经是少数。而能够主动根据需求设计优质的计算机语言,并且开发配套语言处理工具的人,更是凤毛麟角。究其原因,一是因为语言设计本身对设计者的要求很高,非有深厚学养和实践者难以有所作为,二是因为编译技术本身颇有一定门槛,不但有一整套抽象的理论,而且涉及多个环节,大量细致的算法,需要集中精力系统学习,不容易掌握,更很难臻于上乘。
本文地址:http://www.nowamagic.net/librarys/veda/detail/1577,欢迎访问原出处。