自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

自創(chuàng)一門編程語(yǔ)言的14步

開(kāi)發(fā) 后端
現(xiàn)在,很多人對(duì)他們現(xiàn)在每天使用的編程語(yǔ)言感到困惑和不解,他們都有各自的需求,無(wú)論你是一名職業(yè)的 IT 人員還是普通的開(kāi)發(fā)愛(ài)好者,你可能想要?jiǎng)?chuàng)造一門新的編程語(yǔ)言。下面就來(lái)告訴你如何創(chuàng)造一門編程語(yǔ)言。

英文原文:How to Create a Programming Language

現(xiàn)在,很多人對(duì)他們現(xiàn)在每天使用的編程語(yǔ)言感到困惑和不解,他們都有各自的需求,無(wú)論你是一名職業(yè)的 IT 人員還是普通的開(kāi)發(fā)愛(ài)好者,你可能想要?jiǎng)?chuàng)造一門新的編程語(yǔ)言。下面就來(lái)告訴你如何創(chuàng)造一門編程語(yǔ)言。

Step 1 對(duì)專業(yè)術(shù)語(yǔ)十分熟悉

寫(xiě)編譯器的人通常會(huì)使用一些你不是那么熟悉的術(shù)語(yǔ),所以你一定要在開(kāi)發(fā)前先了解編譯器,確保你知道編譯的所有事情。

Step 2 確定這門語(yǔ)言的應(yīng)用領(lǐng)域

你要知道你的這門語(yǔ)言是用來(lái)解決某個(gè)特定領(lǐng)域的問(wèn)題,還是通用目的的語(yǔ)言?

Step 3 思考這門語(yǔ)言的語(yǔ)義和概念

(1)允許直接的指針訪問(wèn)嗎?

(2)這門語(yǔ)言提供哪些數(shù)據(jù)類型?

(3)這是一門靜態(tài)語(yǔ)言還是動(dòng)態(tài)的語(yǔ)言?

(4)使用什么內(nèi)存模型?是有自動(dòng)的垃圾回收機(jī)制還是需要手工管理內(nèi)存?

(5)如何處理并發(fā)性?你準(zhǔn)備使用單進(jìn)程/鎖模型,還是復(fù)雜一些的,像 Linda 或 actor 模型?

(6)語(yǔ)言中提供一些內(nèi)嵌的簡(jiǎn)單函數(shù)還是所有的內(nèi)容都來(lái)自于類/函數(shù)庫(kù)?

(7)這門語(yǔ)言的范式是什么?是函數(shù)式的,面向?qū)ο蟮?,面向方面的,模板式的,還是一種原型,或就是徹頭徹尾全新的?

(8)這門語(yǔ)言和現(xiàn)存的庫(kù)或函數(shù)的接口是如何的?如果你是在創(chuàng)建某一領(lǐng)域特定的語(yǔ)言,這點(diǎn)就尤其重要。

(9)***,這里面的一些問(wèn)題如果想有很好的答案,需要先做好第二步。

Step 4 思考人們想用這門語(yǔ)言做的事情

比如說(shuō),一些人想利用它指揮機(jī)器人,一些人想用它開(kāi)發(fā)移動(dòng)端的桌面程序或是用它開(kāi)發(fā) Web 應(yīng)用。

Step 5 利用上面的例子測(cè)試語(yǔ)法

注意應(yīng)該讓你的語(yǔ)言屬于上下文無(wú)關(guān)范疇或是它的子類別,這在以后對(duì)你和你的語(yǔ)法分析程序都是件好事。

Step 6 寫(xiě)出正式的語(yǔ)法規(guī)則

Step 7 確定這是一門解釋型語(yǔ)言還是編譯型語(yǔ)言

它意味著如果這是一門解釋型語(yǔ)言,你的用戶通常會(huì)在編輯器里寫(xiě)程序,然后直接在解釋器中運(yùn)行。但是對(duì)于編譯型語(yǔ)言,你的用戶會(huì)寫(xiě)代碼,編譯,然后將可執(zhí)行程序存到別的地方,單獨(dú)運(yùn)行。

Step 8 寫(xiě)好語(yǔ)法分析器或借助工具幫助你

想好如果用戶的程序出現(xiàn)語(yǔ)法錯(cuò)誤,你的編譯器或解釋器將給出什么樣的警告?

Step 9 使用語(yǔ)法分析器信息寫(xiě)目標(biāo)代碼

Step 10 寫(xiě)好執(zhí)行程序或代碼生成器

Step 11 寫(xiě)出足夠多的測(cè)試程序來(lái)檢測(cè)這門語(yǔ)言

你希望創(chuàng)造出一門正規(guī)的語(yǔ)言,它的編譯器可以明確的接受定義范圍內(nèi)的所有的內(nèi)容,而拒絕這之外的一切內(nèi)容。

Step 12 考慮用戶如何調(diào)試自己的程序

Step 13 如果你的語(yǔ)言使用標(biāo)準(zhǔn)類庫(kù),你要寫(xiě)好它

特別是,如果你寫(xiě)一個(gè)編譯器,你需要這么一段代碼,讓操作系統(tǒng)執(zhí)行它從而開(kāi)始運(yùn)行用戶程序。

Step 14 發(fā)布這門語(yǔ)言的同時(shí)加上它的說(shuō)明書(shū)和一些附屬例子

不要忘記注明你是如何整合這些庫(kù)和語(yǔ)言的,如何使用運(yùn)行時(shí)間的特性和標(biāo)準(zhǔn)類庫(kù)。

譯文:http://www.php100.com/html/it/focus/2014/1202/7956.html

翻譯:PHP100_Zeroing

責(zé)任編輯:張偉 來(lái)源: PHP100
相關(guān)推薦

2022-02-27 14:45:16

編程語(yǔ)言JavaC#

2012-09-04 11:20:31

2017-04-07 10:45:43

編程語(yǔ)言

2022-02-21 11:15:59

編程語(yǔ)言后端開(kāi)發(fā)

2017-04-07 16:49:00

語(yǔ)言程序編程

2024-06-27 09:00:00

人工智能編程語(yǔ)言軟件開(kāi)發(fā)

2020-09-27 15:52:02

編程語(yǔ)言C 語(yǔ)言Python

2011-07-14 17:58:11

編程語(yǔ)言

2013-07-26 10:23:04

2022-09-07 08:05:32

GScript?編程語(yǔ)言

2020-11-12 07:00:50

JavaScript前端編程語(yǔ)言

2018-07-16 12:36:48

編程語(yǔ)言PythonJava

2015-07-28 15:35:48

學(xué)習(xí)語(yǔ)言

2019-11-18 11:00:58

程序員編程語(yǔ)言

2021-07-07 10:01:13

編程語(yǔ)言計(jì)算機(jī)斯坦福大學(xué)

2014-09-26 09:29:12

Python

2015-11-12 10:25:48

編程語(yǔ)言

2021-07-09 06:48:30

語(yǔ)言Scala編程

2016-05-19 13:55:19

Linux運(yùn)維編程語(yǔ)言

2021-10-10 12:45:13

編程語(yǔ)言開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)