基本工具python
纯文本的威力:linux
优势:可读性远大于二进制,且不依赖特定的应用解码,所以不会过期。为了增长纯文本可读性,应该使用可以理解的词语。另外纯文本可由任何应用读取,所以适合做为应用之间的接口,将应用拼接成功能更强大、更丰富的应用,如linux shell的管道。git
纯文本的缺点在于占用空间更大和解析更难。shell
shell的游戏:比起大型workbench,cli更加简洁清晰,能够用短小有力的命令完成强大的功能,并能够将功能拼接。数据库
不过,与gui相比,shell不便之处在于功能很是零散,若是要作一件事情可能须要使用不少工具。这样的拼接确实使得自由度最大化,但当须要专心工做于一个工程、但愿有一个集成的工具能清晰地显示本身的工做并能够完成大部分经常使用功能时便有些不方便。可说各有所长,不过此前的我没怎么作过大型项目,因此cli的不方便之处不太明显。编程
不过书中提到windows下的linux shell工具cygwin颇有趣,打算试一试。vim
强力编辑:文本是编程的基本原料,因此编辑器很重要。vim、emacs等编辑器都功能强大,适用于各个平台,有gui和cli版本。应该使用一个特定的强大编辑器并精通,这样生产率会大大提升。windows
在shell下这颇有道理,不过在visual studio这样的大型平台上彷佛没有必要?编辑器
源码控制:由源码控制工具控制版本和分支可让工做更加方便有序,减小出错的可能。没有源码控制工具很是痛苦,只能将代码一份份备份,并且很容易丢或者忘记顺序。ide
我所知道的源码控制工具只有git。
调试:做者彷佛异常强调debug过程当中的心理因素。debug确实容易让人崩溃。
在debug过程当中要得到尽量具体的信息。随意地、泛泛地调试每每是徒劳。得到具体的错误信息并进行bug的复现才能尽量高效地debug。
有这样一些策略:
多用ide的可视化功能,如watch窗口。这是最直观的。
在程序中加入打印语句看起来很是愚蠢的,不过在某些状况确实管用,甚至比ide的debug功能还要管用。
在某个数据出问题时,能够检查附近内存。
能够采用橡皮鸭策略,即用语言将代码逻辑解释一遍。这个过程当中可能会发现隐藏的问题。
在没法找到问题时,能够用二分查找。(可是在条件不是一维的时候如何二分查找?)
文本操纵:用文本操纵语言实现,简单的工具如emacs、vi的内置语言、脚本语言如perl、python(我只会python好凉啊)。
文本操纵能够用来维护数据库schema,如自动生成代码、填充空位;自动生成重复代码;生成测试数据;生成不一样语言之间接口;生成特殊格式的文档。
代码生成器:分两种。
被动代码生成器,为了减小编码时手工编码。仅使用一次,而后将生成的代码嵌入代码中。被动代码生成器不须要彻底精确,只须要简便,过后由人工校对一遍。
主动代码生成器,是代码的有机部分,每次都被调用,如用来根据数据生成不一样语言的接口。主动代码生成器符合DRY的原则,能够减小错误。
代码生成器不必定要很复杂,也不必定要生成代码,能够生成任何文本。