2011-07-18 233 views
2

免責聲明:是的,我知道這將需要3年,至少。

我期待着續寫新解釋的編程語言。我有我想要的動態性,語法,對象模型等方面具有相當紮實的想法,等編寫的編程語言

現在我有這個想法,我有幾個問題之前,我開始:

  1. 我應該開始編寫完整的規範,然後執行,或者一直寫下來?
  2. 我仍然懷疑C和C++之間。 C++將允許更清晰的設計和更快的開發,而C可能(可能)確保可移植到更多平臺(微處理器?)。性能是必須的。
  3. 我應該嘗試的興趣人們對於第一工作原型,使他們能夠配合之前的項目(最終產品將是一個自由的許可證反正),或保持獨立工作,直到我有一個運行的東西嗎?
  4. 它應該如何模塊化?我確信我不會馬上開始研究字節碼解釋器,但是更容易實現,但是首先要慢一些,所以爲了能夠在以後擴展,模塊化是必須的,但是我認爲過度使用會影響性能和清晰度。
+0

爲什麼你會這樣做?如果您對編程語言設計有所瞭解,您就會知道您的語言可能會毫無痕跡地下沉,並且不太可能提高您的工作效率。這裏的用例是什麼使它成爲一個引人注目的想法? – Marcin

+1

我想補充一點,如果你需要問一些這些問題(特別是1和4),你需要學習很多東西,然後才能創建一個「好」的語言。如果是這樣的話,你做什麼都不重要,因爲你的第一語言會很糟糕,你會討厭它(這不是對你的挖掘 - 就像期待你的第一部小說很好) 。 – Marcin

+1

@Marcin:'不太可能提高您的生產力'生產力不是我的目標。我的目標是學習很多關於語言設計(我感興趣的東西是__lot__),也許如果我幸運的話,也可以在運行中創建一個「好」的語言。我真的不太可能在一個真實的項目中使用它。 – orlp

回答

1

您的問題的答案在很大程度上取決於爲什麼您正在這樣做 - 主要原因。你正在嘗試創建下一個Ruby,還是這是一個學習練習?

  1. 規範:如果這是個人項目,這不重要。 PHP因爲被動態地開發而受到了不好的說唱,但很多人每天都在使用它。如果/當你需要幫助時,更完整的規範可能會幫助讓人們參與其中。

  2. 如果你想跨平臺和性能,C是要走的路。

  3. 如果你希望人們加入進來,首先證明的東西。用你的語言和博客/談論你的語言爲什麼不同/特殊/更好,寫一個殺手級酷應用程序。

  4. 模塊化的東西,語言本身或編譯器?如果你想擴展語言,一個好的規範將會有所幫助(見#1)。編譯器應該考慮到所有的最佳實踐,這應該有助於擴展它。

我聽說Dragon Book對學習開發編譯器很有幫助。

1
  1. 除非您將其與實施結合起來,否則您的規格將被打破。
  2. 如果你認爲C++會給你更清潔的設計和更快的開發,你應該使用它。
  3. 除非有什麼東西在運行,並且演示了什麼是您的語言的獨特之處,否則您將難以讓任何人對項目感興趣。
  4. 如果您認爲您的語言需要使用字節碼解釋器(並且您確實說「性能是必須的」),您應該在確定語言設計之前調查現有字節碼解釋器的功能。
1

我想你已經爲自己設定了太多目標。你說「性能是必須的」,但在評論回覆中,你說你的目標是「學習很多關於語言設計的知識」,而且你將它用於一個真實的項目是「非常不可能的」。創建新的編程語言來解決問題;更確切地說,它們的創建旨在幫助人們以更好的方式表達問題的解決方案。設計一種語言,而不是嚴肅認真地使用它,就像編寫沒有任何測試用例的軟件一樣:你可能會遇到無法使用的東西。

如果你想試試語言設計,那麼找到一個問題---你關心的問題---現有的語言不會讓你以你想要的方式解決問題。然後盡一切可能得到一個可行的實現,並開始使用它來編寫和運行程序。您不需要手工編寫的JIT編譯器,其運行庫以非常糟糕的彙編代碼編寫。如果您的目標是JVM或.NET,即使它干擾了您對______的精彩創意,您也可以獲得非常高性能的GC,可擴展的線程系統,庫以及其他許多免費的好東西。另一方面,如果你只是想讓某些東西跑得快,不要試圖同時設計一種語言。找到你喜歡的人,瞭解實施策略,看看你能做得更好。