社区活动专版
直播中

小伍

8年用户 4669经验值
擅长:电源/新能源 嵌入式技术
私信 关注

【书籍评测活动NO.39】仓颉编程快速上手 | 开发者的第一个仓颉语言程序

Hello, Cangjie

2024 年华为 HDC 大会上官宣仓颉编程语言,开启开发者预览。小异闻讯按捺不住激动的心情,第一时间就关注官方公众号,并申请体验资格。

经过两天的漫长等待后,终于通过审核,拿到了仓颉编译工具。现在小异就给大家来开箱体验。

开发环境:Debian GNU/Linux 11 (bullseye)

编译工具:cjc(Cangjie Compiler: 0.51.4)

“Hello, World”程序是入门新编程语言的标配,顺应传统,我们以“Hello, Cangjie”作为开始。创建新文件hello.cj,并输入以下代码:

图片.png

保存并编译,编译后执行程序:

图片.png

初始体验还是非常容易上手的,现在我们对代码进行解读:

  • main 是程序执行的入口,这与 C/C++/Go 语言很相似。在编译并执行程序之后,系统自动从 main 开始执行花括号中的代码。
  • "Hello, Cangjie" 是一个字符串类型的字面量,由一对半角的双引号括起来得到。
  • println 是一个函数,它将字符串"Hello, Cangjie"输出到终端并且自动换行。仓颉定义了许多实现特定功能的函数。
  • 以“//”开头的内容表示注释,它是对代码的说明和对程序的解释,不参与程序编译。用“/ /”则可以实现多行注释。

良好的代码风格可以提高程序可读性,而且便于维护程序。初学者可以先从遵守以下简单的编程规范开始,在持续的学习过程中逐渐掌握更多规范:

  • 在左花括号之后换行。
  • 换行之后输入代码。花括号中的所有代码作为一个整体,要有一个级别的缩进。一个级别的缩进一般是 4 个空格,对于 UI 等多层嵌套使用较多的情况,可统一使用 2 个空格。
  • 右花括号独占一行。

直观体验了仓颉编程之后,我们再来体会这门语言的独特魅力。

仓颉语言拥有这些特性

仓颉编程语言的定位,是面向全场景应用开发的现代编程语言,力图在开发体验、语言特性、程序性能之间取得最佳平衡。仓颉非常适合用来实现业务逻辑,在鸿蒙的体系内获得最大效用。

仓颉是一门多范式编程语言,支持函数式、命令式和面向对象等多种范式,包括值类型、类和接口、泛型、代数数据类型、模式匹配,以及高阶函数等特性。

作为一门现代编程语言,仓颉有四大特性非常值得开发者关注。

原生智能化

仓颉编程语言内嵌了 AgentDSL 的编程框架,实现了自然语言与编程语言有机融合。多 Agent 协同,简化符号表达,模式可以自由组合,支持各类智能应用开发。

图片.png

从以上代码段可以看到,在仓颉语言中,Agent 的声明和使用语法与仓颉本身的语法一致,既能享受仓颉的静态检查能力,又没有学习成本,将高效编程、安全可靠发挥到极致。

高性能

仓颉编程语言采用全并发 GC,应用线程运行更加流畅,响应速度更快。轻量化线程设计进一步提升了并发性能,降低了开发成本。

图片.png

在仓颉中创建和执行线程非常简洁,上述代码使用关键字 spawn 创建了一个线程,并且传递了一个无形参的 lambda 表达式,该 lambda 表达式即为在新线程中执行的代码。

强安全

仓颉编程语言将安全理念融入语言设计,帮助开发者专注于业务逻辑,减少安全漏洞的产生,实现“编码即安全”的愿景。

跨语言调用

仓颉编程语言支持和 C、ArkTS/JS、Python 等编程语言的互操作,并采用便捷的声明式编程范式,可以实现对其他语言库的高效复用和生态兼容。

图片.png

上述代码即实现了在仓颉语言中调用 C 语言库中的 rand 和 printf 函数。首先用 foreign 修饰函数声明,代表该函数为外部函数;然后用 unsafe 块包裹 C 语言函数,unsafe 可以修饰一个代码块,也可以修饰一个函数。

要想系统化学习仓颉语言,小异介绍一本书给大家,学完就可以快速上手干活。

一本书快速上手仓颉

天下武功,唯快不破!

《仓颉编程快速上手》 这本书就能帮助开发者迅速抓住仓颉语言的核心要素,开发出实用性的程序。

1.jpg

本书以 15 章的篇幅涵盖了从起步到基础语法知识、面向对象编程、高阶知识等内容。在讲解技术点时结合实例加以说明,清晰易理解。

基础语法知识

这部分从“你好,仓颉!”最简程序开始,解释程序的基本结构与编程规范,然后介绍了变量的声明与使用。对于数据操作,则介绍了存储数值的数据类型,以及存储字符的数据类型。

对于流程控制语句,介绍了条件测试、单分支的 if 表达式、双分支的 if表达式和嵌套的 if 表达式,以及do-while 表达式、while 表达式、for-in 表达式和循环表达式的嵌套。

接着介绍了函数的定义和调用,然后介绍了函数的重载,最后介绍了变量的作用域。

图片.png

面向对象编程

重点介绍了类的定义和对象的创建,然后详细介绍了面向对象编程的三大特征——封装、继承和多态,最后介绍了抽象类和接口的用法。本部分通过一个小型的课务管理项目对上述概念进行了深入阐释。

3.png

对于 struct,介绍了 struct 类型的定义和 struct 实例的创建,然后介绍了 struct 类型和 class 类型的区别。

高阶知识

首先介绍了函数的一些高级特性,包括函数作为“一等公民”的用法、lambda 表达式的定义和使用、嵌套函数和闭包的用法、如何进行函数重载决议、操作符重载函数的定义和使用、mut 函数在 struct 和 interface 中的用法等。

接着介绍了仓颉的 4 种基础 Collection 类型——Array、ArrayList、HashSet 和 HashMap,其主要用法包括实例的创建和元素的增删改查等操作。

还介绍了泛型类型及其泛型约束、包管理、直接扩展和接口扩展、生成随机数据、通用的数学操作、格式化输出和字符串操作。

2.png

申请时间

2024年7月24日——2024年8月24日

活动参与方式

1、在本帖下方留言回帖说说你想要这本书的理由15字以上。

2、我们将从本帖留言中挑选5位幸运者赠送此书籍,共赠送5本。

3、请在收到书籍后2个星期内提交不少于2篇试读报告要求300字以上图文并茂。

4、试读报告发表在电子发烧友论坛>>社区活动专版标题名称必须包含 【「仓颉编程快速上手」阅读体验】+自拟标题

注意事项

1、活动期间如有作弊、灌水等违反电子发烧友论坛规则的行为一经发现将立即取消获奖资格

2、活动结束后获奖名单将在论坛公示请活动参与者尽量完善个人信息如管理员无法联系到选中的评测者则视为自动放弃。

3、申请人收货后14天内未完成书评无权将书籍出售或转赠给他人。如无法在收货后14天内提交书评请将书籍退回电子发烧友论坛运费自理。

4、如有问题请咨询工作人员(微信:elecfans123)。

回帖(10)

jf_52201062

2024-7-24 17:13:27
小白纯爱战士可以申请吗?快来一本让我
举报

坚果

2024-7-24 17:26:27
仓颉 For 鸿蒙=无限可能,想学习仓颉,然后用仓颉开发鸿蒙应用。共建仓颉鸿蒙生态
举报

达飞淼刘健均

2024-7-24 17:44:41
要搞,要学习!要使用,要上量!
举报

范嘉琦

2024-7-24 17:50:41
常年于本平台测评书籍及开发版。早期从2.0时代开始体验OpenHarmony。
在飞腾派及个人手机上测试OpenHarmony开发。
鸿蒙先锋开发者计划。申请华为开发AI实验,已申请仓颉语言测试。

希望能够深入了解仓颉语言,在后续的开发中使用,并加速公司APP的迭代于在鸿蒙上的应用。未来在客户手机终端,设备端中使用仓颉语言开发更强大的应用。

目前长期于电力系统设备研发工作。主要方向为电力采集终端的设计于开发工作。智能化末端,末端决策于容灾设备的开发。
由于电科院在其终端上移植并使用了鸿蒙操作系统,并将其指定为官方认可系统。未来将会有更多应用向鸿蒙系统迁移。而仓颉作为鸿蒙系统应用开发的一大利器,是必须了解与深入学习的。
举报

Cool

2024-7-24 20:04:19
全力支持国产,早有耳闻。“仓颉语言”很有中国特色和文化底蕴,在编程语言及配套工具链上是一大突破,也是一种自信、打破封锁、积极创新。希望有机会借由这本书,对“仓颉语言”有一个全面系统的学习掌握及实践,拓展国产生态圈,大家一起努力,你不是一个人在奋斗,雄起 !
举报

Cool

2024-7-24 20:04:23
举报

cszzlsw

2024-7-24 20:44:49
作为一名老鸿蒙,感觉非常需要一本系统介绍仓颉语言的书来进行系统性的学习,而且,对于国产的,下一代的全新的编程语言,这样一个全栈式的语言还是非常的好奇,非常的期待.仓颉的运行速度如何,他有gc吗,他会取代arkts吗,他是面向对象语言吗?希望能够带着这些问题深入阅读这本书.
举报

陈殷海

2024-8-6 08:38:06
楼主,

您好!我是一名接触开发语言不久,对语言学习充满热情的开发者小白,近期对华为推出的仓颉语言产生了浓厚的兴趣。为了更深入地了解和学习这种语言,我希望能申请一本关于仓颉语言的书籍。

我之前有接触过其它的语言,主要是python,python用于机器学习,数据分析是能满足使用,但是用于开发其他的东西就不能满足了,我现在想学习另外一种语言,用于开发一些硬件,之前有考虑过学C和C++,当我了解到这两个语言一些性能优缺点之后,我发现仓颉语言是未来的趋势,仓颉语言的高效编程、轻松并发、全场景应用开发的特点我特别感兴趣。

作为华为自主研发的语言,在我国信息技术领域具有重要意义。通过学习仓颉语言,不仅能提升我在计算机领域的技能,还能让我更好地了解我国在信息技术方面的创新成果。

在此,恳请希望您能批准我的申请,并寄送一本相关的书籍给我。我会珍惜这次学习机会,认真阅读并深入研究仓颉语言。在学有所成后,我愿意将所学知识分享给更多的网友,共同为我国的信息技术发展贡献力量。

再次感谢您对我的关注与支持,期待您的回复。祝您工作顺利,身体健康!
举报

杨工

2024-8-6 09:21:49
我们国家自己的编程语言,必须支持。
学习后,在鸿蒙上开发,建设鸿蒙生态。
举报

HXM1539

7 天前
仓颉编程语言支持和 C的交互,本人一直使用C语言,很想体验下与仓颉编程语言的互动,学习该语言的长处,希望能应用工作的场景。高级语言不会,如果用上仓颉编程语言达到同样的效果,就不用学习JAVA等高级语言,支持国货,特别想试试。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分