别再只把Keystone当认证了!聊聊OpenStack这个“服务总机”的实战配置与排错
2026/4/23 17:04:54
要理解为什么选择C语言,我们需要先了解计算机语言的发展历程。这就像了解人类语言从象形文字到现代文字的发展一样有趣。
计算机最初只能理解二进制代码,即由0和1组成的指令。
10110000 01100001 ; 将数字97加载到寄存器特点:
类比:就像用摩尔斯电码写小说,虽然能表达,但极其繁琐。
为了解决机器语言难读难写的问题,人们发明了汇编语言,用简短的助记符代替二进制代码。
MOV AL, 61h ; 将十六进制61(十进制97)移动到AL寄存器特点:
局限性:不同CPU有不同的汇编语言,程序无法在不同计算机间移植。
人们希望有更接近人类自然语言的编程语言,于是诞生了高级语言。
早期代表:
特点:
问题:这些语言要么太专业化(如FORTRAN),要么效率不高。
1969年,贝尔实验室的肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)开始开发一个名为Unix的新操作系统。
他们最初使用汇编语言编写Unix,但很快发现:
肯·汤普森先设计了一种名为B语言的语言,用于重写Unix。B语言基于BCPL语言,但更简洁。
B语言的局限:
为了解决B语言的问题,丹尼斯·里奇在B语言的基础上创造了C语言。
C语言的设计目标:
// C语言的早期示例main(){printf("Hello, World!\n");}名字的由来:因为B语言的下一个字母是C,简单直接!
1973年,肯·汤普森和丹尼斯·里奇做出了一个重大决定:用C语言重写Unix内核。
这个决定的意义:
从此,C语言与Unix操作系统一起迅速发展。
C语言的成功不是偶然的,它背后有一套清晰的设计哲学:
C语言假设程序员知道自己在做什么,给予程序员极大的自由度。
对比其他语言:
# Python:保护程序员不犯错x=[1,2,3]y=x[10]# 运行时报错:索引越界// C:信任程序员,但后果自负intarr[3]={1,2,3};intx=arr[10];// 编译通过,运行时可能崩溃或产生不可预测行为优点:灵活性强,能进行底层操作
缺点:容易出错,需要程序员更加小心
C语言的核心非常小巧。ANSI C标准(1989年)只定义了32个关键字:
| 数据类型 | 控制语句 | 其他 |
|---|---|---|
| char, int, float, double |