如何自己創建一種編程語言?
無論你是一名職業的 IT 人員還是普通的開發愛好者,你可能想要創造一門新的編程語言。現在,很多人對他們現在每天使用的編程語言感到困惑和不解,他們都有各自的需求,下面就來告訴你如何創造一門編程語言。
Step1對專業術語十分熟悉寫編譯器的人通常會使用一些你不是那麼熟悉的術語,所以你一定要在開發前先了解編譯器,確保你知道編譯的所有事情。
Step2確定這門語言的應用領域你要知道你的這門語言是用來解決某個特定領域的問題,還是通用目的的語言?
Step3思考這門語言的語義和概念(1)允許直接的指針訪問嗎?
(2)這門語言提供哪些數據類型?
(3)這是一門靜態語言還是動態的語言?
(4)使用什麼內存模型?是有自動的垃圾回收機制還是需要手工管理內存?
(5)如何處理並發性?你準備使用單進程/鎖模型,還是複雜一些的,像 Linda 或 actor 模型?
(6)語言中提供一些內嵌的簡單函數還是所有的內容都來自於類/函數庫?
(7)這門語言的範式是什麼?是函數式的,面向對象的,面向方面的,模板式的,還是一種原型,或就是徹頭徹尾全新的?
(8)這門語言和現存的庫或函數的介面是如何的?如果你是在創建某一領域特定的語言,這點就尤其重要。
(9)最後,這裡面的一些問題如果想有很好的答案,需要先做好第二步。
Step4思考人們想用這門語言做的事情
比如說,一些人想利用它指揮機器人,一些人想用它開發移動端的桌面程序或是用它開發 Web 應用。
Step5利用上面的例子測試語法注意應該讓你的語言屬於上下文無關範疇或是它的子類別,這在以後對你和你的語法分析程序都是件好事。
Step6寫出正式的語法規則Step7確定這是一門解釋型語言還是編譯型語言它意味著如果這是一門解釋型語言,你的用戶通常會在編輯器里寫程序,然後直接在解釋器中運行。但是對於編譯型語言,你的用戶會寫代碼,編譯,然後將可執行程序存到別的地方,單獨運行。
Step8寫好語法分析器或藉助工具幫助你
想好如果用戶的程序出現語法錯誤,你的編譯器或解釋器將給出什麼樣的警告?
Step9使用語法分析器信息寫目標代碼Step10寫好執行程序或代碼生成器Step11寫出足夠多的測試程序來檢測這門語言你希望創造出一門正規的語言,它的編譯器可以明確的接受定義範圍內的所有的內容,而拒絕這之外的一切內容。
Step12考慮用戶如何調試自己的程序Step13如果你的語言使用標準類庫,你要寫好它特別是,如果你寫一個編譯器,你需要這麼一段代碼,讓操作系統執行它從而開始運行用戶程序。
總結:,可以分成機器語言,彙編語言、高級語言,三大類。電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過 計算機語言向計算機發出命令。 目前通用的編程語言有兩種形式:彙編語言和 高級語言。
①薪資高前景好
通過對國內主流招聘網站數據統計,編程工程師月平均薪資高達10862 元,較同年齡段其他行業工作者收入高出40%~65%,而且隨著技術的提升,步入管理層的機會也更大,更有機會出任CTO,成為人生贏家。
②就業範圍廣
隨著時代的發展,網路已經在鏈接各行各業,而編程技術作為網路的基礎更被廣泛應用於金融、電信、航空、電子、遊戲、互聯網、農業、教育等多行業,覆蓋全面,讓編程工程師的就業選擇更廣。
③政策紅利巨大
「十三五」規劃引導政策發展,「一帶一路」的建設開拓業務新市場,「互聯網+」引領時代新潮流,加上「十九大」強調的建設網路強國的目標,都代表著國家對行業的重視,而編程是讓你分享這一紅利的快捷通道。
④編程人才短缺
據IDC權威數據顯示,全國編程從業人員人數增長了約100萬,算上因退休、選擇其他行業、升級為管理層等原因造成的數百萬的行業人才流失,中國目前編程人才缺口多達70萬,而且每年市場需求仍以25%的增速遞增。
那麼我們該如何自己創建一種編程語言?
編程語言(programming language),是用來定計算機的程序語言。它是一種被標準化的交流技巧,用來向計算機發出指令。一種計算語言讓程序員能夠準確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的行動。
最早的編程語言是在電腦發明之後產生的,當時是用來控制提花織布機及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的編程語言,而且每年仍有新的編程語言誕生。很多編程語言需要用指令方式說明計算的程序,而有些編程語言則屬於聲明式編程,說明需要的結果,而不說明如何計算。
編程語言的描述一般可以分為語法及語義。語法是說明編程語言中,哪些符號或文字的組合方式是正確的,語義則是對於編程的解釋。有些語言是用規格文件定義,例如C語言的規格文件也是ISO標準中一部份,2011年後的版本為ISO/IEC 9899:2011,而其他語言有一份主要的編程語言實現文件,視為是參考實現。
編程語言俗稱「計算機語言」,種類非常的多,總的來說可以分成機器語言,彙編語言、高級語言,三大類。電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過 計算機語言向計算機發出命令。 目前通用的編程語言有兩種形式: 彙編語言和 高級語言。
完全可以,不過你要考慮你的編程語言的特點,或者說優點。即它能克服現有語言哪些缺點。
最重要的是參考編譯原理相關圖書。這個對於我這種外航來說,簡直是摸不上頭腦啊,但是我們不妨借鑒一下別人的知識和理解去給大家簡單的呈現出來,這樣不是很好嘛。
第一彈:設計與解析資源創建編程語言是每個程序員都夢寐以求的,所以本文就來和大家來聊一聊這件關乎程序員夢想的事情。創建編程語言最難的部分是你很難找到一個完全契合你想法的完整例子。也許你可以找到一個寫了一半的解析器教程,一個半成品的語言設計建議列表,一個很淺顯的例子……雖然這些東西對於你來說可能用處不大,但是你卻需要花費大量的時間去逛論壇來獲得這些鏈接。
收集資料並對其進行評估,對我來說是一件非常有趣的事情。而對於程序員來說,與其費勁力氣來收集資料,還不如多花點時間來用好它。編程語言的創建可以分為三個部分,分別是設計、解析和執行。本文,我們將給大家推薦一些編程語言設計和解析的資源。
怎麼選擇一門適合自己的編程語言?
選擇一門語言,確定你感興趣的領域,考慮從一個「易學」的語言開始;通讀大量語言的基本教程;從簡單的開始學起;學習語言的核心概念;安裝一些有必要的軟體;創建你的第一個程序;每次只專註於一個概念;
通過在線示例的片段來學習;檢查語法;試驗性的更改;開始練習調試;給所有代碼添加註釋『不斷練習;每天都要敲代碼,給你的程序設定目標』;和別人交流並且閱讀他人的程序;挑戰自己並保持樂趣;分享你的知識;
參加一些培訓課程;買或者借一本書;學習數學和邏輯;永遠不要停止編程;學習另一種編程語言;應用你的技能;參加一個四年的課程;創建自己的代碼庫;做一些外包兼職工作;開發你自己的免費程序或商業軟體。
好了看了這麼多,是不是覺得是很枯燥很乏味,又必須得一步步堅持做下去的事業呢。反正我是不行了。完全,還是交給那些汗液認識去做去開發吧。
推薦閱讀:
※柯里化的前生今世(九):For Great Good
※柯里化的前生今世(一):函數面面觀
※PHP是最好的語言么?
※C語言基礎:函數的聲明與定義
※為什麼要學習編程設計