从华为推出仓颉编程语言引发的对编程语言的思考
今年 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. 选择编程语言考虑因素
待开发系统的应用领域,即项目的应用范围。
科学工程计算。需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有 FORTRAN 语言、C 语言等。
数据处理与数据库应用。SQL 为 IBM 公司开发的数据库查询语言,4GL 称为第 4 代语言。
实时处理。实时处理软件一般对性能的要求很高,可选用的语言有汇编语言、Ada 语言等。
系统软件。如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C 语言、Pascal 语言和 Ada 语言。
人工智能。如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别等人工智能领域内的系统,应选择 Prolog、Lisp 语言。
用户的要求。如果用户然悉软件所使用的语言,那么会对软件的使用及日后的维护工作带来很多方便。
有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用 4GL。如果是面向对象方法,宜采用面向对象的语言编程。
将使用何种工具进行软件开发。软件开发工具可以提高软件开发的效率。良好的编程环境不但能有效提高软件生产率,同时能减少错误,有效提高软件质量。
软件开发人员的喜好和能力。采用开发人员熟悉的语言进行软件开发,可以节省开发人员进行学习和培训的资源,加快开发速度。编写语言的选择与软件开发人员的知识水平及心理因素有关,开发人员应仔细地分析软件项目的类型,敢于学习新知识,掌握新技术。
软件的可移植性要求。可移植性好的语言可以使软件方便地在不同的计算机系统上运行。
算法和数据结构的复杂性。科学计算、实时处理和人工智能领域中的问题算法较复杂,而数据处理、数据库应用、系统软件领域的问题,数据结构.比较复杂,因此选择语言时可考虑是否有完成复杂算法的能力,或者有构造复杂数据结构的能力。
平台支持。某些编程语言只在指定的部分平台上才能使用。
版权声明: 本文为 InfoQ 作者【轻口味】的原创文章。
原文链接:【http://xie.infoq.cn/article/335dbd00d88db149b94f89c45】。文章转载请联系作者。
评论