倉頡語言程序設(shè)計(開發(fā)者成長叢書)
定 價:129 元
叢書名:開發(fā)者成長叢書
本書定位于倉頡語言的入門教程,成體系深入淺出地介紹倉頡語言應(yīng)用開發(fā)的基礎(chǔ)知識和常用標(biāo)準(zhǔn)庫的使用方法,面向所有對倉頡語言的愛好者。本書分為14章。第1~5章為基礎(chǔ)篇,介紹倉頡語言的基本數(shù)據(jù)類型和基礎(chǔ)語法。第6~12章為了提高篇,介紹自定義數(shù)據(jù)類型、集合類型的基本用法,面向?qū)ο缶幊、函?shù)式編程等常用編程范式,以及文件讀寫和網(wǎng)絡(luò)編程的基礎(chǔ)知識。第13~14章為應(yīng)用篇,介紹跨語言互操作、序列化等技術(shù),并通過2個實戰(zhàn)項目(網(wǎng)絡(luò)聊天室、2048小游戲和博客網(wǎng)站)來帶領(lǐng)讀者親身體驗倉頡項目開發(fā)的全過程。書中包含了310個實例、3個完整的倉頡項目,使讀者在掌握理論知識的基礎(chǔ)上掌握應(yīng)用開發(fā)的基本流程。書中所有代碼示例均在模擬器或真機(jī)上通過測試。每章都有相應(yīng)的教學(xué)課件,并且在章節(jié)的結(jié)尾處設(shè)置了幾個用于鞏固知識的習(xí)題,可以作為大學(xué)計算機(jī)、軟件專業(yè)相關(guān)課程的教材或參考書,也可作為倉頡語言應(yīng)用開發(fā)工程師的參考書籍。
倉頡語言融合了眾多語言的優(yōu)秀特性,優(yōu)雅開放、全面易用,本書以通俗的文字介紹倉頡應(yīng)用開發(fā)的核心知識,并詳細(xì)剖析其特性。● 全面、分步、詳細(xì)地講解倉頡語言的基本語法和實例用法;● 配套14章教學(xué)課件、310個實例源代碼,2個綜合實戰(zhàn)項目;● 案例豐富,注釋詳盡,帶領(lǐng)讀者實現(xiàn)從0到1的突破。
倉頡造字是中國古代的一個神話傳說。相傳約5000年前,倉頡是黃帝身邊負(fù)責(zé)記錄農(nóng)業(yè)生產(chǎn)和社會生活的史官,平時主要用結(jié)繩和刻木來記事,非常不方便。不過,倉頡有4只眼睛,比常人擁有更強(qiáng)的觀察能力。為了記錄方便,倉頡開始洞悉世事,觀察日月星辰、山水草木,在蘭陵縣作字溝村(現(xiàn)山東省臨沂市)將各種不同的事物進(jìn)行了抽象,創(chuàng)造了最早的象形文字!痘茨献·本經(jīng)訓(xùn)》記載:昔者倉頡作書,而天雨粟,鬼夜哭。倉頡造字驚天地泣鬼神,連下的雨落在了地上變成了谷子。這是二十四節(jié)氣中谷雨的由來,可見倉頡在古代人民群眾心中的地位。 如今,華為創(chuàng)造了倉頡編程語言,這無疑是中國軟件行業(yè)的一件大事。倉頡語言的誕生將會為HarmonyOS、華為終端應(yīng)用等層面提供強(qiáng)有力的支撐;乜催^去,現(xiàn)代學(xué)者普遍認(rèn)為倉頡造字并不是其一人所為,而是總結(jié)和整理了當(dāng)時許多流傳在民間的象形符號。華為的倉頡語言也是一樣,需要開發(fā)者的共商共建,一同將倉頡語言推向新的高地。 學(xué)習(xí)倉頡語言是一件很浪漫的事!倉頡語言融合了眾多語言的優(yōu)秀特性,優(yōu)雅開放、全面易用,不僅是資深工程師的進(jìn)階通道,也是菜鳥萌新的下飯菜。對!這是你的菜!希望讀者能夠保持對知識的渴望,就像談戀愛一樣保持初心、充滿激情、共同成長。倉頡語言是一種靜態(tài)強(qiáng)類型的編程語言,支持命令式、函數(shù)式和面向?qū)ο蟮榷喾妒骄幊,不僅擁有類似Python語言的易用性,也擁有類似C語言的深邃和高效。 本書定位于倉頡語言的入門教程,成體系地介紹倉頡語言開發(fā)的基礎(chǔ)知識,面向所有倉頡語言愛好者,希望能夠以最通俗的文字介紹倉頡語言應(yīng)用開發(fā)的核心知識。全書共14章。第1~5章為基礎(chǔ)篇,介紹倉頡語言的基本數(shù)據(jù)類型和基本語法。學(xué)習(xí)任何編程語言都需要掌握這些概念。如果讀者有其他編程語言的基礎(chǔ),則學(xué)習(xí)這一部分內(nèi)容應(yīng)該比較輕松。學(xué)習(xí)完成后,開發(fā)者可以實現(xiàn)比較簡單的算法和應(yīng)用程序。第6~12章為提高篇,介紹自定義數(shù)據(jù)類型和集合類型的基本用法,以及面向?qū)ο缶幊、函?shù)式編程、元編程等高級用法,此外還介紹文件讀寫和網(wǎng)絡(luò)編程的基礎(chǔ)知識。通過對這部分知識的學(xué)習(xí),開發(fā)者能夠掌握倉頡語言中絕大部分的語法知識和標(biāo)準(zhǔn)庫,可以開發(fā)一個比較完整的應(yīng)用程序。第13、14章為應(yīng)用篇,介紹跨語言互操作、序列化等技術(shù),并通過兩個實戰(zhàn)項目(2048小游戲和博客網(wǎng)站)帶領(lǐng)讀者親身體驗倉頡語言項目開發(fā)的全過程。相信讀者,通過本書的學(xué)習(xí)可以獨(dú)立開發(fā)一個倉頡應(yīng)用程序。 如果你是編程語言的初學(xué)者,則可以使用現(xiàn)有的倉頡語言編程環(huán)境,并且先跳過第1章的內(nèi)容。因為第1章包含了許多晦澀的概念,搭建倉頡語言的開發(fā)環(huán)境也可能會占用很多精力。直接學(xué)習(xí)第2章能夠直接接觸倉頡語言的核心知識,并且會很容易帶來成就感!本書所選用的倉頡版本為0.24.5版本。鑒于倉頡語言發(fā)展很快,一些概念和語法與最新版本可能會存在差異,建議讀者選擇和本書配套的版本學(xué)習(xí)。 在本書的著作過程中得到了華為公司官方的大力支持。感謝華為編程語言實驗室倉頡編程語言項目經(jīng)理王學(xué)智的幫助。感謝清華大學(xué)出版社趙佳霓編輯對本書的順利出版所付出的辛勤勞動。感謝家人王娜、董沐宸松、董沐晨陽陪伴我的日日夜夜,你們是我堅強(qiáng)的后盾。雖然本書經(jīng)過多次審查和校對,但是由于筆者水平有限,難免出現(xiàn)疏忽和問題。在倉頡開發(fā)的環(huán)境搭建方式等方面可能會隨著倉頡語言的不斷發(fā)展而出現(xiàn)一些變化,也許還存在一些問題和不順手的地方需要調(diào)整。 本書包含310個實例、2個完整的倉頡項目和14章教學(xué)課件,可通過清華大學(xué)出版社隨書提供的二維碼掃碼下載。 感謝大家對本書的支持和鼓勵!祝愿大家身體健康,學(xué)有所獲!
董昱 2024年5月 本書源代碼 教學(xué)課件(PPT)
II
III
董昱,華為開發(fā)者專家(HUAWEI Developer Experts)、倉頡語言社區(qū)講師(Cangjie Commumity Speaker)、倉頡庫開發(fā)者(Cangjie Library Developer),首批倉頡語言開發(fā)者,在軟件和算法設(shè)計等方面具有豐富的經(jīng)驗。
基 礎(chǔ) 篇第1章 認(rèn)識新朋友倉頡語言 31.1 偉大的里程碑倉頡語言的誕生 31.1.1 編程語言簡述 41.1.2 倉頡語言的歷史機(jī)遇 51.1.3 倉頡語言的基本特性 61.2 倉頡語言的開發(fā)環(huán)境 101.2.1 編譯環(huán)境的搭建 111.2.2 編輯環(huán)境的搭建 251.2.3 調(diào)試環(huán)境的搭建 281.3 本章小結(jié) 281.4 習(xí)題 29第2章 倉頡語言初體驗倉頡語言的基本語法 302.1 你好,倉頡! 302.1.1 第1個倉頡程序 312.1.2 倉頡語言的開發(fā)流程 332.1.3 語句和語句塊 362.1.4 注釋 382.2 變量和數(shù)據(jù)類型 382.2.1 變量與數(shù)據(jù)類型 392.2.2 通過整型學(xué)習(xí)變量的基本使用方法 422.2.3 浮點(diǎn)型的基本使用方法 442.2.4 變量的作用域 462.3 數(shù)值運(yùn)算 472.3.1 操作符和表達(dá)式 472.3.2 整型的數(shù)值運(yùn)算 482.3.3 浮點(diǎn)型的數(shù)值運(yùn)算 512.3.4 數(shù)值的類型轉(zhuǎn)換 522.3.5 復(fù)合表達(dá)式和括號表達(dá)式 532.3.6 數(shù)值運(yùn)算實例演練 552.4 使用VSCode開發(fā)倉頡程序 572.5 本章小結(jié) 592.6 習(xí)題 59第3章 結(jié)構(gòu)化編程條件結(jié)構(gòu)與循環(huán)結(jié)構(gòu) 613.1 邏輯運(yùn)算與關(guān)系運(yùn)算 613.1.1 布爾類型 613.1.2 邏輯運(yùn)算 623.1.3 關(guān)系運(yùn)算 643.2 if表達(dá)式 663.2.1 if結(jié)構(gòu) 673.2.2 if-else結(jié)構(gòu) 683.2.3 if表達(dá)式的嵌套和else if結(jié)構(gòu) 703.2.4 if表達(dá)式的值 743.3 match表達(dá)式與枚舉類型 763.3.1 match表達(dá)式 763.3.2 枚舉類型enum 843.3.3 枚舉類型的帶參構(gòu)造器 883.4 循環(huán)結(jié)構(gòu) 913.4.1 區(qū)間類型和for in表達(dá)式 913.4.2 階乘與復(fù)合賦值表達(dá)式 943.4.3 while表達(dá)式 963.4.4 do...while表達(dá)式 973.4.5 死循環(huán) 983.4.6 循環(huán)終止:break和continue 993.4.7 循環(huán)嵌套 1013.5 本章小結(jié) 1023.6 習(xí)題 103第4章 讓源代碼整齊易讀函數(shù)與模塊化 1054.1 函數(shù) 1064.1.1 函數(shù)的定義和調(diào)用 1064.1.2 函數(shù)的參數(shù) 1104.1.3 命名參數(shù)的用法 1134.1.4 函數(shù)的返回 1154.1.5 使用元組模擬函數(shù)的多返回值 1184.1.6 使用Option作為函數(shù)的返回值 1204.1.7 主函數(shù)的返回值 1234.2 函數(shù)的遞歸和重載 1244.2.1 函數(shù)的遞歸 1244.2.2 函數(shù)的重載 1264.3 組織源代碼 1284.3.1 多文件編譯 1294.3.2 包 1314.3.3 模塊 1354.3.4 庫 1384.4 math標(biāo)準(zhǔn)庫 1394.4.1 常數(shù) 1394.4.2 常用數(shù)學(xué)函數(shù) 1424.5 本章小結(jié) 1444.6 習(xí)題 144第5章 處理文本字符與字符串 1455.1 字符和字符編碼 1455.1.1 字符集和字符編碼 1465.1.2 字符 1475.1.3 字符串 1505.2 操作字符串 1535.2.1 字符串的長度和索引 1535.2.2 字符串的關(guān)系運(yùn)算 1565.2.3 字符串的包含關(guān)系 1575.2.4 裁剪和連接 1585.2.5 字符串的高級操作 1605.2.6 Unicode標(biāo)準(zhǔn)庫 1625.3 字符串的類型轉(zhuǎn)換 1665.3.1 字符串類型轉(zhuǎn)換的基本思路 1665.3.2 格式化轉(zhuǎn)換 1675.3.3 字符串型轉(zhuǎn)其他類型 1725.4 字符和碼點(diǎn)值的轉(zhuǎn)換 1745.5 基本數(shù)據(jù)類型大家庭 1755.5.1 Unit和Nothing 1755.5.2 基本數(shù)據(jù)類型小結(jié) 1765.6 本章小結(jié) 1775.7 習(xí)題 178 提 高 篇第6章 虛擬的小宇宙面向?qū)ο缶幊?1816.1 封裝 1826.1.1 類與對象 1836.1.2 構(gòu)造函數(shù) 1896.1.3 靜態(tài)成員 1936.1.4 屬性 1976.2 繼承 2036.2.1 類的繼承 2036.2.2 重寫和重定義 2056.2.3 成員的可見修飾符 2136.2.4 單例類 2156.2.5 轉(zhuǎn)型 2166.3 多態(tài) 2186.3.1 通過繼承和重寫實現(xiàn)多態(tài) 2196.3.2 抽象類 2206.4 接口和擴(kuò)展 2226.4.1 接口 2226.4.2 通過接口實現(xiàn)多態(tài) 2276.4.3 擴(kuò)展 2286.4.4 組合優(yōu)于繼承 2316.5 本章小結(jié) 2336.6 習(xí)題 233第7章 類型的故事記錄與類型系統(tǒng) 2347.1 記錄類型 2347.1.1 記錄及其構(gòu)造函數(shù) 2357.1.2 記錄的實例 2377.1.3 記錄的成員函數(shù)與mut關(guān)鍵字 2387.1.4 靜態(tài)成員 2407.1.5 成員的可見修飾符 2427.2 值類型與引用類型 2447.3 關(guān)于數(shù)據(jù)類型的高級操作 2467.3.1 再探接口與Any類型 2477.3.2 子類型關(guān)系 2507.3.3 類型判斷 2517.3.4 類型轉(zhuǎn)換 2537.3.5 類型別名 2557.4 泛型 2557.4.1 泛型的基本用法 2567.4.2 泛型約束 2627.5 本章小結(jié) 2657.6 習(xí)題 265第8章 同類數(shù)據(jù)排排隊集合類型 2668.1 有序集合類型 2678.1.1 列表 2678.1.2 數(shù)組 2748.1.3 緩沖區(qū) 2778.1.4 將字符串轉(zhuǎn)換為數(shù)組 2818.1.5 多維有序集合 2828.2 無序集合類型 2848.2.1 HashSet 2858.2.2 HashMap 2908.3 迭代器 2948.4 本章小結(jié) 2968.5 習(xí)題 296第9章 讀寫文件異常處理與輸入輸出 2989.1 異常處理 2989.1.1 異常 2999.1.2 捕獲異常 2999.1.3 拋出異常 3049.1.4 自定義異常 3079.2 使用Result和Option處理異常 3089.2.1 使用Result承載異常 3089.2.2 Option拋出異常 3129.3 輸入與輸出 3139.3.1 文件信息類和目錄信息類 3149.3.2 字符流 3159.3.3 文件流 3219.4 位運(yùn)算與文本文件的讀寫 3279.4.1 位運(yùn)算 3279.4.2 讀寫文本文件 3329.5 標(biāo)準(zhǔn)輸入和正則表達(dá)式 3379.5.1 標(biāo)準(zhǔn)輸入 3379.5.2 正則表達(dá)式的基本用法 3389.5.3 模擬用戶登錄 3439.6 本章小結(jié) 3459.7 習(xí)題 345第10章 用數(shù)學(xué)思維來編程函數(shù)式編程 34710.1 函數(shù)類型及其用法 34710.1.1 函數(shù)類型 34810.1.2 Lambda表達(dá)式 35010.1.3 閉包 35210.1.4 嵌套函數(shù) 35410.2 函數(shù)式編程 35510.2.1 函數(shù)式編程中的函數(shù)和變量 35510.2.2 柯里化與鏈?zhǔn)秸{(diào)用 35610.2.3 高階函數(shù) 36210.3 泛型函數(shù) 36610.4 尾隨閉包 36910.5 再探重載 37210.5.1 函數(shù)重載的高級規(guī)則 37210.5.2 操作符重載 37610.6 本章小結(jié) 38210.7 習(xí)題 382
第11章 讓程序多姿多彩并發(fā)和網(wǎng)絡(luò)編程 38311.1 并發(fā) 38311.1.1 倉頡線程的創(chuàng)建 38411.1.2 通過Future實現(xiàn)線程等待 38711.2 并發(fā)的同步機(jī)制 38911.2.1 互斥鎖 39111.2.2 原子操作 39811.3 Socket通信 40411.3.1 使用Socket通信 40411.3.2 群聊應(yīng)用程序 41011.4 HTTP服務(wù)器和客戶端 41611.4.1 HTTP服務(wù)器 41611.4.2 處理HTTP請求 42311.4.3 HTTP客戶端 43311.4.4 Cookie和CookieJar 43611.5 本章小結(jié) 44211.6 習(xí)題 442第12章 關(guān)于編程的編程元編程 44312.1 詞法分析和語法分析 44312.1.1 詞法分析和詞法單元 44312.1.2 詞法單元 44512.1.3 詞法單元序列 44612.1.4 quote表達(dá)式 44712.1.5 抽象語法樹 44912.2 宏 45412.2.1 非屬性宏 45512.2.2 屬性宏 45912.2.3 宏展開 46012.3 本章小結(jié) 46112.4 習(xí)題 461 應(yīng) 用 篇第13章 跨語言互操作和2048小游戲 46513.1 跨語言互操作 46513.1.1 倉頡語言和C語言的類型映射關(guān)系 46513.1.2 倉頡語言調(diào)用C語言函數(shù) 46613.1.3 跨語言調(diào)用的高級用法 47313.1.4 OS庫的簡單應(yīng)用 47513.2 隨機(jī)數(shù)的生成和時間操作 48013.3 2048小游戲 48613.3.1 項目需求 48613.3.2 實現(xiàn)思路 48713.3.3 具體實現(xiàn) 48813.4 本章小結(jié) 50213.5 習(xí)題 502第14章 用倉頡語言搭建博客網(wǎng)站 50314.1 JSON數(shù)據(jù)與序列化 50314.1.1 JSON數(shù)據(jù)的處理 50414.1.2 序列化和反序列化 51114.2 搭建博客網(wǎng)站 51714.2.1 項目需求 51714.2.2 用戶界面層 51914.2.3 數(shù)據(jù)訪問層 52414.2.4 業(yè)務(wù)邏輯層 52914.3 本章小結(jié) 53414.4 習(xí)題 534附錄A 倉頡語言中的關(guān)鍵字 535附錄B 倉頡語言的頂層定義 536附錄C 操作符及其優(yōu)先級 537附錄D 標(biāo)準(zhǔn)庫 539附錄E TokenKind枚舉 540
IV
V