百科问答小站 logo
百科问答小站 font logo



为什么好多人说C++代码丑? 第1页

  

user avatar   yao-dong-27 网友的相关建议: 
      

C++其实是四种语言的聚合体,四种编程范式被统一到了一个编译器里,共享了很多关键词和语法。

C++ 包含了宏语言,继承自C语言的宏,但是C++又玩出了些新花样

C++包含了传统的面向过程编程,继承自C语言,扩展了一些语法,比如可以随便定义局部变量,可以函数参数重载,可以算符重载,有单行注释,是个更好用的C语言

C++包含了面向对象编程范式,有class,继承派生,有虚函数,有构造析构,这部分基本跟后来的OOP语言都差不多

C++还包含了元编程,这就是template<>这部分了,最复杂的也就是这部分,C++显然有点玩过头了,后来的语言虽然有些也支持泛型,但是都比较克制,没有C++玩得这么花哨。

当你按照四种语言分别去编写C++的时候,其实还好,但是当混合使用四种范式,玩不好就会搞出奇丑无比晦涩难懂的代码。

典型的就是STL,表面上看是元编程,但是里面也是OOP思想,代码里包含了大量宏,用来处理不同编译器开发环境的适配,应对不同编译选项需求,比如调试需求,异常处理需求等,到了实实在在的算法部分STL也不装逼了,老老实实写起了面向过程的C语言,比如std::map背后的红黑树的实现,大量的if else 和指针操作,完全就是C语言的样子。

当这四种编程范式在STL里面混合的时候,代码就看起来很丑很难懂了,好在STL本来就不是用来给人类阅读的,编译器能看懂就行。

但是有些人也许不这么想,比如:

傻瓜都会写出能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码。
-- Martin Fowler

user avatar   pansz 网友的相关建议: 
      

开局一张图,剩下全靠猜?这个没法评价。

从软件的角度虽然我能想出两三种导致这个现象的原因,但非正式发布的产品出现任何问题都是常见现象。盲人摸象的评价没有必要。

跟11代没差别,这个肯定是违背常识的,要知道11代i9只有16线程,12代i9有24线程,24线程超越16线程并不需要多么高超的优化技巧。

调度优化的主要难题是当我们只需要少量线程运作的时候究竟把这个线程安排在哪个核心。

然而,对于全核心全线程同时计算的场景来说,反正都是全核心上场,根本不需要什么优化,谁来都是全核心工作。

如果这个软件能把所有核心用满的话,没道理性能不变。所以肯定有某个环节出了问题。正式版本再说吧。




  

相关话题

  有人对 C++ 基本数据类型采用 int x{5}; 的方式进行初始化吗? 
  c/c++语言中,如果不把声明和实现分开,而是直接一起写到头文件中,会有什么不好的影响? 
  通俗地讲为何要有返回值? 
  为什么没有新的支持底层达到类似C++这种程度,而易用性达到C#的语言出现? 
  怎么给设备加个usb口读其他设备上数据? 
  以C++为核心语言的高频交易系统是如何做到低延迟的? 
  如何开始用 C++ 写一个光栅化渲染器? 
  cygwin和mingw选哪个? 
  C++的核心究竟是什么?学到什么程度才算精通? 
  为什么同为系统级编程语言,Rust 能拥有现代构建/包管理工具,C++ 却不能? 

前一个讨论
qt前景如何?
下一个讨论
XML到底是干什么的?





© 2025-03-26 - tinynew.org. All Rights Reserved.
© 2025-03-26 - tinynew.org. 保留所有权利