假设X是输入语言,Z是输出语言,f是编译器,用Y语言编写。因为f只是一个程序,我认为Y可以是任何语言,对吗?所以我们可以有编译器f1,f2,每个编译器都是用Y1和Y2编写的。f2 = f Y2
h = g . f # We get a compiler X -> Mcpython = Python -> PythonVMCode C
interpreter = PythonVMCode -> Nothi
作为开发人员,我经常对新的语言功能感兴趣,这些功能可以让你的生活变得更容易。例如,java5为该语言带来了泛型和注释,这些特性绝对可以提高您的工作效率。
然而,当我回顾近十年在java平台上的工作时,我发现与版本控制相关的问题是无效和不必要的努力的最大罪魁祸首。一小时又一小时地寻找jar的正确版本,试图协调一些版本冲突,升级依赖库等等。当我开始使用java时,事情并不是那么困难,你会有一些第三方库,仅此而已。今天,典型的web应用可能很容易使用: Spring Framework、Hibernate、Struts等等。所有这些都带有一些依赖的第三方库。今天,我的ear归档通常会包括大约40个或