IDE真是一个好东东,使原本复杂的开发工作变得简单起来,简单到甚至只需要动一动鼠标就可以搞定一个还看得过去的界面,得到一堆自动生成的很规范的代码,还有一些必要的注释,真是得来全不费工夫。
IDE(Integrated Developing Environment),也就是所说的集成开发环境。做软件开发的人一定不会对这个概念陌生,像Visual Studio 6.0,Visual Studio .NET,还有Borland公司的C++ Builder和JBuilder系列等等可以称得上典范(个人观点),试想一下,现在谁会用文本编辑器去写代码呢?这样的人已经不多了。当然,如果做企业级应用软件这样的大工程的话,没有IDE,几乎是不可能的了。
IDE改变了我们的编程习惯。
首先应该说是效率。一个好的IDE可以大大缩短软件设计、开发和测试的时间,可以使一个开发团队更好的协调工作。
其次就是降低了进入程序员队伍的门槛。有了IDE,大可以不必关心什么编译器参数,不必关心什么makefile,IDE帮你搞定了,还可以提示你犯了什么错误甚至自动更正。一个初学编程的人,只要学习了一些语言基础,就可以说自己会编程了。
当然,IDE给我们带来的好处还有很多很多,这里就不一一列举了。但是,如果我们没有正确地利用这些好处,我们也许在不经意间反受其害。
IDE使我们越来越懒惰。为什么这样说呢?正是因为IDE在后台为我们默默地做了很多事情,使得我们可以不考虑很多事情而专注于程序的逻辑结构,渐渐地,我们也就懒得去思考那些后台的东西,尤其对于编程初学者来说,情况更加糟糕。因为他们一开始就对程序的整个生命周期没有形成概念,这给他们以后向更高层次的提高造成很大的阻力。
“给你一个记事本和一个编译器,请你来写一个HelloWorld程序。”
一个很简单的问题,很多人会一脸盲然。也许会有人认为这是一件再简单不过的事情了,但是,真正动手来写才发现错误百出,甚至很多基本的概念和很简单的问题自己还不是很清楚,因为我们初学编程时写的大多数程序是在IDE的帮助下写出来的,程序的框架也是IDE自动生成的。至于如何使用编译器和调试器就是更大的问题了。
这时,我们不得不去思考这样的问题:
离开IDE的日子,我们还能做什么呢?
不仅怀念起DOS时代,那时候没有现在这样发达的通信手段,计算机前辈们手捧着一本指令手册就可以通宵达旦,乐此不疲,那是个造就高手的时代,他们对于从计算机结构到操作系统,从机器指令到高级语言都有很好的理解。记得曾经问过一些高手怎样学习编程,他们的答案是从汇编学起。当然,要求每个人都学通汇编语言是不太现实的,但是,从中可以看出,对于底层概念的理解对于一个程序员整体素质的提高是多么重要。
一个很简单的语句:
int a = 1;
有多少人会去想它耗费了多少内存,在C、C++和C#中有什么区别?而这正成为一些公司招聘的题目。可见,仅仅会用诸如VB一类的工具拖动控件,写几行简单的代码已经远远满足不了要求了,大多数公司要求程序员应该对自己的代码有一个整体上的清晰的认识,这样才能使代码尽量在自己的控制之内,把灾难降到最低。
呼唤程序员对于编码更深层次的思考,尤其想对编程初学者说:
暂时抛开IDE吧,从认识编译器开始!
补记:
我写这篇文章的目的不是让大家抛弃IDE,其实我本人也一直在用IDE作开发啊。我只是想唤起大家对编码更深层次的思考,换句话说:How to control your code。
尤其对于编程初学者来说,如果一开始就依附于IDE,那么很多基本的东西都可能被忽视,这对于今后的发展是很不利的。
有谁会放心用一些自己都不明所以的代码呢?当我们用Windows Form应用程序向导生成一个窗体时,我们可以在它上面拖放控件来获得我们想要的效果,初学者这时往往都会很兴奋,很有成就感,有多少人会去分析那些自动生成的代码呢?他们都是做什么的?为什么要这样写?事件驱动是怎么回事?delegate是什么?整个程序的生与死是怎样发生的?...这些问题你都清楚了吗?即使不明白,也还是可以编写出一个像样的应用程序的,因为IDE已经帮我们做了。如果你对于这很多基本的概念还没有一个清晰的认识,即使你拿出一个不错的作品(当然是在IDE帮助下完成的),有人会相信你写的代码是安全可靠的吗?因为你不能control your code,它已经超出了你的视野,这些代码将成为隐患。You are working under the IDE or someone else.
在对于语言基础和以上这些基础问题有了很好理解的基础上,用IDE来作开发当然是一个好主意,但是,这时问题的性质已经发生了根本的改变,IDE正在你的控制下工作,你可以自信地说我编写的代码是可靠的,是安全的,因为我完全了解它们,我创造了它们。这样,IDE才能真正发挥它的作用和威力啊