作者:西邮 梅延涛
很高兴在西邮能遇到你们这些有共同爱好(Linux)的朋友们!
我已经大三了,虽然学习Linux已有一年多的,但是,我在学习上走了太多弯路。写这篇感想的目的不是想教你们什么——我没有这个份量——但是,看完我这篇感想,一定能让你们少走许多弯路,至少我不愿意看到你们再走我的老路。
1. 想学好Linux(包括其他计算机知识)要做的第一件事,就是学好English。如果你们看到我现在读资料的窘况,你们就明白英语是何等重要。Linux的大部分有价值的文档都是英文的,没有翻译。等翻译出来了,这些资料也就该过时了。我买了一本Qt3的翻译本,但是,略有常识的人都会知道,Qt4已经出来很久了。Qt3和Qt4在细节上有很大的差别,所以,我不得不把我的翻译本作为参考,硬着头皮去看QT4的下载文档。我的英语很差,虽然借助翻译工具,也能勉强看懂,但是印象不深。所以,我只能用一个本子,从电脑上看一句,再把它默写下来。只有如此,才能既记单词,又对文档内容有一个教深的印象,不至于掰一个玉米就扔一个。其速度,可想而知。
2. 学Linux就一定要学习编程(别担心,编程是对思维的良好训练,即使你以后不从事编程工作学习编程对你也是很有好处的),不然,你大可只用Window XP了。Linux可以更好的完成XP下的一切任务(游戏除外),而且不用太伤神。反着说一句,如果你学习编程,那就一定要学习Linux,不然,你可能永远只会停留在API这些抽象接口上,不会进入操作系统的本质,因为Windows是不开源的。
3. 学习Linux除了要会C这样的高级语言外,你必须熟悉两种格式的汇编语言AT&T和Intel(用nasm汇编)。关于这两种汇编的教材,我有两本非常好,都在我留给本论坛的一个链接里下载,分别是《Professional Assembly Language》(书店有翻译版)和《Guide to Assembly Language Programming in Linux》。请相信,只有熟悉了32位汇编,才能真正理解硬件的基本原理,在计算机体系里学的8086汇编是16位的,而且是基于masm的,基本上对Linux没有太大帮助。
4. 学习一门除C外的能够夸平台的、且有良好库支持的高级语言(这是最低要求),你可以选择Java,它的第三方支持很好,在网络方面很多支持都可能会成为未来的标准,而且这门语言也比较简单。我选择的是C++,这门语言功能十分强大,而且有Qt这种强大的库支持,在各种平台上都非常实用。但是,正如王聪曾经说过的那样,C++太庞大了,如果你选择了它,就不得不花费5倍于Java或C的时间去学习和实践(这个倍数可能有些夸张,但它确实很难)。有人曾经打过比方,C++是一辆驰骋在荒野上的跑车,你不仅要熟悉车的驾驶(熟悉其基本语法和常见支持),也要能辨别驾驶的方向(有较高的软件设计水平),这是技能和思想上的统一。一个意大利的大学老师曾经在ICQ上告诉我:”C++ is only for good programmer.“想必也是这个道理吧。
5. 要习惯阅读电子版的教程,因为Linux的文档不仅翻译的少,就连英文原版也很少在书店里及时找到。我就是不习惯阅读电子版,所以比别人的学习效率差了很多。
6. 学习Linux你要有淡泊名利的精神。因为在中国,人们的思想是以Windows为正统的,所以,你可能不会因为学习Linux而被周围的同学所看好。他们会告诉你Vista是如何的优秀,如何之漂亮,他们会把那些能帮他们杀毒的人最为偶像,而你,不过是一个搞些无用之事的闲散人。其实,如果你能淡泊一切,闲散会是另一种忙碌,在这种闲散的忙碌中,你的计算机水平将在不知不觉中得到提高。
7. Linux是一门复杂的技术,更是一种崇高的文化。Linux中有许多命令,死记硬背是背不完的。多动手,一次记不住,下次只要你知道怎么去查找这个问题的答案了就行了。我是很少去记各种命令的,因为记不住,而且也没必要。Linux的帮助文档如此之多,学习开源的朋友如此之众,随便找个论坛发个帖子,都会有许多人帮你的,这一点个我深有体会。当你有一些适合你的朋友时,你就会知道这种文化是什么了:Linux的世界里没有分数的束缚,没有名次的高低,没有那么多鄙视与功利——只有一声为了理想和兴趣而共同进步的号角。万一有一天你发现有人在你的帖子下鄙视你的话,那也不必介意,他只是一个刚刚入门的菜鸟,因为Linux高手都是有很深的黑客文化修养的人(关于什么是黑客文化,你可以在王聪的blog上找到这个链接),不会这么浮浅。放下所有的负担,去接受这种伟大文化的熏陶吧。
8. 不要在乎你的考试成绩。我一直再考虑要不要在这里贴出这条,因为这么写是很危险的,我极可能会遭到考研的或是品学兼优年年得奖学金的同学之围攻。Linux不是你所想的那么简单,他要求你付出比专业课更多的时间去学习,这样,势必会影响到你们的光辉仕途。请不要以为你们计算机的专业课会对Linux有太大帮助,我虽然是文科学生,但我上过计算机辅修,那些课程的教材都是10年(至少也在5年)以前,与Linux乃至于计算机技术的要求相差深远。关于这一点,我只能说到这里,因为我不想牵进太多是非之中。如果你要批评我的看法,那无论你出于什么样的理由,我都会检讨自己,承认自己的错误。子曾经曰过:“神鬼之事,敬而远之。”对考研和走仕途之路的朋友们,我也“敬而远之”……
9. 我眼中Linux的优势。免费这个我就不说了,这不算什么优点。众所周知,XP在中国也是“免费”的,F8四块钱一张,量多从优。但是,如果你要学习C/C++,Linux下有最好的编译器,而且许多技术性的东西都是从Unix/Linux上移植到Windows下的(游戏除外)。如果你喜欢上网看学习资料,而又担心受到病毒袭击,你就用Linux吧。我还没有见过针对Linux的病毒(注:Linux下是有病毒的,但相对于Windows而言,那就太少了)。此外,可能也是你们最关心的一点:Linux人才的市场需求远大于Windows下的普通程序员。因为Linux提供了许多安全性高,价格便宜而且开放源代码的各种工具。这对于不玩游戏的企业单位来说,实在是太有用了,企业需要它。尽管UNIX还是占有很大的市场份额,但是放心,Linux和UNIX使用的是同一套标准,他们在很大程度上是兼容的。此外,时代已经不同了,如果还想像几年前那样依靠会架个网站或是会写个Windows小程序这样的技术来糊口,那几乎是不可能的。普通的Windows应用程序员和会用Word的人一样多,如果你没有一些系统级和硬件级的软件设计能力,做程序员可能还不如摆地摊儿。而Linux提供了大量的文档和工具(大多是免费的),给你提供了学习这些底层设计的机会。比如现在流行的许多智能手机,内嵌的都是以Linux为雏型的系统。如果你熟悉了kernel,这些对你而言将不再是梦想!
好了,我最后再重申一遍,我和你们一样,也是初学者,文章中有不欠当的地方是再所难免的。欢迎大家指出,我们共同学习!
QAZWSXEDCRFV 于 2007-12-31 19:28:21发表:
能有你的QQ号吗?我的277253313
QAZWSXEDCRFV 于 2007-12-31 19:28:18发表:
能有你的QQ号吗?我的277253313
QAZWSXEDCRFV 于 2007-12-31 19:04:15发表:
相信在你写完这些后,和我看过这些后,你已经不再是新手了,至少我这么认为,以后有什么问你? 学GCC MAKE 怎么才能拥有这些软件 CYGWIN 知道吗?
fengnjupt 于 2007-12-30 19:33:55发表:
说的好,实际上做什么是都是和付出成正比的,这是我们领导对我说的。