• 程序语言的认识 - [coding]

    2008-05-23

    Tag:DSL

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://maidouguilai.blogbus.com/logs/21431955.html

    ---一篇老文章,今天整理文件,差点删掉,似乎是当时写的草稿,却不知道发到哪里了。就顺手贴过来。

    最近,一段时间的学习 让我对语言的认识有了很大变化.

    我觉得语言的发展是在不断抽象中提高的.

    就像asm永远不会被替代一样,c语言也拥有了同样稳固的地位
    而其他 诸如 cpp java 等等都还未知

    很明显c语言已经像asm一样找到它应有的位置,(虽然它比asm用的更广泛)
    而其他的语言仍在努力。
    我觉得在今后的日子里,c++和java会面临很尴尬的局面
    从执行效率上无法超越c,而从开发效率上无法超越脚本语言。

    像很多理想的理论一样, oo也只是一种描绘美好图景的理论。
    不过,现在我们可以清楚的看到oo能做什么不能做什么。
    或者说oo擅长什么和其局限性。

    最近,学习了perl和正则表达式。
    感觉正则表达式对程序开放带来的便利也是如此巨大,甚至不弱于oo的概念。

    我认为:
    无论 everything is object (从oo的眼光看)
    还是 everything is string (从正则表达式的眼光看)
    或是 everything is table (从sql的眼光看)

    每种思想都有他们自己的擅长之处,当然也有其局限。

    我们正在走向DSL的时代,一种编程理论不在是主导性的因素。
    无论 是面向对象,面向契约,面向方面 都只是程序的一个侧面而已。

    现实的复杂让我们需要各种不同的api,其实每种api都可以看做是一种(领域)语言

    其实,仔细看看,我们身边已经有各种各样的语言
    除了 c cpp java ruby, perl js 这类语言以外

    makefile, html xml css我想都可以看做是一种语言

    同样 正则表达式,也是一种语言。
    甚至于 printf 的格式定义也是一种语言

    而以后,我们可能不在是去思考函数的接口 而是要思考语言的接口了。

    因为现实的逻辑复杂,让我们需要用不同的语法描述不同问题的解决方案。

    当我们把现实的某个具体问题抽象成一个合适的DSL,就会使对这类的问题的处理效率
    提高到一个新的高度。
    在以往我们可以看到有很多类似的例子:
    正则表达式
    unix的文件操作抽象

    html+css 等等。

     

    选择合适的DSL解决问题,应当是软件设计的未来。


    收藏到:Del.icio.us




发表评论

您将收到博主的回复邮件
记住我