`
Eastsun
  • 浏览: 308846 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Ruby,Python不能威胁到Java的13个理由

阅读更多
  最近,danielstoner发表了一篇题为13 reasons why Ruby, Python and the gang will push Java to die… of old age的文章。文中作者的观点是:目前这些XX语言都不足以威胁到Java,Java真正的危险不是来自外部,而是其本身。作者通过列举一些数据并进行分析得到了13个理由来支持自己的结论。
  首先,作者从TIOBE上公布的2008年5月语言排行榜的数据得到一个有趣的事实:
引用

What I find significant here is the huge share the “C like syntax” languages have.

C (15.292) + C++ (10.484) + Java (20.176) + C# (3.963) = 49.915%

This means 4 languages get half of all the attention on the web.
If we add PHP (10.637) here (somehow uses a similar syntax) we get 60.552%

  可见,“类C”语言占统治地位。由此作者得到第一个理由:
引用
Reason number 1: Syntax is very important because it builds on previous knowledge. Also similar syntax means similar concepts. Programmers have to make less effort to learn the new syntax, can reuse the old concepts and thus they can concentrate on understanding the new concepts.

  我们再来看看这些“挑战者”所占的份额:
引用
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%

  它们被关注度的总和都没有超过Visual Basic所占的百分比:10.782%。作者归纳出第二个原因:
引用
Reason number 2: Too much noise is distracting. Programmers are busy and learning 10 languages to the level where they can evaluate them and make an educated decision is too much effort. The fact that most of these languages have a different syntax and introduce different (sometimes radically different) concepts doesn’t help either.

  然后,作者分析了这几年来各种主流语言被关注程度的趋势

  从图中可以看到,这些变化趋势从整体上看都比较平稳。并没有出现“语言暴发户”,也没有出现“一夜暴亡”的。这就是作者的第三个理由:
引用
Reason number 3: Lack of pressure on the programmers to switch. The market is pretty stable, the existing languages work pretty well and the management doesn’t push programmers to learn new languages.


  然后,作者分析了另一个关于编程语言流行程度的网站上给出的一些数据。
  首先,作者从Freshmeat.netGoogle Code上使用各种语言建立项目数目的得到:
引用
Reason number 4: Challenger languages don’t seem to catch momentum in order to create an avalanche of new projects started with them. This can be again due to the fact that they spread thin when they are evaluated. They are too many.


  余下的就不一一说明了,直接列举之:
引用

Reason number 5: Challenger languages communities don’t do a good job at attracting programmers from established languages. Telling to somebody why she is wrong will most likely create a counter reaction not interest.

Reason number 6: There is no great incentive to switch to one of the challenger languages since gaining this skill is not likely to translate into income in the near future.

Reason number 7: The new languages don’t introduce an earth shattering improvement in the life of most of the programmers and projects.

Reason number 8: There is no killer application on the horizon. This means new languages compete in old markets with established players.

Reason number 9: None of these new languages has a powerful sponsor with the will and the money to push them on the market. Powerful sponsor translates in investment in the libraries - see Java. All these new languages are born in universities and research institutes or are coming from very specific niche domains.

Reason number 10: Most of these languages lingered around too much without stepping decisively into the big arena.

Reason number 11: “Features” that look and are dangerous for big projects. Since there are not a lot of big projects written in any of these languages it is hard to make an unbiased evaluation. But bias is in the end a real obstacle for their adoption.

Reason number 12: Unnatural concepts (for majority of programmers) raise the entry level. Functional languages make you write code like mathematical equations. But how many people actually love math so much to write everything in it? Object oriented languages provide a great advantage: they let programmers think about the domain they want to model, not about the language or the machine.

Reason number 13: Lack of advanced tools for development and refactoring cripple the programmer and the development teams when faced with big amounts of lines of code.

  作者还对几种以“Java挑战者”姿态出现的语言进行了分析:
引用
For scripting Python has potential, huge potential. But it has to do something about the indentation fetish to be able penetrate the big project market. Without that the web looks PHPish.

Ruby is elegant but alien. I saw its syntax described like “the bastard son of Perl” (just google it). Its new popularity is based not on the language itself but on a framework (Rails) that can be reproduced in other languages even if with less elegance. Struts 2 attempts just that.

Scripting languages (Groovy, Rhino…) on top of Java and the JVM are interesting but they will never be primadonnas. They cannot compete with Java because they are slower. They can be useful when scripting a Java application is a desirable feature (VBA is an excellent tool for Microsoft products and other Windows products and it pushed Visual Basic up the scale).

Scala has a lot of good cards. Building on the JVM, familiar syntax, huge inherited library, can be as fast as Java on the JVM… But where is the sponsor and where is the killer application in a shifting market?

  最后,作者提出:
引用
The danger for Java doesn’t come from outside. None of these new (actually most of them are pretty old) languages have the potential to displace Java.
The danger for Java comes from inside and it is caused by too many “features” making their way into the language and transforming if from a language that wanted to keep only the essential features of C++ into a trash box for features and concepts from all languages.
分享到:
评论
6 楼 badqiu 2008-05-29  
Ruby根本没有撼动其它语言的巨大优势,并且学习成本比较高(语法太magic),ruby on rails对java的影响也只是开发模式的影响,而且现在java社区已经将这种开发模式消化进来。并且java一直在发展。
5 楼 zzsczz 2008-05-29  
如果3P (php perl python)可以算c的扩展,市场份额一起压倒java平台。。。的确是超越
4 楼 ddd 2008-05-28  
不知道perl算不算一种语言,如果算,也是一个成功语言,不过还真不知道什么时候诞生的。
3 楼 lgn21st 2008-05-28  
看来还真的没有机会威胁了...只好...超越了...
2 楼 ddd 2008-05-28  
c#能否成为successful languages还得拭目以待。
1 楼 Eastsun 2008-05-28  
作者还给出了一些语言诞生的日期:
引用
For one’s curiosity here is a list of talked about languages with their birth date:
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)

Compare this with older successful languages:
C (1972), C++ (1983), Java (1995), C# (2001), BASIC (1964), Pascal (1970), FORTRAN (1957), Ada (1983), COBOL (1959)

It is pretty obvious most of these “new” languages lost the train to success.

相关推荐

    Ruby、Python不能威胁Java的13个理由

    标题中的“Ruby、Python不能威胁Java的13个理由”表明了作者认为尽管这两种脚本语言在某些领域受到关注,但它们无法撼动Java在编程领域的主导地位。描述提到,作者通过数据分析反驳了Java将被替代的观点,并提出了...

    使用Python Lua和Ruby语言进行游戏编程

    "Premier.Press.Game.Programming.with.Python.Lua.and.Ruby.ebook-LiB.chm"很可能是一本关于使用这三种语言进行游戏编程的电子书,它可能会详细介绍如何利用这些语言来开发游戏,涵盖从基础概念到高级技巧的各种...

    From Java to Ruby

    Ruby的块和闭包是其独特之处,它们提供了强大的控制流和数据处理能力,这是Java中匿名内部类和接口不能比拟的。 其次,Ruby的语法简洁明了,例如,方法调用可以省略括号,变量声明不需要特定关键字,这使得代码看...

    thrift 的 java 和 python结合例子

    在这个"thrift的java和python结合例子"中,我们将探讨如何使用Thrift在Java和Python之间建立通信。 首先,Thrift通过定义接口描述文件(.thrift)来规范服务的接口。这个文件使用Thrift IDL(Interface Description...

    从 Java 到 Ruby_ 每一个管理者应该知道的事情

    标题 "从 Java 到 Ruby_ 每一个管理者应该知道的事情" 提示我们,这篇文章或书籍将探讨在 IT 管理领域从使用 Java 转向 Ruby 的关键点。Ruby 是一种动态类型、面向对象的编程语言,以其简洁、灵活的语法和强大的元...

    深度剖析Ruby vs Java误区

    在深入探讨Ruby与Java之间的误区时,我们首先要澄清一个普遍的误解:Ruby只适合小型项目,而Java更适合大型复杂项目。事实上,根据James Halloway的观点,选择哪种语言取决于项目的特点和需求。对于小型项目,Ruby ...

    用Python,Lua和Ruby语言设计游戏

    "Game Programming with Python, Lua, and Ruby" 这本书很可能详细介绍了如何利用这些语言进行游戏开发,包括但不限于以下几个方面: 1. **基础概念**:介绍每种语言的基础语法和特性,帮助读者快速上手。 2. **...

    Python & Ruby 学习

    标题中的“Python & Ruby 学习”表明了这个压缩包文件包含了与这两种编程语言学习相关的资源。Python 和 Ruby 都是流行的高级编程语言,广泛应用于Web开发、数据分析、自动化脚本等多个领域。以下是对这两个语言的...

    Ruby-PyCall从Ruby语言调用Python函数

    Ruby-PyCall是一个非常有用的库,它允许Ruby程序员无缝地调用Python的函数和模块,极大地扩展了Ruby的生态系统。这个库使得两个语言之间的交互变得简单而高效,特别是在需要利用Python的强大科学计算或数据处理能力...

    用Python,Lua和Ruby语言设计游戏-Game.Programming.with.Python.Lua.And.Ruby

    本资源主要涵盖了使用Python、Lua和Ruby这三种编程语言进行游戏设计的知识。这三种语言各有特点,适用于不同的游戏开发场景,下面将详细探讨每种语言在游戏编程中的应用及其优势。 1. Python Python是一种高级、...

    用Python,Lua和Ruby语言设计游戏-Game.Programming.with.Python.Lua.And.Ruby.

    在游戏开发领域,Python、Lua和Ruby这三种脚本语言因其简洁、高效和易学习的特点,逐渐成为开发者们的首选工具。《用Python,Lua和Ruby语言设计游戏-Game.Programming.with.Python.Lua.And.Ruby》这本书深入探讨了...

    sciTE 编辑器,支持Ruby,Python

    **sciTE编辑器详解** sciTE(Scientific TErminal)是一款轻量级且功能强大的文本编辑器,尤其适用于编程工作。它最初由Walter Bright...无论是初学者还是经验丰富的程序员,sciTE都能提供一个舒适、高效的编码环境。

    Java世界的Ruby

    2. **利用JRuby进行集成**:通过JRuby将Ruby代码无缝嵌入到Java项目中,既可以享受Ruby的高效开发过程,又能利用Java的强大性能和稳定性。 3. **代码重构与测试**:利用Ruby的元编程能力进行代码重构或编写自动化...

    Eric is a full featured Python and Ruby editor and IDE,

    Eric is a full featured Python and Ruby editor and IDE, written in python. It is based on the cross platform Qt gui toolkit, integrating the highly flexible Scintilla editor control. It is designed to...

    2022年最新。Python教程-100天从新手到大师

    Python教程-100天从新手到大师,Python从入门到精通。简单的说,Python是一个“优雅”、“明确”、“简单”的编程语言。学习曲线低,非专业人士也能上手;开源系统,拥有强大的生态圈;解释型语言,完美的平台可移植...

    从Ruby语言调用Python函数-Ruby开发

    您可以将任意Python模块导入Ruby模块,通过从Ruby到Python的自动类型转换来调用Python函数。 支持的Ruby版本pycall.rb支持Ruby 2.3或更高版本。 支持的Python版本pycall.rb支持Python 2.7或更高版本。 请注意,在...

    为什么你一定要学习Python或Ruby语言.pdf

    此外,考虑到一个程序员能有效维护的代码量上限,使用Python或Ruby可以让个人承担原本需要团队协作的工作。 与VB和PHP相比,Python和Ruby在语言设计上更加先进。虽然VB和PHP易于入门,但它们在处理大型项目时暴露出...

    Redis 实战 源码(java python ruby node)(缺少第三节)

    Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,常被用于数据库、缓存和消息...无论你是Java、Python、Ruby还是Node.js开发者,都能从这本书中收获宝贵的经验,提升你在使用Redis时的技能和效率。

    此存储库包含Ruby、C、C++、Python和Java中问题的各种解决方案。_C++_Java_下载.zip

    _C++_Java_下载.zip"表明这是一个软件开发相关的资源集合,特别是针对五种编程语言:Ruby、C、C++、Python和Java。这个压缩包很可能是某个程序员或团队分享的代码示例、解决问题的算法或者学习资源。从文件名...

Global site tag (gtag.js) - Google Analytics