Dipper说:就因为同一样事情还有着C++模板、传统Delegate和新兴动态Minxin的选择,让我们还觉得有些许的自由和左顾右盼的乐趣。
深以为然。
软件开发的经历,不长也不算短。接触的编程语言,不多也不算少。编程语言是一种工具,而在工具的背后,少不了思想。它为谁而诞生,要解决什么问题,使用什么方法,有什么限制。所以不同的语言,对于同一问题,亦有不同之道。尽管过程迥异,而殊途同归,有不同的选择,体会不同选择背后的思想,这也是编程的乐趣之一。
尽管对于同一问题,多种语言都会有解决之道,然而差别很大。毕竟每种语言设计目的不同,风格各异。从文件中提取字符串,用Perl也许就两三行,用C++则洋洋洒洒一大段;基于Reflection的Injection,在C这样的静态语言中,全无用武之地。在特定的环境中,总是会有一些语言相比其他更合适一些。所以我想,编程语言还会是一个百花齐放的局面。
学习一种语言,一般是了解有什么功能,如何使用。如果换一个角度,从观察它的过去、现在,到推测未来,也许是另外一番观感。如JAVA的最初设计,本来是面向消费类的电子设备;赶上www的时代,再经过十年的发展,面貌已经大变。语言的变迁,离不开环境的影响——技术、产业、公司、社团乃至个人。纵观语言的发展史,不难发现围绕其周的这些因素,从而体味更多超出语言层面的内容。
所以我喜欢Bjarne Stroustrup的《The Design and Evolution of C++》,这是迄今为止唯一看到的从时间的纬度讲述一门程序语言的书,而且作者有那么牛的资历。