Tiobe近日发布了最新一期的编程语言排行榜,在前十名的榜单中,除C#上升一位与上期排名第六的Python交换位置外,其他排名无明显变化。本期榜单,我们关注Java的持续下滑。 编程语言排行榜前20名榜单 王者之路 1990年代,随着计算机硬件技术的发展和成本的下降,电脑开始在企业中迅速普及,每个公司都开始自己的信息化之路以节约成本提升效率;随后,个人电脑开始在家庭用户群体得到普及。“第三次浪潮”的预言波澜壮阔的展开并迅速蔓延;互联网的发展将这次信息化革命推向高潮。1995年,市场占有率高达 95%Netspace浏览器开始使用一种Java Applet技术为人们提供炫目而安全的使用体验(当时发布的版本叫HotJava浏览器,Netspace与Sun联合推出)。这吸引了大批编写CGI 程序的开发者关注;渐渐的,Java的各种优点被人们挖掘,字节码、垃圾回收、更强的面向对象,这种基于虚拟机的语言开始在程序员中迅速传播并被实践到各种类型的项目中。 经过几年的演化和改进,到2000年,Java已经成功超越当时的主流语言C和C++;2002年,Java一跃成为采用率最高的编程语言。“一次编写到处运行”的口号使更多企业级项目的程序员得到解脱,庞大复杂的项目需求开始告别混乱的结构和错误的指针,就像80年代C++的出现一样,Java使程序员的生产力又一次得到了大幅提升。 一般地,我们可以从开发工具的丰富和厂商的支持来评判一门语言是否流行。Java的开发工具形成了激烈的市场竞争,Borland推出了JBuilder,微软匆忙启动了Visual J++,IBM开始投资Visual Age for Java(Eclipse前身),Sun则推出了自己的NetBeans IDE。 这时,Java无疑成为了编程语言的王者,他以自己干净的语法和强大的功能统治着企业级项目的开发;Sun公司开始被程序员以一家软件厂商看待并崇拜。 在变化中老去 没有“银弹”,没有哪种语言可以完美适应日新月异的IT界,至少Java的进化的速度在最近几年已经远远无法追赶日趋复杂项目需求和苛刻的交付日期。人们开始尝试各种开源项目以缓解Java在某些方面的不足,以Hibernate和Spring为代表的框架快速发展和普及;另一方面,Sun和 JCP的各种标准不断遭到人们的质疑,JSF和JPA等官方框架被大多数开发者抛在一边。而这背后,是Sun和JCP对新需求的麻木和对社区的漠视,这直接导致Java的更新落后于变化,Java正在新变化新需求中变得缓慢和老态。 Java近年走势图 Java最近一次让你兴奋的功能更新是什么?是1.4到Java 5.0的版本更新还是新加入的泛型语法?这些都是5年前的事了。面对社区中的众多需求,JCP早已无法及时考量和应对,Java的脚步在日趋蹒跚;更多的开发者在考虑项目是否应该使用Java或者其他什么语言,总之,要他们解决的问题Java解决起来很麻烦;不满的情绪开始在社区中蔓延。 DSL和敏捷 远在日本的松本行弘就是这其实之一,寻找适合自己的编程语言的梦想促使他开发了Ruby,一种比Perl更强大,比Python更面向对象的语言;这时,关于程序开发效率的讨论从各个软件公司的项目小组蔓延到社区,以Tom DeMacro为首的一群人人开始倡导敏捷开发以提高效率;作为对敏捷宣言的实践,DSL(特定领域语言)开始被人们重拾并重视起来。基于灵活的语法,Ruby无疑成为DSL和敏捷的不二选择。 不久,DHH(DAVID HEINEMEIER HANSSON)推出了基于Ruby编写框架。随着Web2.0引领的又一次互联网高潮,基于Ruby on Rails的敏捷项目一个又一个的迅速建立并投入使用,人们惊奇的发现通过简单的DSL改造,Ruby几乎可以适应任何Web项目。这时,Java阵营也开始躁动不安,Sun甚至雇佣了两名JRuby团队的核心成员开发自己的Ruby解释器以期拥有Ruby的动态和敏捷。JRuby是一个纯Java实现的 Ruby解释器。通过JRuby,你可以在JVM上直接运行Ruby程序,调用Java的API。 源于Java,超越Java 类似JRuby这种基于JVM的语言还有很多,比如Scala。 Java泛型的创造者Martin Odersky对为Java创造泛型时遇到的约束性记忆犹新,创建一个超越Java的新语言的念头由此产生,并最终促成了Scala编程语言。Scala 是一种针对JVM将函数和面向对象技术组合在一起的编程语言,高度的可伸缩性和对Java API的无缝兼容使Scala成为Java程序员解决某些问题的另一种选择。 同样基于JVM的语言还有Groovy、 Jython等,他们虽然拥有不同的名字,不同的语法和特性,但相同的一点时他们都是基于JVM的语言,并对Java API非常友好。在日趋老态臃肿的Java之外,他们,为解决不同的问题域和应用场景而生;在Java社区的庞大背影下,这些基于JVM的语言为需求而生,为问题而生,敏捷且充满活力。 其他编程语言 以下是排名21到50的编程语言列表,请注意排名32位的Scala和排名47位的Groovy。
下面是排名51-100的语言: ABC, AD, Algol, Alpha, Applescript, Beta, Boo, C shell, cg, Clean, Cobra, cT, Curl, Dylan, Eiffel, Euphoria, Factor, Fan, Icon, IDL, Inform, Io, Lingo, MAD, Magic, Maple, Mathematica, MAX/MSP, MOO, MUMPS, Natural, Oberon, Occam, Oz, PL/I, Postscript, PowerBuilder, Progress, Q, R, Revolution, REXX, S-lang, SIGNAL, SPSS, SuperCollider, VBScript, Verilog, VHDL, XSLT 编程语言类别走势
静态类型和动态类型的语言走势 |