开历史倒车的C语言

我对C语言(含C++)非常没有好感,偶尔写个小程序都要恶心的要命!理由是:它太罗嗦了,而且随着时间的流逝,越来越罗嗦!

以C语言写hello,world为例,c语言刚发明出来的时候最初是这样的:

main()

{

 printf("hello,world\n");

}

但是,经过C语言标准委员会大牛们几十年不断的争吵、妥协,在后来形成的ANSI C、C89、C90、C99、C11等C语言标准中又几度更改,现在(2017年)的hello,world是这样的:

#include <stdio.h>

int main(int argc, char *argv[])

{

 printf("hello,world\n");

 return 0;

}

老式的写法在新的编译器下已经不能编译通过了,以上这6行就是最“规范”的写法。

但是在我看来,与最初版本相比的这些改变都是朝错误的方向变:

1 #include就不应该强制声明,完全可以由编译器在代码分析之后编译之前自动的做这个工作,用到那个头文件就include哪个头文件。

2 如果程序需要接受参数传入,那argc、argv两个参数当然应该写,但是一个不接受参数传入的程序也强制要这么写就脑残了。

3 既然绝大多数的main函数都是int类型而且都是以return 0结束,那么这完全没有必要声明类型和显式返回值。

不看源代码只看最终结果的话,这些修改也毫无意义,新的写法没有任何开发效率或者执行性能的提升,也没有可读性的改善,只是为了所谓的“规范”,为了规范而规范。

有人说:现在的主流IDE都能自动生成这些“罗嗦”的繁文缛节而不需要开发者手动输入。这是事实,但是真正的简介是没有这些“规范”,而不是定了“规范”然后推给IDE,既然是没用的东西,IDE也没有必要自动生成它们。

在我看来,这种所谓的规范就是教条主义的八股洁癖。C语言标准委员会陷入了一种误区,规范不是为了开发服务,相反开发是为了规范服务。

C语言标准委员会作为标准的制定者,应该牢记实践是检验真理的唯一标准,把注意力聚焦到:

如何让开发者的工作效率更高

如何让编写出来的程序执行更快

如何让程序发挥硬件的最大潜力(比如:C11支持了多线程就很好)

如何让程序有更好的可读性

不应该纠结于茴字的几种写法,也不要在意“语法糖”的指责,这样才能让C语言与时俱进,发挥余热。