我从初二学习 BASIC 开始,到目前大约 16 年的学习开发经历
使用的操作系统包括:APPLE II内置的操作系统、DOS、WIN32、LINUX、SOLARIS
使用过的开发语言/工具包括:APPLE BASIC、TC、BC、VC、VB、C#、DELPHI、FOXBASE/PRO、GCC、PYTHON、RUBY、PERL、JBUILDER、ECLIPSE
得出的结论是:不管你在不在 WINDOWS 下工作,必须跳出 MS 的世界才能真正理解操作系统和编程
作为程序员,你不能自我定位为普通的计算机用户,只能在 IDE 工作的程序员不是真正的程序员
你必须用过 make/ant/scons/autoconf/automake 才可能明了软件形成的过程
你必须用过 grep/sed/find/sh 才能了解正交设计有多么重要
你必须同时精通多种语言(C++/JAVA/PYTHON/...)才可能融会贯通才能了解面向对象究竟是怎么一回事
你必须同时了解多种分布式组件技术 COM+/CORBA/RMI/XML-RPC/SOAP 等多种,才能正确评价.NET、JAVA或是其它
你必须同时了解多种图形界面组件:MOTIF/QT/GTK/WXWINDOWS/WIN32/SWING/SWT 才可能正确评价谁是谁非
你必须了解 XUL/XAML 才能体会未来的应用界面的开发会和基于代码生成的 VC/VB/DELPHI 有多么大的不同
总而言之,兼听则明,只陷在 MS 的世界里很难理解这世界上不断涌现的新技术为何而来、从何而来,这些新技术对你来说就只能是新的技能(Skill)而不是知识(Knowledge)。
当做到这些以后,作为程序员的我更喜欢 GCC,而不是 VC,更喜欢 PYTHON 而不是 VB、更喜欢 VIM、Makefile 和 GDB 而不是 Visual Studio 来调试程序,更喜欢 XML-RPC/SOAP 而不是 CORBA/COM+ 来实现分布式服务,更喜欢使用 PYGTK+LIBGLADE 而不是 MFC 来制作界面应用。
你可以和我得出不同的结论,但你必须先了解这些以后才能得到自己的答案,如果仅限于 MS 的世界,那么你会错过 MS 之外优秀的东西。
我想提醒那些有志于成为真正的程序员的新人:作为程序员,你不能对自己降低要求成为追求简单、易用的普通计算机用户。