为什么像java、c、c++这样的静态语言会比python、ruby这样的动态语言流行得多?

个人觉得像 ruby 这样的动态语言简洁得多。回复内容:
我觉得不应该看静态还是动态,而要看强类型和弱类型。强类型比弱类型不容易出错,而弱类型只是省点代码而已。python与php都是动态语言,但在python类型上比php严谨。举例如下:

a = [1, 2, 3];
print(a[‘1’]);
b = {0:1, ‘a’:2};
print(a[‘0’]);

c/c++ 有强烈的学术背景,java / c# 有强烈的商业背景,这些背景确保了有足够多的人和公司对这些语言有信心,从而促进了这些语言的大规模应用,之后就靠惯性了。看看 python 和 ruby 在 web 开发领域成长速度就知道,在面对一个与人们熟悉的环境有所区别的问题的适合,人们才会重新开始审视自己手里的选择、放弃习惯而做出更合理的选择。
最关键的一点:国内大学没有python和ruby的课。
因为静态类型有利于工具做静态分析,有利于性能优化,有利于代码可读性有些人总是拿完成同样任务所用代码量来做比较,得出python优于java的结论,不得不说这是非常片面的观点。java是有些啰嗦,不过ide能帮忙减少80%以上的键盘敲击,同时静态分析能帮忙解决80%以上的低级错误,代码提示能帮忙减少80%以上的查文档时间,至于强大的重构能力更是python望尘莫及的,所以只要是稍微大的项目,用java很可能比python开发速度更快
1. 动态语言相对来说速度慢些.2. 涉及到一些大的工程,java/c/c++来说可以系统性的更准确高效的解决问题.3. 当越到低层和硬件关系更近时, c/c++可以更好的完成任务.直接编译成机器语言.而python和ruby需要运行环境.当然, python等动态语言用来做一个工具处理一些日常数据还是很好用的,或者用python django做网站.但一涉及到大型工程就需要用java/c/c++了比如嵌入式用c需要高效高性能, 网游用c++需要大量的绘图库及运算,银行行业用j2ee, 安全性比较高, 并方便unix上运行.其实用的都不少, 差不多, 不同的语言工具有不同的特点解决不同的问题.
因为c、c++的历史长,本来出来就早,所以早就有了广泛应用。而java,刚出来的时候有sun、ibm等等大厂在全力推广,推了十几年了,一直到现在。ruby、python虽然出来也不算晚,但是没有大厂的商业推广,为大众熟知也是近十年的事情。
工具是用来解决问题的 能比较好的解决问题就可能被用的多 而不是说这个工具有多精致
越是复杂的项目,使用静态语言可以利用编译器更早的发现和避免问题。这并不是说动态语言并不能用于大型项目,但是在超过一定规模之后,动态语言轻便灵活的优势就会被重构时的overhead给抵消掉。另一个原因是性能上的。同理,也不是动态语言写不出高效的代码,而是你花在优化上的时间会更多,而团队人多了水平难免参差不齐,不如静态语言稳妥。
我觉得动态语言查错比较困难,经常不知道错误在哪里,个人学php的亲身体会
这个问题如果放在几年前,估计就要倒过来问了……哪个工具好,要看解决的问题是什么,最近什么技术流行,只能说明这个技术适用的问题域变成了普遍问题而已。

Posted in 未分类

发表评论