百科问答小站 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++中 long 整数类型还有使用的意义吗? 
  有没有必要让 12 岁孩子学 C++? 
  为什么C++在构造函数和析构函数中不能抛出异常? 
  第2个孩子不是应该在第4个孩子之前完成任务吗? 
  编译器生成的汇编语句执行顺序为什么与C代码顺序不同? 
  为什么g++能够优化到动态库里的STL? 
  如何才能写出没有bug的程序? 
  有没有一本从电路开始讲然后汇编再到C语言的书? 
  埃式筛为什么只要筛到根号n就好了? 

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





© 2025-04-29 - tinynew.org. All Rights Reserved.
© 2025-04-29 - tinynew.org. 保留所有权利