漫谈开发语言的选择

开发 开发工具
我们该如何选择开发语言,有的时候取决于开发团队的项目需求。在这里我们要专注的是开发语言的选择而非开发语言的优劣。

在软件这个行业里,怕是没有任何一个其话题域像开发语言这样引起争议了。对开发语言是非的争论,不单旷日持久,且深度亦是与时俱进。

实现要强调下的是,在这里我们要专注的是开发语言的选择而非开发语言的优劣。

从不同的视角对开发语言进行选择,其结论可能大相径庭。

从项目的角度看,语言自身特性的多少,强弱往往并不成为一个关键选择因素。好比说某语言支持多重继承,而某语言不支持多重继承,但对大多项目而言多重继承这一语言特性并不成为选择的决定性因素。从项目角度看,某些通常被考虑(或不得不考虑)的因素有:

历史的原因。维护升级类项目这类没有选择的选择自不必提,这里说的历史的原因是指这样一类情形:完成某个项目需要某一图形算法库,而公司中只有这类库的C++静态库。这个时候也许可以再做一层封装,但从省力的角度看,很多人可能更愿意选C++。

现实的具体的原因,也就是说非这种语言不可的情形。做C51程序的话,恐怕大多数人都会直接想到用C。或者面对需要指针直接对内存进行操作的情形,很多人也自然的会想到C/C++。

既有类库(组件等)的丰富程度。比如Windows下,.net中提供的类库要比非管态的C++中多很多。同等情形下,很多人出于生产率的考虑,恐怕会选C#,而不是非管态的C++。

配套工具。IDE的丰富程度,单元测试工具,静态测试工具等等。

其他还有现有人员的技能,目标性能等因素。极端情形下,团队成员水平较差,那同等条件下就要避免复杂的语言。

总而言之,在做项目的时候,开发语言的选择往往并不是由语言自身特性的多寡而确定的。通常也并不需要做语言特性的完整比较,而后再做选择。

其中一个根本原因在于:就通用编程语言而言,大多的最常用的语言特性是即被这种语言支持,也被那种语言支持的,否则的话这种语言也就不能成为一种通用编程语言。

如果单纯从学习的角度看,那需要考虑的因素与上述不同。

在学习阶段,当我们编制某个程序的时候,与程序结果相比,更应该关注的是过程,也就是究竟学到的是什么。

就编程而言,不论编制任何程序,在学习的阶段,其根本目的更应该是加深我们对编程所面临的本质问题的体会。这也就可以推导出学习阶段编程语言选择的一些基本约束:

远离RAD。在这里RAD包括,但不限于可视化编程,应用框架等等。RAD相关联的东西可以帮助我们快速达到结果,但会减少我们对程序本质进行思索的机会。因此和RAD关联过于紧密的语言,不适合作为学习的语言

选一种支持多范式的,支持大多现代语言特征的编程语言。强调多范式的一个根本原因是很多时候我们要知道我们究竟有多少选择。就一般论而言,偏于一极通常是不对的,所以强调一切皆是对象的语言必然因此导入其他限制。至少我们应该知道世上还有结构化分析和设计方法。强调现代语言特征是因为,我们很难在不支持类的语言中学习面向对象,在不支持模板的语言中学习泛型

选一门可以贯通软硬件的语言。在今时今日开发网页的时候可能完全不需要对计算机体系结构,对操作系统有所了解。但从发展的角度看,一旦我们需要对某些较大规模的产品整体负责的时候(比如:系统集成等等)了解这些基础知识的必要性就会凸显出来。从结局来看,肯定不可能每个士兵都成为元帅,但在起点上就决定了一个人必须一直当士兵的安排,多少是有点不恰当的。

读完上面的原则,很多人会发现,最终可能还是C++这类非管态的语言更适合于打基础。

这确实是我的观点。从学习的角度看,***语言应该是C++。在很多场合C++自身的宽泛性和复杂性会成为其自身的弱点,但从学习的角度看,这却成为它的强项。C++的C语言子集可以帮我读懂类似《深入理解计算机系统》这样的书,C++的抽象数据类型,面向对象特征和泛型特征可以让我们对程序的本质问题有多个视角的考察。甚至这门语言也可以帮助我们认识面向对象这样一种方法的缺陷。

原文链接:http://www.cnblogs.com/daoshi/archive/2012/06/11/2544473.html

【编辑推荐】

  1. 程序员需要谨记的九大安全编码规则
  2. 从程序员到第四次创业的生活
  3. 每个程序员都应该知道的福利
责任编辑:彭凡 来源: 博客园
相关推荐

2009-08-24 09:20:18

2010-05-05 09:22:10

Canonical开源软件

2009-01-03 08:53:15

2015-12-07 09:46:26

swift编程开源

2016-10-13 19:11:45

Go语言Java语言

2016-10-09 20:31:19

2021-12-31 09:04:39

软件设计开发函数

2011-06-22 10:04:03

C#开发

2015-09-30 12:03:13

Swfit开发语言

2011-06-29 10:28:48

编程语言

2011-07-22 13:58:48

java接口

2023-12-27 08:30:46

Java语言ArkTS

2010-01-12 10:50:59

学习C++

2011-06-08 10:06:32

C#

2012-10-31 14:31:12

开源

2009-06-25 14:32:00

Java BS开发模式

2015-08-31 10:11:43

iOS大项目开发

2015-08-26 10:36:32

ios开发漫谈

2009-08-25 10:38:40

GPL开源软件许可

2018-05-16 16:13:49

开发架构师转型
点赞
收藏

51CTO技术栈公众号