2014-03-29 22:44:33今天在微信朋友圈里,看到某美女同事在学 Python3.4。某男回复,“搬过来坐,哥给你当指导呗”。:-)
编程语言很多,而人的精力有限。把有限的精力,用来学习 Python值不值?或者换个提问的方式,什么编程语言有前途?
不妨把这个问题分解为三个子问题。
1. 一统天下的通用语言、具有区域特色的方言,哪一种路线更有前途?
2. 什么样的语言容易火?
3. 当下的诸种语言,哪些更有潜力,哪些有可能退出历史舞台?
半个多世纪以来,编程语言如过江之鲫。各种语言的语法用法大体相似,功能模块也多有重复。
与其让大家浪费精力,学习多种语言,重复开发相似功能的模块,为什么不推广一种通用语言,天下所有人都只学一种语言,在此基础上添砖加瓦,避免重复建设。
Douglas Crockford 的回答是,“我们已经尝试过了,但是所有努力无一不以失败告终”。
究其原因,“程序的核心问题在于驾驭复杂性。在应对复杂多变的需求时,如果一个程序语言不能有助于驾驭复杂系统,那么结果就是混淆不清,接踵而至的就是失败”。
言下之意,包打天下的语言,势必笨重而且晦涩。
反观针对特定领域的专门语言,Crockford说,“我们看到大量的专门的语言出现。这些特殊语种在应付特定范围的任务时,非常有效,这就足够了。当人们需要完成特定任务时,有合适的语言作为工具,这是天赐之福”。
他又说到,“语言设计的艺术在于知道如何取舍。。一个好的语言不仅能够帮助我们更好地理解问题,并且有益于找到解决方案的最佳表述方式”。
一句话的总结,对于编程语言而言,书同文,不如多元化。
选择什么语言去学习?首先反问自己,你想用它去做什么?
什么样的语言容易火?
1. 率先实践新的编程思想的语言容易火。
2. 在某一领域,提供强大功能,而且使用简便的编程语言容易火。
实践新思想、在某一领域有专长,这两个条件都是必要条件,所以是“容易火”,而不是“必然火”。例如,在实践面向对象这一思想方面,SmallTalk 是先行者。但是它的人气远不如 C++。
另外,历史经验表明,有领域专长,比实践新思想,更容易火。道理很简单,有地盘才是军阀,没地盘沦为流寇。
移动互联网和云计算大数据引领的当下,什么语言容易火?
当下以下四个方面的需求很突出,谁更能满足这些需求,谁就更容易火。
1.面向移动设备和电脑浏览器的两栖应用开发语言,能够同时强力而且友好地支持移动应用的开发,和在电脑浏览器里展现的网页开发。
2. 面向大规模并发的分布式系统语言。
3. 面向穿戴式设备的嵌入式系统语言。
4. 面向快速集成多种数据处理工具的胶水语言。
[4]
移动互联网的两栖应用,加大数据云计算的后台系统,理想的语言和工具组合,或许是这样的。
1. 电脑浏览器的网页开发 + 移动轻应用开发: 基于 JavaScript 的 AngularJS 框架
2. Web Engine: 基于 JavaScript 的 NodeJS/ExpressJS
3. 实时业务逻辑: Erlang
4. 数据库: MongoDB
5. 离线数据处理:Python
[5]
Java、MySQL、PHP 去哪儿了?
留在记忆里,因为不适应海量数据的分布式需求、和业务流程的动态重组需求。
Ruby on Rail 去哪儿了?
玩具而已,不适应高并发系统,Twitter 就是明证。 |
|