Fw: [心得] 几本让我成长很多的书

楼主: ifelse (如果...否则...)   2014-09-20 08:54:09
※ [本文转录自 CompBook 看板 #1K75gpf4 ]
作者: Zephyr750 (红莲西风750) 看板: CompBook
标题: [心得] 几本让我成长很多的书
时间: Sat Sep 20 00:32:49 2014
我是用C++这种可怕语言开发的开发者。
从研究所毕业之后,我只会C和verilog
当时,我只唸了VerilogHDL学会了Verilog,但是完全只是熟语法...
而C只靠大学课程的印象
一路走来,到了软件公司,才发现业界有些公司其实....说强不强。
我想跟大家分享我看的书以及得到的东西。
希望有兴趣的朋友可以看看....
1. K&R2
这本是很有名的书,一开始会看,完全是因为“C学会了再学C++”的误解。
我看这本书方式,是从第一个字开始看到最后一个字。
因为这本书,让我重新学习C语言,了解C语言的强项与技巧
enum、struct、pointer、funtion pointer....
2. 蚂蚁书
会买这本,有两个原因,第一,这是我大学时使用的课本(虽然版本不同),
第二,它比K&R2介绍了更多“前置处理器”的用法。
但是其实看完了,还是不太会活用,因为不会花太多心思在它身上。
这本书,我只看前置处理器的章节。
3. C到C++入门速成
这本是在义守大学图书馆找到的,其它大学的图书馆似乎不一定有。
这本很特别,是无意间翻到的,它比较了C和C++各个不同之处集结成书。
这本书,是从第一个字开始看,整本看完。
4. 世纪末软件革命、从C到C++物件导向革命
为了了解“物件导向”特别去找了几本,但是都没看完,世纪本软件革命,
我是买复刻版,还有找到其中一个作者签名。(超幸运)
《从C到C++物件导向革命》是抄袭之作...
而物件导向是怎么了解的呢?
把C++当作verilog写一次,就明白了。瞬间了解类别是什么!
5. C++ Primer 4/e
我看的是四版,建议看三版,不过五版已经出了。新功能看来都是人家的旧功能!
似乎五版值得买。
这本是和C++爸爸书一起买的,是为了要找C++好书而开始狩猎,这两本圣经本
当然不能放过,让我对C++有了全新的体验。
这本书看到一半,但是因为当时是一边看,一边学,一边练习,所以很扎实。(应该)
学C++有四个阶段
C++ without OO ->做一些C在做的事
C++ with OO
C++ template
C++ general
最精彩的,是OO的部份,const的介绍,return this, return *this的用法、
覆写运算子.....等。
把整个记忆程式的方式,以心智图的方式,物件导向的形式呈现
之后,就常常跟人家说,挑一本好的C++入门书,看它的hello world就知道了!
看它的#include 是放stdio.h还是cstdio还是iostream。
看它是教你printf还是cout
看它的main回传值是void还是int
看它有没有return 0
不是这样做不行,而是身为一本教学书,就要以标准写法为范本。
另外,看别人会不会C++看它的set和get怎么写的就知道了。
虽然是coding style的问题,但是C++不把持一点,很容易写成泥巴。
void SetValue(const Foo& Obj);
const Foo GetValue() const;
把权限最小化,就是最好的写法。也许你会问为什么,我只能说,当你要把物件丢
STL到里的算法使用时,它就会卡这个。
6. 人月神话
这本很有趣,我也忘了当初是在哪看见推荐的了。写了这么久的程式,你真的了解
自己在做的是什么样工作吗?写程式有什么性质?有什么特性?什么该做?什么不该做?
有哪些事是过去前人就说超难做的,会不会不知不觉走到了一个前人有说“要小心
不要往这方向去了”的路呢?
这本是开读书会看的书,从第一个字看,整本看完。
最棒的就是第二系统效应、预估(很难)、巴别塔、外科手术团队
还有最后的“没有银弹”
这本影响我最大的,是它一直提的“整体概念性”是写程式最重要的一件事。
不管是设计、coding还是重构时,其实都用得上这个概念。
7. 软件建构之道2
这本可以说是我个人生涯看了最棒的一本书,也是因为它在Inside的排行榜里排第一名
所以不看似乎对不起自己是程式设计师这件事。
它从设计开始介绍,讲了很多写程式时会遇到的疑惑
这样写也可以,那样写也没错,但是语言这样设计的用意,应该是两种写法不同。
究境是哪里不同呢?一连串在写程式要决策的事情,就是设计师的用心之处
在第八章 防御性程式设计里有提到条件编译的使用方式,还有如何让自己的程式
更强壮或更正确,assert()的使用,最后提到自杀式程式设计来提升
交付程式前的强壮程度。
有看过这种命名的吗?
int temp; string str; return rtn; void doSomething(); float tmpValue;
void setValue(); int getValue();
是不是让程式码与人的距离愈来愈远了呢?
最有趣的是连return的使用方式,它都有介绍!
程式设计做到最后,就像是把中文翻译成程式语言。
class包含物件,与class继承class的差别是什么?have和is的差别!(超酷的)
前半部,是教你用技术提升品质。
后半部,是教你用管理提升品质。
繁体中文版超贵。建议看简中会顺畅很多,而且还有润句子和校"完"稿....(懂吧?)
当初看是开读书会,同时看简中、繁中、英文。
没有整本看完,看了前半段就放著了。
强烈推荐要看,尤其是有在code review的公司。
这本书影响我最大的是人月神话提的“整体概念性”实作在class、function、变量命名
分析了“整体概念性”与“名字”之间的重要性,还有命名带的隐喻,会影射出概念。
让程式码可读性提高,就像是写文章的譬喻法啦!
8. Effective C++
只能说,要把C++写得像C++就看Effevtive C++。
翻过,跳着看。没细读。它是超棒的书。
很想全系列买下来
之后有看到Effective C#不过只有英文版....
但是,简中有部落格文章唷!
9. 敏捷开发的逆袭
这本是台湾人写的!对敏捷式开发的流派Scrum介绍得很深入,也因此对敏捷式开发流程
有了一个范本,在了解其它流派,会更加的知道这是什么。
这本书,从头看到尾,很精彩!内容很多。
另外,后面介绍了很多工具在“实作”敏捷开发有很大的帮助(至少有工具),剩下的就是
建立工作流程与工作能力了(单元测试)
10. 大话设计模式
这本是C#的设计模式,是读书会开的书。
从第一个字开始看,整本几乎看完,但是看完还是不懂(这是Design Pattern书的特色?)
有些简单易用的Pattern就可以快速的学下来。
有些难懂的,就先放著,有缘自然就懂了。
看C#的Design Pattern除了因为读书会看之外,
C++这一本实在是一本“Design Pattern DM”,看看具体实例先
而且,C#的写法有些C++都要自己手动来。就会上网多找资料。
这本书并不是每个例子都很棒,但是它会从烂code重构给你看(大多数的例子)
所以,还可以看一下重构的过程,我觉得练习一次很有体会。
我是用C++练习的,所以很多地方不需要指标的,要自己看,
要delete指标的要自己判断一下
以上。
我一直相信,C++之所以难用,是因为它重点在“设计”,
而不是一直使用它既有的语法与功能。
作者: handsome616 (豆花伯爵)   2014-09-20 10:01:00
想知道原作者的ID
作者: ZenLife (生活禅)   2014-09-20 10:19:00
好文,原文作者: Zephyr750 (红莲西风750)。
作者: Zephyr750 (红莲西风750)   2014-09-20 10:32:00
找我吗?^^"
作者: Killercat (杀人猫™)   2014-09-20 11:13:00
我个人是刚好有在做跨语言开发,以我自己观察的话,C++对其他使用者主要门槛其实是除错讯息 orz...很多java的跳进C++碰到的问题都不是语法(可能还没碰std::move或者template这些比较进阶的东西) 而是编译错误的讯息看不懂 以及除错讯息看不懂 :P一个cin写错成cin >> a; arise出来的编译错误就够头大至于“设计”,我倒是认为UML弄好设计弄好 C++比其他语言多了更多的“家私”可以用来解决问题
作者: Zephyr750 (红莲西风750)   2014-09-20 11:30:00
嗯~难解的编译不过问题,通常都Google解决啦!^^
作者: avhacker (我想把整片天空打开)   2014-09-20 23:35:00
GetValue() return 的是物件,该物件没必要是 const因为已经是与原来的物件无关的副本 (copy by value) 了
作者: firose (guest也是也是也是也是也)   2014-09-20 23:41:00
有了右值引用,已经不能背公式了,要自己去取舍,没最佳解你认为必然要那样写的 get/set 已经不见得是这样了 XD
作者: carylorrk (carylorrk)   2014-09-21 04:03:00
C++ 除去 template 以外的除错讯息,我认为主要是因为1. 不一致的错误处理方式, 2. pp/compile/link 过程较复杂。 3. weak type 的各种错误...打到一半忘了重点想到再回来回复XDD

Links booklink

Contact Us: admin [ a t ] ucptt.com