为什么我从Java转向了Kotlin?

发表时间: 2018-06-01 10:23

点击上方“CSDN”,选择关注

关键时刻,第一时间送达!

多少语言就是死在了取代Java的路上

Java:我活着的意义就是天天被取代

Java:我也不知道我为什么有那么多敌人

一个Kotlin初学者不希望Kotlin宣布XX年后取代Java,(毕竟)20多年来立这个flag的语言都死了

Kotlin等语言的出现不会导致Java被彻底替代,只是缩小了Java的应用范围,每个编程语言都有自己擅长的一面,都有存在的价值。所以大家不要担心学Java以后没饭吃

……

这是前不久我们发布《Kotlin或将取代Java》一文之后,来自网友们的部分声音。

可以看到:作为编程语言界的老大——Java仍然有一票铁粉追随。当然,从来没有人说过学习编程语言是一个非此即彼的问题,也从来没有人是为了学习编程语言而学习。归咎到一点,尽管学习某种新的编程语言,有时是迫于就业形势,是恰逢学习时机,是乐于追求新事物,但我们最终理想的状态是能够掌握所谓“编程的思想”。

“我从来不建议大家只学习一种编程语言,我个人是非常乐于追求新事物的,所以,对于Java,我会保留相关的一些资料以做不定期的更新,但我的兴趣点已经确实不在Java身上了。”

《Java编程思想》之父Bruce Eckel如是说道。目前,他正不余遗力地对外宣扬自己的Kotlin编程之道,并于今年秋季联合出版新书“Atomic Kotlin”(暂且翻译为《原子Kotlin》)。

Bruce认为,Java的下一个继承者将是Kotlin,“尽管自己非常喜欢Python”。

实际上,在2017年5月Google I/O 大会上Android团队宣布Kotlin将成为官方头等支持语言后,有关Kotlin或将替代Java、摆脱“流氓专利”Oracle的声音就不绝于耳。

直到今年,根据Android团队分享的数据显示:

“在过去一年里,有35%的专业Android开发者在使用Kotlin,其中95%的开发者都对Kotlin非常满意”。

此外,无论是官方文档上的代码示例片段,还是Google最新开源demo的源代码,Kotlin已赫然成为头号用语。而7年前,JetBrains才刚刚推出Kotlin。

如今,不管你愿不愿意接受,因其实用与高效的基因特征,使得Kotlin等众多的新兴编程语言正以最快速的方式被创业公司的技术开发团队提上日程。

不过,使用群体的差异、历史包袱的挑战以及企业用人成本的考虑,成为其作为“小众语言”能否在Android圈快速崛起最关键的问题。

“这是否意味着将有更多的人弃用Java?Java将何去何从?”

带着这样的疑问,近日,CSDN独家访问了《Java编程思想》之父Bruce Eckel:

左:CSDN记者 杨丽、 右:Bruce Eckel

在外人眼里,Bruce Eckel是MindView公司总裁,是《C++编程思想》、《Java编程思想》的作者,是C++标准委员会拥有表决权的成员之一,是已经发表了超过150篇计算机技术文章,出版了6本书的技术思想大牛。

或许,起初写书只是Bruce为了成为一个更好的咨询顾问。但目前看来,写作成了他的终身事项。他还会经常游访各地与读者见面,这或许也激励了他要做得更好,在写作这件事情上下更大的功夫。

而在管理自己的公司事务上,Bruce将MindView这家公司形容为“是为我写作、咨询、举办会议等活动的保护伞”。事实上,这家公司以开源的方式,力求为开发者构建一个开源且有偿的工作,可以称之为“研究机构”或者实验。

与那些追求利润的企业创办的目的不同,他更为关注的是让工作成为人们生活中可以带来快乐的方式。

Kotlin是接下来的关注点

CSDN:您最近正在忙于何事?

Bruce:在过去的一年到一年半的时间里,我正在与另外一位女性技术作家Svetlana Isakova联合撰写《Atomic Kotlin》一书,因为Svetlana本身是JetBrains公司的其中一个负责人,而且同样也是Kotlin语言的核心开发者,由于她远在俄罗斯,所以我们通过在线的方式进行沟通。

另一方面,我也在同步有关Java资料的更新,这是一本新书,其主要内容基于Java11。

CSDN:不过,此前您的一本基于Java8的书耗费了您近两年的时间,实际情况却是Java版本的迭代开始变得更为迅速,现在Java11路线图也发布了。您是如何看待这一趋势?是否会影响读者的选择判断?

Bruce:尽管Java版本的迭代开始变得更为迅速,但这都是相对小的改变。从Java8到Java11的迭代不会特别困难,因为我们关注的是语言的进步,而非隐藏在下面其他东西。所以,这个现状也不会影响到那些会看我的书的编程人员。

CSDN:那接下来您将如何跟进这一改变?

Bruce:我有一位年轻人与我共事,他会帮我整理有关Java的新资料以加快速度。当然,我可能确实擅长于写作,所以我还在考虑聘请一位编辑帮我整理资料。

因为关于Kotlin这本书需要在今年10月阿姆斯特丹举办的Kotlin大会之前完成,我更需要全身心投入到后者身上。

CSDN:这两天与中国读者的互动中,能发现仍然有很多人是因为《Java编程思想》这本书前来的,就您看来,这本书为何能收获包括初学者在内广大读者的喜爱?

Bruce:无论是《Java编程思想》还是《C++编程思想》都是为专业的编程人员准备的。

不过,在过去的这些年里,有很多人告诉我他们正是因为这本书而选择学习编程。所以,我认为读者喜欢这本书还是出于对Java的直觉。当然,我随后也有别的著书希望能为初学者学习,但毕竟这仍不是一本初学读物。所以,如果你一开始便有志于编程,你必须意识到想要读懂该书需要具备一定的能力。

CSDN:看得出来您目前对Kotlin非常关注,不过这是否意味着您不会鼓励读者读《Java编程思想》这本书?

Bruce:尽管这本书仍非常有用,但确实有一些东西已经改变了。而且另一个问题是,当我在写别的版本的书时,又会遇到篇幅的限制。所以,总有一些内容需要提取出来,再重新介绍一遍,因为我写这本书的目的是仅作为电子版本。而且我确信,这本书在翻译成另一个版本时,很可能转换成两卷,因为这本书实在太庞大了。我希望结束对Java的(写作)工作,或许在未来做些小的修缮。但我确实不想再写任何有关Java的文章了。

而目前像Python、Kotlin、Julia都是大家更为关注的语言。如Julia,其设计之初就是为了提高效率,并且可用于深度学习、大数据等领域。所以,我感兴趣的是这些语言将如何用于解决实际问题。回到Java这个问题上,我仍会保留Java的相关资料,但确实不是我接下来感兴趣的事情。

很多企业仍在使用Java

CSDN:我曾问过一位IT从业者,如果要他来选择作为学习的第一种编程语言,会选择哪个?他给出了Java的答案。而实际情况也是Java的学习者和从业者人数都占有较高的比重。对此您如何看待?

Bruce:这并非不合理,毕竟如今有很多企业正在应用该语言。

不过这还是要基于实际情况。如果你创办了一家企业,会苦恼于究竟是否需要使用一种更为现代的语言,因为实际情况是目前有很多人懂Java,如果选择聘请了Java工程师将意味着你起步很容易。所以,选择哪一门语言将取决于你想要解决的问题,以及你的实际情况。不过,作为我个人而言,我不太喜欢被旧的事物和错误所牵绊,我倾向于学习更多新的编程语言。

来源:JAXenter 2018年技术趋势——编程语言Top榜单(数据显示,Java 9 并非像Ja

CSDN:那学习不同的编程语言需要具备哪些不同的素质和技能呢?

Bruce:需要指出的是,仅学习一种编程语言的想法,是错误的。学习不同的语言会给你带来不同的收获。例如,Java无法教会你功能性编程的概念,特别是计算机需要多线程运行时。我们需要同时编程。相比现代语言,Java就显得太不合时宜了。

对于初学者如何去测试他们的真实水平,我可能不会做太多的功课。

CSDN:您是否针对中国的读者是否有做过一定的调研呢?

Bruce:事实上,确实没有。但是当我写《Java编程思想》时,其素材来源于学术研讨会,所以,我开始不断参加一些学术研讨会,所以这算得上某种分析研究吧。

不过,写书已经成为我的一项业务爱好,尽管上一本基于Java8的书耗费我两年的精力,但我还是不会选择将太多的时间花在对读者的调研上。

对编程语言的理解

CSDN:在您的Keynote分享中曾提到,“当前编程面临的三大挑战是编程语言的设计和影响、并发性以及错误处理和报告”,如何理解这句话?

Bruce:由于我在不断地学习新的不同的编程语言,所以以上的观点更像是我的一个研究课题。我也并不认为,这必然就是编程中遇到最重要的问题,这仅是我个人的关注点。

CSDN:谈及对中国大龄程序员,我会简单将他们分成两类,一类专注于业务,一类更为全面发展朝管理层发展,就您所了解到的,目前您会对他们所遇到的问题有哪些建议?

Bruce:我会看到目前绝大多数人都会“受困”于赚钱养家的问题中,这直接导致他们无法有更多的时间提高自己的技能。我对这样的趋势很不满意。

CSDN:编程语言的设计与发展已经有很多年的历史,您是如何看待当前的环境?又将如何提高或训练自己解决这些问题的能力?

Bruce:现如今编程语言的环境已经非常良好了,我们可以更好地创造和理解一种是否可以提高开发者生产力的语言。而且,创造一种新的编程语言也变得越来越容易,人们可以通过试验判断该语言的优劣性。正如我选择Kotlin的原因之一在于,它的特性是经过验证的,而其设计之初也是为了让编程变得更快捷轻量且多产。

在今年8月举办的会议上,我们将作为一次尝试,邀请不同级别的人士前来,他们也会被两两分组进行每场测试。水平高的人同样会在向水平相对低的人教授时精进。我个人也十分期待这次测试的最终效果。因为,这也直接考验着新书“Atomic Kotlin”中的素材准备。同样,本书联合作者Svetlana也将会从柏林前来讲授。

征稿啦!

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。

如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。