为什么黑马程序员linux讲义和部分网管迷恋linux

您的位置: >>
  好长时间没好好写点东西了,前段时间由于项目的需要出差了一个多月,期间各种加班,每天晚上加班到十点,回到宾馆实现是没什么精力再写博客了。有时间能静下来写点东西总是很好的一件事,如果写技术方面的博客,不仅能给读者提供一些解决问题的线索,也能加深自己对技术点的理解,如果写的是自己对项目的感悟,也算是对自己所做的工作的总结。现在终于有时间写点东西了,感觉还是不错的。
  今天这篇博客不是写关于具体技术的,而是我对程序员怎样学习和提高自己能力的一些感悟。我是今年7月初毕业的,离开学校后就直接进入之前实习的公司上班了。现在算来工作了也将近半年了,算上实习的时间,将近一年了。在这期间,参与了几个android项目的开发,也维护过别人写的项目,虽然都不是很大的项目,但也学习了不少东西。在这其间,我亲身经历了一个设计拙劣的项目,是怎么样一步步趋于混乱而最终变的完全不可维护。从这件事情我了解到优秀的程序员是多么可贵,而&不优秀&的程序员是怎样把项目一步步的搞砸搞烂,也了解到做出一款优秀的软件是多么的困难。什么样的程序员才算优秀的程序员,而什么样的程序员是&不优秀&的?(我不愿意说别人坏话,只能委婉的说&不优秀&)作为一个工作不到半年的新人,谈论这个问题好像没什么权威性可言, 我也只是简单的谈论一下自己的看法,鉴于自己的阅历和经验不是很丰富,难免具有局限性,读这篇文章的读者可以指出我的错误。
  我认为,优秀程序员和不优秀程序员的区别首先是态度上的区别。优秀的程序员有自己的理想,他们想做出好的东西,而不是混混日子而已,他们思考很多,不管是项目开始之前还是在项目进行中,项目完成之后也会进行总结。他们对待问题比较严谨,思考比较全面,在动手写代码之前肯定经过了一定的思考,对可能引入的问题进行预估。而不优秀的程序员对待问题比较随意,也就是态度上不是那么认真,代码写的也比较随意,从不考虑以后的变化因素,今天吃饱不管明天肚子饿,他们不会意识到他们的代码已经污染了整个项目。在发现问题时,优秀的程序员总是想办法弥补,他们会找出自己的代码写的不好的地方,谨慎的修改或大胆的推翻重写,这样的话把问题消灭在萌芽阶段而不会让整个项目偏出正轨。而不优秀的程序员,很少能发现问题,即使能发现问题,也是迟迟不肯做出弥补,他们总是侥幸的认为这些问题不会在后期暴露出来,所以问题越积越多,最后导致整个项目混乱不堪,错误百出,无法维护。
  除了态度上的不同,在能力上也有很大的差别。显而易见,优秀的程序员懂得比较多,他们乐于深入研究原理,对底层的知识有一定的了解或者了解的很透彻,而不只是停留在调用一个API;而不优秀的程序员一般不喜欢思考,对原理的兴趣也不多,他们不愿意花一些时间把一些问题搞明白,而只是简单的调用一下API,如果解决不了问题,随便在网上搜一段代码复制过来就万事大吉。所以遇到比较难缠的问题,优秀的程序员总是能从原理出发,一针见血的看出问题的真正原因,进而解决问题,而不优秀的程序员总是停留在表面,在网上搜了很长时间也没有解决问题。我深切的认识到,如果只是停留在调用API而不深入原理,永远也用不好API。
  除此之外,优秀的程序员的另一个特点是善于并乐于学习,他们对自己所从事的工作有浓厚的兴趣,有强烈的好奇心,他们总是想把问题弄明白,他们喜欢清晰,而不是迷迷糊糊的感觉。对一个人的进步起决定性作用的因素是刻苦的学习,而不是所谓的&经验&。就像有人说的那样,在公司里工作不会使你成为大牛,只有持续的学习才能让你有长足的进步。现在很多招聘职位要求有几年的工作经验,这是最容易让人误导的。工作时间长的就能力一定强吗?举个例子,有两个清洁工,一个干了十年,每天还在默默的工作,而另一个只干了几天,经过自己的思考发明了一个新的工具或方法,让他的工作事半功倍。所以说,工作经验是很虚的东西,他用时间来计量,一个人工作了5年,他可能在5年中每天都学习进步,也可能一个经验用了5年而没有什么实质性的提高。
  扯了这么多,好像和题目没什么关系。现在扯点和题目相关的。作为一个搞Android应用开发的,我为什么要学Linux呢?我工作中又不会写Linux程序,再说Linux内核博大精深,代码海量,关系错综复杂,学习Linux内核肯定要耗费大量的时间和精力,那我为什么还要学呢?在说这个问题之前,先谈谈我对学习的看法。
  在学习一个东西之前,出于保险起见,我们总是会询问别人的意见,而在这些意见中,总是会有人说学这个干什么,工作中又用不到。如果谁给了你这样的建议,那么你一定要小心,因为基本上可以断定他是一个不爱学习的人。有很多东西,不是因为你&感觉&有用才学它,而是学了之后才能知道它有用。我的一位朋友是做C#的,他在业余时间学了Perl,当时学的时候总是有人认为没有用,但是当他学会之后,可以使用Perl强大的文本处理能力,去整理格式混乱的源码文件,可以写个程序自动的给领导发邮件。还有我大学的一位老师,年轻时因为英语比较好,被单位派去美国,获得了深造的机会,回来后做了我们学校的物理系主任,很多人也认为英语没有用,呵呵。我进入公司实习的时候,看了设计模式,在我翻看《Head First设计模式》时,被一个有经验的同事看见了,他告诉我看设计模式没有用,因为我们的项目是不会用到设计模式的。我不知道这是什么逻辑。反正当我看完设计模式之后,真的被这些设计巧妙而又极具实用性的模式所震撼,在以后的项目中,我大量使用了这些模式或者设计原则。所以如果一个工作了两三年或者更长时间的程序员还没有学习过设计模式,我会深深的鄙视他,认为他不是一个真正的程序员。
  我上大学时学习了Java语言,当时还费了不少劲。基本的语法比较熟悉了之后,还是感觉到有些东西总是糊里糊涂,不够清晰,比如说不知道反射是怎样工作的。所以找了《深入Java虚拟机》来看,当我看了两遍这本书之后,感觉到原来不清晰的地方都显得自然而然,知道了class文件结构是怎样的,类是怎样被加载的,指令是怎么样被执行的,方法是怎样被动态绑定的。这些知识对我有很大的帮助,假如我不学习Java虚拟机,只是单纯的写Java程序,即使写上10年,也不见的比我现在对Java的理解更透彻。
  说了这么多,只是想说学习是有用的,大大的有用。一个经验用5年并不等于有5年的工作经验,一个不学习的程序员是不会有什么发展机会的。所以,对于一个Java程序员,还分不清对象和对象的引用,对于一个iOS程序员,还分不清ViewController到底是MVC中的视图还是控制器,那么没错,你该学习了,该静下心来好好巩固一下基础了。
  最后,来到正题。我为什么学习Linux内核?首先,我对Linux有很深的兴趣和好奇心,我喜欢专研一下。从实用性出发,我可能一辈子都没有机会编写Linux内核,也可能一辈子都不会从事Linux驱动开发相关的工作,但是我知道它对我是有用的。能进一步加深对操作系统中概念和实现的理解,对底层的深入理解,能让我打下扎实的基础。一些新技术其实都是架构在基础的东西之上的。基础牢固,以后再学习什么新技术都会水到渠成。有人可能会反驳,说学习底层的东西没用,优秀的程序员应该专注于设计,项目管理或架构等上层的知识,我的观点是,设计、项目管理或架构等上层的知识和底层的知识一点都不冲突,不懂底层的人,基础不扎实,在上层也不会走的顺畅,设想一下,如果没有深厚的基础知识,你怎么能知道自己架构出来的东西能不能实现呢?
  写到这里文章就写完了,由于比较困,可能写的有些散乱,在最后总结一下这篇文章的主要观点。
  总结:
  1. 我们要做优秀的程序员,不要做&不优秀&的程序员;
  2. 学习是有用的,如果有人给你的建议是学XXX没用,那么你可要当心;
  3. 底层的知识和高层的知识不是不能相容的,真正优秀的程序员应该两者兼顾。
程序人生热门文章
程序人生最新文章全国||百姓网公众号微信扫码关注百姓网小程序微信扫扫立即体验扫码下载手机客户端免费抢油卡、红包、电影票Linux程序员岗位职责Linux程序员百姓网Linux程序员平均工资:5250.13元Linux程序员工资分布1000 - 2000元:0%2000 - 4000元:0%4000 - 6000元:50%6000 - 8000元:50%8000元以上:0%Linux程序员招聘信息元上海汇众益智职业技能培训...虹口3月10日元淄博微笑网络科技有限公司 张店3月10日元淄博微笑网络科技有限公司 张店3月10日元淄博微笑网络科技有限公司 张店3月9日元北京国冀普瑞新能源科技有...通州3月8日元上海泽龙网络科技有限公司 玉山3月8日元淄博微笑网络科技有限公司 张店3月8日面议中山元赫软件科技有限公司 淇滨3月8日面议淄博微笑网络科技有限公司 张店3月8日面议合肥市凡科网络科技有限公司 蜀山3月8日面议上海攸攸网络科技有限公司 宝山3月8日面议深圳市逸道科技有限公司 宝安3月7日元淄博微笑网络科技有限公司 张店3月7日面议合肥市凡科网络科技有限公司 蜀山3月7日元淄博微笑网络科技有限公司 张店3月7日面议上海攸攸网络科技有限公司 宝山3月7日元淄博微笑网络科技有限公司 张店3月7日元淄博微笑网络科技有限公司 张店3月6日元驻马店联合网络 驿城3月6日面议淄博微笑网络科技有限公司 张店3月6日薪酬排行排名职位薪酬1100000250000345300436800536000635500730000829500927100102670011265001225000132500014250001525000热门岗位排行排名职位浏览量149754247471345348444835543229640650740000839524937515103624411356071232092133206814303361524939热门行业||||||||||沪公网安备16号1&G:23&GM:87做10年Windows程序员与做10年Linux程序员的区别
我linux和windows都做. 对文章的观点不太能接受.
当然我需要声明我出身windows平台.
相关的意见:
1. 不会有谁都10年了,只做windows,只做linux. IT行业技术很不稳定的.
2. api这个比较太肤浅了. 前面人都说了. win的api好于linux这是肯定的.
3. 开源代码很多都是平台无关的. 虽然起源于linux, 但高素质的win开发人员肯定也有参与和学习.
4. linux下学东西太慢太累,太多无关技术细节的牵扯. win系统简单方便,能让你直奔你要学的技术的核心部分.
不必要分心搞些无意义的事情. 话说我学C\C++程序竟然还得熟悉vim才能算高手, 这算哪门子的道理? 读开源代码,
世界上还有什么软件比得过win下的SourceInsight ???
5. 做linux钱多! 做windows苦逼.... 建议C\C++程序员为了钱,做linux,或windows游戏客户端,
别做windows软件界面, 没有前途.
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Access denied | www.vpsee.com used Cloudflare to restrict access
Please enable cookies.
What happened?
The owner of this website (www.vpsee.com) has banned your access based on your browser's signature (3f816-ua98).  入门篇
  《LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux。另外比较热门的也可以看看《鸟哥的私房菜》等书,偏管理类的书。如果想做server方向的可以找来看看。
  驱动篇
  《LINUX设备驱动程序》就是网上说的“LDD”,经典之作,必备书籍。国产经典《Linux驱动详细解》也是一本非常不错的书,很实用,书中源代码分析比较多,基于2440的,对linux外围驱动有很全面的讲解
  内核篇
  浙江大学的《LINUX内核源代码情景分析》,外国鬼子的《莱昂氏UNIX源代码分析》还有《深入理解linux内核》都是出名的经典巨作。另外赵炯的《LINUX内核完全剖析--基于0.12内核》也非常不错,对内核代码进行了详细的注释,非常有助于对内核的理解和代码的分析。
  shell篇
  《LINUX与UNIX Shell编程指南》
  应用编程
  不用说了肯定是《unix环境高级编程》被称为unix编程的圣经。
  TCP/IP篇
  《TCP/IP详解》作者W.Richard Stevens也是《unix环境高级编程》的作者,牛人出的书没有一本不是经典的。但是英年早逝,默哀一下。
  《The C Programming Language》正是作者造出来的c语言,书能垃圾就怪了 《c和指针》和《c缺陷和陷阱》两本必备。包含了c语言最容易出错的地方,加深c语言功力的好材料。  深圳信盈达实训学院是一家专注于嵌入式研发,以及嵌入式培训的机构。  信盈达嵌入式实训学院从5月份开始全面进入了实操。从项目中 获取经验,让您在短短的四个月内迅速的拥有1-2年的工作经验 。  要想学习嵌入式、ARM、Linux、单片机、PCB、STM32、Android、FPGA等,那就赶紧加入我们吧!  小班授课、包教会。就业保障,可循环听课。学完后一年技术支 持!  QQ:
TEL:(江老师)  关于算法
  《算法导论》  随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。  这里介绍学习Linux的一些建议。  一、从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了 Linux 的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux 就是希望构架网站,根本没有想到要先了解一下Linux 的基础。这是相当困难的。  二、Linux命令是必须学习虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。举一个例子: Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手.它的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间. 不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统: 安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh 文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln 系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last 网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup 系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho  三、选择一本好的工具书 工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多,笔者强烈建议阅读影印本的“O''Reilly原版Linux图书http://www.oreilly.com.cn/ ”,而且出版社还提供了一个非常好的路线图:http://www.oreilly.com.cn/guide/guide_linux.php。  四、选择一个适合你的Linux发行版本目前全球有超过1百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,Redhat Linux 和Debian Linux是网络管理员的理想选择。对于英语不是很好的读者红旗Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些 Linux版本的免费下载,这里要说的是并不适合Linux初学者。  五、 养成在命令行下工作:一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外地远程系统。  六、 选择一个适合你的Linux社区; 随着Linux应用的扩展,出现了不少Linux社区。其中有一些非常优秀的社区:www.linuxforum.net(国内最高水平GNU站点)、http://www.chinaunix.net/ (中国最大的Unix技术社区),但是这几个论坛往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。  七、勤于实践: 要增加自己Linux 的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个 Linux 发行版本,然后进入精彩的Linux世界。相信对于你自己的 Linux 能力必然大有斩获。此外,人脑不像计算机的硬盘一样,除非硬盘坏掉了或者是资料被你抹掉了,否则储存的资料将永远而且立刻的记忆在硬盘中。在人类记忆的曲线中,你必须要不断的重复练习才会将一件事情记得比较熟。同样的,学习 Linux 也一样,如果你无法经常学习的话,学了后面的,前面的忘了。你对Linux命令熟悉后你可以开始搭建一个小的Linux网络,这是最好的实践方法。 Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。当然你不需搭建所有服务,可以慢慢来。需要说明的是这个Linux网络对于初学者有两三台计算机即可,其中一台计算机最好安装Windows系统。自己多动手,不要非要等着别人帮你解决问题。  八、 如何得到联机帮助 和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。  1. 主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。  2. 查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。  九、在Linux论坛获取帮助如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人, Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问,否则只会得到到草率的回答或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。 下面笔者在论坛看到的一个好问题:“安装红旗4.0 后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练,笔者五分钟后就给出了解决方法:“首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini ,最后重启动计算机,生成新的unispimsp.ksc”另外得到回复后如果问题解决,向帮助过你的人发个说明,让他们知道问题是怎样解决的,这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、 Sendmail服务器,谢谢” 这样的问题我想即使Linux高手也很难快速准确精练的回答你。你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。另外把这个问题放在其他Linux社区请求帮助也是一种选择。如果得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。这时换一个社区是不错的选择。另外发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。  (stephen注:提问是需要一定的技巧的,不是张嘴就问的一个简单过程,这里有篇文章《提问的智慧》 ,感兴趣的朋友可以去看看。)  十.用Unix思维学习Linux Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。  十一.学习专业英文如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。  十二.最后是Linux学习的路线图:  1. 掌握至少50个以上的常用命令。  2. 熟悉Gnome/KDE等X-windows桌面环境操作 。  3. 掌握.tgz、.rpm等软件包的常用安装方法  4. 学习添加外设,安装设备驱动程序(比如网卡)  5. 熟悉Grub/Lilo引导器及简单的修复操作 。  6. 熟悉Linux文件系统和目录结构。  7. 掌握vi,gcc,gdb等常用编辑器,编译器,调试器。Linux下编程,主要是选用一个文本编辑工具(如vi eclipse nano gedit等)编写,再用GCC编译链接,最后用gdb调试。  8. 理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程。  9. 学习Linux环境下的组网。  一.为什么要学linux?   当然最重要是爱好和兴趣!如果你这种必要学,或者根本不喜欢,请不要浪费时间,你学也学不好!   二.起步   你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix   问题1:版本的选择   北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先进的linux   开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看   无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。   对于初学linux的人来说,我建议是使用redhat,原因如下:   1)现在很多书都是以redhat为例讲的,为了与书本协调一致   2)周围的人都用redhat,交流比较方便   3)redhat应用范围广,有典型性和代表性   4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上   而应集中精力学习最有用的东西。   //注:现在觉得RH很死板,AS,ES等用在服务器上或许不错,   Personal desktop用mandrake,debian,suse都不错,笔者现在用Mandrake,因为她长得漂亮   如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到   linux上这种需要,那么中软,红旗等中文linux是不错的选择   我强烈建议:自己亲自动手把linux装到你的硬盘上,   你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装WinXP一样简单   从此现在开始,请不要以windows的工作方式来考虑问题,   应该尝试挖掘linux身上的“天才unix”的气质。   三.进阶   掌握至少50个以上的常用命令   理解shell管道"|",文件流重定向"&"及追加"&&"等   熟悉Gnome/KDE等X-windows桌面环境操作   掌握.tgz.rpm.biz等软件包的常用安装方法   学习添加外设,安装设备驱动程序(比如modem)   熟悉Grub/Lilo引导器及简单的修复操作   熟悉系统固有目录的名称及公用   学会用mount命令访问其他文件系统   了解vi,gcc,gdb等常用编辑器,编译器,调试器   学习linux环境下的简单组网   建议:买一本不需要太厚的linux教材,大致可以满足要求   //现在的书越来越多了,还带很多图,我当时可没这么多书:)   四.高级应用   澄清一些概念:   linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识   我个人认为比较重要几种linux语言  1.英语   即使你不学linux,我也强烈建议你学好英文[U.S.english]   因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装   你必须能无障碍的阅读大量的英文技术文档   在搜索引擎找到的英文网站和网页中熟练的检索   最好能有用英文直接交流的能力,   摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距   2.shell[sed/awk]   shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat   但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell   几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上   这也是CS中的一个重要思想。   此外,shell可以实现工作自动化,这个概念也比较重要   sed,awk用来处理文本,历来很常用   3.Perl/PHP   漂亮的脚本, CGI的首选,比ASP好,应用面很广   4.C\C++   C、C++是linux/unix的核心语言,系统代码都是C写的   5.ASM   系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要   //走核心路线的话,才c\c++,asm最重要   6.Java,Python,Tcl,XML   *系统管理篇   在熟悉linux的基础上还需要掌握至少一种unix   我首推Solaris,其次是FreeBSD   比如运营级系统一般是Solaris+Oracle/DB2之类的   学习apache,ssh,sendmail/Qmail,proftp/vsftp,Samba,Squid,MySQL/PostgreSQL/Oracle,Bind   等各种应用服务器的构架及电子商务的应用   熟悉TCP/IP协议族,学习诸如apache+php+proftp+mysql+quota的实现以及大型局域网,分布式集群   等各种企业级应用解决方案   熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复   系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能   我觉得,如果在此基础上再掌握路由/交换设备便是一个不错的系统管理员   各种基于linux的解决方案可参考相关书籍和文献,必要时用google或各大linux站点站内   搜索引擎寻找最新文档,以避免错误和漏洞   有几本技术大全和技术内幕我认为都是这方面不错的书   *深入学习linux   我个人理解的读linux内核需要的基础:   在此之前,希望先把应用层的东西学一下,那样会比较好理解  1.C   如果学过潭浩强的大学教科书(除了编几个数学模型好像什么也做不了的那种),   建议再看一下   《The C Programming Language》Second Edition这本圣经   /*如果想学缓冲区溢出,这点C的功力可能是不够的*/   还有,,,   反正经典书看多了是没有坏处的   2.asm (AT&T语法,保护模式)   保护模式下的比较复杂,基本上每本讲内核的书都会有介绍   有80x86 Intel语法的基础就行,   有兴趣可以看看Intel的官方****   3.数据结构(离散数学)   计算机专业的核心课程,重要性我就不说了   4.操作系统原理   看懂这个再去读linux吧   5.微机原理/组成原理(数字电路)   底层直接和硬件打交道,所以这个也要   6.了解linux/unix   我想至少你要会操作吧,了解unix的API   7.软件工程/编译原理   这方面的经典书去www.china-pub.com可以搜到很多   我觉得APUE这种书不适合初学者,还是先看看UPE之类的吧   APUE:   《advanced programming in the unix environment》   《unix环境高级编程》   作者:W.Richard.Stevens共有6本经典书,尊为“圣经”   他的书为全世界黑客所拜读!   UPE:《unix programming environment》   《unix编程环境》比较适合初学者的,深入浅出,   其中有一些比较重要的思想   另外,介绍linux下应用层编程的书也有很多,比如   ,redhat,redflag出的书...........   经典书还有很多很多......   操作系统:设计与实现 //交大的考研参考书目,讲Minix的   unix操作系统设计   4.4BSD操作系统设计与实现   昂莱氏unix源代码分析   ulk:understanding the linux kernel (2nd)深入理解linux内核   linux设备驱动程序 (2nd)   linux内核源代码情景分析   保护方式下的80386及其编程(次书已绝版,只有超星的电子版,如果谁能搞到纸书,清一定告诉我一下,非常感激!!!)   在这里你能明白"黑客"及"haching"一词所代表的真正意义   希望我写的这篇文章能造就更多的黑客,而不是骇客   五.一些资源 www.linuxforum.net //国内最高水平GNU站点 www.chinaunix.net //unix、系统管理的不错 www.linuxeden.com //下载软件不错 www.linuxaid.com.cn www.linuxsir.org   其实还有很多,包括国外的   Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=666691  linux太难用了!(一通鼠标点击,进入/etc)  学习linux,你忘记windows的思维方式了吗?  怎么安装软件阿?那一堆文件是干什么的阿?  学习linux,你还在浮躁吗?  进入linux,随便按了几下.赶紧重启进入win  学习linux,你用心了吗?  .......  首先,我想引用一下别人说过的一句话:除非在过去的十年你一直生活在山洞里,否则你一定听说过linux.  是的,现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少,这就造成了现在的状况:各大 linux论坛十分热闹,但我国linux人材却还十分紧缺.到底是什么原因造成了这样的状况? 纠其原因,只有两个字:浮燥!  如果在论坛里来一次调查投票,看一下在论坛里的人到底有多少人手头有一本以上的正规linux教材.我想这个数字不会超过30%. 如果再问一下,有多少人完整的读过各发行版自带的入门文档,系统定制文档,系统管理文档和系统安全文档,恐怕这个数字不到10%. 如果进一步再调查一下究竟有多少人静下心来学习过操作系统和计算机网络等和linux学习十分密切的专业课程,那么恐怕只有3%的数字都不到了.
楼主发言:4次 发图:0张 | 更多
  小伙伴们 顶一个啊......
  写的不错
谢谢分享 ..........
  不错的文章
谢谢 楼主 分享.............
  红啊 不错啊
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)

我要回帖

更多关于 linux程序员 的文章

 

随机推荐