我于1997年在大学学习Java。那是我大学三年级,而Java的版本为1.1。
我仍然记得努力理解类路径以及包,文件和文件夹之间的关系。 真慢!
但是我更生动地记得它是如何立即点击的。 它解决了我在使用C时遇到的许多头痛问题。
也许Java不如C强大,但我觉得效率提高了一个数量级:
- 垃圾回收:大量的复杂性和错误在一夜之间消失了。NullPointerExceptions:它们很棒! (如果将它们与崩溃,内存损坏和核心转储进行比较)不可变的字符串:我整天都在操纵字符串; 不变的琴弦使我的生活变得如此轻松。
所有这些功能使我的程序变得非常简单,它们使我的大脑专注于更重要的内容。
但是到了2008年,我意识到自己内心深处的不满。
ORM和永无休止的对象关系阻抗不匹配,漫长的编译和部署周期,XML所有内容(或更现代的注释所有内容),数百万个如果(foo!= nil),工厂和FactoryFactories,不灵活的类型,很少的重用性以及所有框架的弊端。
然后我的宠物讨厌:创建另一个Mapper类,以将一个DTO转换为另一个DTO,这两个类的95%相同。
我的意思是:
If I still want to be a programmer I don’t want to do it this way anymore
Rich Hickey — Clojure, Made Simple.
所以我开始寻找其他地方:Ruby,Erlang,Scala。 有人建议调查Clojure,我当然忽略了他(这是LISP!LISP!)。
But then Rich Hickey's Simple Made Easy talk really struck a chord. Simplicity is what I was looking for.
Clojure解决了我使用Java时遇到的许多麻烦。 Clojure比Java更强大,我觉得 数量级更高的生产力:
- Data first: once you embrace the fact that your programs just transforms data from one shape into another, you can throw away 90% of your code.
- The REPL: Not Ruby's irb, not Erlang's Shell nor Scala's REPL, but a whole more powerful interactive environment.
- Immutable everything: The niceties of immutable strings extended to the whole codebase.
所有这些功能使我的程序变得更加简单,它们使我的大脑可以专注于更重要的内容。