仓颉编程语言入门

华为在 2024 年 6 月 21 日的华为开发者大会上,华为终端 BG 软件部总裁龚体正式官宣了华为自研仓颉编程语言,并发布了 HarmonyOS NEXT 仓颉语言开发者预览版。
仓颉编程语言文件后缀名为 .cj, 以下是第一个入门代码输出:你好,仓颉

在这里插入图片描述
仓颉编程语言的名字来自 “仓颉造字”。

仓颉(约公元前2650年)是中国古代传说中的人物,据说是黄帝的史官,他被认为是汉字的创造者。

仓颉造字是中国古代传说中的一个重要故事,讲述的是仓颉创造汉字的过程。

《荀子・解蔽》称:“好书者众矣,而仓颉独传者壹也”,该名字也是代表了团队成员对于仓颉编程语言的寄托,希望该语言能够被广大开发者喜爱,并且广为流传。

这是华为首次公开发布仓颉编程语言。

在这里插入图片描述
龚体表示:“2019 年,仓颉编程语言项目在华为诞生,历经 5 年研发沉淀,大量研发投入,今日终于和全球开发者见面。仓颉编程语言通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的 IDE 工具链支持,为开发者打造友好开发体验和卓越程序性能。”

仓颉编程语言是一款面向全场景智能的新一代编程语言,主打原生智能化、天生全场景、高性能、强安全。

在这里插入图片描述仓颉编程语言以其 “原生智能化、天生全场景、高性能、强安全”的特点,重新定义了智能编程的新标准。内嵌AgentDSL的编程框架,实现了自然语言与编程语言的有机融合,为智能应用开发提供了无限可能。

仓颉编程语言的发布,标志着其正式融入鸿蒙生态,为开发者提供了一个全新的编程平台。在这里,开发者可以享受到更加友好的开发体验和卓越的程序性能,共同推动鸿蒙生态的繁荣发展。

一、基本概念

1.1 标识符

1.2 变量

变量将一个名字和一个特定类型的值关联起来。

在这里插入图片描述
变量估算圆周率
在这里插入图片描述

1.3 类型

类型就像一份协议,规定了一块数据的组织结构及相应的解析/操作方式。
在这里插入图片描述

1.4 基础数据类型

在这里插入图片描述

1.5 表达式

在这里插入图片描述

1.5.1 if 表达式

在这里插入图片描述

1.5.2 while 表达式

在这里插入图片描述

1.5.3 for-in表达式

在这里插入图片描述
在这里插入图片描述

1.6 程序结构

在这里插入图片描述

二、函数

2.1 定义函数

在这里插入图片描述

2.2 调用函数

在这里插入图片描述

2.3 lambda 表达式

lambda表达式可以让函数的创建和使用更加灵活,lambda表达式的值就是一个匿名函数。
在这里插入图片描述
应用实例遍历目录

在这里插入图片描述

三、枚举

3.1 定义与实例化

在这里插入图片描述

3.2 成员访问规则

在这里插入图片描述

3.3 match 表达式

在这里插入图片描述

应用实例表达式计算
在这里插入图片描述

3.4 Option

在这里插入图片描述

四、结构体

4.1 定义与实例化

在这里插入图片描述

4.2 成员访问规则

在这里插入图片描述
应用实例二叉树

在这里插入图片描述

五、类

5.1 定义与实例化

在这里插入图片描述

5.2 成员访问规则

在这里插入图片描述

5.3 继承

在这里插入图片描述

5.4 属性

在这里插入图片描述

5.5 值类型与引用类型

在这里插入图片描述

六、接口与扩展

6.1 接口

在这里插入图片描述
实现接口信号系统仿真

在这里插入图片描述

6.2 扩展

在这里插入图片描述

6.3 泛型

在这里插入图片描述

七、异常处理

7.1 异常类型

在这里插入图片描述

7.2 构造和抛出异常

在这里插入图片描述

7.3 异常处理

在这里插入图片描述
在这里插入图片描述

八、并发编程

8.1 线程模型

仓颉语言实现了M:N 轻量线程模型,支持在少量系统线程之上创建海量用户线程,在实现层面用户线程对应协程,仓颉runtime会自动管理和调度这些协程
在这里插入图片描述
当用户线程t做I/O 等资源访问操作时,若资源尚未就绪,线程t就会被runtime挂起等待、并调入其他线程运行,当资源就绪后又会适时恢复t的执行,高效利用CPU 资源,实现高并发能力。

8.2 创建线程

在这里插入图片描述
应用实例估算圆周率
在这里插入图片描述

九、跨语言互操作

9.1 跨语言互操作

在这里插入图片描述

9.2 仓颉 C 互操作基本步骤

在这里插入图片描述
类型映射基础类型
在这里插入图片描述
类型映射其他类型
在这里插入图片描述
应用实例
在这里插入图片描述

十、宏

10.1 概述

在这里插入图片描述

10.2 定义与调用

在这里插入图片描述

10. 3 在编译时修改程序

在这里插入图片描述
应用实例语言扩展
在这里插入图片描述

参考资料:

仓颉编程:https://developer.huawei.com/consumer/cn/cangjie/

入门教程:https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101718903607800132

白皮书:https://developer.huawei.com/consumer/cn/doc/openharmony-cangjie/cj-wp-abstract

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/359638.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

buuctf----firmware

- -一定不能再ubutu22进行,我是在18(血泪教训) binwalk安装 buuctf firmware(binwalk和firmware-mod-kit的使用)_buu firmware-CSDN博客 参考博客 指令 sudo apt-get update sudo apt-get install python3-dev python3-setuptools python3-pip zlib1g-dev libmagic-dev pi…

前端中的深拷贝

第1部分:引言 深拷贝:前端开发的隐形守护者 在前端开发的世界里,数据的传递和状态的管理是构建用户界面的基础。然而,数据的复制常常被忽视,直到它引发bug,我们才意识到它的重要性。深拷贝,这…

Springboot 共享电动单车管理系统-计算机毕业设计源码08401

目 录 摘要 1 绪论 1.1背景及意义 1.2国内外研究概况 1.3研究方法 1.4论文结构与章节安排 2 共享电动单车管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分…

React Suspense的原理

React Suspense组件的作用是当组件未完成加载时,显示 fallback 组件。那么 Suspense 是如何实现的呢?React 的渲染是通过 Fiber 进行的,Suspense 的更新机制也是要围绕 Fiber 架构进行的。Suspense 是由两部分组成,实际 UI 子组件…

自学指南:必备书籍清单--近100本R语言及生物信息相关书籍

R语言是一种功能丰富的编程语言,数据处理、统计分析是大家所熟知的基本功能。开源免费、活跃的全球社区、灵活可扩展等优点促使R语言飞速发展。目前,CRAN 软件包存储库包含 20446 个可用软件包,涵盖了从生物信息到金融分析等广泛的应用领域。…

spring-boot-devtools热部署功能集成使用

0.参考其他文章 Spring Boot之Spring-devtools热部署:实现快速开发与调试-阿里云开发者社区关于IDEA2022开启热部署没有compiler.automake.allow.when.app.running的解决方案-CSDN博客 1. Spring DevTools简介 Spring DevTools是Spring团队开发的一个模块&#xf…

理解人体手臂七个自由度对应的运动

写本篇的目的在于,我发现很多人理不清人体手臂运动时内收/外展、屈曲/伸展等动作描述的关系,包括我自己也是! 我每次要用到的时候都要去查,记不下来,比较麻烦,于是归纳本篇,包含了我本人的理解 …

解析PDF文件中的图片为文本

解析PDF文件中的图片为文本 1 介绍 解析PDF文件中的图片,由两种思路,一种是自己读取PDF文件中的图片,然后用OCR解析,例如:使用PyMuPDF读取pdf文件,再用PaddleOCR或者Tesseract-OCR识别文字。另一种使用第…

Vscode中的行尾序列CRLF/LF不兼容问题

最近开发的的时候,打开项目文件经常会出现爆红错误提示信息,显示如下图: 这东西太烦人了,毕竟谁都不希望在遍地都是爆红的代码里写东西,就像能解决这个问题,根据提示可以知道这是vscode中使用的prettier插件…

图片转pdf,图片转pdf在线转换,在线图片转pdf

图片转PDF,听起来似乎是一个简单的操作,但实际上,它涉及到许多细节和技巧。有时候我们需要将图片转换为PDF格式,以便于分享、打印或保存。那么,如何将图片转换成PDF呢?接下来,我将为您详细介绍几…

Vue3中的常见组件通信(超详细版)

Vue3中的常见组件通信 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $refs4. 默认…

零基础MySQL完整学习笔记

零基础MySQL完整学习笔记 1. 基础操作(必须会!)1.1 修改密码(4种方法)1.2 创建新用户1.3 导入数据库 2. SQL四种语言介绍2.1 DDL(数据库定义语言)2.2 DML(数据操纵语言)2.3 DCL(数据库控制语言)2.4 TCL(事务控制语言) 3. 数据库操作3.1 创建数据库3.2 查询数据库3.3 删除数据库…

【ArcGIS微课1000例】0120:ArcGIS批量修改符号的样式(轮廓)

ArcGIS可以批量修改符号的样式,如样式、填充颜色、轮廓等等。 文章目录 一、加载实验数据二、土地利用符号化三、批量修改符号样式四、注意事项一、加载实验数据 订阅专栏后,从私信查收专栏配套的完整实验数据包,打开0120.rar中的土地利用数据,如下图所示: 查看属性表: …

SpringMVC系列十: 中文乱码处理与JSON处理

文章目录 中文乱码处理自定义中文乱码过滤器Spring提供的过滤器处理中文 处理json和HttpMessageConverter<T>处理JSON-ResponseBody处理JSON-RequestBody处理JSON-注意事项和细节HttpMessageConverter<T\>文件下载-ResponseEntity<T\>作业布置 上一讲, 我们学…

python判断语句

目录 布尔类型和比较运算符if语句的基本格式if else 语句if elif else 语句判断语句的嵌套 布尔类型和比较运算符 1、布尔类型 bool布尔类型只有两个结果&#xff1a;真或假 布尔类型的字面量&#xff1a; True 表示真&#xff08;是、肯定&#xff09; False 表示假&#x…

【论文精读】ViM: Out-Of-Distribution with Virtual-logit Matching 使用虚拟分对数匹配的分布外检测

文章目录 一、文章概览&#xff08;一&#xff09;问题来源&#xff08;二&#xff09;文章的主要工作&#xff08;三&#xff09;相关研究 二、动机&#xff1a;Logits 中缺失的信息&#xff08;一&#xff09;logits&#xff08;三&#xff09;基于零空间的 OOD 评分&#xf…

[leetcode]add-strings 字符串相加

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string addStrings(string num1, string num2) {int i num1.length() - 1, j num2.length() - 1, add 0;string ans "";while (i > 0 || j > 0 || add ! 0) {int x i > 0 ? num1[i…

msvcp120.dll丢失怎么办,找不到msvcp120.dll的多种解决方法

最近&#xff0c;我在运行一个程序时遇到了一个错误&#xff0c;系统提示找不到msvcp120.dll文件&#xff0c;无法继续执行代码。这让我感到非常困扰&#xff0c;因为这个问题导致我无法正常运行这个程序。经过一番搜索和尝试&#xff0c;我找到了几种修复这个问题的方法&#…

pdf转图片转换器,pdf转图片的工具

在日常的工作和学习中&#xff0c;我们经常会遇到需要将PDF文件转换为图片格式的情况。那么&#xff0c;如何才能将PDF格式转换为图片格式呢&#xff1f;今天&#xff0c;我将为大家介绍几种简单易用的方法&#xff0c;帮助大家轻松实现PDF转图片。 打开“轻云pdf处理官网网站”…

WEB界面上使用ChatGPT

&#xff08;作者&#xff1a;陈玓玏&#xff09; 开源项目&#xff0c;欢迎star哦&#xff0c;https://github.com/tencentmusic/cube-studio 随着大模型不断发展&#xff0c;现在无论写代码&#xff0c;做设计&#xff0c;甚至老师备课、评卷都可以通过AI大模型来实现了&…