在企業(yè)級(jí)的軟件開(kāi)發(fā)市場(chǎng),Java語(yǔ)言當(dāng)前處于絕對(duì)領(lǐng)先的位置,其中的原因比較多,例如開(kāi)放性、生態(tài)等。除此之外,Java語(yǔ)言在開(kāi)發(fā)過(guò)程中的易用性,也為此做出了貢獻(xiàn),例如Java中的注解,通過(guò)簡(jiǎn)單的一個(gè)標(biāo)記,就能完成復(fù)雜的功能,而Spring等第三方框架的出現(xiàn),更是讓注解如虎添翼,大大簡(jiǎn)化了Java程序的開(kāi)發(fā)工作,初學(xué)者經(jīng)過(guò)一段時(shí)間的培訓(xùn),就可以使用基于注解的Spring進(jìn)行企業(yè)級(jí)開(kāi)發(fā)。
倉(cāng)頡語(yǔ)言作為一種面向應(yīng)用層的通用開(kāi)發(fā)語(yǔ)言,和Java的開(kāi)發(fā)范圍高度重合,在對(duì)標(biāo)Java注解這一方向上,倉(cāng)頡的宏在性能上有一定的優(yōu)勢(shì),因?yàn)閭}(cāng)頡的宏是在編譯期展開(kāi)的,不需要運(yùn)行時(shí)處理,這樣,性能會(huì)更高一點(diǎn)。不過(guò),Java注解和倉(cāng)頡的宏并不完全一致,各有各的特點(diǎn),使用得當(dāng)都可以簡(jiǎn)化開(kāi)發(fā)工作。
元編程本身有一定的復(fù)雜性,針對(duì)倉(cāng)頡語(yǔ)言來(lái)講,需要了解抽象語(yǔ)法樹(shù)(AST)的基本概念和用法,然后才能更好地使用倉(cāng)頡宏。市面上介紹元編程的書(shū)籍不多,筆者在實(shí)際使用倉(cāng)頡宏解決開(kāi)發(fā)問(wèn)題時(shí)感受到了倉(cāng)頡宏的巨大潛力,在和清華大學(xué)出版社溝通后,決定寫(xiě)一本關(guān)于倉(cāng)頡語(yǔ)言元編程的入門(mén)書(shū)籍,希望能幫助讀者更好更快地掌握倉(cāng)頡宏的用法。
本書(shū)主要內(nèi)容
第1章元編程簡(jiǎn)介,介紹了什么是元編程及兩種主要元編程的實(shí)現(xiàn)模式。
第2章倉(cāng)頡元編程初探,通過(guò)對(duì)一個(gè)典型問(wèn)題的兩種解決方式對(duì)比,展示倉(cāng)頡元編程的強(qiáng)大能力。
第3章詞法單元,詞法單元是抽象語(yǔ)法樹(shù)的基礎(chǔ),本章介紹了詞法單元的構(gòu)造方式及如何使用。
第4章表達(dá)式,在倉(cāng)頡語(yǔ)言中絕大多數(shù)對(duì)象是表達(dá)式,本章詳細(xì)介紹了常用的表達(dá)式及其成員,并通過(guò)示例演示成員函數(shù)的用法。
第5章類型,倉(cāng)頡語(yǔ)言包括多種數(shù)據(jù)類型,這些數(shù)據(jù)類型在抽象語(yǔ)法樹(shù)中由對(duì)應(yīng)的類型表示,本章詳細(xì)介紹了幾種主要的類型。
第6章基礎(chǔ)聲明,介紹了變量和接口聲明的成員函數(shù)及使用方式。
第7章函數(shù)聲明,介紹了普通函數(shù)聲明與main函數(shù)聲明的使用方式,并通過(guò)一個(gè)示例演示面向切面編程思想的實(shí)現(xiàn)。
第8章class聲明,介紹了與class聲明相關(guān)的成員函數(shù)聲明、主構(gòu)造函數(shù)聲明及屬性聲明。
第9章泛型與模式匹配,介紹了在元編程中泛型及模式匹配的使用,重點(diǎn)介紹了6種常用的模式。
第10章代碼結(jié)構(gòu),介紹了文件節(jié)點(diǎn)中包節(jié)點(diǎn)和導(dǎo)入節(jié)點(diǎn)的用法,建立了抽象語(yǔ)法樹(shù)的完整輪廓。
第11章宏,介紹了宏的定義及調(diào)用方式,通過(guò)示例演示宏的用法。
第12章宏示例實(shí)戰(zhàn)解析,詳細(xì)解析了第2章演示的宏的實(shí)現(xiàn)代碼,并介紹了如何增強(qiáng)該宏的功能。
本書(shū)特色
(1) 易于入門(mén)。使用通俗易懂的示例講解元編程的基礎(chǔ)概念,即使對(duì)倉(cāng)頡元編程不太了解,也可以通過(guò)腳本語(yǔ)言或者Java語(yǔ)言的示例了解元編程。
(2) 培養(yǎng)興趣。通過(guò)普通編程和倉(cāng)頡元編程對(duì)同一問(wèn)題的解決方案對(duì)比,展示倉(cāng)頡元編程的強(qiáng)大能力,從而培養(yǎng)讀者學(xué)習(xí)元編程的興趣。
(3) 循序漸進(jìn)。按照知識(shí)點(diǎn)自身的依賴關(guān)系,逐步掌握抽象語(yǔ)法樹(shù)的各個(gè)知識(shí)點(diǎn),在本書(shū)的最后才水到渠成地學(xué)習(xí)倉(cāng)頡宏的知識(shí)。
(4) 豐富的代碼示例,簡(jiǎn)單易行的驗(yàn)證步驟。針對(duì)每章節(jié)的內(nèi)容都精心設(shè)計(jì)了對(duì)應(yīng)的示例代碼,代碼結(jié)構(gòu)簡(jiǎn)潔明了,包括詳細(xì)的注釋和說(shuō)明,均可以獨(dú)立運(yùn)行。所有與倉(cāng)頡元編程直接相關(guān)的示例都同時(shí)支持Linux和Windows環(huán)境,演示步驟按照Windows環(huán)境編寫(xiě),易于操作。
掃描目錄上方的二維碼可下載本書(shū)源代碼。
致謝
感謝以華為編程語(yǔ)言實(shí)驗(yàn)室為代表的倉(cāng)頡語(yǔ)言開(kāi)發(fā)者,你們多年默默無(wú)聞的工作創(chuàng)造了倉(cāng)頡語(yǔ)言。
感謝倉(cāng)頡語(yǔ)言社區(qū)眾多第三方開(kāi)發(fā)者,你們?yōu)閭}(cāng)頡社區(qū)生態(tài)的發(fā)展壯大貢獻(xiàn)了力量,也讓我從中學(xué)習(xí)了更多的倉(cāng)頡語(yǔ)言開(kāi)發(fā)知識(shí)。
特別感謝多年合作的清華大學(xué)出版社趙佳霓編輯,即使在書(shū)籍出版過(guò)程中遇到了困難和挫折,也始終如一地堅(jiān)持高標(biāo)準(zhǔn)的書(shū)稿審校工作,一字一句地推敲斟酌,為出版高質(zhì)量的書(shū)籍提供了最終的保障。
作者
2024年5月于青島