倉(cāng)頡語(yǔ)言程序設(shè)計(jì)(開(kāi)發(fā)者成長(zhǎng)叢書(shū))
定 價(jià):129 元
叢書(shū)名:開(kāi)發(fā)者成長(zhǎng)叢書(shū)
本書(shū)定位于倉(cāng)頡語(yǔ)言的入門教程,成體系深入淺出地介紹倉(cāng)頡語(yǔ)言應(yīng)用開(kāi)發(fā)的基礎(chǔ)知識(shí)和常用標(biāo)準(zhǔn)庫(kù)的使用方法,面向所有對(duì)倉(cāng)頡語(yǔ)言的愛(ài)好者。本書(shū)分為14章。第1~5章為基礎(chǔ)篇,介紹倉(cāng)頡語(yǔ)言的基本數(shù)據(jù)類型和基礎(chǔ)語(yǔ)法。第6~12章為了提高篇,介紹自定義數(shù)據(jù)類型、集合類型的基本用法,面向?qū)ο缶幊、函?shù)式編程等常用編程范式,以及文件讀寫和網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí)。第13~14章為應(yīng)用篇,介紹跨語(yǔ)言互操作、序列化等技術(shù),并通過(guò)2個(gè)實(shí)戰(zhàn)項(xiàng)目(網(wǎng)絡(luò)聊天室、2048小游戲和博客網(wǎng)站)來(lái)帶領(lǐng)讀者親身體驗(yàn)倉(cāng)頡項(xiàng)目開(kāi)發(fā)的全過(guò)程。書(shū)中包含了310個(gè)實(shí)例、3個(gè)完整的倉(cāng)頡項(xiàng)目,使讀者在掌握理論知識(shí)的基礎(chǔ)上掌握應(yīng)用開(kāi)發(fā)的基本流程。書(shū)中所有代碼示例均在模擬器或真機(jī)上通過(guò)測(cè)試。每章都有相應(yīng)的教學(xué)課件,并且在章節(jié)的結(jié)尾處設(shè)置了幾個(gè)用于鞏固知識(shí)的習(xí)題,可以作為大學(xué)計(jì)算機(jī)、軟件專業(yè)相關(guān)課程的教材或參考書(shū),也可作為倉(cāng)頡語(yǔ)言應(yīng)用開(kāi)發(fā)工程師的參考書(shū)籍。
倉(cāng)頡語(yǔ)言融合了眾多語(yǔ)言的優(yōu)秀特性,優(yōu)雅開(kāi)放、全面易用,本書(shū)以通俗的文字介紹倉(cāng)頡應(yīng)用開(kāi)發(fā)的核心知識(shí),并詳細(xì)剖析其特性。● 全面、分步、詳細(xì)地講解倉(cāng)頡語(yǔ)言的基本語(yǔ)法和實(shí)例用法;● 配套14章教學(xué)課件、310個(gè)實(shí)例源代碼,2個(gè)綜合實(shí)戰(zhàn)項(xiàng)目;● 案例豐富,注釋詳盡,帶領(lǐng)讀者實(shí)現(xiàn)從0到1的突破。
倉(cāng)頡造字是中國(guó)古代的一個(gè)神話傳說(shuō)。相傳約5000年前,倉(cāng)頡是黃帝身邊負(fù)責(zé)記錄農(nóng)業(yè)生產(chǎn)和社會(huì)生活的史官,平時(shí)主要用結(jié)繩和刻木來(lái)記事,非常不方便。不過(guò),倉(cāng)頡有4只眼睛,比常人擁有更強(qiáng)的觀察能力。為了記錄方便,倉(cāng)頡開(kāi)始洞悉世事,觀察日月星辰、山水草木,在蘭陵縣作字溝村(現(xiàn)山東省臨沂市)將各種不同的事物進(jìn)行了抽象,創(chuàng)造了最早的象形文字!痘茨献·本經(jīng)訓(xùn)》記載:昔者倉(cāng)頡作書(shū),而天雨粟,鬼夜哭。倉(cāng)頡造字驚天地泣鬼神,連下的雨落在了地上變成了谷子。這是二十四節(jié)氣中谷雨的由來(lái),可見(jiàn)倉(cāng)頡在古代人民群眾心中的地位。 如今,華為創(chuàng)造了倉(cāng)頡編程語(yǔ)言,這無(wú)疑是中國(guó)軟件行業(yè)的一件大事。倉(cāng)頡語(yǔ)言的誕生將會(huì)為HarmonyOS、華為終端應(yīng)用等層面提供強(qiáng)有力的支撐;乜催^(guò)去,現(xiàn)代學(xué)者普遍認(rèn)為倉(cāng)頡造字并不是其一人所為,而是總結(jié)和整理了當(dāng)時(shí)許多流傳在民間的象形符號(hào)。華為的倉(cāng)頡語(yǔ)言也是一樣,需要開(kāi)發(fā)者的共商共建,一同將倉(cāng)頡語(yǔ)言推向新的高地。 學(xué)習(xí)倉(cāng)頡語(yǔ)言是一件很浪漫的事!倉(cāng)頡語(yǔ)言融合了眾多語(yǔ)言的優(yōu)秀特性,優(yōu)雅開(kāi)放、全面易用,不僅是資深工程師的進(jìn)階通道,也是菜鳥(niǎo)萌新的下飯菜。對(duì)!這是你的菜!希望讀者能夠保持對(duì)知識(shí)的渴望,就像談戀愛(ài)一樣保持初心、充滿激情、共同成長(zhǎng)。倉(cāng)頡語(yǔ)言是一種靜態(tài)強(qiáng)類型的編程語(yǔ)言,支持命令式、函數(shù)式和面向?qū)ο蟮榷喾妒骄幊,不僅擁有類似Python語(yǔ)言的易用性,也擁有類似C語(yǔ)言的深邃和高效。 本書(shū)定位于倉(cāng)頡語(yǔ)言的入門教程,成體系地介紹倉(cāng)頡語(yǔ)言開(kāi)發(fā)的基礎(chǔ)知識(shí),面向所有倉(cāng)頡語(yǔ)言愛(ài)好者,希望能夠以最通俗的文字介紹倉(cāng)頡語(yǔ)言應(yīng)用開(kāi)發(fā)的核心知識(shí)。全書(shū)共14章。第1~5章為基礎(chǔ)篇,介紹倉(cāng)頡語(yǔ)言的基本數(shù)據(jù)類型和基本語(yǔ)法。學(xué)習(xí)任何編程語(yǔ)言都需要掌握這些概念。如果讀者有其他編程語(yǔ)言的基礎(chǔ),則學(xué)習(xí)這一部分內(nèi)容應(yīng)該比較輕松。學(xué)習(xí)完成后,開(kāi)發(fā)者可以實(shí)現(xiàn)比較簡(jiǎn)單的算法和應(yīng)用程序。第6~12章為提高篇,介紹自定義數(shù)據(jù)類型和集合類型的基本用法,以及面向?qū)ο缶幊、函?shù)式編程、元編程等高級(jí)用法,此外還介紹文件讀寫和網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí)。通過(guò)對(duì)這部分知識(shí)的學(xué)習(xí),開(kāi)發(fā)者能夠掌握倉(cāng)頡語(yǔ)言中絕大部分的語(yǔ)法知識(shí)和標(biāo)準(zhǔn)庫(kù),可以開(kāi)發(fā)一個(gè)比較完整的應(yīng)用程序。第13、14章為應(yīng)用篇,介紹跨語(yǔ)言互操作、序列化等技術(shù),并通過(guò)兩個(gè)實(shí)戰(zhàn)項(xiàng)目(2048小游戲和博客網(wǎng)站)帶領(lǐng)讀者親身體驗(yàn)倉(cāng)頡語(yǔ)言項(xiàng)目開(kāi)發(fā)的全過(guò)程。相信讀者,通過(guò)本書(shū)的學(xué)習(xí)可以獨(dú)立開(kāi)發(fā)一個(gè)倉(cāng)頡應(yīng)用程序。 如果你是編程語(yǔ)言的初學(xué)者,則可以使用現(xiàn)有的倉(cāng)頡語(yǔ)言編程環(huán)境,并且先跳過(guò)第1章的內(nèi)容。因?yàn)榈?章包含了許多晦澀的概念,搭建倉(cāng)頡語(yǔ)言的開(kāi)發(fā)環(huán)境也可能會(huì)占用很多精力。直接學(xué)習(xí)第2章能夠直接接觸倉(cāng)頡語(yǔ)言的核心知識(shí),并且會(huì)很容易帶來(lái)成就感!本書(shū)所選用的倉(cāng)頡版本為0.24.5版本。鑒于倉(cāng)頡語(yǔ)言發(fā)展很快,一些概念和語(yǔ)法與最新版本可能會(huì)存在差異,建議讀者選擇和本書(shū)配套的版本學(xué)習(xí)。 在本書(shū)的著作過(guò)程中得到了華為公司官方的大力支持。感謝華為編程語(yǔ)言實(shí)驗(yàn)室倉(cāng)頡編程語(yǔ)言項(xiàng)目經(jīng)理王學(xué)智的幫助。感謝清華大學(xué)出版社趙佳霓編輯對(duì)本書(shū)的順利出版所付出的辛勤勞動(dòng)。感謝家人王娜、董沐宸松、董沐晨陽(yáng)陪伴我的日日夜夜,你們是我堅(jiān)強(qiáng)的后盾。雖然本書(shū)經(jīng)過(guò)多次審查和校對(duì),但是由于筆者水平有限,難免出現(xiàn)疏忽和問(wèn)題。在倉(cāng)頡開(kāi)發(fā)的環(huán)境搭建方式等方面可能會(huì)隨著倉(cāng)頡語(yǔ)言的不斷發(fā)展而出現(xiàn)一些變化,也許還存在一些問(wèn)題和不順手的地方需要調(diào)整。 本書(shū)包含310個(gè)實(shí)例、2個(gè)完整的倉(cāng)頡項(xiàng)目和14章教學(xué)課件,可通過(guò)清華大學(xué)出版社隨書(shū)提供的二維碼掃碼下載。 感謝大家對(duì)本書(shū)的支持和鼓勵(lì)!祝愿大家身體健康,學(xué)有所獲!
董昱 2024年5月 本書(shū)源代碼 教學(xué)課件(PPT)
II
III
董昱,華為開(kāi)發(fā)者專家(HUAWEI Developer Experts)、倉(cāng)頡語(yǔ)言社區(qū)講師(Cangjie Commumity Speaker)、倉(cāng)頡庫(kù)開(kāi)發(fā)者(Cangjie Library Developer),首批倉(cāng)頡語(yǔ)言開(kāi)發(fā)者,在軟件和算法設(shè)計(jì)等方面具有豐富的經(jīng)驗(yàn)。
基 礎(chǔ) 篇第1章 認(rèn)識(shí)新朋友倉(cāng)頡語(yǔ)言 31.1 偉大的里程碑倉(cāng)頡語(yǔ)言的誕生 31.1.1 編程語(yǔ)言簡(jiǎn)述 41.1.2 倉(cāng)頡語(yǔ)言的歷史機(jī)遇 51.1.3 倉(cāng)頡語(yǔ)言的基本特性 61.2 倉(cāng)頡語(yǔ)言的開(kāi)發(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章 倉(cāng)頡語(yǔ)言初體驗(yàn)倉(cāng)頡語(yǔ)言的基本語(yǔ)法 302.1 你好,倉(cāng)頡! 302.1.1 第1個(gè)倉(cāng)頡程序 312.1.2 倉(cāng)頡語(yǔ)言的開(kāi)發(fā)流程 332.1.3 語(yǔ)句和語(yǔ)句塊 362.1.4 注釋 382.2 變量和數(shù)據(jù)類型 382.2.1 變量與數(shù)據(jù)類型 392.2.2 通過(guò)整型學(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á)式和括號(hào)表達(dá)式 532.3.6 數(shù)值運(yùn)算實(shí)例演練 552.4 使用VSCode開(kāi)發(fā)倉(cāng)頡程序 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 庫(kù) 1384.4 math標(biāo)準(zhǔn)庫(kù) 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 字符串的長(zhǎng)度和索引 1535.2.2 字符串的關(guān)系運(yùn)算 1565.2.3 字符串的包含關(guān)系 1575.2.4 裁剪和連接 1585.2.5 字符串的高級(jí)操作 1605.2.6 Unicode標(biāo)準(zhǔn)庫(kù) 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 類與對(duì)象 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 成員的可見(jiàn)修飾符 2136.2.4 單例類 2156.2.5 轉(zhuǎn)型 2166.3 多態(tài) 2186.3.1 通過(guò)繼承和重寫實(shí)現(xiàn)多態(tài) 2196.3.2 抽象類 2206.4 接口和擴(kuò)展 2226.4.1 接口 2226.4.2 通過(guò)接口實(shí)現(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 記錄的實(shí)例 2377.1.3 記錄的成員函數(shù)與mut關(guān)鍵字 2387.1.4 靜態(tài)成員 2407.1.5 成員的可見(jiàn)修飾符 2427.2 值類型與引用類型 2447.3 關(guān)于數(shù)據(jù)類型的高級(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ù)排排隊(duì)集合類型 2668.1 有序集合類型 2678.1.1 列表 2678.1.2 數(shù)組 2748.1.3 緩沖區(qū) 2778.1.4 將字符串轉(zhuǎn)換為數(shù)組 2818.1.5 多維有序集合 2828.2 無(wú)序集合類型 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é)思維來(lái)編程函數(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ù)重載的高級(jí)規(guī)則 37210.5.2 操作符重載 37610.6 本章小結(jié) 38210.7 習(xí)題 382
第11章 讓程序多姿多彩并發(fā)和網(wǎng)絡(luò)編程 38311.1 并發(fā) 38311.1.1 倉(cāng)頡線程的創(chuàng)建 38411.1.2 通過(guò)Future實(shí)現(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請(qǐng)求 42311.4.3 HTTP客戶端 43311.4.4 Cookie和CookieJar 43611.5 本章小結(jié) 44211.6 習(xí)題 442第12章 關(guān)于編程的編程元編程 44312.1 詞法分析和語(yǔ)法分析 44312.1.1 詞法分析和詞法單元 44312.1.2 詞法單元 44512.1.3 詞法單元序列 44612.1.4 quote表達(dá)式 44712.1.5 抽象語(yǔ)法樹(shù) 44912.2 宏 45412.2.1 非屬性宏 45512.2.2 屬性宏 45912.2.3 宏展開(kāi) 46012.3 本章小結(jié) 46112.4 習(xí)題 461 應(yīng) 用 篇第13章 跨語(yǔ)言互操作和2048小游戲 46513.1 跨語(yǔ)言互操作 46513.1.1 倉(cāng)頡語(yǔ)言和C語(yǔ)言的類型映射關(guān)系 46513.1.2 倉(cāng)頡語(yǔ)言調(diào)用C語(yǔ)言函數(shù) 46613.1.3 跨語(yǔ)言調(diào)用的高級(jí)用法 47313.1.4 OS庫(kù)的簡(jiǎn)單應(yīng)用 47513.2 隨機(jī)數(shù)的生成和時(shí)間操作 48013.3 2048小游戲 48613.3.1 項(xiàng)目需求 48613.3.2 實(shí)現(xiàn)思路 48713.3.3 具體實(shí)現(xiàn) 48813.4 本章小結(jié) 50213.5 習(xí)題 502第14章 用倉(cāng)頡語(yǔ)言搭建博客網(wǎng)站 50314.1 JSON數(shù)據(jù)與序列化 50314.1.1 JSON數(shù)據(jù)的處理 50414.1.2 序列化和反序列化 51114.2 搭建博客網(wǎng)站 51714.2.1 項(xiàng)目需求 51714.2.2 用戶界面層 51914.2.3 數(shù)據(jù)訪問(wèn)層 52414.2.4 業(yè)務(wù)邏輯層 52914.3 本章小結(jié) 53414.4 習(xí)題 534附錄A 倉(cāng)頡語(yǔ)言中的關(guān)鍵字 535附錄B 倉(cāng)頡語(yǔ)言的頂層定義 536附錄C 操作符及其優(yōu)先級(jí) 537附錄D 標(biāo)準(zhǔn)庫(kù) 539附錄E TokenKind枚舉 540
IV
V