写点什么

从华为推出仓颉编程语言引发的对编程语言的思考

用户头像
轻口味
关注
发布于: 刚刚
从华为推出仓颉编程语言引发的对编程语言的思考

今年 10 月 22 日,在华为开发者大会上,华为表示在 2022 年推出自研的编程语言仓颉,将鸿蒙和欧拉在应用开发生态上进行打通。这么多年的开发生涯,使用了包括 C/C++,Java、Python、Kotlin、JavaScript、C#等开发语言,不同的场景使用不同的语言,但是没有想过为什么要用该语言。对于新出的仓颉语言我们该有哪些期待呢?


我们知道除了上述用过的,还有其他 PHP、GO 等都是国外企业研发的,仓颉除了打上国货的标签,可能有人会期待是不是以后编程可以用中文了?这个我认为基本没有可能性,编程语言要考虑到的一点是简洁高效,目前的编程语言里的关键词都可以理解成是符号,如果这些符号都是中文会是一种怎样的景象? if 关键词改成如果,从输入两个字符改成输入六个字符,这成了开倒车了。


当然,编程语言除了本身的语法,还有 API 以及文档等,仓颉的中文文档我们倒是可以期待的。那么除了国产,还有什么是我们可以期待的?要解答这个问题我们明白我们选择一种编程语言是要考虑的因素。我们先来看看热门编程语言各自的优劣势。

1. 热门编程语言对比

Python

优势:简单易学,能够把用其他语言制作的各种模块很轻松地联结在一起。


劣势:速度较慢,且有一些特定情况下才会出现(无法重现)的 bug

C/C++

优势:可以被嵌入任何现代处理器中,几乎所有操作系统都支持 C/C++,跨平台性非常好


劣势:学习难度大,且拥有大量极为复杂的功能交互方式,容易造成资源浪费

Java

优势:世界上使用范围最广的语言 Java


劣势:占用大量内存,并且启动时间较长

C#

优势:全面集成.Net 库,提供出色的功能与完美的库访问能力


劣势:跨平台能力太差,且在国内就业环境不太好,收入较低

JavaScript

优势:学习难度低,并且掌握了 JavaScript 语言就等于成为能同时开发网页、后台、移动端的全栈工程师


劣势:过于依赖浏览器,且代码在用户电脑上运行,容易被别有用心的坏人恶意利用

SQL

优势:开发速度快,安全性好


劣势:SQL 开发速度是靠牺牲运行速度换来的,且可移植性极差

PHP

优势:社区庞大而活跃,易于快速上手


劣势:运行速度慢,且错误处理机制比较糟糕,需要支持大量旧版本的功能

Objective-C

优势:拥有丰富的工具和库


劣势:拥有自己独特的编程思路,与其他编程语言思路差别较大

Swift

优势:在 iOS 和 OS X 软件中占的代码比例越来越多


劣势:版本更迭太快,不同版本差别过大

Kotlin

优势:和 Java 的互操作性极佳


劣势:继承了 Java 劣势内容

2. 选择编程语言考虑因素

  1. 待开发系统的应用领域,即项目的应用范围。

  2. 科学工程计算。需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有 FORTRAN 语言、C 语言等。

  3. 数据处理与数据库应用。SQL 为 IBM 公司开发的数据库查询语言,4GL 称为第 4 代语言。

  4. 实时处理。实时处理软件一般对性能的要求很高,可选用的语言有汇编语言、Ada 语言等。

  5. 系统软件。如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C 语言、Pascal 语言和 Ada 语言。

  6. 人工智能。如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别等人工智能领域内的系统,应选择 Prolog、Lisp 语言。

  7. 用户的要求。如果用户然悉软件所使用的语言,那么会对软件的使用及日后的维护工作带来很多方便。

  8. 有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用 4GL。如果是面向对象方法,宜采用面向对象的语言编程。

  9. 将使用何种工具进行软件开发。软件开发工具可以提高软件开发的效率。良好的编程环境不但能有效提高软件生产率,同时能减少错误,有效提高软件质量。

  10. 软件开发人员的喜好和能力。采用开发人员熟悉的语言进行软件开发,可以节省开发人员进行学习和培训的资源,加快开发速度。编写语言的选择与软件开发人员的知识水平及心理因素有关,开发人员应仔细地分析软件项目的类型,敢于学习新知识,掌握新技术。

  11. 软件的可移植性要求。可移植性好的语言可以使软件方便地在不同的计算机系统上运行。

  12. 算法和数据结构的复杂性。科学计算、实时处理和人工智能领域中的问题算法较复杂,而数据处理、数据库应用、系统软件领域的问题,数据结构.比较复杂,因此选择语言时可考虑是否有完成复杂算法的能力,或者有构造复杂数据结构的能力。

  13. 平台支持。某些编程语言只在指定的部分平台上才能使用。

发布于: 刚刚阅读数: 2
用户头像

轻口味

关注

🏆2021年InfoQ写作平台-签约作者 🏆 2017.10.17 加入

Android音视频、AI相关领域从业者,开源RTMP播放器:https://github.com/qingkouwei/oarplayer

评论

发布
暂无评论
从华为推出仓颉编程语言引发的对编程语言的思考