在这一章我介绍了这么多的编程语言之后呢,我想在这一章快结束的时候做个总结,其中最主要的观点就是基于程序员的时间资源是一个最稀缺的一个客观现实。所以在考虑用什么语言做创客项目开发的时候是一个最基本的出发点,这个出发点。
点:软件开发活动内在的特点,即计算机程序语言必须具有良好的可读性,任何程序在其生命周期内都不是一成不变的,软件总是需要修改的,所以在软件的生命周期内我们可以分成两部分,即开发部分和维护部分。实际整个开发部分只占整个成本的1/10左右,剩下的9/10的成本都是维护成本,所以一个软件项目的维护成本过大的话,那么语言部分在项目开始的时候就不是一个好的选择。代码的可读性和许多的因素有联,比如语法是否晦涩难懂啊,Perl和C++语言就是在这方面比较糟糕的一个案例。代码是否足够的模块化,比如Java就是这方面比较好的一个典型,Haskell等在这一方面做的都不错。
语言的库的组织是否良好,语言是否支持复作用,因为纯函数式编程风格是没有复作用的,而其他的语言都有这个复作用。编程风格的约束是否很多等等。像这样的细节在启动一个创客项目的时候我们都要进行一个综合的考虑。
第二点:编程语言的表达能力抽象能力必须要卓越,如果甲语言的一条语句可以做好乙语言的成千上万条语句的任务,那么这个甲语言肯定比乙语言更能够得到接受。这也解释了为什么C语言在系统编程领域基本上已经替代掉了汇编语言,前面已经讲过,一条C能够把成千上万条指令打包进去。因为在这起关键作用的是程序员的时间,程序员的时间资源总是有限的,不可能无限延长。所以如何提高程序员的编程效率那就是最关键的因素了。
第三点:函数式编程语言,尤其是纯函数式编程语言在这一点上是值得支持的,从今往后我很难想象用C或者C++去开发这种大型的应用程序,因为这种语言的抽象能力和Haskell相比还是太低了。在C语言中连一个简单的链表都没有,还需要程序员自己打造,指针满天飞。这种语言对于大型应用程序的开发抽象实在是太低,以后可能还是局限在系统编程领域。而Haskell这类具有很强表达能力的编程语言很有可能会迅速的流行起来。同样的由于程序员时间资源的限制,所以对已有资源的可重复性使用显得非常重要,我这里是指合法的重用别人的劳动。应为在资源可重复性利用的情况下,程序员的编程效率就大大的提高了。拥有大量的可重用的资源,说明这个语言具有很多开发人员群体。在可以预见的将来,至少在程序员的职业生涯的时间内这个语言的社坛一直会保持较高的活跃度。从这个意义上讲,不可忽略的一点是在目前的环境下Java和Python这两个社坛具有非常多的资源和广泛的群体。
第四点:软件开发活动一直都是基于个人创造力的,这一点是在可预见的将来仍然不会改变,除非将来我们不需要人工的编写程序了,所以选择编程语言对于个人创意的支持力度极为关键。或许低成本的印度软件开发人员可以做好外包,但是外包工作无法替代掉软件开发过程中创意和建模与设计的部分。在软件开发过程中由于个人程序员的时间资源稀缺,所以在大规模的软件开发的时候又有团队合作的问题,随着现代软件的规模越来越大型化,团队合作的重要性也在上升,即使是说对于上于5个人的小规模团队如果选择的语言不适合团队作战,不适合团队中的合作与协作的话,那么这个语言或许适合开发小的工具,想Perl是一个典型的例子,Perl开发小型的脚本就不错,但是它却不适合开发大型的软件。比如平台级的软件,以及算法复杂度非常高的软件。那么在今天的市场上你想立于不败之地的话,那么丰富你的软件功能的秘诀就是提高你的代码的复杂度还有代码的规模,换句话来说,开发大中型的软件才能让你的客户喜欢你,才能让你的对手很难战胜你。也就是说,你的编程语言必须对团队的所有成员要有某种和力。即使这种语言不是或者不会成为市场上的主流语言,它应该对你的团队具有亲和力。