目录

仓颉编程语言在线体验

仓颉编程语言在线体验

前言:最近看到了仓颉编程语言官网上线,特地来了解,做一些仓颉相关介绍和个人体验感受。

仓颉编程语言在线体验

介绍

仓颉

先介绍一下“仓颉”吧,可能很多人还不了解。

“仓颉”,原姓侯冈,名颉,是中国古代传说中的文字创造者,被尊称为“文字之祖”…

哈哈哈,调皮了,此仓颉非彼仓颉,我们这里要说的仓颉是 华为自研编程语言“仓颉” 。

在 2024 年 6 月 21 日的华为开发者大会上,华为终端 BG 软件部总裁龚体正式官宣了华为自研仓颉编程语言。

从同名对应历史人物的来历,就感觉未来可期。

虽然是国产编程语言,但是不要误会,并不是中文编程。

大家或多或少都知道华为的鸿蒙系统(HarmonyOS),仓颉就是一种为鸿蒙生态量身打造的智能编程语言,支持鸿蒙系统下的应用开发。仓颉编程语言的推出,算是对鸿蒙生态系统的一个重要补充,在构建华为在软件生态建设上的尝试。仓颉能在鸿蒙系统下开发更好支持,毕竟亲生的。

语言特点

查看了白皮书、开发指南、教程和体验后,对仓颉的最大语言感受就是易用、高性能和强安全。整体感觉就是集百家之长,还功能挺全面的。

易用性

仓颉语言集百家之长,融合了很多优秀编程语言的范式和语法,在上面能看到很多编程语言的影子。

语言风格类似于自然语言,注重可读性和简洁性,无论是有没有编程基础都 好上手 。

仓颉虽然是对华为鸿蒙系统的一种补充,但是支持 跨平台 。

支持Windows、Linux、macOS以及华为的HarmonyOS,还适用于物联网。

内置库功能丰富 ,除了常用的涉及数据结构、常用算法、数学计算、正则匹配等,还内置了大数据处理和人工智能的库。

仓颉语言内置了高效的数据处理能力,简化了数据处理逻辑,适用大规模数据集的处理。

仓颉还支持AI主流框架,支持TensorFlow和PyTorch等主流AI工具,还有预训练模型和自动调参。

支持更多应用场景,提高开发效率,以前要用AI和大数据还得专门用Python才方便,仓颉直接内置支持。

仓颉编程语言还面向 全场景应用 ,可以写前端也可以写后端,万金油既视感。

高性能

高效并发 ,提供了用户态轻量化线程(原生协程),以及简单易用的并发编程机制,保证并发场景的高效开发和运行。

提供 无锁并发对象 ,在多线程共享内存并发场景容易产生数据竞争,通常需要手动设置互斥锁,而仓颉为用户提供无锁编程体验。

强安全

内存安全 ,支持自动内存管理,并在运行时进行数组下标越界检查、溢出检查等。

类型安全 ,仓颉编程语言是静态强类型语言,通过编译时类型检查尽早识别程序错误。

应用场景

学习一门语言很多时候是为了应用,所以关注语言应用场景是很有必要的,但是感觉应用场景比较少,也没有特别的案例更好体现前面所说语言特性的优势。

看了一下仓颉编程语言官网,在两方面 鸿蒙和服务端/云 ,简单来说就是客户端和服务端。

鸿蒙操作系统上更好的应用软件开发,服务端/云上微服务应用开发。

https://i-blog.csdnimg.cn/direct/5d12aeb49b894fec820880738214a427.png#pic_center

编程体验

学习资源

要体验一个新的语言,肯定是需要去了解相关的背景和知识的。

因为是新语言,资源肯定是不如C++和Python之类主流语言多的。

仓颉官网提供的教程以及文档,对于语法就很详细了,然后还搜了一些b站相关的仓颉编程语言相关的内容。

在学习资源者方面,仓颉的入门基础相关的教程足够,语法简洁明了,有编程基础上手还挺容易的。但是仓颉语言本身使用场景优势背景等介绍并不多。另外,相关的案例教程比较少,对于后续上手应用工程还是欠缺。

大部分教程停留在了入门基本语法介绍,缺乏API和应用案例教程。

编译

编译可以选择 在线和下载使用 。

直接线上编码即可,试试写一些小的程序逻辑。

下载使用,仓颉编程语言提供三个版本(LTS、STS 和 Canary),提供可以在Linux、Windows以及Mac上安装使用的软件包与帮助开发者在VScode平台上搭建开发环境的插件。 非常详细。

https://i-blog.csdnimg.cn/direct/1a801786a4eb47148dc6d4616b7250df.png#pic_center

编码

在线体验非常方便,我就直接在线编译进行体验仓颉的。

Hello world

老规矩,入门第一步,先写“Hello world”。写起来,仓颉语言有种Python的感觉,就是简单明了。

main() {
    println("Hello World")
}

在线编译使用也很方便,跟在线刷算法题编译器差不多。

https://i-blog.csdnimg.cn/direct/c1688046e17f46bbad1c2374f92cc6c8.png#pic_center

排序

看完了入门基本语法,查询了官方的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)
}

https://i-blog.csdnimg.cn/direct/a07c655586cd43cf8f3f792524ab2bac.png#pic_center

在线编译的感受

编译语言使用简单好上手 ,配合官方文档和入门教程,写点小的程序问题不大; 在线编译使用简单 ,但是没有自动缩进补全之类的功能,写点小的代码体验体验还可以; 仓颉相关的教程停留在基本语法介绍 ,相关API使用资源除了官方文档基本搜不到案例,官方给的案例也比较少,给编码使用提高了一些成本。

整体感受

优点

  1. 好上手仓颉。仓颉吸纳了现存的很多中编程语言的范式和语法,有其它语言基础上手会更简单;语言风格类似于自然语言,简单可读易上手。
  2. 跨平台支持。支持Windows、Linux、macOS以及华为的HarmonyOS,还适用于物联网。
  3. 支持AI主流框架。支持TensorFlow和PyTorch等主流AI工具,还有预训练模型和自动调参。
  4. 高效数据处理能力。内置高效数据处理库,简化了数据处理逻辑,适用大规模数据集的处理。

缺点

  1. 学习资源不足。目前搜索大部分学习资源都是基本语法的入门简单介绍,但是缺乏应用案例的学习资源。
  2. 生态系统不成熟。第三方库和工具支持可能较少。
  3. 性能不确定。性能方面对比的还没怎么看到,另外优化工具也并不多;使用场景的实际应用比较少,稳定性和风险有待评估。

总结

仓颉结合了很多语言的范式和语法的优势,例如简洁的语法和自动内存管理机制。另外,考虑了很多现代软件开发的需求,例如大数据支持、多平台和AI等。以后的发展非常值得期待。

但毕竟是新出来的编程语言,目前开发社区、功能和生态等都不是很完善,需要更多的时间去发展,以及更多开发者参与完善。期待未来有更多的应用案例作为学习,以及越来越多开发者参与进来。