在编程语言中,C语言已经快要50岁了。别的语言到了这个岁数基本上已经没人用了。比如Haskell、汇编等。但是,C语言不但没有被抛弃,反而总是保持和Java争夺第一名,这是为什么呢?我们在文章《为什么说“人生苦短,我用Python”》说了一系列Python的好处,C的不方便的地方,其实也是有情可原的。毕竟C是使用B语言开发的,语法要比较难,甚至它最开始的名字叫做new B。(你可以在下面找找B语言,早就没有了。)而Python是用C开发的,要是还是像C一样估计就要被骂了。所以Python添加了很多实用的函数。而C语言?能把C语言写出来就很伟大了。反正它的源代码是公开的,你让我改?自己改去。
首先,我们要知道,很多应用程序都是用C或者C++开发的,而C++又是基于C。所以,一旦C语言被抛弃,这些应用程序都无法维护。你可能会说“换一门语言呗”,其实大部分编程语言都是基于C的,你换谁?而且这些语言远远比不上C的速度。虽然Java速度可以和C比较,但是Java占用内存实在太大了。如果你不介意打开一个应用需要一个小时的话并且冒着你的内存溢出的危险,你可以使用Java开发的应用。(我的电脑上有一个Java的编辑器,开启差不多要十分钟。我还不如用记事本写代码嘞)换汇编?拜托,你真的知道什么是汇编吗?汇编连写个Hello World都要这样:
DSEG SEGMENT
MESS DB 'Hello,World!' ,0DH,0AH,24H
DSEG ENDS
SSEG SEGMENT PARA STACK
DW 256 DUP(?)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
BEGIN: MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET MESS
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END BEGIN
你能不崩溃?毕竟汇编是最开始的人们使用1010开发的,别骂人了。
其次,操作系统基本上都是使用C+汇编开发的,你要把C撤下来就别用Windows了,别用MacOS了,别用iOS了,干脆去打孔吧。
你会想,为什么非要用C开发操作系统?C++不好吗?Java不好吗?其实一方面是前面说到的速度问题,还有就是在开发操作系统的时候,你都不能直接输出字符,还需要自己写字体。这样的话,你用C++图什么?用Java图什么?还不是一样?
还有就是,C语言的小巧。
看到这里,你可能会怀疑我对小巧的定义。你看一看这段程序就知道了。这是一段HelloWorld。
C:
#include<studio.h>
int main(void){
printf("Hello World");
return 0;
}
或者
#include<studio.h>
int main(void){printf("Hello World");return 0;}
Java:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
或者
public class HelloWorld{public static void main(String[] args){System.out.println("HelloWorld");}}
明白了吗……真的是“Java有一种与生俱来的天赋,就是将小型应用变成大型的。”
这是因为,Java的思想是每一个程序都要有一个对象,就是说这个东西是活的(当然不是真的),也就是面向对象的编程。每一个对象都会生成一个.class文件,然后再用Java执行。C就没有。C的程序从main函数开始并结束,而且C是没有类这个概念的。就是说,你想让C面向对象都不行。
你明白了吗?