首页 » 网站建设 » php宏代码技巧_现在是开源软件的黄金时代Java之父我不知道若何回答

php宏代码技巧_现在是开源软件的黄金时代Java之父我不知道若何回答

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

文|局长

James Gosling,加拿大打算机科学家,完成了 Java 的原始设计,并实现了 Java 最初版本的编译器和虚拟机,也是公认的 “Java 之父”。

php宏代码技巧_现在是开源软件的黄金时代Java之父我不知道若何回答

Evrone 是一家企业软件开拓公司,旗下担当技能布道师 (DevRel) 的 Grigory Petrov 最近对 James Gosling 进行了采访。

php宏代码技巧_现在是开源软件的黄金时代Java之父我不知道若何回答
(图片来自网络侵删)

James Gosling 在这次访谈中聊了大量关于编程措辞的话题,例如对当代编程措辞新特性的意见、怎么看待编程措辞更新后引起的毁坏性变更、为什么不是所有编程措辞都利用 JIT 技能等。

Grigory:我们希望以软件开拓和软件顾问的身份在俄罗斯组织 Python、Ruby、Java 和 Go 社区。
通过这次采访,我希望能展现这个行业的基本问题,进而为开拓者同行供应帮助。
你在 Java 领域的履历和事情经历可以帮助开拓者变得更好,以是我们一起考试测验完成这个目标吧!

有些编程措辞,例如 Go,舍弃了类和继续这些特性。
与此同时,其他措辞则试验了一些新特性,如 Rust 中的 traits。
作为措辞设计师,你认为编程措辞该当用若何的当代、通用、合理办法来进行组合(Composition)。

James:我该当会连续利用类,由于我创造类对付这种场景非常有效。
事实上,对付如何做不同的事情,我没有任何好的、清晰的想法。
在 C 措辞中,宏的存在险些是一场灾害,由于宏不是措辞的一部分,而是在措辞之外的特性。
Rust 恰好希望通过得当的办法在措辞中利用宏。

对付其他编程措辞,如 Lisp 家族,它们有一套定义语法的方法,这些语法险些完备和语义无关。
我曾经写过许多 Lisp,沉迷于用 Lisp 程序来操作 Lisp 程序的技能。
有些措辞能够让你以不同的办法做到这一点,像 Groovy,我们可以直策应用 AST。
而 Rust 则具有语法集成的宏。

Lisp 通过运算代码片段来天生新代码,在 Java 领域,这种办法也会常常被利用。
虽然是非常底层的方法,不过却很受欢迎。
由于开拓者可以对表明进行组合,并利用不同的措辞天生字节码,这是非常强大的技能,常常被用在意想不到的场景。
例如 Jackson 框架,它通过打算序列化器提升了性能。

当然,这既是强大的技能,但也非常难以驾驭。
这个技能充满可能性,但这种可能性是有限的。
我对 Lombok 有着强烈的爱恨交加情绪。
它添加了许多精良的 Java 特性,但从另一方面来说,这也暴露了其弱点。
由于有些特性本应是内置功能。

Grigory:我们最近采访了 Ruby 的作者 Yukihiro Matsumoto,他提到他在最新的 Ruby 3.0 紧张版本中做了一个实验。
他试图在没有引入毁坏性变更的情形下发布这个版本,看看会发生什么。
我知道 Java 对“毁坏性”持谨慎态度。
那么是否所有编程措辞都要考虑兼容性的问题,每个大版本都兼容是一个好主张吗?还是说这种情形只用于特定的措辞,如 Ruby 或 Java?

James:这险些完备取决于开拓者社区的规模。
每一项重大变更都会给开拓者带去困扰,如果社区的开拓者不多,那么毁坏性变动不是大问题。
其余还必须权衡本钱效益。
如果添加了某项毁坏性的变更,它会增加包袱,但与此同时也会带来一些好处,那么可以考虑。
例如,如果将下标运算符从方括号变动为圆括号,它可能不会带来任何好处,并且会引起开拓者极大的困扰。
那这便是一个屈曲的变更。

举个例子,JDK 9 引入了一个极其罕见的毁坏性变更:如果开拓者利用了一些所谓的隐蔽 API,封装机制就会被打乱,那些毁坏封装边界,以不应该利用的办法利用 API 的开拓者,从 8 升级到 9 会碰到不少问题。

还有一种情形:当某处存在缺点,并且开拓者为该缺点实现了变通方法。
在这种情形下,如果修复了缺点,那么有可能会对这些变通方法造成毁坏。
Java 也存在这种案例,我们的做法是要么不修复缺点,要么引入精确的实现方法。

Grigory:我们来聊聊企业和家当的发展吧。
我自己从未有过给机器人编程的经历,但我曾在为数百万人创造软件的公司事情了一段韶光。
拿本日和 20~25 年前来比拟,我创造像 GitHub 这样的社交编码平台得到了巨子公司的支持,它帮助个人开拓者和企业或工业软件开拓者进行开源开拓。
那么我们是否可以认为现在是开源软件的黄金时期,你怎么看?

James:我不知道如何回答,由于这个问题涉及到未来。
“现在是开源软件的黄金时期”这个不雅观点隐含着“是不是从现在开始要走下坡路”的意思。
如果现在是黄金时期,那么未来就不是黄金时期了吗?

以是我的意见是,无论黄金时期是什么样子容貌,我们所处的环境正变得越来越好,一步步靠近空想中的“黄金时期”。
目前,我们面临着各种环绕安全以及人类进行网络胆怯主义的危急。
当这种事情仍在发生或正在发生,我不认为这是黄金时期。
如果有某种办法可以闭幕网络胆怯主义——那将是非常“黄金”的时期,愿我们拭目以待。
我想说的是,这是一个真正伟大的时期,但它可以变得更好。

Grigory:你在 Java 和 JVM 中利用了 JIT 技能。
JIT 带来了非常惊人的速率,并且不影响措辞的优雅语法和高等特性。
许多编程措辞都参考了 Java,例如 C# 和 JavaScript,它们通过热路径编译对代码进行重新编译的速率靠近 C 和 C++。
但许多其他措辞,如 Python、Ruby、PHP,虽然具备可选的 JIT,但没有那么盛行。
许多主流编程措辞也没利用 JIT 来提升性能。
以是,为什么不是所有编程措辞都利用 JIT 来为开拓者供应更快的速率?

James:事实上,静态类型措辞更适宜通过 JIT 来提升性能。
对付动态措辞,比如 Python,这实在非常难。
常日大家终极所做的是在措辞中添加表明,这样就会得到像 TypeScript 这种编程措辞,它实质上是带有类型表明的 JavaScript。
这很有趣,由于 JavaScript 实质上是去除类型声明的 Java。
因此,TypeScript 实质上是具有稠浊语法的 Java。

但如果你是一名用 Python 快速编写脚本的开拓者,在他们看来,声明让他们以为很困扰,思考变量的类型是非常烦人的事情。
脚本措辞天下中的大多数开拓者并不关心性能问题。
他们更在意的是能否用最快的速率完成开拓,并不关心性能和干系的细节。

相关文章