从当代软件发展趋势和现状看,个人觉得应该化分为三个层级:
一、低级语言
汇编语言和C语言。这类语言基本上主要功能是操纵硬件,执行效率最高,主要用于开发操作系统、各类api/sdk,高级程序语言自举、数据库、浏览器、Mcu驱动、单片机、CAD工业软件和智能化硬件驱动程序、游戏图形驱动如OpenGL、direct等。
二、中级语言
中级语言是编译型语言,这里分为两个小类型:
1、native code。以Delphi、各类C++编译器、C#、Rust、Go为代表。这类语言属编译型语言,生成原生代码,具有面向对象的特征。编译为与cpu架构指令集相关的二进制代码。随着语言功能的发展,这类语言能跨软件平台开发程序,也就是能交叉开发android/win/ios/linux程序,但多数尚不具备硬件跨平台能力,也就是只能开发x86、Arm、Risc V5架构代码中的某一种。
2、byte code 。运行在.net上的visual studio系列(c++\c#\vb++\J++等)、java及java系列dart、fluttet和objective C,它们面向对象,也属于编译型语言,但编译为byte code中间码而不是cpu二进制代码,执行效率要比上面纯编译型语言差一个数量级。由于垄断型大企业有强大的技术和生态操控力,例如jvm具有硬件和软件跨平台能力,当然只要微软愿意.net也可以硬件跨平台,即一次编程到处编译,可执行程序能在x86、linux、mips甚至国产cpu上的各类操作系统上执行。
中级语言兼具开发效率和执行效率,广泛用于构建各类应用软件、政府企业商务军事云平台、信创产业、中间件、企业erp、工业互联网、大数据、win/linux桌面和服务器后端开发领域,是主要的工业、商业生产工具。
三、高级语言
高级语言工作机制是解释型,弱类型数据。包括了vb、Python、PHP、typescript、javascript及各种框架vue、React、angular属于高级语言。它们主要用于web和移动的表现层前端开发,是商务和各类管理型云平台的主要开发工具。高级语言需要解释器,在运行时解释执行,它们的工作能力取决于解释器。高级语言的不足是目标程序巨大,依顿配套库文件,执行效率不高。但这类语言非常灵活,编程效率高,只要解释器足够强大,它们易于实现跨操作系统和Cpu硬件跨平台。
四、写在最后
由上可见,三种层级的语言各有分工,无所谓优劣。而且中级与高级语言界域不是很绝对,有相互渗透的趋势。我们大陆程序员分布有些不均衡甚至是畸形,70%开发人员挤在高级语言这个层级,从事外包商务开发,而操作系统、中间件和数据库系统级软件开发人员很少。这样的后果是我们没有自已的生态话语权,我们在全球软件影响力几乎为零,只能在别人的产品上做二次三次开发。我们的软件工程师应该发扬工匠精神,多钻研低级中级语言,创建我们的软件生态。