函数式编程学习之路(11)

编程模式

很难去表达这个东西,但也没有办法下定义,我们来看下:

SQL:Structured Query Language

SQL 是高级的非过程化编程语言,它允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解其具体的数据存放方式。而它的界面,能使具有底层结构完全不同的数据库系统和不同数据库之间,使用相同的 SQL作为数据的输入与管理。它以记录项目〔records〕的合集(set)〔项集,record set〕作为操纵对象,所有 SQL 语句接受项集作为输入,回提交的项集作为输出,这种项集特性允许一条 SQL 语句的输出作为另一条 SQL 语句的输入,所以 SQL 语句可以嵌套,这使它拥有极大的灵活性和强大的功能。在多数情况下,在其他编程语言中需要用一大段程序才可实践的一个单独事件,而其在 SQL 上只需要一个语句就可以被表达出来。这也意味着用 SQL 可以写出非常复杂的语句。

SQL 同时也是数据库文件格式扩展名

SQL 包含3个部分:

再看下Linq引入的一些概念:

匿名对象,匿名方法,对象创建,隐式类型等,另外就是类定义,泛型,等,其实也是在定义.也逃不出DDL的范畴.

DML的CRUD, 现代编程中的ORM, 还有集合操作等,都有共性.

DCL定义的更精确,把权限控制用3个关键字给定义出来了,grant,deny,revoke, 而现在编程语言,在涉及权限方面还比较复杂,当然最终泛化后还是一样.

由此可见,一是编程语言最终的特性,还是在哲学的大范畴里,而声明式编程的威力,则把占在了制高点上,SQL虽然早在70年代就发明出来,但现在来看,它抽象的非常精简,现代编程语言泛化后,正在向SQL这种声明式进化.

以C#为例,新特性已经能部分满足DDL, DML, 但DCL在程序设计里还差一大截,必竟对功能的控制,比起对数据的控制要困难得多.

声明式编程包含了函数式编程逻辑编程,故采用这两种编程范型的编程语言如PrologHaskell都属声明式编程。其他例子有SQL

由此可见,函数式编程是声明式编程的一部分,逻辑编程有prolog.

声明式编程里的DSL有比如,SQL,CSS,正则表达式等,老赵翻译自Anders的演讲系列把这些说的很清楚,由此可见,Anders的确是语言大师.

另外通过查阅资料发现,很多这些概念,都是出现在70年代附近,而最近几年才逐步被重视起来的原因,应该是受到了软硬件发展的限制,必竟理论超越环境几十年很正常.

然后就是元编程,不知道理在的模板技术算不算,在HTML世界,模板变得越来越重要,但也造成模板语言百花齐放,如果有一门通用的比如象SQL这样的语言,相信是程序员的巨大福利.

W3C只顾定义Html, CSS这类的东西,却把最重要的Template给遗忘了真是不够明智,如果有一门通用的Template,那什么PHP, JSP, ASP, ASPX, Razor等都可以统一起来了.

Template语言的真正统一和产生,才是互联网的第二代.整个互联网将从静态进入到动态

 

posted @ 2013-05-02 12:16  人工智能-群513704292  阅读(333)  评论(0编辑  收藏  举报