为什么现在不用笨重的 IDE ?

2010,10,03

Why not use IDE now?


我的有些同事,给我的感觉似乎就是,没有笨重的 IDE 开发环境,他们不能工作。。。

当他们惊讶于公司招了我这么一个几乎听都没听说过的“Python程序员”之后, 有些想了解 Python 到底要怎么开发?使用什么的开发工具? (他们当然指的是像 Visual Studio/Eclipse 那样的超级IDE了。) 我只能说,哦,估计你可以试试 PyDev 或者 limodou 前辈的 Ulipad 等等。 不过我没认真用过,不好给你好的建议。

我也相信那些笨重或者不笨重的 IDE 本身是非常优秀的, 不然怎么会有人开发?并且怎么会有人使用呢?

我上次有个 Java 相关的基础问题请教一位同事,他很快帮我解决了问题, 不过最后却说了一句话:哦,你为什么不用IDE呢? 看上去,他似乎告诉我使用IDE就可以解决这样的问题。

不久前,我的另外一位同事,从事 C++ 开发的同事。 他说,哦,你使用 Linux 环境啊,那么如何组织开发? 有没有类似 Visual Studio 的开发环境啊? 我说 Eclipse 的 CDT 插件或者 Netbeans 或许可以满足需求, 但是大部分在 Linux 上做开发的应该只是使用 Shell + GCC + GDB + autoconf(/scons) + make(/cmake) 等等, 或者只是配置一个万能的 Emacs 神器。 当然其他各种宣称强大的C/C++环境也是有的,比如 Code::Blocks 等。 不过我没有认真去尝试过,还真不好说。

另外一位不久前另某高就的同事的说法让我感到很惊异。 那位同事应该主要是开发 Flash ,并且搞搞 Java 。 他打开 Eclipse ,等了很久, 在某个打开的 Java 源文件处,输入了一些字母, 然后在光标活动处出来了一个列表可以很“快速”的选择他想要的东西, 他说,在别的编辑器中能实现这个功能? 然后他在某个单词上按下了某些按键,等了一会, 出来了一些文字,大概是关于这个单词的说明等等。 然后他说,在别的编辑器中也能有这样的功能? 要是没有这些功能,叫他怎么进行开发? 我想我当时的确有些要晕倒。 当然现在可能很多“IDE”或者只是编辑器已经有类似这样的“功能”, 然而,对于从脚本语言开始的我来说,却不是这样的。 从 Python Shell 中的 help(what_to_ask) 或者 IPython 中简简单单的“?”或者“??”, 到 pydoc 命令等, 或者自己在官方源代码里的文档目录中自己编译出各种格式的详细说明文档, 这些都是非常简单非常容易做到的事情,而且随时随地,非常方便。 (又如 Ruby 中的 rdoc 等莫不如此。)

我现在有点明白为什么书店里大部分的语言书都是写静态语言的了, 因为他们的确需要! 对于大部分脚本语言来说,像上面所说的,要获取说明等很容易。 比如大部分规范的 Python 程序都有很好的 docstring ,特别是类库。 最无奈的,大不了去查下源代码,而静态语言你想做这样的事情估计很难。 我去查 Java 的 API 文档,很全很详细,但是他们是一种参考工具书那样的东西, 类似词典,并不是我想要的那种有导向效果的文档。 干巴巴的词典,除非你是个背诵狂,否则你会选择从这里入手? IDE把这些也都搞上去了,或者就是想解决这个问题?

以上这位同事在离职前很得意地跟我们说他去面试一家公司的时候, 把内存的工作原理讲了一遍,把人家面试官都“惊呆”了。。。 最后在他最后离开公司之前我们调试他的程序的时候, 我们把他的程序(webapp)部署到了局域网内的某台服务器上, 结果某个环节并没有发挥应有的效果,他走到跟前说, 你怎么使用这个地址呢,是“localhost”吧! 我当时的确被雷到了,我希望他当时是累得最后连话都说错了。

我对于IDE并没有太大的成见,我抱有的态度是, 我的实际开发项目都不大,或者很小, 根本不需要这么强大的东西来管理规划我的代码或者模块。 如果你已经把一个项目很好的拆分开来, 每个小的部分只关心她自己的逻辑或者业务, 那么你还需要那么笨重的东西么? 何况那些IDE里有的功能, 很多我们都可以自己写个简单的脚本之类来实现, 而且可以做的更加随心所欲,遇到问题自己也了如指掌。 比如自己写个 bash 脚本, 自动编译整个 webapp 并且部署到 tomcat 上再重启 tomcat , 这不就是一个非常简单的事情么? 哪里需要麻烦笨重的IDE在占用极大的系统资源中缓慢的进行这个简单的工作?

不过,对于一些庞大的项目,或者一些需要改造的老旧项目, 在我们开始接触和熟悉的时候,IDE或许会帮到我们很多忙。

我基本上使用 VIM 来完成我大部分的编码工作, 并且使用各种 GNU 工具,如 grep/find/lsof 等等在 Shell 环境中进行调配和控制, 因为她们使这个过程更加简单、高效和可靠。 特别在掌握更多的基本操作,如 VIM 的折叠操作等之后更加如此。

我不喜欢使用图形界面来控制各种服务器相关的配置, 因为那样代价很高,特别是对于远程操作来说。 我也不提倡在源代码中使用英文之外的语言撰写,如中文, 因为某些时候可能连接到远程服务器的终端并不能很好的处理编码的问题。 所以,这不是说我以为自己的英语水平很高很拽, 而是实际问题让我觉得这样做应该会更好些。

最后,有句话好像是这样说的: “开发一个傻瓜都会使用的软件,只有傻瓜愿意使用它。” ( 【外刊IT评论】软件编程21法则 第20条 )

另外,可能动态语言的壮大使得普通开发工作对于IDE的“渴求”慢慢降低了, infoq中文不久前有一篇文章介绍动态语言的企业应用: 动态语言企业应用优缺点浅析

--

我以我的无知来讨论问题,结果可能显得我更加的无知。

Comments

公司自从上次从开源项目中获得了比较好的益处之后,
就对开源项目另眼相看了。
我估计是这个原因。
然而开源项目大都有版权问题,
虽然目前在国内讨论版权基本没有意义,
但是这会给以后带来隐患,
毕竟世界是向前发展的。
到目前为止,开源项目中 Python 好像占了很大的比重。
你们公司真的很好玩哦,不过我也是挺好奇,他们为什么要招Python程序员

Comment is disabled by administrator.