和朋友说起,学习c++的一点感触:
你应该知道,当时,发明c++的人,想要设计一门新的语言。
这门语言其实并不简单地能够支持面向对象的编程范式。
还支持通用编程等范式。
但是,他在设计一个新的东西的同时,又希望,曾经成千上万的c代码不需要太大的修改,就能够继续编译使用。
也就是说,那些程序,我们不需要重新写。
他的方法很巧妙,他设计的所有的新东西,都有一些特性,使得在某种特殊情况下,程序还能像以前c那样子写。
但是,他这一点兼容性的设计,带来的问题是,很多人用c++,就很喜欢这些特性,喜欢去构建这些特殊情况,还像以前的c那样子去写一些带着black magic性质的程序,实则,那些是面向对象等范式里面不希望有的:需要直接操控内存和管理内存。
所以,我们以前学语言,可能习惯了,哦,多了解一点语言特性,然后我就更加了解这门语言。
c++的语言特性非常复杂,但是,学习时,重点并不是会用更多的特性,而是知道,在做某种范式的编程的时候,哪些特性最好不要用。
这和我们以前学东西的直觉是相反的。