0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编程语言真正定义是没有人再使用它

5RJg_mcuworld 来源:互联网 作者:佚名 2017-10-27 16:24 次阅读

Java 是这个星球上最为流行的编程语言之一,作为一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言的编程能力很是强大。但这方面的竞争正愈演愈烈。现在的Java 可能遭遇滑铁卢,我们又将预防它的衰退。

2017 年 9 月的 TIOBE 指数将 Java 列为当月较为流行的语言。其实,它已经名列前三甲很多年了。

Stack Overflow Developer Survey 2017将 Java 列为继 Javascript 和 SQL 之后第三常用的编程语言(实际上,过去四年它都保持着这名次)。

不说这些结果是如何产生的,亦或者这结果是否反映了现实世界中的情况,我们不能否认的是,Java 在多个环境中仍然是一种流行语言。

但是,Java 总有一天会死。世无定事,没有什么可以天长地久。

编程语言死亡的真正定义是没有人再使用它——但这样的情况很难发生。即使是老朽且不被广泛使用的语言(例如,你是否听说过 Modula-3?),仍然在被使用、维护,或者至少会演变成其他的东西。

当然,这是一个渐变的过程,怎么发生的方法不定。从实际出发,假设编程语言在它不再被用于新项目时,就意味着它的死亡,但是它可能依然存活在许多遗留项目上(COBOL 就是一个完美的例子)。

最终这结局也将降临到 Java 头上,那么谁会杀死它?

让我们来分析选项。

在以《What Killed Smalltalk Could Kill Ruby Too》为主题的演讲中,Robert “Uncle Bob” MarTIn 说,Smalltalk 被杀的原因是,它太容易造成混乱,并且它的傲慢自大会导致不专业的实践方法,如缺乏测试驱动开发(TDD)。

在任何语言中你都可以搞得一团乱。当然,在某些语言中,比其他语言更容易导致混乱——例如,在动态类型语言中,我们可以随时更改变量的类型——但是我们在 Java 中没有这个问题。

此外,在 Java 社区中很多人采用的良好实践,比如设计模式和 TDD,有助于我们制作更好的软件。

所以让我们来探讨另一个选项。

Java 是面向对象的语言。如果其他(新的)范式接管了怎么办?如果面向对象的编程变得过时了怎么办?

好吧,这可能性并不大——基本原理已经有很长一段时间没有真正改变过了。诸如结构化,功能性和面向对象编程的重大创新发生在 20 世纪 50 年代,60 年代以及甚至 70 年代,但从那以后,没有什么举足轻重的事发生。

但是,在过去十年中,却有很多新的语言问世,这些语言有着现代的语法以及新功能的框架。

那么,没有现代语法和新的功能是否会导致 Java 的死亡呢?

不,我不这么认为。

你还记得(或听说过)EJB 2.0 及其 EnTIty Beans 吗?它们很可怕,但是像 Rod Johnson 和 Gavin King 这些 Java 社区的成员却以 Spring 和 Hibernate 等框架回应。

以类似的方式,虽然 Java 不是一个功能齐全的语言,但是由于有 Vavr 这样的库,我们可以使 Java 更加功能化。

我的意思是,Java 缺少的某些东西,有人会通过创建(框架,工具,规范,无论什么)来填补这个空白。

那么 Java 会不会因为另一种编程语言而死亡呢?

我们以 JavaScript 为例。毕竟 JavaScript 正在占领这个世界,对吧?

我们可以在后台使用 Node.js,类似于移动设备上的 React NaTIve 或 Ionic,我们甚至不必提及在前端的所有竞争选项。

但是,至少在企业软件中,我没有看到 JavaScript 将要替代 Java 的趋势。JavaScript 在企业领域中没有取得成功的框架或工具。它也没有与 Java 虚拟机(JVM)相当的东西,Java 虚拟机(JVM)依然是大型和关键任务软件的首选平台。

那么 Kotlin 呢?

Kotlin 语言首次出现在 2011 年,并且最近 Google 宣布在 Android 上对 Kotlin 提供一流的支持。Kotlin 正在逐渐被知名公司采用,并且不局限于在这些公司的 Android app 上(例子)。

除了现代化的功能,Kotlin 也是一种开放源代码的语言,它由一家生产最佳 java ide 的公司提供支持。

所以,如果你问我的话,我的回答是,是的,Kotlin 看起来像是(在遥远的未来)替代 Java 的一个很好的候选者。

当然,Java 也可能被一种或多种语言所替代。

Java遭遇滑铁卢,谁才是杀死Java的背后杀手?

哪些呢?

我不确定,而且我敢说现在也没有人知道这个问题的答案。

我所能确定的是,没有任何语言能够自主地杀死 Java。不借助任何外力,就此而言。

能够杀死 Java 的刀子在于它无法满足市场的需求。

编程语言是构建解决计算机问题的应用程序的工具。如果某编程语言提供抽象、模型、工具和框架,使你可以更有效率或创建比 Java 更高效的代码,你会选择哪种语言呢?

即使是在 Java 版本之间,如果让你在 Java 1.4 和 Java 9 之间进行选择,那么你会选择 Java 1.4 吗?你会放弃用 lambdas 或泛型工作的机会吗?我不这么认为。你会需要较新版本的功能。

在这些年来,由于已检查异常、内部类、getter 和 setter 等等方面,Java 被认为是一种冗长又笨拙的语言。直到 Java 7(有些人认为是 Java 8)才开始好转。

然而,Java 7 于 2011 年发布,比 Java 1.4(2002 年发布)晚了九年。在这个时代,这是不能接受的,并且可能会导致恶性循环。

仔细查看 TIOBE 页面上的 Java 图表。尽管 Java 大多数时候位居前三,但有明显的下降趋势,表明它正在失去市场份额。这种趋势在所有语言中都很普遍。最可能的原因是编程语言的数量在不断增加,应用程序越来越多地被以多种语言编写。因此,竞争比以往任何时候都要激烈。

如果我们认为其他语言比这种语言更好,那么它就不再受欢迎,我们也不会将这种语言教给新一代的开发人员。

新的教程、课程和书籍将不会再被创造。

社区中的宝贵成员将被其他技术吸引走。

该语言将不会用于新的环境。

将导致减少语言的流行度。

Mark Reinhold,Oracle Java 平台组首席架构师,提出的新的六个月发布计划,是向前推进 Java 并迈向未来的重大一步。用他的话说(就特征驱动的版本):

这种方法可以在早期采用者进行彻底的检查和测试后,以高水平的质量提供大的新功能。然而,不足之处在于,较小的 API、语言和 JVM 功能只有在大功能准备就绪时才能实现。

这是在本世纪之交前后几十年时间里达成的一个可接受的折中方案,当时 Java 仅与几个以类似的步伐演进的平台竞争。然而,如今,Java 在与许多以更快速度发展的平台一起竞争。

最后一段话很多都是事实。

但是,这不仅仅是 Oracle 的工作,社区也必须保护 Java。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2903

    浏览量

    102978
  • 编程语言
    +关注

    关注

    9

    文章

    1877

    浏览量

    33011
  • 编程语法
    +关注

    关注

    0

    文章

    7

    浏览量

    6906

原文标题:Java遭遇滑铁卢,谁是杀死Java的背后杀手?

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    没有人玩MC145151的锁相环?想用它配一块单声道的接收IC,有吗?

    没有人玩MC145151的锁相环?想用它配一块单声道的接收IC,有吗?rt本人想搞一个用mc145151p2的锁相环来配合一个单声道的接收ic,在加个分频器,接收调频广播有人会知道应该配什么iccxa1238太浪费(双声道的)
    发表于 08-26 21:27

    单片机菜鸟学pic,没有人带自学行吗?

    {:soso_e126:}单片机菜鸟学pic,没有人带自学行吗??用什么语言好呢!恐惧中…………
    发表于 11-30 15:53

    没有人知道怎么学习单片机?

    没有人知道怎么学习单片机?
    发表于 01-27 23:48

    没有人有12脚SD卡座的定义

    本帖最后由 eehome 于 2013-1-5 10:05 编辑 有没有人有12脚SD卡座的定义
    发表于 03-08 11:12

    没有人知道 怎么下载99SE教程 高清的

    没有人知道怎么下载99SE教程高清的 有没有人知道怎么下载99SE教程高清的
    发表于 07-15 13:15

    没有人有IN5819的元件库

    没有人有IN5819的元件库
    发表于 02-26 11:48

    没有人知道怎么将PIC的C语言程序转换成51单片机的程序

    没有人知道怎么将PIC的C语言程序转换成51单片机的程序 求助帖
    发表于 11-04 11:28

    我学编程时,当初咋没有人教过我这些事?

    他们就好了5、总有人会说你不是一个真正的程序员看看这些说法吧!“HTML不是真正编程语言。”“如果你不用vi,你就不是
    发表于 07-24 13:42

    没有人实现LLDP协调?

    没有人实现LLDP的和谐? 以上来自于百度翻译 以下为原文 Has any one implemented LLDP in harmony?
    发表于 02-18 11:52

    没有人能推荐下能跑linux的开发板,比较下它们之间的优劣,和fpga比较

    没有人能推荐下能跑linux的开发板,比较下它们之间的优劣,和fpga比较
    发表于 07-15 15:39

    没有人用USB PIC打印任何东西

    没有人用USB PIC打印任何东西?或者使用地图的另一个问题,你可以用它来找出哪些图片有USB主机外设?
    发表于 05-13 06:05

    怎么论坛上没有人关注mavlink

    怎么论坛上没有人关注mavlink的,这个挺好用的!
    发表于 06-03 03:46

    没有人详细的可以解释下C语言单片机程序的组成、存储与运行STM32实例演示?

    没有人详细的可以解释下C语言单片机程序的组成、存储与运行STM32实例演示?
    发表于 10-13 09:25

    没有人可以解释如何设置RFO寄存器以获得更好的范围?

    你好!有没有人可以解释我们如何设置这个RFO正常电平定义寄存器以获得更好的范围?谢谢你。
    发表于 12-07 09:03

    没有人机界面的情况下,应如何配置设备?

    我们越来越依赖可穿戴和互联技术,但在没有人机界面的情况下,应如何配置设备?
    的头像 发表于 11-03 11:10 232次阅读
    在<b class='flag-5'>没有人</b>机界面的情况下,应如何配置设备?