计算机的语言和生态

世界上的计算机语言已经数不清了,回想自己这一路 VB > C# > Python > Ruby > Object C & Swift > JavaScript,这些都是吃饭的家伙。但有时细想起来,每什么会有那么多语言,是什么决定一个语言的兴衰的呢?

生态

一直在讲,语言不重要,语言之所以有力量,是因为它有一个生态。

先不说哪个语言只能解决特定的问题,大部分语言的设定都是通用的。都有基本的类型、网络、IO、安全、的几部分组成。一些模式,都是语言进化的事,并不影响语言的功能。不同的就也就生态。语言会影响着生态,生态会反作用于语言。

生态是什么概念,比如说 Web,它要有对应的库,对应的解决方案,对应的大量的初中高级文章,来更多的人来入门,扩大自己的影响。

那些语言们

- 微软系

不过话说,自我第一门语言就是 VB,这是我在生活的那个小地方能买到的语言类的书了。

从大学到毕业,一直是微软系的语言用来吃饭。C# 真的伴我走过了很长一段路。

- Web 2.0 - 打败的 Python 的 Ruby

后来在 MSN 时,觉定要学一门新的语言,那时是互联网发展的好时候,当时选的是 Python,原因是 douban 在中国的推广。

等学会了语法,开始上手项目时,就被难住了。当时的流行是 2.7,但学习时是 3.0,而且 Django 这类主流的框架都不支持 3.x。这就痛苦了,在 2.7 和 3.x 间纠结了好久,就放弃了。

是放弃了 Python,而 Ruby on Rails 简直就是万能的神,所有之前的痛都烟消云散,这,就是 Web 2.0。

这是真的,DHH 是一个很聪明的人,他们所有对 Web 的理解都浓缩在这个全栈的框架里,无论是数据库层,业务层,Web 层,都巧夺天工,有着 ASP.NET 的完备,又有着完整的优雅。

后来用 Rails 做了很多的小事情,也理解了生态的意义,特别有趣的是上海的 Ruby 社区,这是我到目前仍参加的唯一的一个社区,风气特别好。

- Web 3.0 之 JavaScript

JavaScript 还是那个 JavaScript,但环境已经不是那个环境了。

2.0 的时候很快就过去了,大量的小企业的起起落落,网站也被 APP 代替了。API 成了主体。

这时 Rails 这种全栈就显的太重了,它的渲染流程太长,而且 Ruby 的性能问题依旧。

Node 这颗新星冉冉升起,有着 V8 的性能,语法被 ES5, ES6重定义,未来有 Promise, Async 的支持。而且 JS 本来就是前端的语言。

于是很多公司组成大前端,将业务 API 层划分到前端。

对应 Rails 的冗长,JS 反而是轻量的,适合 API 的。

于是 Node 取代了 Ruby,成了主要语言。

- Apple 的 OC 和 Swift

在微软离职后,转行做了 iOS,语言也自然换成了 OC,第一次写代码像写作。

后来就是 Swift,上了这个贼船,从 1.0,2.x,3.x,到目前的 4。一路艰辛。

不过 Swift 和 OC 不同,它是一个开源的语言,应用领域也会更多,比如在 Android, 后端都有人进行尝试。

- Java - 老企的最爱

Java 呢,有着大厂的持续投入,有着历史和标准,成为了企业的首选。

早年一直想用 Java,觉得它和 Linux 一样,是自由的象征,后来的 Java 已经是另一个天地了。

- 运维和科学的专属 - Python

Python 比较有意思,它是 Linux 内必带语言,每一个发行版本都会有这个,所以,它就成了运维的首选。毕竟和 Shell 比,Python 还是好用太多的。

除了运维,Python 还在科学领域一支独秀。就是这些初先的使用者,在主导着这个语言的方向。

于是 Python 也成为了 AI 的首先语言。

关于 Python 为什么成为科学的语言呢。
Python 社区早年投入精力开发了Numeric,使其像 Matlab 那样自然地支持数值分析。Python在类Matlab的数组操作和绘图功能上的支持,是它比 Perl 和 Ruby 更受到科学青睐的主要原因。

- golang 云计算的新兴

Golang 已经在 云计算领域,有了发展。这得益于它的友好的多线程。

并且有着像 Docker 一类的旗舰级应用。

其它

Java 有学过完整的语法体系和模式到工程,Go 就是兴趣看看。

像其它的 Scala 等,更是没有接触过了。就不做讨论了。