Eisen's Blog

© 2024. All rights reserved.

"JAVA的命运"

2011 March-31

原文 https://www.programmer.com.cn/5200/

语言更复杂后就会消失吗?不会。我认为C++早已超越了它的复杂度极限,但还是有很多人用它编程。可这实际上是逼人们只使用其中一个子集。所以我认识的每个用C++的公司都说:“对,我们用C++,但是用的是多继承,不用操作符重载。”有很多功能你完全不用,因为使用它们会造成代码太复杂。即使不得不用那些功能,我认为也实在没什么好处。那样的话,程序员就读不懂别人的代码,也就不存在“程序员的可移植性”了。

是啊,C++的复杂度已经过于高了,让人觉得它真的不只是一个语言了。到现在我都没有很好的去用过C++。

C吧,其实也用过,我不喜欢这语言的最大原因就是它太麻烦了。C++呢...唉,前几天有同学还给我说C++已经够强大了啊,STL就够了...我的天,好吧,真的是我懒好吧?我觉得有STL的C++与C相比那是巨大的提升,但是与C# JAVA相比真的没什么,它有的别的语言都有,顶多打个平手而已。不过boost确实有打破僵局的意味,不过我对C++是外行,我还是不要多嘴了。现在甚至连JAVA都有些讨厌了,总是它有一个那么庞大的类库,可是还是不能满足许多基本的需要。什么字符串匹配啊,html实体替换啊,这些真的真的都算是非常基本的内容了。可是JAVA没有。你要么去网上找一些JAR,要不就要自己写。这两种方法都会大大降低代码的可理解性。C就更不用提了,没有垃圾回收机制,极小的类库,让你真的无从下手。好在JAVA有个Apache,commons的强大让我对JAVA重新燃起了热情,但还是不够, 懒惰的程序员真的是一个单词都懒得拼写,python的简洁让我着迷。

也可能是我对这些内容还不够了解吧?希望进一步的探索能有所突破。

Bloch:我想说得更深入一些。我认为Java是现有语言中最好的。但有趣的是,现在很流行谈Java是否即将死去。我觉得这基本上是扯淡。我认为现在最好的多线程构件就在Java里。我认为Java将迎来复兴。我不是说它是未来20年内最先进的,也不是说它是处理多核的最好方式。但是我认为从现有的东西来看,我们是足以傲视同侪的。

我现在有向python发展的趋势,因为与java相比它更简洁,有更多的内嵌的方法可以省去很多开发那种功能函数的时间,如in,not in这些用起来都太舒服了,我真的很喜欢这样的语法。尤其是list comprehension真的是太优雅了,我真的很痴迷这个。更快的实现自己的想法真的让人心旷神怡。


"JAVA 的命运"

2011 March-31

原文 https://www.programmer.com.cn/5200/

语言更复杂后就会消失吗?不会。我认为 C++ 早已超越了它的复杂度极限,但还是有很多人用它编程。可这实际上是逼人们只使用其中一个子集。所以我认识的每个用 C++ 的公司都说:“对,我们用 C++,但是用的是多继承,不用操作符重载。”有很多功能你完全不用,因为使用它们会造成代码太复杂。即使不得不用那些功能,我认为也实在没什么好处。那样的话,程序员就读不懂别人的代码,也就不存在“程序员的可移植性”了。

是啊,C++ 的复杂度已经过于高了,让人觉得它真的不只是一个语言了。到现在我都没有很好的去用过 C++。

C吧,其实也用过,我不喜欢这语言的最大原因就是它太麻烦了。C++ 呢...唉,前几天有同学还给我说 C++ 已经够强大了啊,STL 就够了...我的天,好吧,真的是我懒好吧?我觉得有 STL 的 C++ 与 C 相比那是巨大的提升,但是与 C# JAVA 相比真的没什么,它有的别的语言都有,顶多打个平手而已。不过 boost 确实有打破僵局的意味,不过我对 C++ 是外行,我还是不要多嘴了。现在甚至连 JAVA 都有些讨厌了,总是它有一个那么庞大的类库,可是还是不能满足许多基本的需要。什么字符串匹配啊,html 实体替换啊,这些真的真的都算是非常基本的内容了。可是 JAVA 没有。你要么去网上找一些 JAR,要不就要自己写。这两种方法都会大大降低代码的可理解性。C 就更不用提了,没有垃圾回收机制,极小的类库,让你真的无从下手。好在 JAVA 有个 Apache,commons 的强大让我对 JAVA 重新燃起了热情,但还是不够, 懒惰的程序员真的是一个单词都懒得拼写,python 的简洁让我着迷。

也可能是我对这些内容还不够了解吧?希望进一步的探索能有所突破。

Bloch:我想说得更深入一些。我认为 Java 是现有语言中最好的。但有趣的是,现在很流行谈 Java 是否即将死去。我觉得这基本上是扯淡。我认为现在最好的多线程构件就在 Java 里。我认为 Java 将迎来复兴。我不是说它是未来 20 年内最先进的,也不是说它是处理多核的最好方式。但是我认为从现有的东西来看,我们是足以傲视同侪的。

我现在有向 python 发展的趋势,因为与 java 相比它更简洁,有更多的内嵌的方法可以省去很多开发那种功能函数的时间,如 in,not in 这些用起来都太舒服了,我真的很喜欢这样的语法。尤其是 list comprehension 真的是太优雅了,我真的很痴迷这个。更快的实现自己的想法真的让人心旷神怡。


Some Thing about Python

2011 March-29

A major rule of thumb in Python is to code for simplicity and readability first and worry about performance later, after your program is working, and after you’ve proved that there is a genuine performance concern. More often than not, your code will be quick enough as it is. If you do need to tweak code for performance, though, Python includes tools to help you out, including the time and timeit modules and the profile module.

我认为这是一个很重要的原则,不仅仅在python。事实上,绝大多数的程序效率并不是什么问题,主要的矛盾在于你的想法与你所写程序的功能。而这显然是一个代码的质量以及生产率的问题。如何用更短的时间写出更多更优秀的代码才是王道。

We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil.—Donald Knuth

而且,对效率的处理,应该在出现效率问题的时候才开始考虑吧。今天看Bruce Eckel的Thinking in Patterns with Java 最开始的章节里就讲到了这个所谓的"premature optimization",他引用了Knuth的话,强调除非你真的测试到这部分代码确实很耗时,需要对其优化,不然不要主观臆断的去提前优化它,这样的做法很浪费开发时间。纵使你的感觉是对的(那段代码确实很耗时!),他依然主张要从全局去考虑:整个程序的运行中,90%的时间浪费在10%的代码之中,那你所考虑的代码真的被包含进去了么?去花时间处理那10%就可以了,我们的时间是很宝贵的。其实道理很简单:完美是不可能的,去用最短的时间获取最大的优化吧。