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