導航:首頁 > 創造發明 > 怎麼創造一門編程語言

怎麼創造一門編程語言

發布時間:2021-06-15 11:07:03

A. 怎麼研發一款編程語言

編程語言,作為人與計算機溝通的橋梁,有著重要和深遠的意義。有過計算機編程經驗的人,多少學習或掌握過一到多種編程語言。計算機專業領域的編程語言成百上千種,主流的編程語言也有數十種之多。每種編程語言面向的領域和特性都不盡相同,不過歸根結底是為了解決人與計算機之間溝通的效率問題,提高計算機的生產力。想必有不少人對那些主流編程語言的創造者十分傾佩,也相信有不少人會好奇一門編程語言是如何誕生的。那麼如何創造一門編程語言呢?
總的來看,創造一門編程語言需要有以下幾個過程:
(1)設計語言的特性。
(2)定義語言的單詞、語法和語義。
(3)實現編譯器或者解釋器將程序翻譯為計算機底層表示。
(4)生成計算機程序的二進制存儲格式。
(5)完善語言的運行時環境和標准庫。

一、語言特性設計
所謂語言特性,就是編程語言為開發者提供了什麼樣的原子性功能特徵。比如是否支持數學表達式計算、字元串處理,是否支持變數、函數和遞歸,是否支持分支、循環復合語句等。語言的變數類型是強類型、弱類型,還是動態類型,程序是過程式、函數式,還是面向對象的。是否支持模板、泛型和反射機制,是否支持多線程和並發特性,是否支持錯誤和異常處理機制等等。
語言特性設計是一門編程語言最關鍵的環節,直接決定了語言的基本特徵和雛形。當然,這也是最難的一個環節,因為語言設計是面向具體問題領域的,是語言設計者從大量的編程實踐中的獲得的總結和升華。比如C語言設計者希望面向計算機底層,擁有對操作系統和硬體的直接操縱能力。而Python的設計者則希望盡可能地減少操作計算機資源的繁瑣過程,以獲得語言的簡潔性、高度的靈活性和擴展性。SQL的設計者面向具體的數據查詢和分析領域,希望幫助開發者獲得快速檢索和操縱數據的能力。而Go語言的設計者則希望在保留C語言優秀功能的基礎上,擴展編程語言對高並發環境的支持,並擁有垃圾回收和快速編譯的能力。
凡此種種,編程語言特性的設計都是面向具體的問題領域的,是語言設計者構建於開發者和計算機之間的中間層,是對開發過程中重復功能邏輯的原子性「封裝」,最終的目的是為了提升具體問題領域內的軟體開發效率。

二、單詞、語法和語義
和人類使用的自然語言類似,編程語言也有自身的單詞、語法和語義,專業上稱為詞法記號、語言文法和語義。
常見的詞法記號可以分為數字、字元、字元串、標識符、關鍵字,以及用於連接表達式的運算符、分割語句或者程序段落的界符等符號。這些是編程語言程序的基本單位,通過它們的有序組合,構建出了一門編程語言形形色色的代碼片段。
編程語言的文法是用來描述語言的語法規則的,具體來說是規定詞法記號之間的排列組合的順序與規則。它描述了編程語言程序的基本模式,不符合該模式的詞法記號的排列被擋在了合法語言程序的大門之外。同時,它也是各種編程語言對於開發者最明顯的差異化特徵。一個有經驗的開發者可以很容易地通過掃視一段代碼,就能分辨出這是哪種編程語言編寫的計算機程序。
編程語言的語義描述了一段符合語言語法的程序,對於計算機而言的真正含義,是開發者最終要傳達給計算機的意願和指令。語言的語義必須是准確的、無二義性的,編譯器也正是通過語義的指導,將計算機程序翻譯為計算機可識別的表達形式。

三、程序的翻譯
計算機程序是用來供人閱讀和修改的,計算機硬體並不能理解程序內的思想和含義。因此,必須有一個翻譯轉換的過程,將人所表達的意願准確無誤地傳遞給計算機,讓計算機明確並執行人下發的指令。實現這種翻譯工作的工具就是編譯器或解釋器。
對於編譯器來說,它的輸入是人類書寫的計算機語言程序,輸出則是計算機可識別的底層表示。首先,它需要識別出程序中的單詞,即詞法分析。然後,根據單詞的組合模式識別出程序的語法結構,即語法分析。最後,根據不同的語法結構對應的語義,將程序按照每個語法模塊的形式轉換為計算機可識別的指令序列,即語義分析和目標代碼生成。
眾所周知編譯器的實現具有一定的復雜度,其根本原因來自於語言語法的結構靈活性和計算機底層表達形式的多樣性,這也是創造一門編程語言最核心的環節。

四、二進制存儲
編譯器將語言程序翻譯轉換後,需要將轉換後的結果存儲起來,以便計算機在需要的時候將其載入、執行。這里不可避免的涉及到兩個問題:
(1)轉換後的結果是什麼樣的形式?
(2)轉換後的結果保存在哪裡?
第一個問題描述的是計算機程序被轉換為怎樣的形式,才是計算機可以識別的。由於計算機中實際運行程序的硬體模塊是CPU,因此計算機程序只有被轉換為CPU的二進制指令格式才能被正確識別、執行。比如常見的Intel體系的CISC指令格式、ARM體系的RISC執行格式等。
第二個問題描述的是計算機程序轉化為二進制指令格式後,以什麼樣的方式保存在計算機的磁碟上。由於絕大多數的計算機程序是需要通過運行在計算機硬體之上的操作系統載入運行的,因此計算機程序的二進製表達形式必須以對應操作系統可識別的文件格式存儲。比如常見的Windows操作系統的PE文件格式、Linux操作系統的ELF文件格式等。

五、運行時環境和標准庫
理論上講,一門編程語言如果能提供出完備的操縱操作系統和硬體的原子性功能就已經成功了。但是不提供強大的運行時環境支持和標准庫,是很難讓一門編程語言真正的好用和流行的。沒有人希望簡單地列印一行字元串,還需要使用編程語言提供的基本特性實現調用操作系統提供的列印介面的邏輯。Java語言之所以久興不衰,正是因為它不僅提供了完善的運行時環境和開發庫支持,甚至提供了更強大的開發框架和工具支持。
因此可見,除了完備的語言特性,為開發者提供更方便好用的庫和框架支持,消除軟體構建過程中復雜和重復的邏輯,才是一門優秀編程語言的長盛之道。

六、自己動手,立即開始!
《自己動手構造編譯系統——編譯、匯編與鏈接》一書詳細闡述了一門編程語言從無到有的過程,從語言的功能特性設計,到詞法、文法、語義分析;從編譯器、匯編器的設計實現,到目標文件的鏈接生成可執行文件;甚至編譯優化器的實現、二進制指令、可執行文件格式以及語言運行時和標准庫的概念,都在書中做了認真細致地剖析。相信對本書的閱讀,將是一次不錯的獲得知識的體驗!

B. 如何創造一種腳本編程語言

好的腳本編程語言如python,它的源代碼是用c實現的。
另外就是你可以用腳本語言本身來創造一種新的語言,,,在python ,ruby上都有這樣的實現。python上甚至有用python本身語言來寫的python。

C. 如何自創一門編程語言

從你的描述來看,自創一門編程語言是非常困難的。現在的編程語言都是幾十年前專研屬究人員做出來的,他們為編程語言做出了很大的貢獻。
如果自創一門編程語言的話,幾乎是不可能的,就算一個國家,集一國之力也很難做出來。

D. 一門編程語言是怎麼創造出來的呢

所謂計算機語言只是一個抽象的規范,而編譯器是這個規范的實現,它是在這內個規范的嚴格定義下容被實現的.

說的通俗一點,語言就像一份製造汽車的圖紙,他規定了
汽車應該有什麼,擁有什麼功能,等等各個方面,而編譯器就是一量根據這張圖紙製造出來的汽車,它實現了圖紙的定義,這樣你才能真正的使用這量汽車.

如果你有OOP的方面的知識,那可以把語言和編譯器比喻成類和對象的關系.

他們誰也離不開誰,只有兩部分共同合作,你才能使用這個語言.

E. 如何自學一門編程語言

您學編程語言的目標是什麼?愛好還是以後要從事這樣的工作?如果是要從事工作的話,看您有沒有這方面的基礎,一般來說目前java語言薪資較好,也好找工作。如果是從事web開發,php很好上手。如果做運維,那就學python了。

F. 編程語言是如何創建的

因為有解釋器啊,編譯型的語言一般都被轉化成底層的機械碼了。要想自己開發語言完全是沒問題的。至於看什麼《編譯原理基礎》感覺價值不大,能真正看懂的人太少了。還不如直接找個開源的程序語言研究一下。至少改個語法應該沒問題。

G. 如何自創一門計算機語言

學練相結合:在學習新知識的同時,充分利用身邊的電腦,做到邊學新知識邊上機操作練習,這樣對於加強知識的穩固具有十分重要的作用。
深入學習細節過程中,對於電腦編程的學習,即要從整體把握,又要深入細節當中,了解並掌握

知識的核心理念。
努力學好一門計算機編程語言。根據電腦編程語言的相通性,當充分掌握一門計算機編輯語言後,對於其它語言的掌握時間將明顯減少。

最好先從低層(級)語言學起,這樣就可以有效的掌握計算機的硬體低層知識,從而為更高級語言的學習打下良好的基礎。

嘗試自己編寫若干個功能模塊,從而加強對計算機編程語言基礎能力的加強以及應用,並為新知識的學習奠定基礎。

向別人學習,多看看別人寫的代碼,了解應用計算機編程解決問題的通用方法,從中提煉解決問題的通用方法。

H. 如何快速學好一門編程語言

學好一門編程語言,首先要做到以下20點:
1.不要看到別人的回復第一句話就說:給個代碼吧!你應該想想為什麼。當你自己想
出來再參考別人的提示,你就知道自己和別人思路的差異。
2.初學者請不要看太多太多的書那會誤人子弟的,先找本系統的學,很多人用了很久
都是只對部分功能熟悉而已,不系統還是不夠的。
3.看幫助,不要因為很難而自己是初學者所以就不看;幫助永遠是最好的參考手冊,
雖然幫助的文字有時候很難看懂,總覺得不夠直觀。
4.不要被對象、屬性、方法等詞彙所迷惑;最根本的是先了解最基礎知識。
5.不要放過任何一個看上去很簡單的小問題--他們往往並不那麼簡單,或者可以引伸
出很多知識點;不會舉一反三你就永遠學不會。
6.知道一點東西,並不能說明你會寫腳本,腳本是需要經驗積累的。
7.學腳本並不難,JSP、ASP、PHP等等也不過如此--難的是長期堅持實踐和不遺餘力的博覽
群書;
8.看再多的書是學不全腳本的,要多實踐
9.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
10.學習腳本最好的方法之一就是多練習;
11.在任何時刻都不要認為自己手中的書已經足夠了;
12.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
13.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
14.請把書上的例子親手到電腦上實踐,即使配套光碟中有源文件;
15.把在書中看到的有意義的例子擴充;並將其切實的運用到自己的工作中;
16.不要漏掉書中任何一個練習——請全部做完並記錄下思路;
17.當你用腳本到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將余
下的部分粗略的完成以保證這個代碼的完整性,然後分析自己的錯誤並重新編寫和工
作。
18.別心急,寫腳本確實不容易;水平是在不斷的實踐中完善和發展的;
19.每學到一個腳本難點的時候,嘗試著對別人講解這個知識點並讓他理解----你能
講清楚才說明你真的理解了;
20.記錄下在和別人交流時發現的自己忽視或不理解的知識點;

I. 怎樣創造一門新的編程語言,怎樣編寫編譯器

編譯器不是編寫的 像vc g++ 都是編譯器

J. 如何簡單高效地學會一門編程語言呢

編程語言大致有C、C++,做Web開發可以選擇Java、PHP、Python、Scala等等。‍‍等你確定選擇了一門之後,完全可以制定有一個系統的學習計劃。,然後一邊使用一邊學習,隨著項目的推進逐漸完成學習。

閱讀全文

與怎麼創造一門編程語言相關的資料

熱點內容
郴州學府世家糾紛 瀏覽:197
馬鞍山ok論壇怎麼刪除帖子 瀏覽:242
馬鞍山恆生陽光集團 瀏覽:235
麻城工商局領導成員 瀏覽:52
鄉級公共衛生服務績效考核方案 瀏覽:310
樂聚投訴 瀏覽:523
輪子什麼時候發明 瀏覽:151
馬鞍山陶世宏 瀏覽:16
馬鞍山茂 瀏覽:5
通遼工商局咨詢電話 瀏覽:304
誰發明的糍粑 瀏覽:430
國家公共文化服務示範區 瀏覽:646
pdf設置有效期 瀏覽:634
廣告詞版權登記 瀏覽:796
基本公共衛生服務考核方案 瀏覽:660
公共服務平台建設領導小組 瀏覽:165
人類創造了那些機器人 瀏覽:933
公共文化服務保障法何時實施 瀏覽:169
遼寧育嬰師證書領取 瀏覽:735
劃撥土地使用權轉讓能轉讓嗎 瀏覽:97