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