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



学 C++ 是种怎样的体验? 第1页

  

user avatar   brglng 网友的相关建议: 
      

第一阶段:你学会了 C with Classes,然后把各种东西都包装成了 class;

第二阶段:为了实现多态,你学会了继承、虚函数、多继承和虚继承,然后你用这些技术改写了一些代码,实现了代码重用。你觉得很开心,感觉自己减少了代码量,提高了工作效率;

第三阶段:你学会了用抽象类作为接口,发现以前的继承关系太复杂,用接口更清晰,于是把代码都改成了单继承+接口。你觉得很开心,觉得自己设计了很好的架构;

第四阶段:为了实现和使用泛型容器,你学会了模板。你觉得很开心,又进一步提高了代码重用度;

第五阶段:你了解到了动态分派(Dynamic Dispatch)和静态分派(Static Dispatch),于是你把接口都改成了模板。你觉得很开心,不降低抽象程度却提高了代码执行效率;

第六阶段:你学会了异常。你觉得有点不爽,异常虽方便,但异常安全(exception safety)太难做到了;

第七阶段:你学会了移动语义,你觉得很开心,可以用值的形式写出更高效的代码;

第八阶段:你学会了 unique_ptr,shared_ptr。你觉得很开心,妈妈再也不用担心我写出异常不安全的代码了;

第九阶段:你注意到了 Rust 这个语言,然后有意无意地在自己的 C++ 代码中贯彻 Rust 的思想,比如多用移动语义、trait、const;

第十阶段:你学会了模板元编程,SFINAE,并成功地使用不到 30 行代码使编译器输出了 4G 错误信息。然后你用模板实现了一套类型安全的 trait 系统。你觉得很开心,编译器的错误提示终于可以看了;

第十一阶段:你用 gcc 6 编译了代码,然后用你库的人:what the f*ck??怎么全是 undefined reference?原来他用的是 gcc 4.8。你不得不用 gcc 4.8 重新编译。你发现 gcc 4.8 的 libstdc++ 的 ostringstream 没有实现移动构造函数;

第十二阶段:你准备把代码部署到服务器上,what the ffffffffffuuuuucccccccc...??!怎么全是 segfault???!!原来服务器的系统是 CentOS 6,libstdc++ 版本太低不兼容 C++11……你不得不在服务器上装了 gcc 4.8。后来你学会了静态链接 libstdc++;

第十三阶段:你再也不想用 C++ 了。你读了《Object Oriented Programming in ANSI C》和《Inside the C++ Object Model》,然后用 C 改写了全部代码,并实现了一套使用 virtual function 机制的动态分派系统;

第十四阶段:你用宏把动态分派全改成了静态分派,并在 C 里模拟了一套 trait 系统;

第十五阶段:你发明了一个编译到 C 的语言。

第十六阶段:Rust 大法好。




  

相关话题

  为什么时效上具有明显优势的基数排序(radix sort)没有快速排序流行? 
  会多门编程语言的你,最推荐哪3-5门语言? 
  在C++中,“?:”这个符号叫什么名字? 
  穷人家的孩子在贵族学校读书是一种怎样的体验? 
  成为知乎的大牛是一种怎样的体验? 
  医生接诊医生是种怎样的体验? 
  如何看待《你能吃得了清华大学的苦吗?》这篇文章? 
  第一天入职第二天就离职是种怎样的体验? 
  自己是个很污的人,是种怎样的体验? 
  跟职业拳击手打架是怎样一种体验? 

前一个讨论
中文里的“关系”一词如何用英语准确描述?
下一个讨论
为什么铁粉是黑色,而铁块是银白色?





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