仓颉编程语言是什么
仓颉编程语言简介
仓颉语言类似于Go和Java语言。仓颉编程语言的设计理念和语法结构与Go和Java有相似之处,能够兼容它们大部分的语法语义,这使得从使用Java和Go的开发者能够无缝切换到仓颉语言。
仓颉编程语言是一款面向全场景智能的新一代编程语言,主打原生智能化、天生全场景、高性能、强安全。主要应用于鸿蒙原生应用及服务应用等场景中,为开发者提供良好的编程体验。
本文主要完成仓颉编程语言-首次体验,let’s go!!!
官方链接如下:
https://cangjie-lang.cn/?utm_source=os_contribution_activities
仓颉编程语言的特点与应用场景
华为仓颉编程语言:全场景开发的未来?
华为的仓颉编程语言被定位为“一款面向全场景应用开发的现代编程语言”,其设计理念包括高效编程、安全可靠、轻松并发和卓越性能。仓颉支持一系列面向应用开发的工具链,如语言服务(高亮、联想)、调试(跨语言调试、线程级可视化调试)、静态检查、性能分析、包管理、文档生成、Mock工具和测试框架等,进一步提升软件开发体验和效率。
仓颉编程语言的主要特点是原生智能化、天生全场景、高性能和强安全。它融入了鸿蒙生态,为开发者提供良好的编程体验。
与之前推出的ArkTs不同,仓颉是完全自研的,没有基于任何编程语言演进。仓颉具有简洁、静态编译、多范式、类型安全、内存安全、高效并发和兼容语言生态等特点。
如果说ArkTs是对鸿蒙客户端开发的赋能,那么鸿蒙服务端赋能者便是仓颉。
仓颉编程语言的应用场景主要包括如下两个
鸿蒙应用场景
在鸿蒙应用场景中,仓颉编程语言凭借对现代语言特性的集成、全方位的编译优化与运行时实现,以及开箱即用的 IDE 工具链支持,为开发者缔造了友好的开发体验和卓越的程序性能。此外,面向未来的鸿蒙 AI 原生应用开发,仓颉语言提供了面向开发者的全套内嵌 Agent DSL( Agent DSL 是仓颉团队现在正在畅想和尝试的 AI 原生能力,它是一种专为 AI Agent 开发和多 Agent 协同而设计的领域特定语言) 的编程框架以及智能化开发工具,便于开发者高效地完成鸿蒙 AI 原生应用的开发工作。
服务端/云化场景
在云化场景中,仓颉编程语言提供了微服务应用开发框架,提供基于编译前处理模式的IOC容器、AOP切面编程、 ORM和事务管理、端到端的异步请求以及与其他组件快速对接等能力,帮助开发者快速构建微服务应用,并且通过仓颉轻量级用户态线程以及高性能网络协议库,能够充分利用系统资源,高效开发出高性能云服务应用。同时,仓颉社区协同合作伙伴以及开发者,共同构建了丰富的三方库及中间件生态,方便开发者构建仓颉程序。
仓颉编程语言的应用案例
现在仓颉编程语言也有着一些优秀的应用,比如工商银行,七猫阅读器和京东等,这些企业对仓颉编程语言的应用是给广大编程开发人员的强有力信息。
仓颉编程语言使用案例
仓颉编程语言支持在线使用和离线本地使用两种
在线使用
在线使用比较简单,但需要注意的是,在线使用时,尽可使用仓颉编程语言的部分特性,如下
关于在线体验
1.在线体验是仓颉编程语言官网提供的Web在线编码体验服务,您可以在Web代码编辑器中体验编写仓颉代码并运行
2.您在Web代码编辑器中编写代码并点击运行,代码会在后端服务器的Sandbox中运行并返回结果
3.出于对在线体验功能的稳定性以及安全性的考虑,我们禁止了部分系统调用,保留了一些非系统调用的标准库接口
4.如果出现"Runtime Exception XXXX XXXX",即为您的代码中出现了被禁用的系统调用
5.在线体验不会存储任何开发者的任何代码,在您关闭网页后代码会被删除,请您保存好自己的代码
进入在线开发页面的方法如下:
单击仓颉编程语言在线网页即可进行仓颉编程语言在线开发。
在线开发页面如下:
单击"点击运行"即可查看到页面输出了"Hello World"这句话,
现在对于学编程的新手来说,几乎学习每一门编程语言,写的第一段代码都是打印输出HelloWorld。可为什么是输出HelloWorld,而不是输出其他的内容呢?
HelloWorld最早是由 Brian Kernighan 创建的。1978年,Brian Kernighan写了一本名叫《C程序设计语言》的编程书,在程序员中广为流传。他在这本书中第一次引用的Hello World程序。只是后来当一本杂志在采访他的时候,他自己对这段传奇故事中一些记忆已经有点儿模糊了。当他被问及为什么选择Hello, World!时,他回答说,我只记得,我好像看过一幅漫画,讲述一枚鸡蛋和一只小鸡的故事,在那幅漫画中,小鸡说了一句Hello World。
再来相对进阶一点的案例:
输出一个99乘法表
main(){
for(w in 0..=9){ //变量:w(默认数据类型为Int64 取值范围:1~9
for(j in 1..=w){ //变量:j(默认数据类型为Int64 取值范围:1~9
print("${j}*${w}=${j*w}\t") //打印输出九九乘法表,\t为转义
}
print("\r\n") //换行
}
}
输出如下
离线下载
仓颉编程语言支持本地使用,首先进入下载中心,链接如下:
https://cangjie-lang.cn/download
下载STS Version版本
单击STS Version的即刻下载,调整到下载页面
单击Windows下的下载选项,完成下载。
解压压缩包到制定目录下
在 Windows 平台上,仓颉为开发者提供了zip格式的安装包,把安装包解压到适当目录。
在安装包中,仓颉为开发者提供了三种不同格式的安装脚本,分别是 envsetup.bat,envsetup.ps1 和 envsetup.sh,可以根据使用习惯及环境配置,选择一种执行:
若使用 Windows 命令提示符(CMD)环境,请执行:
path\to\cangjie\envsetup.bat
若使用 PowerShell 环境,请执行:
. path\to\cangjie\envsetup.ps1
若使用 MSYS shell、bash 等环境,请执行:
source path/to/cangjie/envsetup.sh
本文参与CMD环境
查看下envsetup.bat批处理文件中的内容如下:
@REM Copyright Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
@REM This script needs to be placed in the root directory of installation of Cangjie compiler and libraries.
@echo off
REM Set CANGJIE_HOME to the path of this batch script.
set "CANGJIE_HOME=%~dp0"
REM Windows searches for both binaries and libs in %Path%
set "PATH=%CANGJIE_HOME%runtime\lib\windows_x86_64_llvm;%CANGJIE_HOME%bin;%CANGJIE_HOME%tools\bin;%CANGJIE_HOME%tools\lib;%PATH%;%USERPROFILE%\.cjpm\bin"
执行envsetup.bat命令
为了验证是否安装成功,请在以上命令环境中继续执行 cjc -v 命令,如果输出了仓颉编译器版本信息,表示已经成功安装了仓颉工具链。
cjc -v
输出如下
到此仓颉编程语言安装完成
注意:
基于 zip 安装包和执行脚本的安装方式,类似于 Linux 平台,即 envsetup 脚本所配置的环境变量,只在当前命令行环境中有效,如果打开新的命令行窗口,需要重新执行 envsetup 脚本配置环境。
卸载与更新
运行仓颉安装目录下的 unins000.exe 可执行文件,跟随卸载向导点击操作,即可完成卸载。
若需要更新仓颉工具链,需要先卸载当前版本,然后按上述指导重新安装最新版本的仓颉工具链。
下载Canary Version版本
如果想跟踪最新版本,可以选择Canary Verison版本,该版本需要申请,如下:
点击提交,即完成版本的申请,等待通知就好。
这里有一点不满的地方就是,单击提交后,会弹出一个盲盒广告,这点不够友好。
离线开发
创建一个文本文件,名称为hello.cj
内容为:
main(){
for(w in 0..=9){ //变量:w(默认数据类型为Int64 取值范围:1~9
for(j in 1..=w){ //变量:j(默认数据类型为Int64 取值范围:1~9
print("${j}*${w}=${j*w}\t") //打印输出九九乘法表,\t为转义
}
print("\r\n") //换行
}
}
在该目录下打开CMD终端,执行如下命令
cjc hello.cj -o hello.exe
过程如下:
输出如下:
在CMD端执行hello.exe,成功输出99乘法表。
如果直接点击hello.exe执行,会弹出如下信息。
由于找不到 libsecurec.d,无法继续执行代码。重新安装程序可能会解决此问题。
由于找不到 libcangjie-runtime.dl,无法继续执行代码。重新安装程序可能会解决此问题。
总结
到此完成了仓颉语言的在线和离线下载测试,目前感觉仓颉语言与C语言的使用比较类型,更多的感触,我会持续更新。
仓颉编程语言作为一个新出现的语言,对其抱有很大的希望,但一个语言的发展也需要很多年的完善,一路同行,共同进步。