仓颉编程语言在线体验
仓颉编程语言在线体验
前言:最近看到了仓颉编程语言官网上线,特地来了解,做一些仓颉相关介绍和个人体验感受。
仓颉编程语言在线体验
介绍
仓颉
先介绍一下“仓颉”吧,可能很多人还不了解。
“仓颉”,原姓侯冈,名颉,是中国古代传说中的文字创造者,被尊称为“文字之祖”…
哈哈哈,调皮了,此仓颉非彼仓颉,我们这里要说的仓颉是 华为自研编程语言“仓颉” 。
在 2024 年 6 月 21 日的华为开发者大会上,华为终端 BG 软件部总裁龚体正式官宣了华为自研仓颉编程语言。
从同名对应历史人物的来历,就感觉未来可期。
虽然是国产编程语言,但是不要误会,并不是中文编程。
大家或多或少都知道华为的鸿蒙系统(HarmonyOS),仓颉就是一种为鸿蒙生态量身打造的智能编程语言,支持鸿蒙系统下的应用开发。仓颉编程语言的推出,算是对鸿蒙生态系统的一个重要补充,在构建华为在软件生态建设上的尝试。仓颉能在鸿蒙系统下开发更好支持,毕竟亲生的。
语言特点
查看了白皮书、开发指南、教程和体验后,对仓颉的最大语言感受就是易用、高性能和强安全。整体感觉就是集百家之长,还功能挺全面的。
易用性
仓颉语言集百家之长,融合了很多优秀编程语言的范式和语法,在上面能看到很多编程语言的影子。
语言风格类似于自然语言,注重可读性和简洁性,无论是有没有编程基础都 好上手 。
仓颉虽然是对华为鸿蒙系统的一种补充,但是支持 跨平台 。
支持Windows、Linux、macOS以及华为的HarmonyOS,还适用于物联网。
内置库功能丰富 ,除了常用的涉及数据结构、常用算法、数学计算、正则匹配等,还内置了大数据处理和人工智能的库。
仓颉语言内置了高效的数据处理能力,简化了数据处理逻辑,适用大规模数据集的处理。
仓颉还支持AI主流框架,支持TensorFlow和PyTorch等主流AI工具,还有预训练模型和自动调参。
支持更多应用场景,提高开发效率,以前要用AI和大数据还得专门用Python才方便,仓颉直接内置支持。
仓颉编程语言还面向 全场景应用 ,可以写前端也可以写后端,万金油既视感。
高性能
高效并发 ,提供了用户态轻量化线程(原生协程),以及简单易用的并发编程机制,保证并发场景的高效开发和运行。
提供 无锁并发对象 ,在多线程共享内存并发场景容易产生数据竞争,通常需要手动设置互斥锁,而仓颉为用户提供无锁编程体验。
强安全
内存安全 ,支持自动内存管理,并在运行时进行数组下标越界检查、溢出检查等。
类型安全 ,仓颉编程语言是静态强类型语言,通过编译时类型检查尽早识别程序错误。
应用场景
学习一门语言很多时候是为了应用,所以关注语言应用场景是很有必要的,但是感觉应用场景比较少,也没有特别的案例更好体现前面所说语言特性的优势。
看了一下仓颉编程语言官网,在两方面 鸿蒙和服务端/云 ,简单来说就是客户端和服务端。
鸿蒙操作系统上更好的应用软件开发,服务端/云上微服务应用开发。
编程体验
学习资源
要体验一个新的语言,肯定是需要去了解相关的背景和知识的。
因为是新语言,资源肯定是不如C++和Python之类主流语言多的。
仓颉官网提供的教程以及文档,对于语法就很详细了,然后还搜了一些b站相关的仓颉编程语言相关的内容。
在学习资源者方面,仓颉的入门基础相关的教程足够,语法简洁明了,有编程基础上手还挺容易的。但是仓颉语言本身使用场景优势背景等介绍并不多。另外,相关的案例教程比较少,对于后续上手应用工程还是欠缺。
大部分教程停留在了入门基本语法介绍,缺乏API和应用案例教程。
编译
编译可以选择 在线和下载使用 。
直接线上编码即可,试试写一些小的程序逻辑。
下载使用,仓颉编程语言提供三个版本(LTS、STS 和 Canary),提供可以在Linux、Windows以及Mac上安装使用的软件包与帮助开发者在VScode平台上搭建开发环境的插件。 非常详细。
编码
在线体验非常方便,我就直接在线编译进行体验仓颉的。
Hello world
老规矩,入门第一步,先写“Hello world”。写起来,仓颉语言有种Python的感觉,就是简单明了。
main() {
println("Hello World")
}
在线编译使用也很方便,跟在线刷算法题编译器差不多。
排序
看完了入门基本语法,查询了官方的API,写个简单的排序不在话下,有编程基础上手挺快的!
直接调用了官方排序的API,提供的排序功能还挺多的。
import std.sort.*
main() {
var arr =[8,7,33,6,1]
println("原始数组,升序数组,降序数组,自定义排序(升序)")
println(arr)
arr.sort()
println(arr)
arr.sortDescending()
println(arr)
arr.sortBy(){a:Int, b:Int=>
if(a<b){
return Ordering.LT
}
else if(a>b){
return Ordering.GT
}
return Ordering.EQ
}
print(arr)
}
在线编译的感受
编译语言使用简单好上手 ,配合官方文档和入门教程,写点小的程序问题不大; 在线编译使用简单 ,但是没有自动缩进补全之类的功能,写点小的代码体验体验还可以; 仓颉相关的教程停留在基本语法介绍 ,相关API使用资源除了官方文档基本搜不到案例,官方给的案例也比较少,给编码使用提高了一些成本。
整体感受
优点
- 好上手仓颉。仓颉吸纳了现存的很多中编程语言的范式和语法,有其它语言基础上手会更简单;语言风格类似于自然语言,简单可读易上手。
- 跨平台支持。支持Windows、Linux、macOS以及华为的HarmonyOS,还适用于物联网。
- 支持AI主流框架。支持TensorFlow和PyTorch等主流AI工具,还有预训练模型和自动调参。
- 高效数据处理能力。内置高效数据处理库,简化了数据处理逻辑,适用大规模数据集的处理。
缺点
- 学习资源不足。目前搜索大部分学习资源都是基本语法的入门简单介绍,但是缺乏应用案例的学习资源。
- 生态系统不成熟。第三方库和工具支持可能较少。
- 性能不确定。性能方面对比的还没怎么看到,另外优化工具也并不多;使用场景的实际应用比较少,稳定性和风险有待评估。
总结
仓颉结合了很多语言的范式和语法的优势,例如简洁的语法和自动内存管理机制。另外,考虑了很多现代软件开发的需求,例如大数据支持、多平台和AI等。以后的发展非常值得期待。
但毕竟是新出来的编程语言,目前开发社区、功能和生态等都不是很完善,需要更多的时间去发展,以及更多开发者参与完善。期待未来有更多的应用案例作为学习,以及越来越多开发者参与进来。