最近的吵架有点不切中要害
我一直不是一个“语言无所谓”的论调者,不过在这个时候跳出来指责Java是没什么意思的。Java这么多年发展下来,真正剩下的就是那个在商业策略上更加开放一些的JVM,和它所带有的各方面的接口形式。
至于什么Lambda之类,确实并不关键。显然,我们可以用它来说Java怎么样,C#和F#或者VB比怎么样;这些就像Anders说的,一方面是糖豆,一方面也确实重要,因为他们在各个方向上简化或者清晰化人类的工作:一门语言的好坏与死活有一部分在于此。
不过这样的讨论,其结论却没有什么意义:最终我们总会有语言可用,而且会存在一定范围内的选择,并且接受一些限制。(另外一个兄弟确实存在一些偏见,这在很多具体的点上就会看出来。但是大家不妨看看他近期其它几篇博文,其实也是个有自己思考的人,比较有意思的。)
真正的问题在于限制在哪里,怎么产生的;而某一门语言的限制如果不是被更底层的设计所制约,那么在有其他语言可以选择、并可以互操作的基础上,就不是什么大问题了。(比如现在在JVM上动态语言的前途,确实是国外一个新的方向。)
显而易见的,这种限制并不来自于语言本身;而在于它所基于的那个机器模型上(无论是真机还是虚拟机)所设计的接口。无论什么语言、如何扩展,我们能(而不是已经)达到的高度、宽度受限于此;即便Compiler as a Service了也一样。
所以在我看来,这个问题根本无法真的“只说语言”,除非只作为一种八卦。毕竟可以具有的能力总会具有:而对于语言这个层次来说,无论进化还是更替使用都是可行的。当然,什么框架、库,基于同样的原因,就更不在讨论范围内了。
至于更具体到某一个语言,比如期望C# 4.0、5.0有什么,那只属于自己的喜好。这次讨论,有一个兄弟说,基于JVM上的其它语言的工作,使Java可以更加干净,这也是一种喜好。这些喜好显然都有自己的道理;自己的喜好一般来说会提高自己的生产力,但对别人却未必是。
所以我说,这些讨论都是不切中要害的;作为群众来说,更多的是应该分析一下,选择在哪里,限制又在哪里;然后我们就知道应该怎么办。比如对于并没有被限制且当前各种选择中不包含的,就可以想办法变相实现或者像脑袋说的亲自改进。
要说到我自己的不满,就是现在有影响力可以制定底层接口的那些公司或者组织,行动太缓慢了。这导致语言上的革新和推广困难重重,而在接口限制下的改进最终导致的就是逐渐的同质化和过多的(没有本质差别的)选择。
不说了,没劲。
P.S. 说到为什么我反感Java,恰恰不是语言,我反感的只是风格与文化;以及在这些风格与文化下面可能产生的错误指导。我的态度仅仅是为了防止受到坏影响,而采取的防御性措施罢了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器