最近的吵架有点不切中要害

我一直不是一个“语言无所谓”的论调者,不过在这个时候跳出来指责Java是没什么意思的。Java这么多年发展下来,真正剩下的就是那个在商业策略上更加开放一些的JVM,和它所带有的各方面的接口形式。

至于什么Lambda之类,确实并不关键。显然,我们可以用它来说Java怎么样,C#和F#或者VB比怎么样;这些就像Anders说的,一方面是糖豆,一方面也确实重要,因为他们在各个方向上简化或者清晰化人类的工作:一门语言的好坏与死活有一部分在于此。

不过这样的讨论,其结论却没有什么意义:最终我们总会有语言可用,而且会存在一定范围内的选择,并且接受一些限制。(另外一个兄弟确实存在一些偏见,这在很多具体的点上就会看出来。但是大家不妨看看他近期其它几篇博文,其实也是个有自己思考的人,比较有意思的。)

真正的问题在于限制在哪里,怎么产生的;而某一门语言的限制如果不是被更底层的设计所制约,那么在有其他语言可以选择、并可以互操作的基础上,就不是什么大问题了。(比如现在在JVM上动态语言的前途,确实是国外一个新的方向。)

显而易见的,这种限制并不来自于语言本身;而在于它所基于的那个机器模型上(无论是真机还是虚拟机)所设计的接口。无论什么语言、如何扩展,我们能(而不是已经)达到的高度、宽度受限于此;即便Compiler as a Service了也一样。

所以在我看来,这个问题根本无法真的“只说语言”,除非只作为一种八卦。毕竟可以具有的能力总会具有:而对于语言这个层次来说,无论进化还是更替使用都是可行的。当然,什么框架、库,基于同样的原因,就更不在讨论范围内了。

至于更具体到某一个语言,比如期望C# 4.0、5.0有什么,那只属于自己的喜好。这次讨论,有一个兄弟说,基于JVM上的其它语言的工作,使Java可以更加干净,这也是一种喜好。这些喜好显然都有自己的道理;自己的喜好一般来说会提高自己的生产力,但对别人却未必是。

所以我说,这些讨论都是不切中要害的;作为群众来说,更多的是应该分析一下,选择在哪里,限制又在哪里;然后我们就知道应该怎么办。比如对于并没有被限制且当前各种选择中不包含的,就可以想办法变相实现或者像脑袋说的亲自改进。

要说到我自己的不满,就是现在有影响力可以制定底层接口的那些公司或者组织,行动太缓慢了。这导致语言上的革新和推广困难重重,而在接口限制下的改进最终导致的就是逐渐的同质化和过多的(没有本质差别的)选择。

不说了,没劲。

 


 

P.S. 说到为什么我反感Java,恰恰不是语言,我反感的只是风格与文化;以及在这些风格与文化下面可能产生的错误指导。我的态度仅仅是为了防止受到坏影响,而采取的防御性措施罢了。

posted on 2009-04-20 21:38 怪怪 阅读(...) 评论(...) 编辑 收藏

导航