DSL也是语言

既然在我看来程序就是算法加语言细节,随之而来就会推导出很多有意思的结论。

比如既然如此,我们是否可以设计出一种完全是算法的语言,而把细节交给其他一些什么东西自动地去处理。想想CASE吧,它们不就是这样的吗?然而你会发现,即便是如此,由于算法也需要用语言来描绘,所以当你去学习这些工具的时候,你还是需要学习一些语言的东西,比如UML。

当然有些人声称,可以发明了一种新的方式,可以只用鼠标拉一拉,扯一扯,然后在简单的做点设置,就可以了。但是最终你会发现,这样的工具掌握起来跟掌握一种语言没有太大的差别。

现在忽然出了个DSL,是不是也跟以前一样是换汤不换药呢?我的答案是否定的。在我看来DSL最大的改进在于,不仅仅将计算机语言的细节掩盖起来,同时还对算法的特定面向区域做了设定,由此而来的是也对于描述算法的语言细节做了一定的掩盖。因此这种语言应该是学习门槛最低,且最能够直接显示业务和程序的执行逻辑的。

而我们进一步考虑这个问题,其实面向语言的编程大的方向也就是如此。也就是说未来的面向语言编程,应该是强调隐藏语法实现细节,同时也隐藏算法实现细节。无疑隐藏语言的实现细节,将会大幅度的减少低级的语法错误,特别是那些比如逗号写错为分号之类的错误。同时还可以明确的显现业务逻辑的边缘究竟在什么地方。这两样无疑将大大提高程序的可维护性和容错性,也会很好的减少程序的调试费用。

你可能感兴趣的:(编程,算法,UML)