图书前言

前  言

中国华为技术有限公司发布仓颉程序设计语言恰逢我国近年来在高精尖及基础领域受到国外挤压的关键时期。作为软件基础领域的编程语言,国产化对我国软件行业发展具有战略意义。

仓颉程序设计语言的出现,是华为技术有限公司基础技术进一步提升的结果,也是我国多年来信息技术发展长期积淀的结果,更是国家发展战略的需要。

仓颉程序设计语言作为一门新的程序设计语言,吸取了众多其他编程语言的优点,同时满足编程语言在未来技术中的需要。仓颉语言在设计上把一些面向未来的技术作为语言本身的特性,如自动微分等。另外,仓颉语言还在不断完善及发展的过程中,开发者需要用发展的眼光看待仓颉程序设计语言。

《仓颉程序设计语言》适合具有一定高级编程语言基础的读者,适合具有一定计算机或软件开发基础的大学生或软件开发者阅读。《仓颉程序设计语言》通过系统阐述和丰富的示例代码帮助开发者快速掌握仓颉程序设计语言,开启国产化程序设计的新天地。

《仓颉程序设计语言》主要内容

第1章 引言,简要介绍仓颉程序设计语言的历史和特点,说明《仓颉程序设计语言》面向的读者。

第2章 第1个仓颉程序,介绍如何编写仓颉Hello World程序,通过编译、运行该程序说明仓颉程序的基本开发过程,本章还介绍仓颉程序包含的元素。

第3章 基本类型和运算符,介绍仓颉程序中的常量和变量,基本的数据类型,基本的算术运算符、关系运算符和逻辑运算符等。

第4章 基本输入/输出和控制结构,介绍仓颉语言中的基本输出函数、终端输入/输出及其常用成员函数的使用、控制结构等。控制结构中包括顺序、选择和循环3种基本程序控制结构,分别介绍3种结构在仓颉程序中的具体表达。

第5章 函数,介绍函数的定义、函数的调用和函数的高级特性。函数具有类型,可以作为参数传递或返回,并且可以嵌套。仓颉语言还支持Lambda表达式,相当于匿名函数。

第6章 结构和枚举类型,介绍结构类型的定义、创建使用结构、结构成员和访问控制等,以及枚举类型的用法和仓颉语言内置的枚举类型Option类型。

第7章 类和对象,介绍类的定义、对象的创建和使用、类的成员、可见性和写限制,类是自定义的高级数据类型,是面向对象编程的基本概念,也是面向对象程序设计中基本特征封装的具体实现。

第8章 继承和接口,介绍通过继承定义派生类、继承中的构造函数、访问权限、重载、覆盖和重定义,以及接口的定义和继承、接口的实现、Any接口。继承是面向对象设计的基本特征之一,接口是类型中的更高层次抽象。

第9章 类型关系,介绍类和子类型、接口和子类型、函数使用中的子类型、类型转换、类型判断、类型别名。仓颉语言是强类型语言,类型关系在实际开发中发挥着重要的作用,子类型和父类型之间的隐性切换是面向对象多态性的具体体现。

第10章 泛型和常用集合,介绍泛型类型、泛型函数、泛型约束,以及常用的几个集合类型,包括Array、ArrayList、HashSet、HashMap。泛型是一种类型参数化技术,提高了编写程序的通用性。

第11章 属性和扩展,介绍属性的定义和使用、扩展的定义和使用。属性提供了更加方便访问程序的机制,扩展在不产生新类型的情况下为已有类型提供了扩充新功能的能力。

第12章 多线程和异常处理,多线程部分包括线程的创建、线程的等待和线程同步,异常处理部分包括异常类型、抛出和异常处理。

第13章 包,介绍包声明、包中的可见性、包的导入、多包项目编译、main函数参数等,多个包的组织和管理是完成大型项目所必需的,包管理为组织大型项目提供了有效的语言机制。

第14章 自动微分,首先简要介绍微分技术,然后介绍仓颉语言中简单的函数自动微分,最后介绍仓颉语言中的可微类型、可微函数、自动微分API、高阶微分。仓颉语言把自动微分作为语言本身的基本特性进行设计,为仓颉语言应用在人工智能等领域提供了更好的支持。

第15章 元编程,首先简要介绍元编程概念,然后介绍仓颉语言中的元编程类型、引述表达式、宏等。仓颉语言元编程使其具有通过代码生成代码和修改代码的能力,元编程可以在编译阶段优化生成运行效率更高的代码。

阅读建议

这是一本仓颉程序设计语言的入门书,但不是一本程序设计的入门书,因此笔者认为学习《仓颉程序设计语言》需要具备一定的程序设计基础。

致谢

在《仓颉程序设计语言》的撰写过程中,笔者得到了来自多方的支持和帮助,在这里特别表示感谢。

首先感谢家人的支持,如果没有家人的支持,可能无法完成《仓颉程序设计语言》。

感谢中原工学院的同事,笔者在撰写《仓颉程序设计语言》的过程中得到了多位领导和老师的支持、帮助,如余雨萍、李勇军、张玉莹、马超凡、贾晓辉、朱彦松等。感谢研究生周鹏,在成书过程中和笔者共同学习、探讨了仓颉程序设计语言。

感谢华为技术有限公司一大批优秀的工程师,如果没有他们的努力恐怕不会有仓颉编程语言的面世。在成书过程中笔者参考了华为技术有限公司提供的官方技术文档。

感谢仓颉语言技术社区和社区里的众多同人,在《仓颉程序设计语言》成稿过程中,社区提供了很好的交流平台,通过和很多技术同人交流使笔者对仓颉语言有了更好、更深的理解。

感谢清华大学出版社工作人员的辛勤工作,特别感谢赵佳霓编辑,从策划选题到出版的过程中付出了许多努力。

刘安战

2024年5月