安阳it吧 关注:4贴子:18
  • 0回复贴,共1

怎样读《C++ 编程思想》?

只看楼主收藏回复

作者:vczh
链接:O知乎用户: 怎样读《C++ 编程思想》? - 知乎
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
正如我在另一个怎样才能算精通C++还是什么的类似的问题的回答所说的,C++他爹B.S.因为不想把自己的信念强加到你们的身上,于是他给C++加入了几个范式。范式是用来解决一类问题的,所以C++可以解决几乎所有种类的问题,就跟F#和Scala所做的一样,而且所用的方法还不一样。譬如说做图形图像这种并行计算的,譬如说做编译器的类型推导这种递归计算的,譬如说做GUI框架这种响应式计算的,我还真没见过除了C++、Scala和F#以外的语言,可以针对每一类计算都有完全不同的、几乎最好的方法、并且还能在一门语言里面用上。当然这也导致了很多人的感觉,特别是像 @陈硕 那种精通于几个相似度高的领域的那样的,C++有大量的东西用不上。这不是废话嘛。做图像处理不做编译器的人,都会说什么【虚函数是**,虚继承更**,能不用就不用】。做编译器不做GUI的,都会说【接口就是搅屎棍】。做GUI不做图形的,都会说【瞧你那写的程序,不仅看不懂,可扩展性还巨差】。一个语言设计来解决10个问题,然后你明白了3个,你自然会觉得【为什么C++要有那些用来解决其他的7个问题的feature?】还有些人可能会说,【为什么不干脆用10种语言来解决10个问题,尽管他们都存在于同一个系统上?】这简直就是开玩笑。 C++比Scala和F#强的一点在于,你不要的feature你不用,就不会让你在运行时产生额外的负担。多么难得啊。你用Scala的Monad和F#的Computation Expression做东西的时候,还在担心我的程序他妈那么复杂编译器到底能不能优化啊,C++完全没这种问题。所以如果你要全面的了解C++的编程思想,那你就等于要让自己全面的了解各种技巧,那你就等于要求让自己能够全面的解决几乎所有种类的问题。这当然是很难得,人总有擅长和不擅长的地方。所以你不要急于求成,等到你解决的问题覆盖面足够广之后,你自然越来越熟悉C++的编程思想了。因此你不要介怀什么看了就忘了,看不进去什么的,这是正常的。#邯郸翱翔软件学院#


1楼2020-03-26 18:18回复