跳转到内容

计算机编程语言

几乎每个刚刚接触编程的人,写的第一个程序都是在屏幕中显示出 “Hello, World” 这个短语,代表你用计算机能懂的话与计算机进行第一次打招呼。实际上表示你写的代码没有错误,已经能正常运行了。

Hello, World 的起源要追溯到 1972 年,由贝尔实验室著名研究员 Brian Kernighan 初次使用,后来这样的用法迅速传播,直到今天也依然受欢迎,每门编程语言的入门介绍中,都会有它的出现。

下面是当前最流行的三种编程语言 PythonC++Java 的 “Hello, World” 写法,可以看到,每种编程语言都有不同的语法和表达方式。

::: code-group

# Python
print("Hello World")
// C++
#include <iostream>
using namespace std;
int main() {
cout << "Hello World";
return 0;
}
// Java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}

:::

计算机编程语言分类

从编程语言发展的历程来看,大致可分为机器语言、汇编语言与高级语言三大类,下图通过一些典型的代表性语言来描述了这三大类。

也就是上图中的 Scratch、Python、Java、C++、C 都是属于高级语言。除此之外,我们经常在网络上听到的一些编程语言(如:JavaScript、Go、Rust 等)也都属于高级语言。

越往下的语言与机器更接近,执行效率更高一些,但与人更远,可编写与可读性更差;而越往上的编程语言,对人更友好,编写程序的效率更高,可读性也更好,但执行效率往往更低一些。

1. 机器语言:

计算机内部全是用由 0 和 1 组成二进制数来表示的,机器语言就是直接用二进制来编写程序的一种语言。机器语言编写的代码可以被机器直接执行,运行速度快,但无论是可读性还是可编写性都非常差,现在几乎不会涉及到直接编写机器语言的场景了。

2. 汇编语言:

由于机器语言使用的是二进制代码,它对人类来说很难阅读和编写。所以,为了让人们更容易理解和编写程序,汇编语言应运而生。

汇编语言就是在机器语言的基础上添加了用英文单词表示的助记符(如 ADD 表示加法、MOV 表示移动)的一种低级语言,相对机器语言来说,编写汇编语言会更轻松一些。

下图是一段汇编语言编写的程序(反正我看不懂~)

section .data
hello: db 'Hello, World!',10
helloLen: equ $-hello
section .text
global _start
_start:
mov eax,4
mov ebx,1
mov ecx,hello
mov edx,helloLen
int 80h
mov eax,1
mov ebx,0
int 80h;

3. 高级语言:

机器语言与汇编语言可统称低级语言,我们现在大部分接触到的编程语言都属于高级语言,高级语言更加接近自然语言,编写更容易,也更易懂,但最终还是要被转换为机器语言去执行,因此程序的执行效率往往更低一些。

Scratch 这样的语言比较特别,因为是专门针对青少年学习编程开发的,都是一些积木块指令,我们通过拖拽拼搭就可以完成程序的编写,像搭乐高积木一样,学习门槛更低。

编译与解释型语言

对于任何一门高级语言来说,最终还是要转换为二进制代码去运行的,根据不同编程语言的执行方式或解释过程,高级语言又可以分为编译型和解释型两种类型

1. 编译型语言

编译型语言是一种在程序运行之前需要先进行编译的语言。编译器会将源代码(你写的程序)一次性转换成计算机能够理解的机器语言代码。这个转换的过程叫做编译。一旦编译完成,你就可以直接运行生成的机器语言代码,而不需要再次进行编译。

编译型语言特点:

  • 执行速度通常较快,因为它们直接在计算机硬件上运行
  • 对于开发人员来说,编译型语言调试和修改的成本较高,因开发过程中需要不断的编译和构建
  • 可移植性较差,因为编译型语言是直接生成二进制文件,在不同的计算机上可能需要重新编译才能运行

常见的编译型语言:

  • C 和 C++,是广泛使用的编译型语言,它们提供了高性能和直接访问底层硬件的能力
  • Go,一种现代的编译型语言,同样注重高效和简洁的代码编写,适用于网络编程和分布式系统

2. 解释型语言 解释型语言是一种在程序运行时逐行解释执行的语言。解释器会逐行读取源代码,并将其转换为计算机能够执行的指令。每执行一行代码,解释器都会即时地将其翻译成机器语言并执行。因此,解释型语言不需要预先编译,你可以边解释边执行代码

解释型语言特点:

  • 执行速度通常较慢,因为它们需要在运行时逐行解释和执行代码
  • 对于开发人员来说,解释型语言通常具有更友好的交互性和动态性
  • 可移植性较高,同一份源码,只需要不同平台上安排相应的解释器即可运行

常见的解释型语言:

  • Python,一种易学易用的解释型语言,它具有简洁的语法和强大的库支持,适用于各种领域,如数据分析、Web开发和人工智能等。
  • JavaScript,一种广泛用于前端开发的解释型语言,它可以在网页上直接运行,并为网页提供交互性和动态效果。

需要注意的是,并非所有的语言都严格属于编译型或解释型。有些语言是混合型的,结合了编译和解释的特性。例如,Java是一种编译型语言,但它使用了虚拟机(JVM)来解释执行字节码。

小结

编程语言本身没有绝对的好坏之分,每种语言都有它当初被发明出来时适用的场景。而且大多编程语言背后的编程逻辑都是相通的,学会一门常见的编程语言后,再学另外的编程语言学习也会简单很多。