新書推薦:
《
英雄之旅:把人生活成一个好故事
》
售價:NT$
398.0
《
分析性一体的涌现:进入精神分析的核心
》
售價:NT$
556.0
《
火枪与账簿:早期经济全球化时代的中国与东亚世界
》
售價:NT$
352.0
《
《全面与进步跨太平洋伙伴关系协定》国有企业条款研究
》
售價:NT$
449.0
《
银行业架构网络BIAN(全球数字化时代金融服务业框架)(数字化转型与创新管理丛书)
》
售價:NT$
449.0
《
金托邦:江湖中的沉重正义
》
售價:NT$
275.0
《
易经今解:释疑·解惑·见微
》
售價:NT$
403.0
《
东欧史(全二册)-“中间地带”的困境
》
售價:NT$
1010.0
|
編輯推薦: |
本书践行“零基础入门仓颉语言”的核心理念,在书籍章节设计和内容编排上,具有以下的特点:
(1)内容通俗易懂,使用平白的文字介绍仓颉开发的相关知识,在介绍语言特性时,不仅只介绍特性本身,还会介绍为什么需要这种特性,能解决什么问题,帮助读者加深理解。
(2)知识点循序渐进,按照章节顺序学习即可,新知识点学习只依赖学过的内容,很少需要参考后续章节。
(3)丰富的代码示例,本书包含200个完整的示例代码,每段代码都针对书中知识点精心设计,按照《CangJie语言通用编程规范》编写,包括详细的代码注释和说明,均可以独立运行。
|
內容簡介: |
本书是面向仓颉语言初学者的入门书,包括入门篇、进阶篇和高级篇,共计27章。
入门篇(第1~7章),目标是零基础入门仓颉语言。从最简单的Hello World示例开始,先是讲解基本数据类型、变量、操作符等基础概念,然后讲解函数和流程控制,最后是综合应用示例,学习完本篇,读者就可以快速入门仓颉语言了。
进阶篇(第8~22章),目标是掌握仓颉语言基础知识。本篇按照循序渐进的原则讲解了核心的仓颉语言概念,包括类、接口、枚举、泛型等,还讲解了常用的基础类库用法及异常处理、包管理等内容。学习完本篇,读者就掌握了基本的仓颉语言开发技能。
高级篇(第23~27章),目标是学习初步的企业级开发知识,包括函数的高级用法、文件处理及并发处理,最后还介绍了仓颉编译器和调试器。本篇对于企业级开发比较基础,但对于初学者,还是有一定的难度的,学习掌握了本篇内容,就成为一个真正的仓颉语言开发者。
本书适合仓颉语言的初学者、大中院校的计算机相关专业的学生。及有一定开发经验,希望快速学习仓颉软件开发的开发者、对自主可控编程语言感兴趣的爱好者阅读。
|
關於作者: |
张磊,资深计算机专家,华为云HCDE,仓颉语言社区CLD和CCS荣誉称号获得者,著有《仓颉语言元编程》《鲲鹏架构入门与实战》《鲲鹏开发套件应用快速入门》等书,研究方向聚焦基础软件领域的自主可控和国产替代。
|
目錄:
|
入门篇
第1章仓颉语言简介
1.1仓颉语言的由来
1.2仓颉语言的特点
第2章仓颉开发准备(12min)
2.1安装仓颉工具链
2.1.1Linux
2.1.2Windows
2.2安装VS Code及仓颉插件
2.3仓颉插件的使用
2.3.1仓颉项目结构
2.3.2语言插件的使用
第3章第一个仓颉程序(6min)
3.1运行Hello World程序
3.2仓颉程序基本规则
3.3仓颉程序的编译
第4章基本数据类型与操作符(21min)
4.1标识符与关键字
4.1.1标识符
4.1.2关键字
4.2变量
4.3基本数据类型
4.3.1整数类型
4.3.2浮点类型
4.3.3布尔类型
4.3.4字符类型
4.3.5字符串类型
4.3.6Unit类型
4.3.7元组类型
4.3.8区间类型
4.3.9Noting类型
4.4基本数据类型转换
4.4.1数值类型之间的转换
4.4.2Char和UInt32 之间的转换
4.4.3类型判断
4.5操作符
4.5.1算术操作符
4.5.2逻辑操作符
4.5.3位操作符
4.5.4关系操作符
4.5.5赋值操作符
4.5.6操作符的优先级
第5章函数(23min)
5.1函数的定义
5.2参数及函数调用
5.3返回值类型
5.4函数体
5.5嵌套函数(局部函数)
第6章流程控制(7min)
6.1条件表达式
6.2循环表达式
6.3match表达式
第7章入门综合实例
7.1开发需求
7.1.1斐波那契数列
7.1.2要解决的问题
7.2解决思路
7.2.1问题分析
7.2.2递归函数
7.3示例代码
进阶篇
第8章struct类型(19min)
8.1长方体引发的思考
8.2struct类型的定义
8.3成员变量
8.4构造函数
8.4.1普通构造函数
8.4.2主构造函数
8.4.3自动生成的无参构造函数
8.5成员函数
8.6可见修饰符
8.7实例的创建与访问
8.8mut函数
8.9成员属性
8.9.1属性的定义
8.9.2属性的使用
第9章class类型(12min)
9.1定义
9.2成员变量
9.3构造函数
9.3.1普通构造函数
9.3.2主构造函数
9.3.3自动生成的无参构造函数
9.4成员函数
9.5成员属性
9.6可见性修饰符
9.7对象
9.7.1对象的创建与访问
9.7.2对象值的修改
9.8抽象类
9.9继承
9.9.1继承的定义
9.9.2覆盖和重定义
9.9.3super关键字
9.9.4成员可见性
第10章enum类型
10.1enum类型的定义
10.2enum类型的值
10.3enum类型的使用
10.4有参构造器
第11章接口(10min)
11.1为什么需要接口
11.2接口的定义
11.3接口的实现
11.3.1接口的通常实现
11.3.2接口的默认实现
11.4接口的继承
11.5类型的多接口实现
11.6典型的内置接口
11.6.1Any类型
11.6.2ToString接口
第12章泛型(17min)
12.1什么是泛型
12.2泛型接口
12.3泛型函数
12.4泛型约束
12.5泛型类型
12.5.1泛型class
12.5.2泛型struct
12.5.3泛型enum
12.5.4区间类型
第13章包管理
13.1包的声明
13.2顶层声明的可见性
13.3包的导出和编译
13.4包的导入
13.4.1import语句导入
13.4.2导入重命名
第14章扩展(6min)
14.1扩展的定义
14.2泛型扩展
14.3接口扩展
第15章基础集合类型(8min)
15.1Array
15.1.1Array的定义
15.1.2访问Array
15.1.3修改Array
15.1.4Array的高级用法
15.1.5字节数组字面量
15.2ArrayList
15.2.1ArrayList的定义
15.2.2访问ArrayList
15.2.3修改ArrayList
第16章函数的进阶用法(20min)
16.1函数重载
16.1.1函数重载的定义
16.1.2函数重载决议
16.2函数遮盖
16.3操作符重载
16.3.1操作符重载的必要性
16.3.2操作符重载的定义
16.3.3索引操作符
16.3.4可以被重载的操作符
16.4函数是第一类对象
16.4.1什么是第一类对象
16.4.2函数类型的定义
16.4.3函数作为参数
16.4.4函数作为变量
16.4.5函数作为返回值
第17章类型关系
17.1多态
17.2子类型关系
17.2.1继承带来的子类型关系
17.2.2实现接口带来的子类型关系
17.2.3元组类型的子类型关系
17.2.4函数类型的子类型关系
17.2.5预设子类型关系
17.2.6传递性带来的子类型关系
17.2.7泛型类型的子类型关系
17.3类型转换
17.3.1is操作符
17.3.2as操作符
17.4类型别名
第18章异常
18.1异常的定义
18.2异常处理
18.3自定义异常
18.4Option值的解构
18.4.1getOrThrow()函数
18.4.2 操作符
第19章基础类库
19.1格式化库
19.1.1整型、浮点型类型
19.1.2字符类型
19.2Console类
19.2.1ConsoleReader
19.2.2ConsoleWriter
19.3Random类
19.4数学库
19.4.1常数
19.4.2函数
19.5转换库
19.6base64包
19.7hex包
19.8时间库
19.8.1Month枚举
19.8.2DayOfWeek枚举
19.8.3Duration类
19.8.4TimeZone
19.8.5DateTime
19.8.6时间格式
第20章字符及字符串处理
20.1字符处理
20.2字符串处理
20.2.1字符串转数组
20.2.2指定位置字符获取
20.2.3子字符串获取
20.2.4字符查找
20.2.5子字符串查找
20.2.6字符串修整
20.2.7字符串分隔
20.2.8字符串判断
20.2.9字符串连接
20.2.10字符串替换与反转
20.3猜数字小游戏
第21章高级集合类型(10min)
21.1Hashable接口
21.2HashSet集合
21.2.1HashSet的定义
21.2.2访问HashSet
21.2.3修改HashSet
21.2.4HashSet的容量和元素个数
21.3HashMap集合
21.3.1 HashMap的定义
21.3.2访问HashMap
21.3.3修改HashMap
21.3.4其他常用函数
21.3.5综合应用示例
第22章模式匹配
22.1match表达式
22.1.1pattern guard
22.1.2match表达式类型
22.2模式
22.2.1常量模式
22.2.2通配符模式
22.2.3变量模式
22.2.4元组模式
22.2.5类型模式
22.2.6枚举模式
高级篇
第23章函数的高级用法(19min)
23.1Lambda表达式
23.1.1Lambda表达式的定义
23.1.2Lambda表达式的返回值
23.1.3Lambda表达式的调用
23.2闭包
23.2.1闭包的定义
23.2.2捕获变量的状态
23.2.3可变变量的闭包
23.3函数调用语法糖
23.3.1尾随闭包
23.3.2管道表达式
23.3.3组合操作符
第24章并发(18min)
24.1仓颉线程
24.1.1线程睡眠函数sleep
24.1.2创建仓颉线程
24.1.3等待线程结束并获取返回值
24.2同步
24.2.1数据竞争
24.2.2原子操作
24.2.3互斥锁
24.2.4监视器
24.2.5synchronized关键字
第25章文件处理
25.1FileInfo
25.2File
25.3Directory
25.4文件读写示例
第26章仓颉编译器(14min)
26.1编译演示代码
26.2编译选项
26.3条件编译
26.3.1使用方式
26.3.2内置编译条件
26.3.3自定义编译条件
26.3.4多条件编译
第27章仓颉调试器(26min)
27.1仓颉调试器演示代码
27.2调试版本的编译
27.3启动调试的方式
27.4调试命令
27.4.1断点
27.4.2观察点
27.4.3启动
27.4.4执行
27.4.5变量
27.4.6退出
|
內容試閱:
|
二十多年前的1997年,作为一名计算机专业的大一新生,笔者第1次接触了编程语言。一开始学习的是汇编语言,后来逐步学习了其他语言,例如C、C 、Java等,还自学了Pascal等语言。毕业以后,工作中使用的语言主要追随行业趋势,先用了一段时间Power Script,然后是Delphi,从2003年开始,重点用C#,一直到2017年,最后全面转向Java。中间也接触了其他几种语言,例如Python、Scala等,但没有在工作中实际应用,也就没有深入研究。
但是,很遗憾,这些语言没有一种是我国自主研发的,在当前的大环境下,这是我们信息技术产业的又一个软肋,存在着被“卡脖子”的巨大风险,为了我国科技的发展,为了尽可能地减少不可预测事件的影响,我们有必要研发自己的编程语言。
众所周知,研发一种全新的语言不是一件容易的事情,语言本身的难度和创新性是一方面,配套的生态则是更巨大的挑战,所以说,大部分流行语言是业内有影响力的企业主持研发的,而社区主导的语言需要经过漫长的时间才有可能流行起来,可是,我们没有那么多时间。
幸运的是,华为编译器与编程语言实验室一直在做这件事情,并且有了重大的研发进展,但是,他们一直隐藏在幕后,直到2021年9月,华为邓泰华先生表示,将在2022年推出自研编程语言时,仓颉语言才进入了公众的视线。就个人来讲,最近几年,主要研究方向是鲲鹏领域,并在清华大学出版社出版了《鲲鹏架构入门与实战》,但是,对自主可控语言发展的关注一直没放松过,当仓颉语言项目的发起人兼项目经理王学智先生邀请我参加仓颉语言的内测时,我毫不犹豫地答应了,能参与仓颉语言的研发是我的荣幸,也是支持自主可控语言发展的方式之一。
在参加仓颉语言内测的同时,也根据测试的情况提交了一些仓颉语言的问题(Issue),在仓颉编程语言社区发布的2021年度报告中,被列为提交Issue最多的三个人之一。不过,坦率地说,仓颉语言毕竟是一种全新的语言,官方的资料只能逐步提供,所以,要推进仓颉生态的发展,就需要更多的参与者主动编写仓颉语言学习资料,为以后其他人的学习提供方便。在和清华大学出版社赵佳霓编辑沟通后,就决定编写一本面向仓颉语言初学者的入门书,也就是这本《仓颉语言实战(微课视频版)》。本书的定位是“零基础入门仓颉语言”,分为入门篇、进阶篇和高级篇,特别针对初学者的特点,提供了大量的代码示例,并且给出了详细的注解,可以说达到了“手把手教初学者入门”的预期目的。
在当前的世界里,虽然科技领域的争端还在继续,但是,我们欣慰地看到,在ICT领域,国产自主可控技术得到了空前大发展,从硬件到软件,从底层的操作系统、数据库到各种应用中间件都有了很多颇具代表性的产品,这次华为推出的仓颉语言更是“向下扎到根,向上捅破天”的具体体现,我相信,以我们国家程序员的聪明才智,加上我们软件企业的规模和体量,仓颉语言一定能快速建立生态,成长为和Java、Python等著名语言齐名的新一代开发语言。
本书特色
本书践行“零基础入门仓颉语言”的核心理念,在章节设计和内容编排上具有以下几个特点。
(1) 内容通俗易懂,使用平白的文字介绍仓颉开发的相关知识,在介绍语言特性时,不仅介绍特性本身,还会介绍为什么需要这种特性,能解决什么问题,帮助读者加深理解。
(2) 知识点循序渐进,按照章节顺序学习即可,新知识点学习只依赖学过的内容,很少需要参考后续章节。
(3) 丰富的代码示例,本书包含200多个完整的示例代码,每段代码都针对书中知识点精心设计,按照《CangJie语言通用编程规范》编写,包括详细的代码注释和说明,并且每段代码均可以独立运行。
本书内容
第1章: 仓颉语言简介,包括仓颉语言的发展经历及语言的特点。
第2章: 仓颉开发准备,包括如何安装仓颉开发需要的工具链,以及编辑器、开发插件等。
第3章: 第一个仓颉程序,从经典的Hello World开始,介绍了代码的编写、编译及程序的运行。
第4章: 基本数据类型与操作符,包括标识符、关键字、变量等基础概念,以及仓颉语言基本数据类型和操作符,通过具体示例的方式,演示数据类型和操作符的使用方法。
第5章: 函数,包括函数的定义、参数、返回值、函数体等内容,最后介绍了嵌套函数。
第6章: 流程控制,包括条件表达式、循环表达式、match表达式等。
第7章: 入门综合实例,通过一个综合的入门实例,融会贯通前几章学习的知识,包括变量、函数、流程控制等内容,从总体上掌握基础的仓颉程序开发。
第8章: struct类型,包括struct类型的必要性及如何定义和使用。
第9章: class类型,包括对象、继承等关键概念,展示在仓颉语言里使用面向对象编程的方法。
第10章: enum类型,重点介绍enum的构造器。该章是学习后续知识的基础。
第11章: 接口,包括接口的必要性及接口的定义、实现、继承,最后介绍了仓颉语言内置的典型接口。
第12章: 泛型,包括泛型的必要性及泛型接口、泛型函数和泛型约束的用法,最后介绍了泛型类型,包括泛型class、泛型struct、泛型enum。
第13章: 包管理,通过具体示例演示包的导入和导出。掌握了包的使用方法,就可以在开发中使用仓颉语言内置的大量库函数,也可以使用第三方提供的包。
第14章: 扩展,演示如何在不破坏封装的情况下,给已有的类型添加成员或者实现接口。
第15章: 基础集合类型,包括Array和ArrayList,通过对比的方式展示在访问方式上的共性及在修改操作上的区别,从而可以更好地了解各自的适用场景。
第16章: 函数的进阶用法,包括函数的重载,操作符的重载,以及函数作为“第一类对象”带来的特性。
第17章: 类型关系,包括类型之间的关系及类型转换的方式,了解了类型关系就能更好地了解多态,了解面向对象的编程方式。
第18章: 异常,包括异常的定义和异常处理的方法,重点介绍了Option类型在异常处理中的使用。
第19章: 基础类库,包括格式化库、随机数库、数学库、时间库等,了解基础类库的常用用法,可以更好地进行程序编写。
第20章: 字符及字符串处理,包括字符及字符串的十余种常用操作方法,通过一个游戏示例,演示字符串在开发中的实际应用。
第21章: 高级集合类型,包括表示不重复集合的HashSet和表示键值对的HashMap,这两种类型在企业级开发中经常用到。
第22章: 模式匹配,模式匹配的概念及match表达式支持的6种模式。
第23章: 函数的高级用法,包括广泛使用的Lambda表达式及闭包和函数调用语法糖。
第24章: 并发,包括仓颉语言特有的线程模型“仓颉线程”,同时介绍了解决并发编程数据同步问题的常用方式。
第25章: 文件处理,包括文件、目录的基础操作和文件读写的实现。
第26章: 仓颉编译器,包括常用编译选项及如何进行条件编译。
第27章: 仓颉调试器,包括常用调试命令,通过实际示例的方式演示这些调试命令的具体用法。
致谢
感谢华为编译器与编程语言实验室的壮举,你们是新时代的开拓者!
感谢清华大学出版社,特别是以赵佳霓编辑为代表的工作人员,专业、严谨、细致的你们始终是我学习的榜样,也是本书顺利出版的保证。
感谢参与仓颉语言内测的所有朋友,和你们的交流使我对仓颉语言有了更深入的理解。
最后感谢我的妻子小朱同学和我们的孩子婉婉小朋友,在备战中考的同时还尽力给我提供了安心的写作环境,你们永远是我的骄傲。
作者
2024年5月于青岛
本书源代码
|
|