欢迎来到天天文库
浏览记录
ID:18917592
大小:227.25 KB
页数:6页
时间:2018-09-27
《为什么会有这么多种程序设计语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、为什么会有这么多种程序设计语言?传说人类建造通天塔触怒上帝,上帝施法使人类语言混乱彼此之间无法交流。这就是说各种各样的语言其实就是祸乱之源——只会导致交流的不便。可是看看如今的程序设计语言的数量,你会怀疑人类是否又在造“通天塔”了?真的有这么多语言的必要吗?我到底要学习多少种程序设计语言才够用呢?根据维基的资料,可以称得上相对“主流”(有人用、有文档)的程序设计语言至少有600种,还有大量的商业化失败、实用性不高、语言小众(这里的“语言”指的是编码的语言,一般的程序设计语言都习惯用拉丁字母集合或其超集来作为源码的字符集,也有用日文、俄文编程、汉语编程的,比如易语言)就难以统计了(保守估计可以
2、上万种),尽管已经有了这么多种程序设计语言,仍然有大量的人投入了大量的时间来研发新的语言,这难道不是重复通天塔的故事吗?为了解释“为什么会有这么多种程序设计语言”这个问题,想让我们来看一份较新的最流行编程语言流行榜:排行榜上排名前十的依次是:C、Java、Object-C、C++、C#、PHP、Python、JavaScript、Perl和VB。下面我会根据这份排行榜来回答我们的问题。首先阐述一个基本观点:程序设计语言被创造的目的主要有三个——实用目的、学术目的、商业及特殊应用需要。且听一一分解:一、实用目的可以看见在排行榜中,C,Java,C++这样的语言几乎是年年稳居前五。这些语言的实用
3、性都是非常高的。让我们回顾一下C语言的历史:1973年AT&T的KenThompson因为研发和维护操作系统的需要,要求一种高效简洁的程序设计语言,于是在BCPL语言的基础上创造了C语言。Java、C++等语言也都是在有着类似的高要求的任务下临时创造出来,然后再不断发布标准进行改进的(C语言是为了操作系统,Java是为了嵌入式应用和网络开发……)如果现有的轮子不够好,那么就去自己造一个轮子,也正是因为这个特殊的原因,所有这些以实用为目的的语言都很高效,语法构造方法、编程逻辑和配套的编译技术都很成功,所以能够切切实实地解决工程上的问题。另外,这些实用目的语言的语法都很自由(Python因为“明
4、确”、“简单”的哲学所以算个例外),正好符合了不同性格的程序员的需要。另外非常重要的一点是:“决定一种程序设计语言是否强大的是这个语言的库(标准程序库、类库、包、组件、单元、模块……每种语言都有自己的叫法)而不是程序设计语言本身”;这可能会让很多人不高兴:说实话,C语言在语言的优雅性和友好性上(比如==和=)完全和Ada、Pascal比不了(Ada是军方人员设计的,Pascal是数学家设计的),但是C语言依然非常流行,这是因为你想要写一个含有系统调用的程序,用C语言是最佳选择,Ada和Pascal这样的语言想要直接和内核交流是很麻烦的。同理也可以解释C++、Java、Perl等语言的流行,你
5、想要写多线程的程序用C++的多线程库和Java的包就行了,你想写正则表达式相关的程序用Perl或者C++boost库就好了……懂得不要重复造轮子是很重要的,遇到不能解决的问题,先去查查资料看有没有人已经写好了类似的程序,直接把他的函数抄过来就是了——这恐怕是很多人都会做的吧?这些实用性的语言,在长期使用的广泛的使用过程中积累了大量优秀的库(C++的STL、BOOST和有些编译器自带的库,Object-C专门针对MacOSX的库,Fortran的便于科学计算的函数等等),而且还有越来越多的程序员在不断增加更好的库,这些都使这些“语言”越来越强大。这些程序设计语言在发展过程中既有一些公共的库(比
6、如文件的I/O),也有一些特有的库(比如线程库、RE库),这些特有的库往往是某一语言的最大优势,可以说正是这些各自独立的库把不同的语言区别开来,长此以往,解决某些特定问题时程序员就倾向使用某一特定语言。这并不是说这些特有的库无法移植到其它的语言上,只是由于代码量巨大,移植是在是个不小的工程(况且,在某种语言中表述很方便的语言在另一种中就会难以表示,比如C语言有很多语言都没有的显示指针,在Lazarus项目中,程序员开发了一个程序用以把C头文件自动转换成Pascal单元,即使这样,实现代码的量依旧很大,这种源到源的语言翻译的介绍可以参见龙书的引论部分,不学编译原理的请略过)。因为有如此多的专用
7、库,这些实用目的语言越来越多也就不稀奇了。二、学术目的不管什么程序设计语言,在本质上都不过是机器级别的0或1。所谓的高级语言不过是机器眼中的胡言乱语(这也正是编译技术存在的价值)。然而,人不是机器,也不可能也没必要成为机器。创造程序设计语言的目的是为程序员服务的,应该说,一个程序员所用的语言很大程度上决定了他的思维方式——程序设计语言本身就是一种严谨的数学模型、一种高效的思维方式。为了说明这个道理我以一个物理
此文档下载收益归作者所有