日期:2014-05-17  浏览次数:20521 次

《数据库系统概论》上说:关系语言是一种高度非过程化的语言。这里的“非过程化”是什么意思啊?
《数据库系统概论》2.2.2节介绍关系数据语言的分类时说:关系语言是一种高度非过程化的语言。
我不理解这里的“非过程化”是什么意思。

是面向对象和面向过程中的过程吗????

SQL的介绍中也说:结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。

难道非过程化的意思是:它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言语言作为数据输入与管理的接口。


谁能讲一下啦!
------最佳解决方案--------------------
仅仅是个人的理解:非过程化其实就是:不需要你告诉数据库管理系统(也就是常说的SQLServer、db2、Oracle、mysql那些),怎么去做,你只要告诉它们:你要做这个东西了,它们就会自己内部处理,形象一点就是你在查数据的时候不需要告诉他们到哪个物理文件,甚至哪个扇区的磁道上读数据。这里其实突出的是“高度”。而不仅仅是过程化。一般的过程化更多的是像C++的指针那种。还要细化到堆栈等等。如何循环读每一条数据,读出来还要干什么。不过我觉得真正的过程化语言可能就是机器语言或者汇编,
------其他解决方案--------------------
感觉这个说到了点子上:
http://zhidao.baidu.com/question/2089034.html
------其他解决方案--------------------
还有可以理解为越是接近硬件底层的越过程化,因为你要“教”机器怎么做。而sql语言。你可以不懂磁盘,不懂扇区,不懂二进制文件的存放情况。只要告诉数据库管理系统,你要取数据,就可以了
------其他解决方案--------------------
结构化编程应该都是非过程化的.
如果你写过C语言就能理解了.
------其他解决方案--------------------
引用:
结构化编程应该都是非过程化的.
如果你写过C语言就能理解了.


可是我搜了一下 有人说C语言是过程化,C++和java是非工程化。
也有人说 “非过程化”是一种抽象。C是汇编的非过程化,C++是C的非过程化
------其他解决方案--------------------
引用:
还有可以理解为越是接近硬件底层的越过程化,因为你要“教”机器怎么做。而sql语言。你可以不懂磁盘,不懂扇区,不懂二进制文件的存放情况。只要告诉数据库管理系统,你要取数据,就可以了

版主果然神牛!