SQL是编程语言么? SQL是图灵完备的么?


依稀记得高三参加魔都某985自主招生面试时,一个面试老师问我SQL是什么,我当时首先说SQL是一个高级的编程语言。 当时那个老师说这个说法是有问题的。

其实我之前也比较疑惑,SQL和一般的编程语言比如C,之间的本质区别究竟是什么?

 

学过了复杂性理论之后,我现在可以比较透彻的理解这个问题了。

 

一般的编程语言是图灵完备的,意思是说,可以用它来模拟一个图灵机。 

比方说,用C语言模拟图灵机的纸带和状态转移函数显然是可行的。 反过来,用图灵机来实现C语言就更直接了。

 

问题来了,用SQL可以模拟一个图灵机么? 答案是,原始的标准SQL是做不到的。

一个图灵机,或者C语言,可以永远不终止,不宕机,做无休止的重复循环。

标准的SQL是做不到的, 如果使用recursive sql, 占用的空间会不断增大,直到宕机。

但是当下的不同SQL,有了更丰富的扩展功能,比方说PSMs,有了这些新的特性就可以模拟一个图灵机了。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM