回答
每個通用語言Turing-complete是一種通用編程語言。
如果任何一種語言的程序可以編譯爲另一種語言的程序,那麼兩種語言(或機器)被認爲是圖靈等價物。一種語言是圖靈完備的,如果它是圖靈相當於一個圖靈機。
有幾個早期的努力來形式化計算的概念;一個是圖靈機,另一個是拉姆達算法,另一個是一般遞歸函數類。 Alonzo Church和Alan Turing證明,所有這三種形式化都是圖靈等價的;任何圖靈機的程序都可以編譯爲lambda演算,反之亦然,lambda演算或圖靈機可以實現任何一般的遞歸函數,反之亦然。
Church-Turing thesis假設可以在任何正式系統中表達的任何計算都可以轉換爲可以在圖靈機上運行的程序;或者等價地,可以在無類型的lambda演算中表達,或者是基於上述等價性的一般遞歸。
這僅僅是一個假設,不能被正式證明,因爲沒有辦法正式描述受其約束的計算類別(沒有通過將它們定義爲可由圖靈機),但是從來沒有任何提出的計算模型不可能用圖靈機來計算。
因爲您可以用幾乎任何通用語言編寫圖靈機(或lambda演算的實現)的模擬器,並且同樣可以將這些語言編譯爲運行在圖靈機上的程序,但幾乎所有通用語言圖靈完成。
但是,有一些語言不是圖靈完整的;正則表達式就是一個例子。它們可以用圖靈機模擬,但它們不能反過來模擬圖靈機。
請注意,這些都不能提高效率或訪問主機系統資源;只是可以表達相同的計算,並且最終會提供相同的答案。有一些語言是圖靈完成的,其中有一些問題cannot be computed at the same asymptotic efficiency as in other languages。有些語言提供對文件系統,I/O,網絡等外部資源的訪問,而另一些語言只允許在內存中進行計算,但在任何Turing完成的語言中,都可以添加API或操縱內存的方法允許它訪問這些外部資源,所以缺乏對系統資源的訪問不是一個根本的限制,只是實施的限制。
作爲一個更實際的問題,有幾種語言被設計爲可移植的,作爲編譯目標的中間語言。 LLVM IR是一個常用的例子,C--是另一個例子。另外,語言運行時的任何字節碼都是這樣操作的,JVM是許多語言的編譯目標,CLR是另一種語言。最後,許多語言都編譯爲C語言,因爲C編譯器已經廣泛使用,並且代碼比機器代碼更具可移植性。
最近,隨着網絡和JavaScript成爲各種瀏覽器中可用的語言的出現,JavaScript已成爲編譯的熱門目標,無論是用於編譯爲JavaScript的語言,如CoffeeScript和Dart,還包括最初設計用於編譯爲機器代碼的現有語言,通過像Emscripten這樣的項目。認識到這一用法,人們一直在努力指定一個JavaScript子集,並使用更嚴格的規則(稱爲asm.js),它爲編譯提供了更好的目標,同時仍允許相同的代碼向後兼容常規JavaScript引擎,不知道任何關於asm.js.
- 1. 是否可以將低級語言轉換爲高級語言?
- 2. 是否可以使用WIX創建多語言安裝程序?
- 3. 是否可以使用三種編程語言編寫一個程序?
- 4. 是否可以用高級語言實現編譯器?
- 5. 是否可以在表達式語言中創建日期值?
- 6. 創建編程語言
- 7. 以不同編程語言訪問的套接字是否可以通信?
- 8. 是否可以創建通用ADT的類型級表示?
- 9. 用C語言創建一個多語言應用程序#
- 10. SharpDevelop:您是否可以爲非.NET語言創建語言插件
- 11. 是否有高級語言編譯爲低級語言(如C)的術語?
- 12. 是否可以通過編程創建TShape控件?
- 13. 是否可以創建多語言幫助(.chm)文件?
- 14. 是否可以用另一種編程語言來使用芹菜?
- 15. 是否有編程語言來創建UML圖?
- 16. 是否可以創建一個包含普通列和超級列的列族?
- 17. 在統計編程語言R中是否可以進行默認編程?
- 18. 創建,使用精靈編程語言
- 19. 用C#創建編程語言
- 20. 是否可以使用另一個進程創建的HWND?
- 21. 是否可以創建一個通用約束方法?
- 22. 什麼是可以編譯的最高級別的語言?
- 23. 是否可以在AutoCad中以編程方式創建標籤?
- 24. 是否可以編寫一個創建方法的方法?
- 25. 標準來確定它是否是一個編程語言
- 26. 是否可以創建一個Windows 10 Snackbar應用程序?
- 27. 是否可以使用Qt創建一個托盤小程序?
- 28. 是否可以使用Erlang和C語言混合編程以高比例使用C語言?
- 29. 是否有可用的編程語言列表?
- 30. 可以以編程方式安裝Windows Phone語言語言嗎?
這還不清楚。而且可能以意見爲基礎,因爲沒有「高層次」的客觀定義。例如LLVM計數? –
@OliverCharlesworth我明確表示,它不能是機器語言。 – KthProg
LLVM不是機器語言,因爲沒有本機運行它的機器。 –