最近,到处可以看到大量的文章:Java将会消失取而代之的是脚本语言或其他汇编语言。不,那种情况是不会发生的。下面是我的论据,我们先看些数据。

2008年5月的编程语言受欢迎度情况:虽然有些人并不喜欢Tiobe的基于搜索引擎的编程语言欢迎度调查,但是我认为还是有根据、公平的。

从图中的数据发现和“C语法”相似语言占有较大的份额。
C (15.292) + C++ (10.484) + Java (20.176) + C# (3.963) = 49.915%
表明这四种语言占据了近一半的市场。如果我们在这里添加PHP ( 10.637% )(在某种程度上采用了类似的语法)结果是60.552%。

因此,我们得到如下结论:
理由1 :语法是非常重要,因为它是建立在以往的知识的基础上。类似的语法具有相近的概念。程序员不需要费很多时间和精力学习新语法。
 
让我们看看一组挑战语言:
Python (4.613) + Ruby (2.851) + Lisp/Scheme (0.449) + Lua (0.393) + SmallTalk (0.138) +
Haskell (0.137) + Groovy (0.131) + Erlang (0.110) + Caml (0.090) + Scala (0.073) = 8.985%
上面10种语言的总比例比VisualBasic(10.782%)的还少。

原因2 :大的难点是分心。程序员要学习这10种语言并且达到可以评价的水平需要付出很大的努力。况且,大部分的语言具有不同的语法和引入了不同的(有时是根本不同的)概念。

最近7年来的趋势,我们可以看到大多数的语言流行起来。也有几个例外,如下降的Perl ,但没有真的是消失。有周期性的浮动,但在长远看来,没有什么改变。
 
这表明,虽然各种语言在短的时间内会使程序员着迷,但它们被放回到“架子”上也相当快速。这些语言失去了现实中开发项目的机会。

原因3 :缺乏让程序员转换的动力。市场是相当稳定,现有的语言工作的相当好,管理者也没有强制程序员学习新语言。
 
理由4 :挑战语言似乎并没有抓住时机,创造一个应用于项目中的机会。
或许跟它们发展和普及慢有关。
理由5 :挑战语言社区没有做好吸引程序员的工作。
 
让我们看看现在就业市场发生了什么事。indeed.com提供的是我使用的工具和我比较了很多语言制作了下面的表格。

 

理由6 :短期内没有很大的诱因让程序员切换到挑战语言中,获得技能但不太可能转化为收入。

那么,我研究所有这些统计数字得到某些结论,但语言本身需要什么特性和外部条件如何将会受欢迎?
 
原因7 :新的语言没有对程序员的生活和项目有非常大的推进作用。
 
理由8 :没有竞争力的应用平台。

理由9 :所有这些新的语言没有强大的赞助商和金钱在市场上推动他们。所有这些新语言诞生于大学和研究机构,或来自非常特殊的区域。
 
理由10 :大部分的这些语言左右徘徊,没有果断地登上“语言”大舞台。

出于好奇心,这里是一个名单,谈到一些语言与他们的发布日期:

Ruby (mid 1990s), Python (1991), Lisp (1958), Scheme (1970s), Lua (1993), Smalltalk (1969-1980), Haskell (1990), Erlang (1987), Caml (1985), OCaml (1996), Groovy (2003), Scala (2003)

和成功的语言相比:

C (1972), C++ (1983), Java (1995), C# (2001), BASIC (1964), Pascal (1970), FORTRAN (1957), Ada (1983), COBOL (1959)

很明显,大部分这些“新”语言错过了成功的“列车”。
 
理由11 :“特色”是大项目的灾难。
目前的大项目不曾使用过新语言,很难没有些偏见的评价。偏见正是新语言生长的真正障碍。
 
理由12 :非自然的概念(对大多数程序员而言)提高了入门的门槛。
函数式编程使你的编码象在解数学方程。但有多少人热爱数学并能用它来编程呢?面向对象语言提供一个很大的优势:他们让程序员认为有想要的模式,而不是语言或机器。
 
理由13 :没有先进的工具,面对大量的代码行缺乏重构程序员和开发团队的能力。
 
Java的危险并是不来自外部。这些新的(其实他们大多是相当老)的语言没有可能取代Java的。Java的危险来自于它具有太多的“功能”,如果想保留其他语言的一些概念和C++的垃圾回收功能需要进行转化。

Ruby、Python不能威胁Java的13个理由相关推荐

  1. 国际:Ruby、Python不能威胁Java的13个理由

    最近,到处可以看到大量的文章:Java将会消失取而代之的是脚本语言或其他汇编语言.不,那种情况是不会发生的.下面是我的论据,我们先看些数据. 2008年5月的编程语言受欢迎度情况:虽然有些人并不喜欢T ...

  2. 前端学python有什么用-学习和使用python的13个理由

    如果您希望转向网站开发或软件开发,成为程序员中的一员,那么学习HTML,CSS和JavaScript的基础三重奏就不会出错.但要真正在拥挤的应用领域中脱颖而出,您还是需要学习其他编程语言. 有很的编程 ...

  3. python学什么东西_什么是Python?你应该学习和使用它的13个理由

    如果您希望转向网站开发或软件开发,成为程序员中的一员,那么学习HTML,CSS和JavaScript的基础三重奏就不会出错.但要真正在拥挤的应用领域中脱颖而出,您还是需要学习其他编程语言. (上图为G ...

  4. Python会赶超Java吗_Python 赶超 Java,JavaScript 稳坐第一 | GitHub

    GitHub Universe 是 GitHub 的年度盛会,今年10月10-12日,GitHub Universe 大会在旧金山召开.同时,GitHub 也在其官网发布了 2017 年年度数据报告 ...

  5. 如何看待知乎、饿了么后端的招聘纷纷由 Python 渐渐转向 Java?

    [如何看待知乎.饿了么后端的招聘纷纷由 Python 渐渐转向 Java?] 一开始会觉得php很快,python很灵活,Ruby很拽,c很高深,nodejs很装逼,JAVA又笨重又麻烦又严格又死板. ...

  6. JPype:实现在python中调用JAVA 和 错误处理

    JPype使用说明 1.安装jpype 安装的时候输入:  pip install jpype1  (后面要加一个1) 2.启动JVM JPype 提供的 startJVM() 函数的作用是启动 JA ...

  7. Python后端转JAVA最快多久_【动力节点】老杜支招:Java小白学习入门攻略,涵盖学习路线...

    动力节点在B站的直播相当好,相当受欢迎,教学总监亲自解惑.零基础学Java的同学确实把思路打开不少. 回顾:11月14日晚8:00,杜老师在动力节点B站大咖直播间,首次开播与粉丝面基,本场直播不吹,不 ...

  8. 从Python切换到Java是个好主意吗?

    将Python作为第一门编程语言的想法具有合理的背景. 首先,Python的语法简短明了,并且工作的对象和变量的基础模型完全一致. 这意味着您无需费力即可编写"真实的"且功能强大的 ...

  9. python构造方法与java区别_一张图秒懂Java和Python的区别,你知道吗?

    对于程序员的语言千千万JAVA\C\C++\PHP\Python不同的程序员使用着不同的语言,做着功能相似需求却不同的产品. 但是最近Python在人工智能的推动下突然出现在人们的面前,其实和Java ...

最新文章

  1. ICCV2019论文点评:3D Object Detect疏密度点云三维目标检测
  2. shell脚本替换文件中字符
  3. 由隐藏层节点数引起的网络准确率的不规则变化02
  4. 中国大学MOOC 人工智能导论第四章测试
  5. 十一、jQuery的基本用法
  6. arthas命令redefine实现Java热更新
  7. 虚拟接口+tx+linux,Linux使用笔记: 解决Xen虚拟机中VLAN接口不能ping大包的问题
  8. LwIP之协议栈接口
  9. java中的byte
  10. Leetcode每日一题:57.insert-interval(插入区间)
  11. CSS 的复合选择器
  12. net2.0如何修改用户密码的解决
  13. 计算机类教育部科目分类,教育部学科门类及一的级学科目录表.doc
  14. matlab模拟小球碰撞,在MATLAB中实现模拟小球上抛和反弹运动
  15. 笔记本电脑进水怎么办?
  16. webview的硬件加速
  17. robots协议文件的写法及语法属性解释
  18. 第一阶段(admin02-day01)磁盘分区,挂载,交换分区
  19. DCU Streamer Prefetcher
  20. Java27岁啦——一次争执引起的Java内卷生涯

热门文章

  1. 《教学管理与教育研究》杂志简介及投稿须知
  2. pytorch搭建孪生网络比较人脸相似性
  3. Ubuntu零基础教学-Ubuntu常用命令大全(长期更新)
  4. 思维篇—企业战略管理
  5. 初探fastJson的AutoType
  6. Java集合工具类Collections(一)
  7. CSS笔记(一)基础知识
  8. C语言关于字符串数组的定义
  9. 面向对象是什么?为什么我们要先学面向过程,再学面向对象编程?到底什么是面向对象编程?
  10. M201: MongoDB Performance chapter 1 Introduction学习记录