为什么有那么多种语言?



但是,真正的问题不是我们是否需要它们(答案是简单的“否”,因为我们创建的软件没有它们),而是为什么会突然增加。



开发人员观点



实话实说,Java在当今瞬息万变的世界中已经过时了。 我10年前开始使用Java,当时还不是先锋。 Java语言的发展受到以下因素的阻碍:



  • .Net之前缺乏竞争对手
  • 与旧版本兼容的要求
  • 包含利益不同的公司的变更过程

三种语言的混合使得对语言的任何更新都是一个真正的挑战。 最后的重大更改可以追溯到Java 5,即生命周期结束...



因此,某些开发人员宁愿使用高速公路来处理语言中不存在的功能,例如Scala的函数式编程,而不是遵循缓慢的Java路径。



新的领导者



尽管我有一个清楚的认识,为什么开发人员可能想在JVM上使用Java以外的语言,但我只能推测为什么公司会发布它们。 恕我直言,Java生态系统的主要参与者担心甲骨文对Java的控制,并试图逃避使用Java的潜在未来成本。 考虑到Oracle对TCK以及Hologic惨败的立场,这确实是一个风险。



其他语言带来的风险



尽管先前的理由支持语言多样化,但也有一些强有力的论据再次说明了它们的用途。



技能管理



Java生态系统非常丰富,不仅有资格成为Java开发人员,而且还具有Java / Spring / Hibernate开发人员的资格。 如果出现其他语言,招聘将更加困难。 从开发人员的角度来看,所需的技能将更加广泛,从而导致每种单独语言的知识减少(不,您不能成为多种语言的精通者)。



减肥



今天,市场大致可分为Java,.Net和PHP。 我同意其他人的存在,但坦率地说,他们并不算是主要参与者(Flex除外,但仍保留在GUI上)。 如果Java语言让位给其他一堆其他语言,无论它们多么棒,那么Java社区将被整体分解为许多小型社区,彼此之间无法很好地协作。 请注意,如果您阅读了有关锡兰评论 ,它就会开始发生,有些肯定看起来像一场战争正在等待发生。



其他情况



在前面的部分中,我故意省略了一些敏感的案例。 我不想发动一场火焰大战,但由于我倾向于不同意其中的一些,因此以下是我的反对意见。



LOC



有些人抱怨Java冗长,并选择一种语言,使他们减少编写(和阅读)代码的次数。 尽管我同意写10 LOC相对写100 LOC更可维护,但是写15并没有问题。我谨此提醒大家,并非每个开发人员都是顶尖的,并且编写(和阅读)显式代码的时间很长拥有可维护软件的方法。



对于那些痴迷于LOC优化的人们,我很高兴提供这场比赛



运算符重载



Java没有运算符重载。 再次,这不是问题,至少对我而言:这意味着我可以指望1 + 1可以完成我所期望的操作,而不是其他绕线操作。 作为反例,只需看一下Scala Akka的bang运算符 (对于新手,还有bang bang和bang bang bang)。 当然很短,但是您真的需要知道它的作用。 如果这是您使用的唯一库,那很好。 如果没有,您将走向一个充满疑问的世界。



技术与业务



只有未来会证明一切,但恐怕趋势是,语言将超越开发者的行列,从而使开发人员摆脱纯粹的技术任务,而没有商业价值,例如内存管理,可移植性,持久性等。 前两个铃响了吗? Java在他们身上冲浪。 强大或炒作是经理不关心的形容词。 由于他们可以决定,因此我认为,因为一种语言可以做的比另一种语言要多,所以除了受教育的语言之外没有其他兴趣。



结论



就目前而言,我的观点是,针对所有这些新语言的消极观点并未与积极语言相抵触。 当然,我内心很务实,所以如果我遗漏了一点,我会全神贯注。 最后,只有时间会证明一切。