開發一套編程語言有多難?

用戶2634602902577


開發一套編程語言,主要存在兩個障礙,其一:任何一種編程語言都有其存在的必要性,所以要搞明白為什麼要弄一套新的編程語言,首先一定要有市場需求所在,編程語言如同一個產品,一定有強烈的市場需求,編程語言存在的價值在於生態鏈,只有具備完善的生態鏈才能存活的有意義,現在全球有600多種編程語言,主流的編程語言也就是幾十種,而這些編程語言中,都有強大的社區依託,也就是強大的生態鏈支撐,生命力才會如此的強大。

其二 本身的技術實現框架,有些編程語言在誕生之處就能感受到其強大的支配力,可擴展性等等特性,在設計之處越是想的明白,越是框架清晰,後期越容易維護,編程語言底層實現基本上靠的都是C語言,所以社會上很多對於內在不是很瞭解到人,說到C語言已經是過時的語言了,現在學習意義已經不大的論調,只不過在就業崗位絕對數量上,和java,python等高級編程語言無法比擬,但在一些關鍵崗位上離開了C語言還真不行,編寫編程語言就屬於這類的工作,一定需要強大的C語言做支撐。

現在國內很多人喊著什麼時候有一套屬於自己的編程語言,現在的易語言就是迎著這種勢頭髮展起來的,雖然很多內行程序員不是很認可這種編程語言,覺得只是包了一層語言了而已,但畢竟有了中文編程的模式,按照這個道理應該這種編程語言,在國內會有一個非常大的發展前景,經過這些年的發展,還是沒有登上主流編程語言的舞臺,倒是現在很多遊戲輔助軟件都在用這種編程語言去搞,很多學習易語言的人就是為了做個遊戲外掛或者輔助夢想著一天能夠賺大錢,在08年之前製作遊戲外掛的人基本上賺了大錢,主要當初針對遊戲外掛的法律還不完善,讓很多人鑽了空子,在08年之後基本上從事這方面的人,從臺前轉到了幕後,專心做dll庫文件,從中繼續謀取暴利,所以編程語言的最難的在於如何普及,如何被大眾認可,要成為主流的編程語言首先具備廣泛性,從這點來講英語編程相對來講是比漢語更加有優勢,在傳播性更加容易被接收,從各個層面講,一種編程語言要具備,通用性,兼容性,穩定性等特點。

編程語言的設計不是為了編寫而編寫,首先要迎合科技發展的需要,如同C語言的誕生讓程序員擺脫了用匯編編寫程序的痛苦,java等高級語言的誕生又讓程序員不在用面向過程中的語言,去寫複雜的功能,只需要調用成熟的類庫就可以輕鬆完成很強大的功能,主要在於編程語言在向高度集成化的方向發展,所以好的編程語言一定順應科技發展大趨勢,只有這樣才能圈更多粉絲,建設更全面的生態鏈。


大學生編程指南




編程語言是用來定義計算機程序的形式語言,是人和計算機打交道的語言。編程語言通常描述分為語法和語義。語法是指符號或文字,及其組合。語義是指編程解釋。編程語言一般分為機器語言,彙編語言,高級語言三大類。

開發一套編程語言,從技術上講不難,難的是推廣和生態。當今世界,編程語言已有成千上萬種,但被使用得最多的,來來去去,都是那常見的幾十種,甚至十來種。如果沒有得到有效推廣,編譯器廠商,庫商,程序員就聞所未聞,聞而不見,視而不理,就無法形成生態圈,更談不起流行。



網上有不少聲音,總是想開發一種中文編程語言,為國人所用,甚至推廣至全世界。我認為,國人有開發編程語言的能力,但沒有必要專門去開發中文編程語言。一來我國程序員,使用英文編程的能力還是足夠的。二來儘管全球都在學中文,而不是學貓叫,但是全球並沒有放棄英文的趨勢。最重要的是,語言是用來交流的,編程語言也不例外。



謝謝大家。


宏思微想


1

熟悉技術。如果您不知道如何使用計算機,則無法創建編程語言。

2

熟悉術語。編譯器編寫者經常使用不熟悉的術語。在繼續之前閱讀編譯器。一定要知道你需要知道的一切。

3

確定您的語言正在解決什麼問題。它是針對特定領域的問題,還是一種通用語言?

4

考慮一下您的語言的語義及其概念。

你是否允許直接指針訪問?

您的語言的數據類型是什麼?

它是靜態語言還是動態語言?

你的記憶模特是什麼?你打算使用垃圾收集器還是手動內存管理? (如果您使用垃圾收集器,請準備編寫一個垃圾收集器或根據您的語言調整現有垃圾收集器。)

如何處理併發?您是要使用簡單的線程/鎖定模型還是像Linda或actor模型那樣更復雜的東西? (因為現在計算機有多個核心。)

是否存在嵌入語言的原始函數或者所有內容都來自庫?

你的語言的範式或範例是什麼?功能?面向對象?原型(像JavaScript)?面向方面?面向模板?還是全新的東西?

您的語言如何與現有的庫和語言(主要是C)交互?如果您正在構建特定於域的語言,這一點非常重要。

最後,第二步將回答這些問題的一些答案,並幫助您回答下一步。

想想某些人希望能夠使用您的語言執行的某些特定任務。例如,“他們可能希望指導機器人遵循一條線”或“他們可能想要在其中創建相對便攜的桌面程序”或“他們可能想要用它來創建Web應用程序”。

6

嘗試上述示例的語法思想(語言文本)。

小心保持您的語言在無上下文的語言類別或其中的內容。您的解析器生成器,您將在以後欣賞它。

7

寫出語法的正式語法。

8

決定是否解釋或編譯語言。這意味著在解釋的世界中,您的用戶通常會在編輯器中編輯您的程序,並直接在解釋器上運行它;在編譯世界中,您的用戶將編輯您的程序,編譯它,將生成的可執行文件保存在某處並運行它。

9

編寫前端掃描程序和解析器,或找到一個可以幫助您解決此問題的工具。

另外,請考慮一下編譯器/解釋器如何警告用戶錯誤的程序和語法錯誤。

10

使用解析器信息來編寫目標代碼或中間表示。讓解析器創建一個AST,然後使用三個地址代碼或它的大哥SSA從AST創建您的目標代碼,然後創建一個符號表來定義您的函數,全局變量等。

此外,根據您的語言,您可能還想為您的類創建虛擬指針表或信息表(以支持反射或RTTI)。

11

編寫將所有內容綁定在一起的執行程序或代碼生成器。

12

編寫許多測試程序來測試語言。

您希望創建強調正式語法負擔的程序,以便看到您的編譯器接受定義中的所有內容並拒絕其外部的所有內容。

13

考慮用戶如何調試自己的程序。

14

如果您的語言使用標準庫,則需要編寫它。如果需要,還可以使用垃圾收集器或其他運行時功能。

具體來說,如果編寫編譯器,則需要操作系統將執行的代碼才能開始運行用戶代碼(例如,分配所有全局變量)。

15

發佈您的語言,以及它的規範以及您可以在其中執行的操作的一些示例。

不要忘記記錄如何與現有庫,語言以及如何使用運行時功能和/或標準庫集成。


玄師星座密碼


說難吧,現在有幾千種語言,其中很多都是個人完成的,例如我最近比較喜歡的elixir,是個巴西人寫的。說不難吧,國內確實沒一個像樣的語言項目,至於易語言,這個可能9成的程序員沒把它當個語言。所以難還是不難?其實從技術角度來看,並不難。但從時間,精力的耗費上,以及後期推廣及社區維護上來看,就嚇跑了一堆人。對國內程序員包括我來說,有那時間,不如掙點奶粉錢


偶爾來逛逛隨便來瞧瞧


技術永遠不是你的瓶頸。

思想和境界才是你所開發的項目能否成功的決定性因素。

即所謂的,上層思維模式。

如果什麼時候你突然發現,現有的編程語言不夠簡練,不易理解。而你已經有了更合理更符合編寫需求的方法。

這個時候就是你開發一套新的語言的時候了。

如果不是這樣,即使你開發出來了,恐怕也不會得到很理想的效果。


電商經理人


你要懂的東西很多,首先是計算機方面的,計算機原理,彙編,編譯原理;然後是一整套的語言邏輯;再者,還要懂數學方面的知識,比如離散數學等等。一個人很難完成,需要團隊合作。還有個前提就是,你本身就是一個資深的編程者。


離開了編程我會死


開發一套編程語言的難並不是技術上很難

但是,新開發一套編程語言,更多的困難是在語言是否實用,或者說必要性,因為我們知道,任何東西都是需要積累的,新開發的編程語言首先要解決的問題就是推廣問題,需要很多人使用來檢測語言的實用性,以及建立語言的基礎設施和應用

而且開發一門編程語言你肯定需要足夠的知識資源, 你自己需要非常擅長編程, 懂得多種編程語言, 瞭解原理


追夢千里之外


都在講技術。

其實和技術無關。

參透人生。


合鵲鴻黃


簡單的不那麼難,學一下AST,能解釋就算了。但是要做的運行效率高,安全,高並行,編譯效率高,多平臺支持等等是計算機科學裡最深奧的領域,關垃圾收集器就可以研究整個職業生涯了


IMHai賊King


說難也難,難的是這套新的編寫語言解決了當前編程語言中哪些疼點!

不能大範圍應用,或者說不能在某一領域大範圍應用,這個語言是沒有生命力的!

當作學習 研究可以!當商業來運營,怕是費力不討好的事了!純屬浪費時間,沒有意義了!


分享到:


相關文章: