前不久,TechRepublic 发表了一篇文章讨论关于开发人员喜爱与讨厌的语言。结果很有意思:
Java 在最受欢迎的语言排行榜名列第三,同时在最讨厌的语言中排在第二名。
显然,Java 作为一门开发语言,人们对它的看法形成了两极分化。对此 C++ 的创始人 Bjarne Stroustrup 曾回复到:“这个世上只有两种语言:人们抱怨的语言和没有人使用的语言。”
此言不虚啊。
正因为 Java 的普及度高,不仅 JAVA 被大家抱怨,JAVA 之父也经常被人抱怨。今天我们就来介绍一下创造了这款传奇语言的传奇人物 —— 詹姆斯•高斯林(James Gosling)。
天才的诞生
高斯林出生于加拿大,是一位大人口中的计算机编程天才。在他12岁的时候,就能自己设计电子游戏机,或者帮邻居修理收割机这种技术活。
高斯林大学时期在加拿大卡尔加里大学天文系担任程式开发工读生,1977年获得了计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位。
在卡内基·梅隆大学攻读计算机博士学位时,他编写了多处理器版本的 Unix 操作系统上运行的 Emacs 类编辑器 Gosling Emacs(以C语言编写,使用 Mocklisp 作为扩展语言)。
毕业后高斯林到了 IBM 工作,设计了 IBM 第一代工作站 NeWS 系统,但没有收到公司领导的重视,这也导致他后来跳槽到了 Sun 公司。
1990年,高斯林与 Patrick Naughton 和 Mike Sheridan 等人合作「绿色计划」,后来发展一套语言叫做「Oak」,也就是今天我们所熟知的 Java。
1994年底,高斯林在硅谷召开的「技术、教育和设计大会」上正式展示 Java 程式。
2000年,Java 第一次成为世界上最流行的电脑语言。
JAVA 的起源
Java 语言最开始只是 Sun 计算机(Sun MicroSystems)公司内部研究的一个小项目。
当时一个叫做帕特里克·诺顿的工程师被公司自己开发的 C++ 和 C语言编译器搞得焦头烂额,因为其中的 API 极其难用。所以后来他决定改用 NeXT,同时他也获得了研究公司的一个叫做「Stealth 计划」的项目的机会。
「Stealth 计划」后来改名为「Green 计划」,也就是后来詹姆斯·高斯林加入的工作小组。
他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,因为 Sun 公司预料未来科技将在家用电器领域大显身手,所以这个小组主要也是瞄准下一代智能家电(如微波炉)的程序设计。
团队最初考虑使用 C++ 语言,但是很多成员包括 Sun 当时的首席科学家比尔·乔伊,发现 C++ 和可用的 API 在某些方面存在很大问题。工作小组使用的是嵌入式系统,可以用的资源极其有限。并且 C++ 缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。
最后,他们想要一种易于移植到各种设备上的平台。根据可用的资金,乔伊决定开发一种集 C语言和 Mesa 语言大成的新语言,在一份报告上,乔伊把它叫做「Future」,他提议 Sun 公司的工程师应该在 C++ 的基础上,开发一种面向对象的环境。
最初,高斯林试图修改和扩展 C++ 的功能,他自己称这种新语言为 C++ ++ --,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为「Oak(橡树)」,以他的办公室外的橡树命名。
但就在产品发布前的关键时刻,律师告诉高斯林的团队已经有另外一种语言被命名为「Oak」,他们需要重新取名。
如果通过正式程序来注册产品的名称将即费时又费钱。高斯林决定通过市场部门,请来了一个命名顾问,召开命名征集会。当时,因没有一个合适的名字,他们不得不延后这个语言的面世。
在命名征集会上,大家提出了很多名字。最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。
排在第一位的是 Silk(丝绸)。尽管大家都喜欢这个名字,但遭到高斯林个人的坚决反对而作罢。排在第二和第三的都没有通过律师这一关。
高斯林最喜欢的就是排在第三位的 Lyric(抒情诗)。只有排在第四位的名字、得到了所有人的认可和律师的通过。这个名字就 JAVA。
Java 是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。国外的许多咖啡店用 Java 来命名或宣传,以彰显其咖啡的品质。Java 语言中的许多库类名称,多与咖啡有关,如 JavaBeans(咖啡豆)、NetBeans(网络豆)以及 ObjectBeans(对象豆)等等。
从此一个即好听又好记、具有强大的生命力的编程语言 Java 诞生了。
Java 的正式问世,使 Sun 市值大升,一度超过 2000 亿美元,当时所有网络公司都为 Java 配置了专门的开发团队。业内外一致认为,Java 是互联网最有力的推动力量,Java 使无时不在的联网成为可能。
对于当时的几百万开发者来说, Java 就是互联网, Java 就是真金白银,Java 就是自己的未来,Java 就是一切。而 Sun 也第一个喊出了「网络就是计算机」的口号,使互联网迅速发展,遍布全球。
1993年在创立公司的第 11 个年头,Sun 进入财富 500 强榜单。
值得一提的是,在 IBM、微软等企业还没注意到中国市场的时候,Sun 成为了中国市场开拓的第一家海外技术企业,并且成为了直接与中国政府开展技术合作的计算机公司。
JAVA 是最好的语言么?
Java 之父高斯林将 Java 形容为蓝领编程语言。其基本思想是提供一种语言,帮助开发人员完成工作,在这方面 Java 确实取得了很大成功,并且流行到了现在。
根据大数据网站 Indeed 2019年1月公布的各程序语言实际岗位需求数据显示,2019 年最流行的 7 种编程语言对应的岗位需求数量如下:
- Java 约 65,000 个岗位
- Python 约 62,000 个岗位
- JavaScript 约 39,000 个岗位
- C++ 约 37,000 个岗位
- C# 约 28,000 个岗位
- Perl: 约 14,000 个岗位
- PHP 约 17,000 个岗位
虽然 Python 来势汹汹,但 Java 目前仍然以微弱的优势排在第一位。
那么,Java 是最好的语言么?
其实,在每个领域都有最合适最匹配的编程语言。
C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。
C++ 是面向对象的 C 语言,是低延迟系统最适合的开发语言之一。
JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳,并且非常灵活,运行速度快、开发效率高。
Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。并且语法简单、语句清晰,应用超广泛。
Ruby 强于 DSL(领域特定语言),在众多编程语言中,Ruby一直是初创公司的绝佳选择。凭借其简单直观的代码,Ruby可以促进软件开发并节省时间。
Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。并且很适合用来做快速原型开发之类的。
Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。尤其是以太坊的出现,完全是用 Go 来写的,对 Go 语言的促进非常非常大,也拉高了平均工资。
编写网页大家第一选项就是用 PHP,PHP 的成功在于坚定不移地走群众路线,简单实用的东西永远不会过时。
函数式编程有 Lisp,编写 iOS 程序有 Swift/ObjectiveC。
一句话概括,能排在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。
但是,Java 语言到底有什么优势可以占据排行榜第一的位置呢?
其一,语法比较简单,学过计算机编程的开发者都能快速上手。
其二,在比如服务端编程,高性能网络程序,企业软件事务处理,分布式计算,Android 移动终端应用开发等领域具有极强的竞争力。
Java 从出生的那天起,就试图通过新的方式解决软件编写的复杂性。很多人认为 Java 语言做到了它承诺的一切,但 Java 绝不是一门完美的语言,只是在全能方面可能是最好的语言之一。
JAVA之父的困境
Java之父最近一次上热门,是年过花甲的他在 Facebook 上发表了他所遭遇的年龄歧视。
高斯林从甲骨文离职原因:不仅薪酬大大降低,甲骨文连「资深工程师」的职称都木有给,之前高斯林在 Sun 是 VP 级别。此外,最打击人的是,高斯林的话语权也被极大限制,他和 Java 领域的同事,无权决定任何事情。而他只能当当花瓶,代表甲骨文出席各种 Java 公开活动。高斯林自称他的性格不适合做这个,所以选择了离开。
他曾在后来的面试中被HR告知,“通常我们不招你这种年龄的程序员,但你的情况特殊(Java之父身份),所以对你特殊考虑。”
高斯林作为 Java 之父的特殊身份姑且可以让他在硅谷谋求到一份不错的职务,但其他普通的年长从业者可不是那么好过。他们的焦虑和歧视,促使他们从外貌、思想和履历上进行「年轻化」,甚至有部分人通过整容手段来让自己看起来更年轻。
根据统计,美国在职的工作者的平均年龄是42岁,但在硅谷这个数字变得更低。比如苹果公司是31岁,Google和特斯拉是30岁,Facebook 和 LinkedIn 是29岁,而其他公司甚至更年轻。
但回头看那些优秀的年轻程序员,也都正在步入中年,在这个需要大量知识积累、高速发展、不断革新的行业,有一天你一旦发现自己变优秀了,你必然也会突然发现自己也步入中年。在这个行业里即年轻又优秀只是相对。因为这个行业没有长期的虚心、踏实的学习和艰苦的磨练, 是不可能优秀的。
所以关于程序员的中年危机,不必过分担忧,什么行业没有中年危机?不优秀,无论什么行业都会变成无用的中年大叔。我反而认为中年程序员的出路, 比其他行业更多。
千古江山,英雄无觅,孙仲谋处。舞榭歌台,风流总被雨打风吹去。斜阳草树,寻常巷陌,人道寄奴曾住。想当年,金戈铁马,气吞万里如虎。元嘉草草,封狼居胥,赢得仓皇北顾。四十三年,望中犹记,烽火扬州路。可堪回首,佛狸祠下,一片神雅社鼓。
凭谁问,廉颇老矣,尚能饭否?
- END -