关于Windows和Unix系统的讨论
众所周知中国的大学教计算机、软件,都是基于Windows系统的,即使在讲“操作系统”这门很关键的基础课程的时候,也有不少是院校以Windows NT为实验材料。这里笔者并不是想把Windows系统贬得多么烂,只是对于IT行业的兄弟来说,从易用性最高的Windows操作系统来了解计算机体系结构的话,会容易对概念产生误解,基础一旦不牢靠,往后的路就常常碰到瓶颈。这里笔者通过几个例子来说说自己的一些看法:
当下Unix系统有以下几个版本,
ü 完全开源的Linux系列(RedHat, CentOS,Unbuntu, Fedora)
ü HP Unix系统
ü IBM AIX系统
ü Sun Solarisis
ü Apple Mac OS
关于图形界面和命令行:
程序员开发,基本都会在IDE中开发部署整个项目,拿笔者熟悉的Java语言来说,一般是习惯在Eclipse中编写代码,打包编译,然后用Apache Ant来部署整个项目。使用IDE开发,必然是在图形界面下进行。但国外的程序员,很多喜欢命令行要多过于图形界面,首先图形界面要很多占用硬件资源,另外他们喜欢在命令行用到许多系统内核命令,方便的去调试系统。
笔者觉得,对于程序员来说,本质上是通过编写的代码来执行指令计算得到结果。记得看美国电影里,黑客们Hack攻击都是在黑白屏幕上猛敲一串串的命令,然后读取到的也是字符,即使要转化成图像,也是由一系列0101的二进制串按次序排列形成的。可见人家的基础教育就是从命令行开始的,所谓的Programmer也不是那么依赖IDE的。
关于学习企业级软件:
很多人学习Oracle,WebLogic, Tuxedo等软件的时候,总是在Windows上安装操作。其实由于那些软件的设计创始发展,都一直是用的基于Unix的系统,所以真正要发挥它们的特性,是一定要跑在Unix之上的。就拿Oracle DB和Tuxedo来说,大量的使用了IPC机制。所谓IPC:
Interprocess communication (IPC) refers to the coordination of activities among cooperating
processes. A common example of this need is managing access to a given system resource
因为这些软件都会适应复杂可扩展的企业级环境的,所以一定会在进程间通信、分布式计算上做足够的铺垫。而Unix系统,本身也是在设计和发展的时候考虑了很多这方面的特点的,所以最适合这些企业级软件的自然是基于Unix的操作系统。
例如在Windows上学习Oracle,容易忽略了Oracle的内核进程结构,因为Windows上作为Oracle作为单个进程存在,各组件都作为进程内的线程存在,维护时不容易看到;而在Unix上,各个组件作为独立的进程存在,一个PS命令就能一目了然。再者,Unix上的IPC效率也要比Windows平台快很多,Windows大多数特点都是模拟出来的或者使用上要更加复杂一些。
综上所述,Windows是一个适合个人家庭使用的系统没错,然而Unix在这方面也已经迎头赶上,MaxOS就是很流行的个人系统。而谈到企业级应用,服务器选择的系统自然会优先基于Unix的。