全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名

免费领取试听课程

并获得专业顾问一对一进行选课辅导

课程名称不能为空
姓名不能为空
手机号码不能为空

领取成功

java之父:修Bug最烦人,目前还不是开源的最好时代

行业新闻 汉码未来 | java之父 bug 开源

2021-08-23 11:37:43

Java之父其实和普通程序员一样非常讨厌修Bug,他最不喜欢去修数值分析相关的问题,这样一位普通又传奇的程序员,相信大家都对他充满好奇。

java之父:修Bug最烦人,目前还不是开源的最好时代

20世纪90年代,詹姆斯·戈斯林与一群人合作创建了Oak项目,Oak是一种可以在虚拟机上运行的编程语言,并在电器上开发嵌入式应用程序。后来,Oak项目发展演变为Java。随着互联网的普及。Java成了世上最受欢迎的开发语言。詹姆斯·戈斯林也成为了"Java之父"。

 

詹姆斯·戈斯林,生于加拿大,是一名编程天才,1977年获得加拿大卡尔加里大学的计算机科学学士学位,1983年获得美国卡内基梅隆大学的计算机科学博士学位。毕业后去了Sun公司工作,后来java就诞生了。

最近,外媒Evrone公司的软件工程师、技术编辑Grigory与Java之父James在线交谈。访谈中,James提出了非常多的观点,他认为:“对可靠性的要求越高,静态类型语言就越有用。”同时,他还分享了自己对一些编程语言的看法:厌恶C中的宏,对Lombok又喜又怒,非常喜欢Lisp等等。


关于编程语言构建方式

Grigory:

作为软件开发者和软件顾问,我们试图在俄罗斯组织Python,Ruby,Java和Go社区帮助更多人。您在Java方面的经验和工作能很好地帮助开发者。在这次采访中,我们希望能与其他开发人员合作,共同解决业界的基本问题。

有些语言,比如Go,没有类别和继承,而有些语言尝试使用Rust等特性。作为语言设计师,你认为现代通用合理的编程语言应该如何构建?

James:

我应该继续使用这个类别,这对我的编程工作非常有用。C语言中有一些宏,这很糟糕,因为宏不是语言的一部分,不应该包括在内。Rust的工作人员正试图恰当地使用宏。

对于其他语言,比如Lisp家族,人们总是试图更灵活地应用它们。他们有一种定义语法的方法,几乎与语义无关。在大多数语言中,语法和语义密切相关。我写了很多Lisp,我真的很喜欢用Lisp。有些语言可以让你以不同的方式做到这一点。比如Groovy,可以直接用AST,Rust有一些语法集成的宏。但是我总觉得还有一个问题:除此之外还能做什么?

在Java世界里,Lisp计算代码片段,重新生成新代码,人们就是这么做的。尽管看起来很低级,但是很受欢迎。人们可以使用注释组合,用不同的语言生成字节码,这是非常强大的。在Jackson中,它会给你意想不到的惊喜,比如在Jackson中,它。

这方面,这是一项非常强大的技术,另一方面,它很难控制。这种技术充满可能性,但这种可能性是有限的。我又爱又恨Lombok,因为它增加了很多Java特性,都很好,但另一方面也显示出弱点。JCP的社区功能在下降。我已经离开好几年了。虽然有些事情可以做,但我只能在纸上谈。

Grigory:

这就是为什么我们更想了解你创建语言的经验,而不是一些Java增强建议。五年前,我试图控制一些Java字节码。我发现用它创建特定领域的语言有点困难。但是有了Ruby,就容易多了。Evrone有很多开发人员精通Ruby。Ruby开发人员很优秀,但是需要多年的培训才能真正控制DSL的魔力。

James:

Java之所以尴尬,是因为Java总是试图编译机器代码,Ruby几乎总是被解释。如果你想同时获得超级功能和终极性能,这将变得非常困难。


如何看待破坏性的更改?

Grigory:最近,我们采访了Ruby的创始人YukihiroMatsumoto。同时,他也尝试着发布最新的Ruby3.0版本。Java对改变总是持谨慎的态度,我知道。是否有理由使所有语言完全兼容进化?还是只有在特定的语言中,如Ruby或Java?

James:这几乎完全取决于开发社区的大小。每一次破坏性的改变都会给开发者社区带来痛苦。假如没有太多的开发人员,破坏改变并不重要。

另外,必须衡量成本效益。假设你有一个突破性的改变,这将增加你的工作负担,但也可能会带来一些好处。但是,如果将下标运算符从方括号改为括号,这没有什么好处,只会增加麻烦。

JDK9很少出现破坏性改变:如果您使用隐藏的应用程序界面,包装机制将被破坏。人们突破了包装的界限,采用了非传统的方式和不该用的东西,虽然这很痛苦,但是一旦我们发生了根本的变化,平台将有更多的创新空间。根据这个更改,平台可以分割,您可以自定义包装,Java运行环境将更小。

更多的问题是:当遇到bug时,人们会对其采取一些灵活的措施,如果你修复了这个bug,那么灵活性就会受到影响。Java世界中确实存在这样的例子,我们要么不修复bug,要么引入一种修正错误的方法,甚至将其应用于硬件。


可以联系所有语言在一起吗?

Grigory:还有最后一个问题。俄罗斯软件开发人员对JetBrains和Kotlin的开发感到骄傲。Kotlin、Clojure、Scala等语言正在你创建的Java虚拟机、库、框架和现有代码生态系统中蓬勃发展。但是,这些语言面临挑战吗?你能把这些语言联系起来吗?当有人试图用不同的语法操作Javahotswap时,会遇到什么困难?

James:这取决于你的目的。Java虚拟机内置了很多安全可靠的概念,主要与内存模型的完整性有关,比如指针,不能伪造指针。对于C语言,如果不能伪造,就不能使用。如果你试图在JVM上实现C语言,配置严格的安全虚拟机,有些功能就不能实现。但是有些人建造的虚拟机没有严格的安全模型,也没有内存分配模型。要想在C和Kotlin之间实现互操作,就必须放弃一定程度的安全性和可靠性。这取决于你的选择。

Java诞生之初,我的原则是:我不想调试内存损坏的问题。我在内存崩溃的问题上浪费了太多的时间,可以花你几天的时间。我真的很讨厌跟踪内存损坏的bug。但是每个人的喜好都不一样,有些人可能觉得花时间做这件事很有价值。有些人喜欢使用vi,70年代和80年代的好编辑器。

Grigory:内存安全模型真的很重要。它提供了一些东西,但也造成了一些限制。谢谢你,James!


山东济南汉码未来觉得james不愧是java之父,他的看法都非常有远见,真是听君一席话胜读十年书啊



以上就是汉码未来给大家分享的文章,希望对小伙伴们有所帮助,想要了解更多java之父:修Bug最烦人,目前还不是开源的最好时代相关内容的小伙伴可以登录汉码未来官网咨询,主打5人小班,全程面授,主打Java开发,web前端开发等课程,有专业的授课老师为你答疑解惑。

    

分享到:



【免责声明】由于政策等各方面情况的不断调整与变化,本网站所提供的信息仅供参考,请以权威部门公布的正式信息为准。本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。 删除,请联系客服。
为什么选择汉码未来