很多刚入门的同学常常让我推荐一门编程语言,我一般在静态语言堆里会推荐一门,这门语言就是 Java。 Java 是一门中规中矩的工业级别的编程语言,自 1995 年正式问世以来,从崛起、问鼎、睥睨天下到进化、平稳、丢掉兵器谱头把交椅,它经历了 Sun 的辉煌与坠落,微软的崛起与纷争,互联网的起兴、泡沫与复兴,移动互联网的大发展和 Android 平台的突飞猛进。
Java 语言,就像互联网大航海时代的一艘大船,虽然它的语法没那么灵活,也没那么强大,有时候看起来甚至是滞重的、笨拙的,但是,Java 在二十多年来每个浪潮的转折点都恰到好处的站在了浪潮之巅。 时至今日,Java 作为一门优秀的编程语言和强大的生态平台,依然屹立于程序世界之巅。
今天,我就跟你聊一聊 Java 的创造者,Java 之父 James Gosling。 以前写过这个话题,半途而废了,今天写完。
作为很早使用 Java 的那一代老程序员,我们都把他老人家亲切的称为高司令,为了方便,下面我会称呼他为高斯林。
高斯林今年已经有 65 岁高龄了,按理说这个年纪早该退休颐养天年,但他却没有,2017 年还从 Liquid Robotics 跳槽去了 AWS,和一群四五十岁的重量级计算机科学家们共事。 突然想起前段时间热议的“35 岁程序员危机”,其实年龄从来都不是问题,只要保持思考和学习,在职场中就有竞争力。
高斯林的同事也给了他很高的评价:
我从未见过任何一个人,对技术有如此强大而富有创造性的远见,并且能够清晰地看到未来。 当大家都在寻找脚下问题的解决方案时,高斯林却在一万英尺的高空绘制新航线并修建道路。 与高斯林一起工作是种乐趣,他既能描绘出看不见的路线,又能自然而然地让团队参与其中。
不过高斯林最初的兴趣爱好并不是计算机编程,而是手工制作。 在他 6 岁的时候,就被祖父废料厂里的拖拉机、脱粒机等农场设备迷住了; 到了 12 岁,他不仅会修理收割机,还把垃圾桶里翻出来的元件稍作改造,设计出了一台电子游戏机。
高斯林真正爱上计算机编程是在卡尔加里大学的计算机中心,这所大学离高斯林家只有 1 英里,他在十几岁的时候就经常跑去那里玩。 在那里,他展示出了惊人的天赋,就像迷恋手工制作一样,他对编程的热爱只增不减。 高斯林 15 岁的时候获得了一份物理系兼职工作,通过编写代码来帮助分析加拿大 ISIS-II 卫星传回的数据。 在卡耐基梅隆大学攻读研究生和博士的时候,他又肩负着将学校系统升级为 Unix 的重任,其实最简单的办法就是编写一个语言编译器,帮助逐行修剪旧机器上的程序,让它可以在新机器上运行。 高斯林却采用了更大胆的做法: 他创建了一个机器语言转译器,既可以解决当前的问题,也为更多程序在不同的计算机上运行提供了通用的解决方案。 这也给高斯林奠定了开发 Java 虚拟机的技术基础。 此后,高斯林一直思考如何编出一种流传于网络、可以在任意机器上运行的通用编码。
1984 年,高斯林正式加入 Sun,他在那里工作了 26 年,并带领团队创造出了二十世纪末和二十一世纪初最伟大的产品之一 Java。 其实在 Sun 创办初期,公司创始人就曾邀请高斯林一起创业,不过高斯林受父亲影响,得了一种叫做“创业过敏”的病。 高斯林的父亲是个创业者,搞过油田设备和房地产销售,也做过物流工作。 他总是不断寻找生意,经常从很远的地方给高斯林打来电话,电话那端的声音常常很飘渺,这种四处飘摇的生活给年幼的高斯林留下了深刻影响。 以至于后来一说到创业,高斯林就会浑身难受,比起硅谷大多数人热衷于开创自己的事业,高斯林更喜欢去创造产品并看着它们投入使用。
直到今天,高斯林也没有创办自己的公司,但是他创造的 Java 语言让无数程序员写出或即将写出一大批改变互联网、甚至改变命运的软件和服务。 其实高斯林在最初的时候没有想过自己会创造一种全新的编程语言,一开始,他只是编写改进 C++ 语言的修补代码,目的也只是为了让公司的掌上样机项目成功,这个产品有点类似于机顶盒,可以通过它控制电视、摄像机、立体音响等设备与无线网络进行连接。 改着改着他发现,要想解决网络环境安全问题,不是增加一些东西就可以做到的,而是需要深入最底层,创造新的机器语言。
1992 年,高斯林用了一整年的时间来研发新语言,并把这个语言命名为 Oak,名称来自于他办公室窗外的那棵橡树,这也是 Java 语言的雏形。 后来,Oak 经过不断改造,最终在 1995 年 5 月以 Java 的名称正式发布。 据高斯林后来回忆,Java 这个名字是奥珀曼(Mark Opperman)在头脑风暴会上提出来的,当时大家在征集名字,奥珀曼面前的一杯咖啡上正好写着 Java,Java 是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。 于是这个好听又好记的名字就被采用了,Java 甚至还把一杯热气腾腾的咖啡当作图标。
1996 年,Sun 成立了 Java 业务集团,专门开发 Java 技术,同年,第一个 JDK1.0 诞生。 短短几个月,就有约 8.3 万个网页应用了 Java 技术来制作。 1997 年 2 月,JDK1.1 正式发布,一年后下载量就超过了 200 万次。 毫无疑问,Java 成了当时最受欢迎的计算机编程语言之一。
然而 Java 的成功却让高斯林饱受质疑,因为很多技术要素在 Java 诞生之前就被提出过,比如面向对象编程、虚拟机技术、网络编程等。 但高斯林的难得之处在于,他将这些技术要素完美的组合在一起,并进行了设计和实现,形成一门全新的编程语言,这并不是一件容易的事情。 所有的创新都是递增的,在原有知识基础上,用创造性的观点对其进行全新的组织,Java 正是如此。 它不仅借鉴了 C++ 的长处,还吸收了 Lisp、Smalltalk 以及 Pascal 的特点,最终将这些环境平滑地组合在一起。
高斯林对于计算机编程也有自己的理解,他认为计算机编程是门艺术,和精力守恒定理一样: 你投入到程序中的精力越多,用户使用时遇到麻烦和折腾的精力就会越少,程序员要做的,正是在开发端和用户端之间尽量平衡开发和用户使用的复杂度。
Java 充满了计算机科学的思想,但它同时也是一种为了实用而设计的计算机语言,它简练、机智、实用,刚开始用就像人人可以上手的太祖长拳,进入某个阶段以后才恍然大悟,原来这就是江湖追逐的九阴真经。 在中国,程序员们用这门语言实现了全世界最大的电子商务交易平台,嗯,就是阿里巴巴。
其实任何成功都不是一蹴而就的,Java 也是如此,优秀的技术、时机、运气和市场营销都很重要。 Sun 在当时召集了最好的工程师组成小团队,让他们放手去做,团队也曾在编程语言的简洁性和功能性上出现分歧,公司创始人乔伊(Bill Joy)将 Java 视为未来 30-40 年的唯一一次机遇,他想把一切都纳入其中,而高斯林则是简洁性的倡导者,他认为降低复杂度会让 Java 更富有连贯性,更小型化,更友好,程序员在使用时会更容易理解和掌握。 最终,高斯林成功说服了大家,因为对于编程语言来说,技术一致性是很重要的,语言的设计应该是一个人的观点,而不是委员会式的编程语言。
现在回过头来看,当初大部分正确的决定都是高斯林做出来的,团队其他成员之所以听从高斯林的判断,和他的做事方法密切相关。 当他对一件事物有不同看法时,他不仅有话要说,更知道该怎么说。 同事在评价高斯林的时候,认为他对技术的主张是一种坚持,而不是固执,更不是妄自尊大。 这里就体现出语言的艺术了,很多程序员在与人交流,尤其是和不懂编程的人讨论时,很容易受封闭式思维影响,用专业深奥的语言解释,却没人能听得懂,这也导致一些程序员不愿意和其他部门同事沟通,因为反正说了也没人听得懂,不如不说,长此以往,同事间的隔阂也会越来越深。 说话是门艺术,你只有学会怎样向更广泛的受众解说,才能让你的决策得到更多认可。
最后,高斯林也给了年轻程序员们几条建议,简单整理出以下三点:
1.多问多读多看
办法总比问题多,遇到问题最有效也最快的解决方案就是问,不要在乎你那点面子,能解决问题就行; 还有就是多读,讲计算机编程的书和专栏很多,每天学一点,不断让自己的知识丰富起来; 还要多看科技新闻,学会分析 IT 未来局势,什么技术会火,什么行业更有前景,做好职业规划,让一身的技术知识能有地施展。
2.至少学会两门语言
每次一有人讨论谁是最好的编程语言,大家都会吵得不可开交。 其实压根没有最好的语言,甚至谁也不敢保证,自己用的语言在未来不会被淘汰。 所以多学几门是很有必要的,每种语言都有自己的特点,如果你没有时间,至少要掌握一门静态语言,比如 Java,和动态语言,比如 Python。
3.重视优化
没有最佳的完美程序,程序员要做的就是越快越简单越好: 编程,优化,再编程,再优化。 编程不是目的,程序员真正的价值是解决问题稳准狠,以最小的代价解决问题。
今天关于 Java 之父的话题就先聊到这儿,留个小作业,你平时最常用的编程语言是哪几门呢? 欢迎在留言区分享你的编程感悟。
原文 http://mp.weixin.qq.com/s?__biz=MjM5ODQ2MDIyMA==&mid=2650716428&idx=1&sn=8e7fb8adff3367b677da2923ef348554