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的亲身体会
这个问题如果放在几年前,估计就要倒过来问了......
哪个工具好,要看解决的问题是什么,最近什么技术流行,只能说明这个技术适用的问题域变成了普遍问题而已。