编程和语言之我见

  1. 云栖社区>
  2. 博客>
  3. 正文

编程和语言之我见

redraiment 2009-07-25 02:10:00 浏览775
展开阅读全文

我觉得“编程”的概念相当宽泛,程序早在计算机出现之前就存在。我们现在进机关办事,仍不时会听到“做事要按程序/规矩/规 章制度来”。比如我们学生项目基金报销,要按先后顺序依次执行“填报销单、交团总支审核、院长助理签字、财务处复查”等步骤。而这些就是所谓的“程序”。

因此,程序就是为达到某个目标而需要执行的步骤;而如何把这些步骤有意义地组合起来,这个过程就是“编程”

用这个定义去匹配,会发现周边很多事情都是编程。比如编写文档随时要保存,我需要在记事本里执行:点击菜单“文件(F)”-点击菜单项“保存(S)”。这样就达到了保存文档的目标,但如果我们将这两个步骤执行顺序颠倒,则执行结果就无意义,在C语言里你或许会得到一个“Runtime Error”的提示(关于此话题的更多讨论,欢迎阅读《编程村一日游》)。

程序设计(programming)好了,如果我们需要委托其他人或计算机帮忙执行,我们就需要将这些步骤用对方能理解的语言描述出来(coding)。比如上面报销的例子,财务室老师就是用自然语言向我描述。

最近对语言(主要是编程语言)很感兴趣,接触了一点DSL(领域特定语言),觉得它让软件和语言的边界变得模糊,使得语言的概念变得更加宽泛,甚至可以认为所有的软件都是一门语言

先来简单地介绍一下DSL,它是 Domain-specific language 的缩写。顾名思义,就是为问题所在的特定领域设计一门通俗易懂的“方言”,使得解决该领域的问题变得更形象、更自然(比如 SQL 语言就是访问数据库这个特定领域的方言);语言是我们用来描述事物、传递思想的工具,不同的语言仅仅是对同一事物表述不同而已。比如中文管“0”叫“零”、英文里叫“zero”。

我们使用软件何尝不是如此?“用鼠标点击计算器上的按钮1、按钮+、按钮2、按钮=”与“echo 1+2 | bc”描述的都是“求1+2=”,只是前者是针对 GUI,后者用了 CLI。如此看来,我们在处理人机交互时很多时候都是在为用户设计一门特定的语言。如果设计的语言迎合用户的口味、符合用户的操作习惯,就称为用户体验做得很到位,否则将无人问津。

每每想到这里,我都会憧憬一下未来的编程:可能以后会流行使用语言的语言——“元语言”来编程,首先用这门元语言快速地开发出一套“方言”,然后使用该“方言”来解决某个特定问题。到那时,程序员和普通用户的区别也就不明显了,程序员之间交流的不再是“我开发了某某功能库,发给你用用?”而是“我写一套某某方言,你要不要耍耍?”^_^。


版权声明

请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“redraiment”和主站点地址,方便其他朋友提问和指正。

联系方式

我的邮箱,欢迎来信(redraiment@gmail.com
我的Blogger(子清行):http://redraiment.blogspot.com/
我的Google Sites(子清行):https://sites.google.com/site/redraiment
我的CSDN博客(梦婷轩):http://blog.csdn.net/redraiment
我的百度空间(梦婷轩):http://hi.baidu.com/redraiment

网友评论

登录后评论
0/500
评论
redraiment
+ 关注