- 自己動手構(gòu)建編程語言:如何設(shè)計(jì)編譯器、解釋器和DSL
- (美)克林頓·L.杰弗瑞
- 587字
- 2024-05-11 19:44:57
1.2 編程語言與庫的差別
當(dāng)庫可以完成某項(xiàng)工作時,不用構(gòu)造編程語言。庫是迄今為止擴(kuò)展現(xiàn)有編程語言以執(zhí)行新任務(wù)的最常用方法。庫是一組可以一起用于為某些硬件或軟件技術(shù)編寫應(yīng)用程序的函數(shù)或類。很多編程語言(包括C和Java)幾乎完全圍繞一組豐富的庫設(shè)計(jì)。該語言本身非常簡單和通用,而開發(fā)人員開發(fā)應(yīng)用程序必須學(xué)習(xí)的大部分內(nèi)容包括如何使用各種庫。
庫可以完成以下任務(wù):
?引入新的數(shù)據(jù)類型(類),并提供用于操作這些數(shù)據(jù)類型或類的公共函數(shù)(API)。
?在一組硬件或操作系統(tǒng)調(diào)用的基礎(chǔ)上提供抽象層。
庫不能完成以下任務(wù):
?引入新的控制結(jié)構(gòu)和語法,以支持新的應(yīng)用程序域。
?在現(xiàn)有編程語言運(yùn)行系統(tǒng)中嵌入/支持新的語義。
庫在某些方面做得很糟糕,正因?yàn)槿绱耍覀兛赡茏罱K更喜歡創(chuàng)建一種新的語言:
?庫往往會變得更大、更復(fù)雜,但不是必要的。
?與編程語言相比,庫的學(xué)習(xí)曲線更陡峭,文檔更差。
?庫經(jīng)常與其他庫發(fā)生沖突,版本不兼容常常會破壞使用庫的應(yīng)用程序。
從庫到編程語言有一條自然的進(jìn)化路徑。構(gòu)建新語言以支持應(yīng)用程序域的一種合理方法是首先制作或購買該應(yīng)用程序域可用的最佳庫。如果結(jié)果不支持所在領(lǐng)域,以及在簡化為該領(lǐng)域編寫程序的任務(wù)方面也不符合我們的要求,那么我們就有一個強(qiáng)有力的論據(jù)來證明:我們需要設(shè)計(jì)一種新的編程語言。
本書主要講解構(gòu)建自己的編程語言,而不僅僅是構(gòu)建自己的庫。事實(shí)證明,學(xué)習(xí)這些工具和技術(shù)在其他情況下是有用的。
- C語言程序設(shè)計(jì)教程
- Python數(shù)據(jù)分析基礎(chǔ)
- Python零基礎(chǔ)快樂學(xué)習(xí)之旅(K12實(shí)戰(zhàn)訓(xùn)練)
- 薛定宇教授大講堂(卷Ⅳ):MATLAB最優(yōu)化計(jì)算
- Unity Shader入門精要
- 實(shí)戰(zhàn)Java高并發(fā)程序設(shè)計(jì)(第3版)
- H5頁面設(shè)計(jì):Mugeda版(微課版)
- bbPress Complete
- Python機(jī)器學(xué)習(xí)算法: 原理、實(shí)現(xiàn)與案例
- Fast Data Processing with Spark(Second Edition)
- Web App Testing Using Knockout.JS
- 軟件測試技術(shù)
- jQuery Mobile Web Development Essentials(Second Edition)
- Spring Boot從入門到實(shí)戰(zhàn)
- PHP程序設(shè)計(jì)高級教程