用C#,C++越多,发现做得重复的事情越多,当初自认为重要的技术细节,越来越显示不出生产力。
首先,不可否认,C#, java, C++等都是非常优秀的语言,一个偌大的中国,也没有发明不了可以与之媲美的语言。
但是,这些语言,对完成我们的业务来说,还是远远不够。
这说明,一门实用语言编译器开发, 是多么困难的事。
各个不同的业务,用到的逻辑,不仅仅是千差万别。
以下两句话,修改自http://www.cnblogs.com/parallet/archive/2011/06/22/2087099.html
很多时候,用于逻辑的代码, 才那么几行, 其他的代码都为了那些枝杈努力去了。
一旦函数之间的嵌套比较深入, 就会变得非常复杂, 而且它很难实现各种循环, 更难实现的, 很多时候, 代码给拆分出非常多块, 基本上每一小块都要try/catch.
上面两句话,说的是异步编程的问题,如果你每天都是在编写异步程序,对这个问题,就会有比较深的感觉。
实际上,这样的业务领域的问题,太多了。
如果你和你的团队,几十年来,天天都在有限元的计算, 人工智能计算,机器人控制,数据挖掘,图像处理,而不是一些社会上非常大众的管理信息系统,你越来越发现,你用的工具,是那么的丑陋,越来越不能满足你的要求,越来越让你崩溃,没有了当初初入行时的兴趣和幻想,沉得自己做的事,没什么意义。
不信,你去一些做专业性很强的重复工作的部门,你会了解这个问题是多么的严重:多少人为些付出了沉重的代价,健康,家庭的自吹和睦,甚至生命!
虽然外面的人,对你这个行业很敬畏,觉得高深,这很大成分是因为所使用工具的落后:技术要求高,重复性强,整天专注于繁琐细节,磨灭了创新。
甚至有一天,你再也忍受不了,要么发明自己的
工具(语言),要么转行。很多时候,我们所要的,其实就只是在原有工具上加上一点东西,就可以了。
可这很难很难。
如果我们的电脑内在小了,我可以换个大的从500M换到4G,移动服务不喜欢,我们可以换个联通的...
可是,软件却没那么容易,想换就换。
.net十年了,可在.net平台,可用的语言,也就那么区区的几种,别的多是出于个人爱好,或者科学研究,多处于实验阶段,实用的语言还非常少。
虽然visual studio支持dsl,但你要是试过了DSl,你就会发现,那个DSL开发,实际上是多么的复杂,关键还不实用。
即使你不写一行代码,直接打开附带的示例,运行后,鼓捣鼓捣下,竟然就会出现异常,让你手中无措。
既然visual studio有那么强的Extensibility,有visual studio package, vsix project, 谁能让中国清华大学(或者别的大学)计算机专业的30%的本科生独立做出一个类似于linq的OSQL出来?做出一个DOS系统的命令出来?
不要说后面的各种异常,单是这些DSL怎么和已有的宿主语言集成,就是个问题。
难道我本来只想在linq上,加入OSQL的功能,就要自己从头到尾编写一个编译器,实现C#,linq?