回答
語言有一個設計缺陷如果它不是出於某種原因精心設計(例如調用通過在Java中聲明類型的表達式靜態方法,IMO的能力)。
該語言有錯誤(IMO)如果規範是矛盾的或不表達作者意圖表達的內容。 (例如,我認爲C#語言規範在類型推斷方面存在一些缺陷)。
如果編譯器無法正確實現規範,則會出現錯誤。
編輯:我發現了一個規範的錯誤是不是類型推斷那些簡單的例子...
在C#4規範,第7.3.1條規定:「除賦值運算符,所有二元運算符都是左關聯的「。
第7.13條規定:「空合併運算符是右結合」
由於空合併運算符是不可轉讓的二進制運算符,這是一個矛盾,因而(IMO)的錯誤。 (這是在this Stack Overflow question還指出。)
空合併經營者還提供了一個example of a compiler bug我在回答這個問題,發現...
您能指點我一些關於類型推斷中的錯誤的鏈接或C#語言規範中的其他錯誤嗎?謝謝 – Attilah 2012-08-09 11:52:19
@Atitilah:我想問這個問題。 – 2012-08-09 11:52:40
@Atitilah:類型推斷部分的細節讓我頭痛。我會看看是否可以疏通一些其他的規格bug。 – 2012-08-09 11:54:51
它可以是。語言和編譯器都可能有錯誤。語言錯誤是無論使用何種編譯器都會出現的錯誤,因爲編譯器錯誤只會出現在特定的編譯器中。
實際上,一個bug被認爲是規範和實際實現中的差異。
所以是的,從這個意義上說,兩者都可能有一個錯誤。
編程語言是語言的規範。可能的情況是,在語言規範中存在歧義或不規範,從這個意義上講,你可以說它有一個錯誤。
但是,C#和編譯器的規範可能存在差異。在這種情況下,錯誤在編譯器內部。
- 1. C語言編譯錯誤
- 2. 編譯編譯器錯誤編譯GCC
- 3. 編譯io編程語言時出錯
- 4. 彙編語言錯誤
- 5. 彙編語言NASM錯誤
- 6. 編譯器錯誤:「‘
- 7. 編譯錯誤:語法錯誤,意外':'
- 8. CUDA編程:編譯錯誤
- 9. 編譯錯誤使用用Borland C++時V5.5編譯從C++編程語言
- 10. C編譯器錯誤或程序錯誤?
- 11. Perl語法編譯錯誤
- 12. if語句編譯錯誤
- 13. C++語法編譯錯誤
- 14. IF語句編譯錯誤
- 15. oracle語句編譯錯誤
- 16. Go編程語言代碼錯誤
- 17. C語言編程輸入錯誤
- 18. Python編程語言登錄錯誤
- 19. 高級編程語言在Ubuntu 14.04上安裝編譯器錯誤
- 20. C宏語法錯誤(C18編譯器)
- 21. 錯誤:「)」預期編譯器錯誤
- 22. 錯誤:內部編譯器錯誤java.lang.IncompatibleClassChangeError:
- 23. 錯誤C1001「內部編譯器錯誤」
- 24. Visual C++編譯器,編譯錯誤stdlib.h
- 25. cygwin編譯器編譯ruby file.c錯誤
- 26. 錯誤:多語言應用程序工具包編譯完成,出現錯誤
- 27. 編譯錯誤
- 28. 編譯錯誤
- 29. 錯誤編譯
- 30. 錯誤編譯()
雖然這可能是一個有趣的討論,但我不認爲這真的是討論它的地方。這可能取決於錯誤究竟是什麼。但是我認爲'編程語言'本身並不是真的有一個bug,因爲它只是一個被編譯器重寫的語法。所以在我看來,編譯器在大多數情況下都會有bug。 – 2012-08-09 11:50:55