百科问答小站 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 大法好。




  

相关话题

  为什么很少听到有人在用 Windows 编程? 
  快奔四的人了,开始学C++,是否太迟了? 
  如何理解编程语言中「流」(stream)的概念? 
  内地学子为获得特区永久居民身份而港漂七年是怎样的体验? 
  长得显老是怎样一种体验? 
  C 与 C++ 的真正区别在哪里? 
  有能力出国(念书/移民)却主动放弃是一种怎样的体验? 
  买到笑得合不拢嘴的东西是怎样一种体验? 
  面向对象程序设计比传统的面向过程程序设计更有什么好处? 
  现有的编程语言当中,哪些和自然语言更接近? 

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





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