本文翻译自”Know How to Use Command-line Tool“,来自于《程序员应该知道的97件事》一书中的某个章节

现今,很多软件开发工具被打包成集成开发环境(Integrated Development Environments,IDE)提供给开发者。微软的Visual Studio和开源的Eclipse就是两个颇受欢迎的IDE,当然还有很多其他类似的工具。很多程序员喜欢使用IDE,这不仅是因为IDE容易使用,而且IDE还可以让程序员无需过多考虑一些过程中的微小细节,特别是构建过程。

不过,易用也有其负面因素。通常,一个工具容易使用,是因为这个工具在幕后替你作出了决定并自动地做了很多事情。因此,如果你只用IDE作为唯一的开发环境,你可能永远无法知道你的工具实际上究竟做了哪些事情。你点击一个按钮,一些奇妙的事情发生了,一个可执行文件就会出现在你的工程目录下。

使用命令行构建工具,你会了解到更多有关这些工具在工程构建过程中的行为细节。编写你自己的Makefile文件可以帮助你理解构建一个可执行文件过程中的每一步(编译,汇编,链接等)。用这些工具的命令行参数做些试验也是一个有价值的学习体验。最初开始使用命令行构建工具时,你可以使用一些开源的命令行工具,比如GCC。或者你也可以使用IDE自带的命令行工具。毕竟,一个设计精美的IDE只是一组命令行工具的图形前端而已。

与IDE相比,命令行工具除了可以帮助你增进对构建过程的理解之外,还能更容易更高效地完成某些任务。例如,grep和sed两个实用程序提供的查找和替换能力往往比IDE中提供的工具更为强大。命令行工具原生地支持脚本,支持自动化运行一些任务,诸如按预定时间制作日构建版本,为一个工程制作多个版本以及运行测试用例。在IDE中,这类自动化工作做起来可能非常困难(如果不是不可能的话),因为构建参数通常是通过图形界面的对话框设置的,并且构建过程是通过鼠标点击启动的。如果你一直没有脱离过IDE的襁褓,那你可能都无法意识到这类自动化的任务是可行的。

不过请等一下。难道IDE的使用没有使开发工作更简单,没有提高程序员的生产力吗?噢,不是这样的。这里提出的建议不是让你停止使用IDE。而是建议你“应该深入到幕后“,弄明白你的IDE到底为你做了哪些事情。而这么做的最好的方式就是学习使用命令行工具。接下来,当你回过头来使用IDE时,你就会更透彻地理解IDE为你做了哪些事情,并且知道如何控制构建过程了。另一方面,一旦你掌握了命令行工具的用法,体验到了这些工具提供强大功能和灵活性后,你也许会发现:与IDE比起来,你更喜欢命令行工具。

By Carroll Robinson

© 2011, bigwhite. 版权所有.

Related posts:

  1. 持续学习
  2. 专业程序员
  3. 将你的编码标准自动化
  4. 代码评审
  5. 把一切都纳入版本控制