詹姆斯·高斯林,通常被称为"Java博士",是加拿大计算机科学家,最有名的是Java编程语言之父。

介绍

詹姆斯·高斯林,通常被称为"Java博士",是加拿大计算机科学家,最有名的是JAVA编程语言之父。他做了Java的原始设计,并实现了其原始编译器和虚拟机。我们的DevRel,格里戈里·彼得罗夫,有机会采访詹姆斯,我们已经包括了下面的整个成绩单。希望你喜欢!

面试

格里戈里: 作为软件开发人员和软件顾问,我们试图在俄罗斯组织一个社区:Python、Ruby、Java 和 Go 社区。我们希望通过进行面试来帮助我们的开发人员,这些访谈突出了我们行业的基本问题。我认为您在 Java 上的经验和工作可以帮助开发人员变得更好。因此,让我们试着帮助他们!

有些语言,如围棋,不上课和继承,而另一些则尝试在锈的特点。作为一名语言设计师,你认为编程语言的现代、通用、合理创作方式是什么?

詹姆斯: 我想我不会上课。实际上, 我发现课程对作文效果很好。我真的没有任何好, 清楚的想法, 做什么不同。而一些我会以不同的方式做的事情有点奇怪。在 C 中,有宏,这几乎是一个灾难,因为宏不是语言的一部分:他们有点在它之外。Rust 的乡亲们试图用语言来安装宏。

其他语言,如所有的Lisp家族,设法使他们更优雅地适应,但他们有一种方法来定义语法,语法几乎完全没有语义。在大多数语言中,语法和语义是齐头并进的。作为一个在过去一生中写过很多 Lisps 的人, 我真的沉迷于使用 Lisp 程序来操纵 Lisp 程序的技术。这是我真正非常想念的一件事。有些语言可以让你以不同的方式做到这一点,所以像在Groovy,你可以直接玩AST。有某种句法集成的宏。但对我来说,总觉得里面有一个有趣的研究问题:你能做得更多吗?

我能感觉到 Lisp 在代码片段上进行计算以生成新代码吗?在Java世界,人们这样做。这是更流行的功能之一,除了它真的很低的水平。因为人们使用注释和事实的组合,你可以用一些不同的语言生成字形码。这是超级强大的。它被用在像你意想不到的地方, 就像在杰克逊一样。它通过计算序列化器获得了很多性能。

一方面,这是一个非常强大的技术。另一方面,它只是超级难以使用。事实上,这是可能的,是伟大的。但是你能走多远呢?它们可能有点有限。所以,如果你看看像龙目岛的东西,这是我觉得是...嗯, 我对此有强烈的爱恨。因为它增加了一堆 Java 功能, 是相当不错的, 但另一方面, 它显示了弱点。部分在这个过程中,因为这是一组功能,应该只是内置。Java社区进程已经变得比它应该少一些社区。这些天我在外面, 已经很多年了, 但有些事情你可以做, 只是整个地图。

格里戈里: 这就是为什么我们准备了关于您在创建语言方面出色体验的问题,而不是一些现代 Java 增强建议。当然,这很好,但从中创建特定域的语言有点棘手。有了 Ruby ,就容易多了。Ruby 开发人员是伟大的, 但他们需要大量的培训, 以学习所有的 Dsl 魔法。

詹姆斯: 具有计算代码片段等功能的原因之一是 Java 试图一直编辑机器代码。Ruby几乎总是被解释。当你这样做的时候,当你不想得到所有你能得到的性能时,生活就变得简单了。但是,如果你试图获得强大的功能和最终的表现,生活变得更加困难。

格里戈里: 最近,我们采访了Ruby的作者松本行弘,他提到他用他最新的主要Ruby3.0版本进行了一个实验。他试图在不中断更改的情况下发布此版本,以查看将会发生什么。不破坏任何东西的主要语言版本。我知道Java对不破坏事情持谨慎态度。对于所有语言来说,在没有不兼容的情况下进化是个好主意吗?还是只能用于特定语言(如 Ruby 或 Java)的有限方法?

詹姆斯: 它几乎完全是开发人员社区规模的函数。每一次突破性的变化都会在开发人员社区中引起痛苦。如果你没有很多开发人员,那么打破变化不是大问题。你还必须考虑成本效益的权衡。如果你做了一个突破性的改变,它增加了一些痛苦,但它也带来了一些好处。例如,如果您将子脚本操作员从方括号更改为圆形括号,则它可能完全不会为您购买任何东西,并诱发巨大的疼痛。那可是个愚蠢的主意

在 JDK 9 中,发生了变化,这是极少数被引入的突破性更改之一,它打破了一些变化:如果您使用一些所谓的隐藏的 API,封装机制就会被搅乱,而那些打破封装边界并使用不应以不应使用的方式使用的东西的人, 他们有一些疼痛从 8 移动到 9 。但是,一旦我们超越这一点,它允许平台更多的创新自由。在这个特殊的8到9过渡的情况下,这意味着平台可以切片和切碎,你实际上可以定制包装,使Java运行时间环境将更小。

另一个总是有相当数量的不适的领域是:当某样东西中有一个 bug,而人们为 bug 做解决方法时,如果你修复了 bug,您可能会破坏解决方法。当然,在Java世界中,我们决定不修复错误,或者引入一种做正确事情的方法。这甚至出现在硬件中。

欢迎关注我的公众号(比博客早1~2篇哦)

作者:Java大家族
链接:https://juejin.cn/post/7005565811012141092
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Java创造者詹姆斯·高斯林采访相关推荐

  1. 回忆詹姆斯·高斯林的Java时代

    近日据国外媒体报道,被中国程序员戏称为"高司令"的Java创始人詹姆斯·高斯林(James Gosling)周一发表博客文章称,他已经加入了谷歌公司. 我想詹姆斯·高斯林大家都很熟 ...

  2. 《詹姆斯·高斯林Java白皮书1996自译》00:概览

    JavaSE-AT阿宝哥 敲黑板,说重点,这是Java之父詹姆斯·高斯林原著的自译版,初学者和老鸟混江湖必读! 内容导航: 互动学习钉钉群[30687793] 前言 詹姆斯·高斯林简介 章节目录 1. ...

  3. Java之父——詹姆斯·高斯林

    JAVA之父的由来 1991年,在Sun公司工作期间,高斯林和一群技术人员创建了一个名为Oak的项目,旨在开发运行于虚拟机的编程语言,同时允许程序在电视机机顶盒等多平台上运行.后来,这项工作就演变为J ...

  4. 《詹姆斯·高斯林Java白皮书1996自译》07:多线程

    JavaSE-AT阿宝哥 敲黑板,说重点,这是Java之父詹姆斯·高斯林原著的自译版,初学者和老鸟混江湖必读! 内容导航: 互动学习钉钉群[30687793] 前言 1.Java语言级别的线程 2.集 ...

  5. java之父詹姆斯高斯林的传奇人生

    Java之父詹姆斯高斯林的传奇故事 詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为"Java之 ...

  6. 詹姆斯高斯林_詹姆斯·高斯林(James Gosling):Oracle的表现“令人惊讶的是” 用Java

    詹姆斯高斯林 1月27日将是Oracle收购Sun Microsystems的四周年. 从一开始,许多人就怀疑这家前软件公司处理Java的适用性. 而且,随之而来的指称是缺乏对开放源代码的支持以及对遗 ...

  7. ***Java之父:詹姆斯高斯林的传奇人生***

    詹姆斯·高斯林 詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为"Java之父". 1 ...

  8. 詹姆斯·高斯林-JAVA之父

    Java之父 目录 名号来由 职业生涯 言论 个人生活 编辑本段名号来由 Java之父高斯林 Java之父--詹姆斯·高斯林出生于加拿大,是一位计算机编程天才.在卡内基·梅隆大学攻读计算机博士学位时, ...

  9. JAVA之父----James Gosling(詹姆斯·高斯林)

    JAVA之父 詹姆斯·高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为"Java之父".(百度 ...

  10. Java之父詹姆斯·高斯林 (James Gosling)学鸿蒙(HarmonyOS),HarmonyOS(鸿蒙)——Image组件详述

     本文已收录于专栏 ❤️<鸿蒙开发>❤️ 欢迎各位关注.三连博主的文章及专栏,每周定期更新1-5篇基础文章,共勉! 1.简介 Image是用来显示图片的组件,我们在开发中使用的非常频繁! ...

最新文章

  1. Linu20180415三周第三次课(4月4日)
  2. 55.Jump Game
  3. LeetCode Algorithm 70. 爬楼梯
  4. 改变UITableView选中行高亮的颜色
  5. JavaScript 败北,TypeScript 大势所趋?
  6. 注意,SVN提交代码时,会遗漏so库
  7. 每年考证时间表(绝对会用得到的一天,怕到时候很难找到有用) ——自己留住,哦!!!!
  8. 复盘世预赛:国足5-0马尔代夫,吴曦成国足世预赛福星!三大前锋齐进球
  9. php pdo 遍历,PHP PDO操作总结
  10. sparksql-分组月度环比同比自动化
  11. 命令行对文件批量改名
  12. 记一次抓取网页内容(二)
  13. DeepLabv3:《Rethinking Atrous Convolution for Semantic Image Segmentataion》
  14. 郑州高新技术企业认定八大硬性条件是什么?
  15. C语言开发专题(56个案例)-程序设计 - 课程设计
  16. 计算机组装已维护的学术报告,计算机组装与维护中的问题及解决对策分析
  17. Oracle 同义词synonym创建和删除
  18. Redis实战——缓存
  19. 解决windows未识别的网络问题
  20. 【课程总结】数据网络协议基础-第二章 信息网络建模理论

热门文章

  1. Error: java.lang.RuntimeException: Crunching Cruncher xxx.9.png failed,
  2. 【Js】JavaScript数据类型隐式转换
  3. HTML5 页面布局【结合案例】
  4. 管理信息系统(MIS)期末复习参考指南
  5. 如何高效地阅读技术类书籍与博客
  6. 手机上如何让页面强制横屏
  7. Android 如何检查麦克风是否被任何后台应用程序使用?
  8. Sentinel-2(哨兵2号)数据下载及预处理
  9. linux 光纤网卡 软路由,联想M720Q、光网卡、Pon stick、Openwrt我的完美软路由折腾记...
  10. 中国柔性材料行业发展建议及竞争态势研究报告2021年版