为什么C语言没人喷

很多程序员喷C++复杂,喷Java啰嗦。我发现几乎没人喷C语言,这是为啥?

C是一门非常非常垃圾的语言。C号称最接近底层的高级语言,很多时候都是在和计算机底层打交道。但是C原生并不支持操作寄存器,只能通过内联汇编的方式进行。

而且C虽然是发明出来用于开发操作系统的,但是C是基于栈的,这意味着 C程序无法在没有栈配置的环境运行,而操作系统的Boot阶段怡恰是没有栈的。

还有,C语言的原生数据类型除了char是个字节以外其他的都是不统一大小的。这些缺陷造成的问题就是C是最适合嵌入式和操作系统开发的语言,但是却在这几个个方面却并不方便于嵌入式和操作系统开发。

所以不考虑代码效果,即无论是运行出错还是怎样,仅仅是功能上,一语言的缺陷也是相当大的。

为了解决这些问题,C23标准通过了多项提议(事实上早该通过了,为了兼容早期代码才拖延到现在),包括但不限于asm成为关键字_Bitlnt关键字、支持二进制字面量分段、#embed宏等,目的就是方便嵌入式和操作系统的开发(终于意识到C自己的风口在哪里了)。

另一方面,C的语言前端设计得也不够强大。语言类型系统不够完备,不支持有关类型的判断,这使得很多设计模式不能在C中方便地应用。

而且C语言的预处理功能设计得很弱,只能做一些文本替换和基本的宏判断。而且标准委员会在预处理这块比较保守,除了C23终于添加了C++的很多预处理命令外,基本没什么额外设计(#embed算是个例外).所以,就有人开发了一门叫做zig的语言用以代替C语言。zig提出了一种称之为

comptime的概念。被标识为comptime的程序会在编译期执行,并把运行结果放到调用的位置。comptime极大地扩展了语言的预处理功能,算得上是非常精妙的设计了。所以,C不是没人喷,只是别人喷的时候你没看到罢了。

别人都是一封封邮件发往标准委员会,或者直接设计一门新的语言,而不是跑到某些地方发牢骚(虽然这的确有助于发泄情绪)。不过这些喷C语言的人都是非常厉害的人物,千的都是改变码农界的大事,而普通人能做到精通C就已经很厉害了,至于喷就别想了,根本喷不到点子上。