惠普面试回来的几句抱怨

原帖:http://www.oldlinux.org/oldlinux/viewthread.php?tid=13591&extra=page%3D3

linux的第一年
        最近有人问我玩Linux多久了,我就记得是某个五一节,上论坛一看果然是10年5月3日,想想到现在已经有一年多了。那个时候还在上大二的操作系统课,那个老师以前是玩UNIX的,当然对Linux也是赞不绝口。那个时候我心里还总是觉得,玩Linux的人都是那种不折不扣的高手,特别是那些搞内核的,网上有无数的人都认为Linux内核组里的人都是世界上最优秀的程序员,虽然我到现在还是这么认为的。就是抱着这样一个“成为高手”的梦想我最早从图书馆里借了一本Linux内核剖析和红帽子的系统管理,在虚拟机里开始跑了起来。
        最早我载的是电驴上的rhel 5.4,因为红帽子的威名我当然只认可这一发行版本,之后了解了fedora和红帽的关系以后才转用的fedora。刚开始rhel是livedvd,所以在虚拟机里跑了个系统镜像,这个镜像系统直接用光盘里压缩过的文件系统没有任何软件,就连我想用个gcc都不行。后来才知道要让虚拟机开机后打开虚拟机的光驱载入镜像安装重新在硬盘上复制文件系统。在那本系统管理的帮助下我慢慢开始接触Linux指令,慢慢开始了解这个系统根文件下都有些什么东西,并开始了解分区的真正意义。当然很快我就迫不及待地开始看内核,要知道当时我连C语言都只是停留在对数据结构的理解上,汇编根本就没学过,因此刚开始看第一个调用bios中断的引导程序的时候就晕头转向。
        痛定思痛,在大二暑假找了本Assembly language step-by-step programming with linux开始学汇编,那个暑假的第一个月是在实验室里自学单片机,教材用的全是汇编,到了第二个月开始看那本书的时候已经有点驾轻就熟的感觉,等到暑假两个月自学完毕,发现已经能写一点通过int 80的汇编程序了。之后的短学期又来了门Linux的实训课,用了点fork()和exec()还有pipe()进行进程编程,我突然就对这些函数的实现相当好奇,大三上就没日没夜地看内核剖析,连课都不去上,花了大概半年才大致搞懂了保护模式。这半年的苦大概也只有自己知道,整个计科专业都不屑在CISC上跑系统,根本别指望跟那些腐朽的老头提ljmp  $0x08转跳到内核代码段这样观念,他们脑袋里只知道转跳的操作数是目的地址或者是偏移量,就连专业最好的老师对分页问题也语焉不详。一次次的误解一次次地讨论再加上囫囵吞枣地学,半年后突然就发现自己开始明白cpl,dpl,rpl这些特权级的大致原则,满书的代码也从汇编变成了C。只有读过Linux代码才会了解gcc的优势,用宏实现系统调用的方法是教科书上只字不提的,变参数的函数也是教科书上没见过的,内嵌汇编更是教科书上找不到的。在2.6内核里甚至出现了使用kobeject嵌入结构体来面向对象用于设备管理,这对我们课堂和商业公司里大肆叫嚣的java,.net和OO云云是多大的讽刺啊!引用当年Linus的一句话,C++ is a horrible language! 
        真正的面向对象思想,未见得就一定要体现在语言里,所谓的高级语言很大程度上都是让二进制执行代码膨胀到像现在女生的腰围一样而为开发人员提供便利,至于多出来对系统资源的消耗就留给用户去买单。从软件工程来讲这种方法一点都没错,软件是拿来卖钱的,开发开发周期决定了成本,预算就这么点当然都别指望能够设计出高效的算法写出像当年7版UNIX那样优秀的代码,何况这些代码只有QA的staff会去看。因为这些高级语言提供的接口使用起来实在太方便,在商业公司里自然就理所应当地成为了主流。我当然不会无缘无故地做这样的结论,今天在惠普公司的面试就真的给我上了一课。我这一波11个人,2个华师大研究生,3个同济,3个华理,1个上大,1个东华,就我一个二本的,他们大多数都是带过.net项目或者至少在课堂上学过C#的,而4个面试官里2个是搞.net的项目经理,1个是搞.net的,1个是非技术行当的,一听到我是玩Linux的2个项目经理立刻就像被戳破的气球瘪了下去,只有一个面试官还很给面子地问了我一点是否能熟练使用Linux命令,用没用过solaris。我说我喜欢内核的原因再明显不过了,言下之意就是我C语言是过关的,到最后我实在忍不住问了句有没有c语言相关的项目,那个给面子的面试官讲了句,有是有,全是将以前的C程序迁移到j2ee和.net平台的。某个项目经理又做了补充,说C语言是一个比较,古老,的语言,现在用的不是很多云云,在他说古老二字的时候我看出他的表情真的是看得出他是在自己的数据库里找个尽量中性的词避免尴尬。
        说实话在从张江回学校的一路上我都在怀疑,C是不是真的过时了,我想到了在kernel.org的Mailing-list的那些大牛,想到了陈皓那篇学好c语言的博文,竟然在商业公司里会是这样的光景。也难怪,大学这三年学的还是太少,为了像上几届做项目获奖的虚荣,我把太多的时间浪费在胡吹上。我想到论坛上有人说,玩内核,2年寂寞得按奈得住,或许,今天在惠普的挫折和Backtrack上的那句The quieter you become, the more you're able to hear算是对我在这一年的最好指导吧。
陈艺群
2011.05.25 23:17


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值