百科问答小站 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++ 爱好者? 
  c++程序员怎么搭建一个完整的个人网站? 
  C/C++ 如何自定义printf函数的格式化符? 
  socket套接字在多线程发送数据时要加锁吗? 
  要设计一段C++程序将这组数按要求重新排序时,有哪些好的算法? 
  深入理解nginx中,第9章中有一句:利用指针的最后一位一定是0的特性。能解释一下这个特性? 
  为什么标准库的map要insert(pair(key,value))而不是insert(key,value)? 
  你们说的ABI,Application Binary Interface到底是什么东西? 
  工厂模式(factory Method)的本质是什么?为什么引入工厂模式? 
  在编程语言中,循环语句为何选择 while 而不是 when 作为关键词? 

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





© 2024-12-26 - tinynew.org. All Rights Reserved.
© 2024-12-26 - tinynew.org. 保留所有权利