Re: [分享] 学习 c++ 的文章

楼主: Sidney0503 (Sidney0503)   2016-07-06 11:10:05
※ 引述《descent (“雄辩是银,沉默是金”)》之铭言:
: http://blog.csdn.net/pongba/article/details/1611593
: 你应当如何学习C++(以及编程)(rev#1)
: http://blog.csdn.net/pongba/article/details/1930150
: 学习C++:实践者的方法(Beta1>)
: c++ 受害者才写得出来。
我的看法完全不一样
开场文章就说Effective C++和Modern C++ design这些书籍充斥太多"细节"
More Effective C++作者新书Effective Modern C++ 大概又会被这位写手笑太繁琐
甚至直接说boost大部分功能没用 在我看来都是这位文章写手的误解
事实上这些书重点不是细节 而是观念
Modern C++ design重点是把设计模式结合C++样板的想法
boost本来就是扩充函式库 常用的早并入STL之中了 还嫌boost不常用是想笑死谁
(有没有不好好活用STL跑去学lokii的八卦?)
Effective Modern C++主要在说明如何活用C++14的功能
某些操作是老一派C++不会的 早期一本书用十年二十年都可以 现在不一样
auto/nullptr这种自动追踪功能就是大幅减低设计负担 不会连auto都说过度设计吧哈哈
(有没有觉得C++样板太麻烦的八卦?)
if+goto就可以硬干所有东西了 何必需要这些高级功能?
再说 这些东西本来就是工具书 需要才用
谈个C++还可以扯到Algorithm的书 然后说不会在这种书中看到程式码
我以为我在学语言而不是学程式 根本譁众取宠
最后还扯到TDD但是却又不多着墨 随便抓个几段英文再说没空翻译
摆明只是想吸引文章浏览次数
这位作者本身没有筛选能力 却在第二篇谈筛选能力 我已经不知道从何吐槽了
使用C++不外乎就是为了样板/效能和庞大的程式库支援像是googleTest
反而嫌C++太占有地位 那请自行开发D语言函式库 搞到跟C++一样轻松我就用
想要学程式概念明明就有python ruby这种不用太在乎各种细节的物件导向语言
硬要强调C学语言概念不好 我可以称之你为cpp黑吗
作者: MysterySW (飯糰丸)   2016-07-06 11:16:00
光是boost::blank我就觉得很有用了XD
作者: bibo9901 (function(){})()   2016-07-06 11:20:00
愈多pattern, idiom等等, 其实是代表语言本身缺陷很多那些"细节"不过是为了避开"C++本身的限制"采取的workaround.
作者: shadow0326 (非议)   2016-07-06 11:26:00
随着modern c++的发展 其实越来越多idiom已经无用了
作者: james732 (好人超)   2016-07-06 11:29:00
不过我看Modern C++ design是真的挺挫折的...orz
作者: shadow0326 (非议)   2016-07-06 11:30:00
http://tinyurl.com/c2zqfv7 名单持续增加中
作者: Chikei ( )   2016-07-06 11:37:00
说实话,也不需要拿一堆后来的东西骂一篇2007的文章时空背景完全不一样,真正莫名其妙的是原po吧,拿着快10年前的文章在现在喊说是受害者才写得出的东西
作者: bibo9901 (function(){})()   2016-07-06 12:33:00
C++11/14/17 是有改进没错. 但很多缺点是改不掉的1. idioms/patterns 仍然多如牛毛2. 又增加了很多语言特性, 新旧特性交互关系更加复杂
作者: descent (“雄辩是银,沉默是金”)   2016-07-06 12:35:00
感谢你的心得, 有任何想法都很棒。
作者: bibo9901 (function(){})()   2016-07-06 12:35:00
整体来说这篇文章到今天仍然适用
作者: descent (“雄辩是银,沉默是金”)   2016-07-06 12:36:00
我是赞同文章的想法, 也觉得自己是类似的受害者。https://goo.gl/jdPv3F 这些书单真的很吓人。
作者: noonee (我和烤肉间只差一撮孜然)   2016-07-06 12:56:00
我个人是c++新手 基本上可以当作啥都不知道原po S大有不同看法的话 能不能讲讲看学c++的合适态度?我自己原来是写fortran 的还在了解c++的主要差异点
作者: steve1012 (steve)   2016-07-06 13:07:00
我觉得学的过程用的过程会慢慢体悟 不需要啥态度哈很舵东西一开始不懂 等用到了自然有体悟 尤其是你在学校写作业 很少会有很大架构的程式 也不需要让程式易懂自然拼凑一下就拿来用像是何时用template 何时用继承 去做interface 小程式感觉不出来
作者: noonee (我和烤肉间只差一撮孜然)   2016-07-06 13:32:00
我的状况有点不太一样 过去习惯用fortran 也写过有一些远超过学校做业范围的中型程式 不敢说是大程式还没到几十万行会需要学c++是因为几个互相桥接的 别人写的程式纷纷从fortran改用c++ 迫使我们也在思考 到底是先搞个接口就好 还是真的也要整个大程式重写也因为这样的关系 如果要重写 先要知道好在哪里 再来要先确认整体架构同时考虑未来维护坦白说 就我个人目前粗浅的认知 除了为了跟别人的程式连结以外 还没看到强烈的改用c++的理由
作者: steve1012 (steve)   2016-07-06 13:38:00
那可以看一下modern c++ design 哪本
作者: noonee (我和烤肉间只差一撮孜然)   2016-07-06 13:38:00
部分原因出在于我们的程式有大量浮点数值计算 同时会用到大量的大型矩阵 这在fortran里有很大的好处谢谢!
作者: descent (“雄辩是银,沉默是金”)   2016-07-06 13:51:00
Essential C++, 这本薄薄的, 看完应该可以接别人c++接口
作者: noonee (我和烤肉间只差一撮孜然)   2016-07-06 14:05:00
感谢各位!
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2016-07-06 19:03:00
n兄应该是作数值分析的吧.时至今日还有那么多研究单位还在fortran..真的是历史包袱
作者: wtchen (没有存在感的人)   2016-07-06 20:22:00
fortran不知道有无想要搞平行处理机制....
作者: freeunixer (御剑客)   2016-07-07 00:31:00
就跟 cobol 一样啊,不是不想换,是要换会转到哭出来...在上面已经堆太多现成可用的东西,除非你超威砍掉重练.
作者: CoNsTaR ((const *))   2016-07-07 02:59:00
idiom 和语言缺陷有什么关系 ==
作者: uranusjr (←這人是超級笨蛋)   2016-07-07 03:03:00
其实很多时候确实有关啊, 像 C++ Java 不是 null-safe所以会出现 Null Object Pattern 和建议用 referenceC 没有 memory scope 所以会出现特殊的函式参数回传惯例C++ 因为类似原因出现 smart pointer class 等等讲好听是语言特性, 难听点就是语言没做好, 只好自力救济
作者: andyjy12 (??)   2016-07-07 07:26:00
这两篇最大的问题在于他是10年前的产品。
作者: james732 (好人超)   2016-07-07 11:52:00
所以我有共呜是因为我大概也是在十年前学C++的... Q_Q
作者: rodion (r-kan/reminder)   2016-07-08 18:04:00
不是语言没做好吧 是语言一开始就把妥善使用内存的责任交付给语言的使用者 这本来就是C/C++语言的特色 也因为如这类型语言才能做到更好的效能&相容性
作者: bibo9901 (function(){})()   2016-07-08 18:53:00
如果"妥善使用内存"真的这么好用, 跟本不会有RAII和smart pointer这种半自动GC出现. 即使不说内存管理,为什么会有policy-based design? 还有 enable_if 这些除了折腾没有其他用处的技术? 因为语言本身缺少interface
作者: Clangpp (Clang++)   2016-07-08 20:34:00
C/C++已经发明很久了 当时可能根本没想到会这样
作者: rodion (r-kan/reminder)   2016-07-09 15:44:00
哪里有人说妥善使用内存容易了? 这本来就是这类语言的另一特色:高门槛 可以单方面说是缺点但不考虑其带来的好处:弹性高 就稍嫌失之武断
作者: cplusplus (对的人难寻)   2016-07-10 04:08:00
同意楼上,有强大的控制能力&弹性,另一方面就有其难处有些idiom就是为了补强弹性带来易出问题的地方,开发者易用性并不是最开始C++重点所在。另外RAII除了防止开发者易犯的问题,同时能提供绝对精准的资源控制,这是许多语言自动化上很难做到的。要同时在开发者易用性&绝对控制力都完美很难啊,一定有些不完美的地方。只能说C++真的不是创造给所有开发者用的语言,没需要少碰啊(XD?)

Links booklink

Contact Us: admin [ a t ] ucptt.com