当前位置: 首页 > article >正文

关于华为仓颉编程语言

文章目录

  • 一、基本概况
  • 二、技术特点
    • 1. 多范式编程
    • 2. 原生智能化
    • 3. 高性能与安全
    • 4. 全场景兼容
  • 三、编译器与开发工具
  • 四、语言相似性对比
  • 五、行业应用实例
  • 总结

最近经常看到这个东西,于是搜了一下,整理了一些内容,水一篇,以后慢慢研究。
仓颉

一、基本概况

仓颉(Cangjie)是华为自研的面向全场景智能的新一代编程语言,2019年启动研发,2024年6月正式发布首个公测版本。其名称源自中国汉字创造者仓颉,寓意语言设计的创新与文化传承。仓颉定位为鸿蒙生态的核心开发语言,支持Windows、Linux、macOS及HarmonyOS系统,广泛应用于金融、通信、中间件、物联网等领域。

二、技术特点

1. 多范式编程

支持函数式、命令式和面向对象编程,融合高阶函数、代数数据类型、模式匹配、泛型、接口等特性,语法简洁高效,减少冗余代码。

2. 原生智能化

内嵌AgentDSL框架,支持自然语言与代码融合,通过多Agent协同简化智能应用开发(如AI食谱推荐)。

3. 高性能与安全

  • 性能优化:采用全并发GC、轻量化线程模型,终端场景响应更快,内存占用更低。

  • 强安全设计:静态类型系统、自动内存管理、运行时检查(如数组越界、数值溢出),实现“编码即安全”。

4. 全场景兼容

运行时环境轻量化且模块化分层,适配从内存受限设备到高性能服务器的全场景需求,支持声明式开发。

三、编译器与开发工具

  • 编译器开发语言:目前官方未公开具体实现,但存在两种推测:

    • C/C++:部分资料提到仓颉工具链中使用了Clang库及类似LLVM的后端,可能与C/C++相关。

    • Rust:开发者社区发现其文档工具链(如mdBook)、项目结构及特性(如模式匹配、宏系统)与Rust高度相似。

  • 工具链支持:提供开箱即用的IDE、调试器、包管理器(类似Rust的Cargo),并兼容C语言生态实现跨语言互操作。

四、语言相似性对比

仓颉融合了多门主流语言的特性:

  • 语法与范式:类似Swift/Go(静态类型、协程并发)、Python(简洁语法、类型推断)。

  • 安全与内存管理:接近Rust(内存安全、模式匹配),但通过GC降低开发复杂度。

  • 应用场景:对标Kotlin/Swift,作为鸿蒙生态的首选语言,类似Kotlin之于Android。

五、行业应用实例

  • 金融领域:工商银行使用仓颉开发鸿蒙原生应用的“收支日历”功能。

  • 中间件:多家企业基于仓颉开发TCP通信框架、Redis客户端、分布式追踪工具等。

  • 智能设备:华为坤灵路由交换一体机的服务模块采用仓颉开发并商用。

总结

仓颉编程语言凭借高效、安全、全场景适配等特性,成为鸿蒙生态的重要支柱。其设计融合了现代语言的优点,虽编译器实现尚未完全公开,但工具链的成熟度和社区生态已展现出潜力。对于开发者而言,仓颉的学习曲线接近Python和Go,适合全栈及智能应用开发。

相关文章:

关于华为仓颉编程语言

文章目录 一、基本概况二、技术特点1. 多范式编程2. 原生智能化3. 高性能与安全4. 全场景兼容 三、编译器与开发工具四、语言相似性对比五、行业应用实例总结 最近经常看到这个东西,于是搜了一下,整理了一些内容,水一篇,以后慢慢研…...

无字母数字webshell的命令执行

在Web安全领域,WebShell是一种常见的攻击手段,通过它攻击者可以远程执行服务器上的命令,获取敏感信息或控制系统。而无字母数字WebShell则是其中一种特殊形式,通过避免使用字母和数字字符,来绕过某些安全机制的检测。 …...

Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)

系列文章 序号文章名称1Spring AI 项目实战(一):Spring AI 核心模块入门2Spring AI 项目实战(二):Spring Boot + AI + DeepSeek 深度实战(附完整源码)3Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码)4Spring AI 项目实战(四…...

【华为云Astro-服务编排】服务编排使用全攻略

目录 概述 为什么使用服务编排 服务编排基本能力 拖拉拽式编排流程 逻辑处理 对象处理 服务单元组合脚本、原生服务、BO、第三方服务 服务编排与模块间调用关系 脚本 对象 标准页面 BPM API接口 BO 连接器 如何创建服务编排 创建服务编排 如何开发服务编排 服…...

解决el-select选择框右侧下拉箭头遮挡文字问题

如图所示&#xff1a; el-select长度较短的时候&#xff0c;选择框右侧下拉箭头会遮挡选中的数据 选中数据被遮挡 解决办法&#xff1a; 组件如下&#xff1a; <td class"fmtd" :colspan"col.ptproCupNum" v-for"col in row" :key"…...

20250603在荣品的PRO-RK3566开发板的Android13下的使用命令行来查看RK3566的温度【显示优化版本】

20250603在荣品的PRO-RK3566开发板的Android13下的使用命令行来查看RK3566的温度【显示优化版本】 2025/6/3 11:58 RK3566的cpu运行效率 top busybox top rk3566_t:/ # rk3566_t:/ # rk3566_t:/ # cd /sys/class/thermal/ rk3566_t:/sys/class/thermal # ls -l rk3566_t:/sys/c…...

C语言字符数组初始化的5种方法(附带实例)

所谓初始化&#xff0c;就是在定义的同时进行赋值。 C语言中&#xff0c;初始化字符数组的方式多样&#xff0c;每种方式都有其特定的用途和优势。 1、使用字符串字面量初始化 最常见和简洁的初始化方式是使用字符串字面量。在这种方法中&#xff0c;我们直接将一个用双引号…...

npm run dev 报错:Error: error:0308010C:digital envelope routines::unsupported

npm run dev时报错如下 原因&#xff1a;更换node版本导致 解决&#xff1a; 修改package.json文件&#xff0c;在相关构建命令之前加入 SET NODE_OPTIONS–openssl-legacy-provider 运行成功...

模板方法模式:优雅封装不变,灵活扩展可变

引言:代码复用与扩展的艺术 在日常开发中,我们常遇到核心流程固定但某些步骤需差异化的场景。例如: 数据库操作的通用流程(连接→执行→关闭)HTTP请求的固定步骤(构建请求→发送→解析响应)报表生成的骨架(数据获取→格式转换→输出)模板方法模式正是为解决这类问题而…...

基于LLaMA-Factory和Easy Dataset的Qwen3微调实战:从数据准备到LoRA微调推理评估的全流程指南

随着开源大模型如 LLaMA、Qwen 和 Baichuan 的广泛应用&#xff0c;其基于通用数据的训练方式在特定下游任务和垂直领域中的表现仍存在提升空间&#xff0c;因此衍生出针对具体场景的微调训练需求。这些训练涵盖预训练&#xff08;PT&#xff09;、指令微调&#xff08;SFT&…...

6.6本日总结

一、英语 复习默写list9list20 二、数学 学习线代第一讲&#xff0c;订正13讲1000题&#xff0c;写15讲课后题 三、408 学习计组2.2&#xff0c;写计组习题 四、总结 单词再背完一遍后背阅读词&#xff0c;未处理的习题堆积过多要及时处理 五、明日计划 英语&#xff…...

idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题

1、删除本地仓库中的文件 进入本地仓库对应jar包文件目录中删除_remote.repositories文件和结尾为.lastUpdated的文件 2、回到IDEA刷新Maven 3、查看之前引用不了的jar是否引入成功...

安全编码规范与标准:对比与分析及应用案例

在软件开发领域&#xff0c;尤其是涉及安全关键系统的开发中&#xff0c;遵循编码规范和标准是确保软件质量和安全性的重要手段。除了CERT C、CERT Java和MISRA外&#xff0c;还有其他多个与安全相关的编码规范和标准&#xff0c;以下是一些主要标准的对比说明&#xff1a; 一…...

(33)课54--??:3 张表的 join-on 连接举例,多表查询总结。

&#xff08;112&#xff09;3 张表的 join-on 连接举例 &#xff1a; &#xff08;113&#xff09; 多表查询总结 &#xff1a; &#xff08;114&#xff09;事务 &#xff1a; &#xff08;115&#xff09; &#xff08;116&#xff09; &#xff08;117&#xff09; …...

集群与分布式与微服务

1.集群和分布式 1.1 集群是个物理形态&#xff0c;分布式是个工作方式 分布式&#xff1a;一个业务分拆多个子业务&#xff08;节点&#xff09;&#xff0c;部署在不同的服务器上集群&#xff1a;同一个业务&#xff0c;部署在多个服务器上 1&#xff09;分布式是指将不同的…...

8.axios Http网络请求库(1)

一句话总结 Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js&#xff0c;帮助你轻松发送请求、接收响应。 Axios is a Promise-based HTTP client for the browser and Node.js, making it easy to send requests and handle responses. &#x1…...

Python爬虫实战:研究mechanize库相关技术

1. 引言 随着互联网数据量的爆炸式增长,网络爬虫已成为数据采集和信息挖掘的重要工具。Python 作为一种功能强大且易于学习的编程语言,拥有丰富的爬虫相关库,如 Requests、BeautifulSoup、Scrapy 等。Mechanize 库作为其中的一员,特别擅长处理复杂的表单提交和会话管理,为…...

c++算法学习5——贪心算法

一、贪心算法的原理 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取当前最优决策的策略&#xff0c;通过局部最优解的累积逼近全局最优解。其核心思想是“着眼当前&#xff0c;忽略整体”&#xff0c;适用于满足​​最优子结构​​和​​贪心选…...

SpringCloud学习笔记-3

声明&#xff1a;笔记来源于网络&#xff0c;如有侵权联系删除 1 openfeign 1&#xff09;openfeign远程调用声明式实现 1.启动类中添加注解 EnableFeignClients EnableFeignClients SpringBootApplication public class OrderMainApplication {public static void main(St…...

【时时三省】(C语言基础)局部变量和全局变量

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 以前所见到的程序大多数是一个程序只包含一个main函数&#xff0c;变量是在函数的开头处定义的。这些变量在本函数范围内有效&#xff0c;即在本函数开头定义的变量&#xff0c;在本函数中可…...

An improved YOLACT algorithm for instance segmentation of stacking parts

【一种用于堆叠零件实例分割的改进 YOLACT 算法】 摘要 实例分割在众多应用场景中均是一项至关重要的任务。对于计算机视觉而言,堆叠物体的实例分割是一项挑战。为应对这一挑战,我们提出了一种改进的 YOLACT(You Only Look At CoefficienTs)算法。为提高密集堆叠场景下特…...

使用API网关Kong配置反向代理和负载均衡

简介 Kong 是一个微服务API网关。 Kong是一个云原生&#xff0c;快速&#xff0c;可扩展和分布式微服务抽象层&#xff08;也称为API网关&#xff0c;API中间件或在某些情况下为Service Mesh&#xff09;。 作为2015年的开源项目&#xff0c;其核心价值在于高性能和可扩展性。…...

BugKu Web渗透之eval

启动场景&#xff0c;打开网页&#xff0c;显示的是一段代码。 步骤一&#xff1a; 分析代码。 代码大概意思是&#xff1a; <?php//包含"flag.php"的文件include "flag.php"; //获取网页请求的hello数据$a $_REQUEST[hello]; //显示变量a的详…...

DAY45 可视化

DAY 45 Tensorborad 之前的内容中&#xff0c;我们在神经网络训练中&#xff0c;为了帮助自己理解&#xff0c;借用了很多的组件&#xff0c;比如训练进度条、可视化的loss下降曲线、权重分布图&#xff0c;运行结束后还可以查看单张图的推理效果。 如果现在有一个交互工具可…...

11.RV1126-ROCKX项目 API和人脸检测画框

一.ROCKX的API 1.ROCKX的作用 ROCKX的AI组件可以快速搭建 AI的应用&#xff0c;这些应用可以是车牌识别、人脸识别、目标识别&#xff0c;人体骨骼识别等等。主要用于各种检测识别。例如下图&#xff1a; 2.ROCKX人脸识别的API rockx_ret_t rockx_create(rockx_handle_t *han…...

超构光学与 AR 的深度融合 | 攻克 VAC 与眼动范围难题

原文信息 原文标题&#xff1a;“Three-dimensional varifocal meta-device for augmented reality display” 第一作者&#xff1a;宋昱舟&#xff0c;袁家琪&#xff0c;陳欽杪&#xff0c;刘小源 &#xff0c;周寅&#xff0c;程家洛&#xff0c;肖淑敏*&#xff0c;陈沐…...

[ Qt ] | 与系统相关的操作(三):QFile介绍和使用

目录 之前的操作文件的方式 Qt中的文件操作简介 QFile 打开 读 写 关闭 一个例子来说明 QFileInfo 之前的操作文件的方式 C语言中&#xff0c;fopen 打开文件&#xff0c;fread fwrite 读写文件&#xff0c;fclose 关闭文件。 C中&#xff0c;fstream 打开文件&…...

RetroMAE 预训练任务

RetroMAE 预训练任务的具体步骤&#xff0c;围绕 编码&#xff08;Encoding&#xff09;、解码&#xff08;Decoding&#xff09;、增强解码&#xff08;Enhanced decoding&#xff09; 三个核心阶段展开&#xff0c;以下结合图中流程拆解&#xff1a; 一、阶段 A&#xff1a;…...

软件工程:如何做好软件产品

1、什么是产品 从项目到产品 产品&#xff1a;满足行业共性需求的标准产品。即要能够做到配置化的开发&#xff0c;用同一款产品最大限度地满足不同客户的需求&#xff0c;同时让产品具有可以快速响应客户需求变化的能力。 好的产品一定吸收了多个项目的共性&#xff0c;一定是…...

蓝桥杯 省赛 2025python(B组)题目(分析)

目录 第一题 为什么答案是103而不是104&#xff1f; 第二题 为什么必须按长度排序&#xff1f; 第三题 易错点总结 第四题 逻辑问题&#xff1a; 可能超过时间复杂度的代码示例 1. 暴力枚举所有可能的子串 2. 递归回溯 第五题 1. 暴力枚举法 2. 优化枚举 3.数…...