阅读更多

14顶
4踩

编程语言

原创新闻 Ruby,Python不能威胁到Java的13个理由

2008-05-29 09:14 by 见习编辑 Eastsun 评论(19) 有12655人浏览
  最近,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.
14
4
评论 共 19 条 请登录后发表评论
19 楼 y263542662 2008-06-11 13:36
后来者没有实质上的前进!
18 楼 cauc_dg 2008-06-08 23:50
支持一下java~~
17 楼 echenyin 2008-06-06 22:42
我觉得把JAVA做一些封装,看微软把C#都打扮成那样了,容易上手啊。
========================
*#……¥@(……¥(@
那还叫java么?
16 楼 dazuiba 2008-06-04 17:29
我有3年的java经验,和一年的ruby经验。
以上的理由,能够说服我的,只有Reason number 3
事实在这里摆着,历史说明一切。

但谁又敢说,历史不能由挑战者创造呢?
15 楼 xzj127 2008-06-01 14:26
一个简单的东西..本来也很好用.为什么有哪么多人喜欢整来整去。

        直接吃糖不好吗?为什么总喜欢还要包一层我们都觉得厌烦的纸了..
14 楼 lsk 2008-05-30 16:15
为什么说是java的挑战者?? 
难道合作就不行?
语言的产生是由于要去满足某种原因.估计和另外一种语言关系不大吧
相信没有那个语言是为了消灭(或者说是挑战)另外一种语言诞生的.
13 楼 xxl36 2008-05-30 15:07
关键是不能太复杂,不然就没人喜欢了!
12 楼 nwangwei 2008-05-30 12:56
我觉得最有意义的就是语法糖了,就是方便习惯性的用法,简洁代码,很棒!
11 楼 Eastsun 2008-05-30 12:18
引用
javaTo 2008-05-30 10:54
1.5的有些语法还是非常棒的,1.6更多的只是性能的提升,
至于1.7,感觉就是语法糖衣,毫无意义!


Java7还是有一些值得期待的事。
譬如Java7的JVM中将增加一个invokedynamic指令,有望大大提高动态语言在JVM上的运行性能。
参见:
  Java平台的DLR:Da Vinci Machine项目
  Java7的invokedynamic指令草案已经公布
10 楼 javaTo 2008-05-30 10:54
引用
对我来说java的语法在1.4之前就好,1.5之后就是画蛇添足了。

1.5的有些语法还是非常棒的,1.6更多的只是性能的提升,
至于1.7,感觉就是语法糖衣,毫无意义!
9 楼 Struts_Spring 2008-05-30 09:29
我觉得把JAVA做一些封装,看微软把C#都打扮成那样了,容易上手啊。
8 楼 aninfeel 2008-05-30 09:28
一般认为不加新特性才会是古董,怎么加了新特性反而会成为古董呢


因为加的所谓新东西只不过是一种功能的快捷方式而已,并不是本身没有或做不到这种功能。
7 楼 chenlb 2008-05-29 23:17
引用
caoyi1983 2008-05-29 11:57
对我来说java的语法在1.4之前就好,1.5之后就是画蛇添足了。


没有泛型的头都痛,好是类型转换,运行时期还可能ClassCastException
6 楼 mkclawhammer 2008-05-29 20:27
引用

caoyi1983 2008-05-29 11:57
对我来说java的语法在1.4之前就好,1.5之后就是画蛇添足了。

Java已经开源了,您可以用您那更先进的思想来设计一套东西,让大家都来瞻仰瞻仰吧!
5 楼 caoyi1983 2008-05-29 18:36
这里的古董=C++,我的意思是不要成为C++。。
4 楼 fuwang 2008-05-29 13:21
引用

我也认为加入太多的特性会使java成为古董,进而失去实用性,进入棺材。

一般认为不加新特性才会是古董,怎么加了新特性反而会成为古董呢
3 楼 fight_bird 2008-05-29 12:39
Sun应在jdk核心之外设立类似插件之类的机制,而不是像现在这样不停往里面加新特性。

维持jdk核心的简练和高效十分重要。
2 楼 caoyi1983 2008-05-29 11:57
对我来说java的语法在1.4之前就好,1.5之后就是画蛇添足了。
1 楼 caoyi1983 2008-05-29 11:56
我也认为加入太多的特性会使java成为古董,进而失去实用性,进入棺材。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • red hat 6 内核源码

    red hat 6 内核源码

  • Red Hat Linux下安装JDK

    Red Hat Linux下安装JDK。1、下载Linux平台的JDK。2、卸载Linux自带的jdk。3、安装jdk。4、设置jdk环境变量。5、验证jdk环境配置。6、安装过程可能出现的问题。

  • Redhat官方内核源码下载

    内核源码一直在用redhat,以前是用redhat9,后来转到redhat enterprise linux 4 和 5。最近更新了系统到rhel5.4,没想到intel3945无线网卡还是没好好的起来,DIY内核,无奈没kernel src rpm。如今找到啦! 此网站可以下载el5全部src rpmhttp://ftp.redhat.com/pub/redhat/linux

  • linux(red Hat)安装java教程

    1.从Oracle上下载jdk-6u45-linux-x64.bin jdk下载地址 2.将jdk-6u45-linux-x64.bin拷贝到任意一个目录,我们这里为 /root/usr/java,没有目录自行创建 3.进入/root/usr/java目录,修改jdk-6u45-linux-x64.bin的可执行权限 chmod u+x jdk-6u45-linux-i586.bin 4.执行j...

  • RED HAT 安装java web 环境

    需求和环境 需要在一台RED HET上部署java web 项目,在这里整理一下。 注:很多操作的时候没有截图,这里有不少截图和示范来源网络。 需要安装的内容大概有一下内容: tomcat(jdk) mysql 需要准备的文件有: jdk-8u181-linux-x64.tar.gz apache-tomcat-7.0.90.tar.gz mysql-5.7.12-1....

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

    最近,到处可以看到大量的文章:关于Java将会消失取而代之的是脚本语言或其他汇编语言。不,那种情况是不会发生的。本文,作者根据许多数据给出了论证。

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

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

  • 【JAVA程序员必看】Ruby、Python不能威胁Java的13个理由

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

  • JAVA将死!Ruby即将称王

    相信很多人都听过一个禅宗故事,说是两个僧人赶路,趟过一条小河的...于是前者的心里就很不舒服,一路上闷闷不语,后来实在忍不住,就问自己的同伴,既然身为佛门中人,怎能不顾清规戒律,如此轻薄。然而...

  • Linux Red Hat 源码包安装apache

    一、实验准备 需要提前安装gcc yum install gcc 源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install) 下载地址: Download - The Apache HTTP Server Project 我下载的是httpd-2.2.15.tar.gz 二、实验步骤 1. 下载源码包 我是用windows下载,然后通过xshell连接到linux主机,...

  • redhat基本操作

    实验:安装redhat 需求:使用DVD镜像文件rhel-server-6.5-x86_64-dvd.iso,在虚拟机中安装RHEL6系统 分区方案选择“使用所有空间”。 软件组选择“基本服务器”,并自定义添加“桌面”和“开发工具”。 安装完成后,对RHEL系统进行初始化。 在Vmware Workstation软件中为安装好的Linux虚拟机制作快照 环境:vmware w...

  • 教你下载Redhat源码包

    测试机信息Operating System: Red Hat Enterprise Linux Server 7.0 (Maipo) CPE OS Name: cpe:/o:redhat:enterprise_linux:7.0:GA:server Kernel: Linux 3.10.0-123.el7.x86_64 Architecture: x

  • red hat java环境变量_red hat上jdk环境变量设置

    在red hat或者ubuntu上安装jdk,最关键的就是环境变量的设置。red hat中/etc/profiles 这个里面设置的环境变量为所有用户可见。其次就是各个用户的HOME目录中的.bash_profiles,这个文件中的配置信息为各个用户所独有的环境变量信息,系统启动后首先加载/etc/profiles中的环境变量信息,当具体登陆到某个系统后,接着加载用户HOME目录下的.bash_p...

  • java 失去焦点_Java并没有失去它的魔力

    这个问题经常出现,每当出现这个问题时,博客圈就会激怒,每个人都投入2美分的价值。 “ Java的未来是什么?” 我对所提的问题没有任何疑问,因为它当然是合法的,即使不是很重要。 实际上,应该认真考虑一下,无论...

  • Bruce Eckel谈Python、Java、Flex及RIA

    Bruce Eckel谈Python、Java、Flex及RIA 作者 Jon Rose 译者 张龙 发布于 2009年5月9日 上午11时17分 在本文中InfoQ有幸采访到了Bruce Eckel以了解其对RIA前景的看法及目前所从事的工作,因为他最近与人合著了...

  • Java并没有失去它的魔力

    ” 这个问题经常出现,每当出现这个问题时,博客圈就会激怒,每个人都投入两分钱。 业余爱好者和专家都参与了永无休止的辩论,这些辩论经常在切线上消失而无济于事。 答案(如果确实存在)会因信息过多和冲突情绪的...

  • 编码之旅:从非科班转码者到应用开发者

    这个过程可能会面临一些挑战,但也会带来许多收获和机会。以下是对非科班转码的过程和收获的总结:自主学习:非科班转码的人通常需要自主学习编程知识。这可能包括在线课程、教程、书籍和其他资源的学习。实践项目:...

  • 转载:名次王国里的死刑解决方法

    写在前面,我并不会java语言,但是看了这篇文章依然受益匪浅,如果你不是一只猿,看看也没有错,所以希望你看了也能有所收获! 刚看到的一篇文章,大家来讨论下翻译自SteveYegge的大作...

Global site tag (gtag.js) - Google Analytics