学习linux/unix编程方法的建议(转)

假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过

我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码

其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数

安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式

系统编程推荐《高级unix环境编程》,黑话叫APUE还有《unix网络编程》这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好

内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发参考书如下《linux device drivers》,黑话叫ldd《linux kernel development》,黑话叫lkd《understading the linux kernel》,黑话叫utlk《linux源码情景分析》这四本书为搞内核的必读书籍

最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了

学习linux/unix编程方法的建议

建议学习路径:

首先先学学编辑器,vim, emacs什么的都行。然后学make file文件,只要知道一点就行,这样就可以准备编程序了。

然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。

如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。

然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。

对于几本经典教材的评价:

《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。

《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。

《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。

《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。

《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。

《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会有一个清晰的认识。

《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。
时间: 2024-11-25 01:41:30

学习linux/unix编程方法的建议(转)的相关文章

学习linux/unix编程方法的建议,学习Linux的四个步骤(转)

解答:学习Linux的四个步骤假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系统编程推荐<高级unix环境编程>,黑话叫APUE还有<unix网络编程>这时候

学习Linux系统的方法有很多,适合自己的才是最好

学习Linux系统的方法有很多,适合自己的才是最好. 综观现在互联网+的发展以及应用,作为一个从事IT行业的人员,应该懂得Linux占比多大份量,所以说,去掌握Linux是一种相当重要的谋生途径,当然,如果你对它产生情感那更好. 这篇文章主要是本人结合自身多年的工作经验,以及这么多年对Linux的理解,当然也离不开开源情怀,谈谈Linux的学习方法与学习中应该注意的一些事. 曾经的我,连Linux是什么都不知道.所以我们应该从最基础的学起,Linux入门其实很简单的,最大的问题是需要耐心,需要爱

忠告初学者学习Linux系统的8点建议

导读 新手或者说即将要入坑的小伙伴们,常常在QQ群或者在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的.例如:如何给添加的用户归属用户组,复制整个文件到另一个目录下面,磁盘合理划分,甚至配置IP,这些问题其实都不是很难的,只要了解了 Linux 的基础之后,就可以很轻易的解决掉这方面的问题.而有有些不伙伴他往往上一上来都想直接搞网站.开启sshd服务.ftp服务,根本没有想到要先了解一下Linux 的基础.你连走路都不会何来奔跑一说? 第一:学会使用Linux命令 时至今日Linu

正确学习Linux系统的5个建议

最近几年Linux系统应用越来越广泛,以至于很多人开始热衷学习Linux.但是我们都是从小都是学习windows系统长大的,从windows 98到现在的windows 10,而根据学习windows系统的经验来学习Linux,使很多人越学越茫然,收效甚微,而不知怎么样才能有效的学习好Linux.下面本人根据自己的经验来给大家说说,怎么样有效的学习Linux系统. 我们学习Linux系统的目标是什么? Linux被当作是一个类Unix的系统,我们学习Linux的相关知识,就可以更好的学习Unix

学习Linux系统的方法有很多,适合自己的才是最好。

综观现在互联网+的发展以及应用,作为一个从事IT行业的人员,应该懂得Linux占比多大份量,所以说,去掌握Linux是一种相当重要的谋生途径,当然,如果你对它产生情感那更好. 这篇文章主要是本人结合自身多年的工作经验,以及这么多年对Linux的理解,当然也离不开开源情怀,谈谈Linux的学习方法与学习中应该注意的一些事. 曾经的我,连Linux是什么都不知道.所以我们应该从最基础的学起,Linux入门其实很简单的,最大的问题是需要耐心,需要爱折腾,要有独立思考的能力.不去反复折腾可以说是学不好L

学习Linux系统的方法经验[有图,长文]

Linux系统是一个开源的高效的以命令行为主的操作系统,主要用于服务器操作系统领域.对于Linux操作系统更多详细准确的解释大家可以网上找到<Linux就该这么学>的第0章介绍的比较详细:从认识linux到现在工作使用linux已经有了4年的时间了,在这里给linux系统入门的童鞋们一些建议.Linux系统给我第一个印象是:免费的(当然这个不准确,开源不等于免费,但是大多数开源产品是免费的,公开源代码的),是命令行的(linux操作系统无处不在,无论是命令行,图形化都是有的),是高逼格的(这个

学习Linux系统的方法经验

Linux系统是一个开源的高效的以命令行为主的操作系统,主要用于服务器操作系统领域.对于Linux操作系统更多详细准确的解释大家可以网上找到<Linux就该这么学>的第0章介绍的比较详细:从认识linux到现在工作使用linux已经有了4年的时间了,在这里给linux系统入门的童鞋们一些建议.Linux系统给我第一个印象是:免费的(当然这个不准确,开源不等于免费,但是大多数开源产品是免费的,公开源代码的),是命令行的(linux操作系统无处不在,无论是命令行,图形化都是有的),是高逼格的(这个

0基础学习Linux云计算的方法

对于刚刚开始学习linux我们,感觉这个系统真的很不好学,用着也不习惯,经常用的window系统想必大家都很熟悉,所以说熟能生巧,我认为学习linux在于积累,每天掌握几个命令,每天多练习,多敲几遍,慢慢就会掌握. 随着互联网的大爆发,政府.公司等对网络安全的逐渐重视,linux也得到了更多的关注,学习linux也成为了很多热爱技术人得选择.初学者要怎么入门就成为了当代的一个话题,我感觉你要是真的想从事这个行业,系统的培训下还是很有必要的,随着IT产业的不断发展,用户对网站体验要求也越来越高,而

浅谈身为小白学习Linux系统的四点实用建议

游戏.办公.安全,可以总结为是方便当代人们在生活中的刚需,我们大都是这些服务的使用者,而把单个功能整合起来那就必须谈到互联网,自然而然通过互联网要将Service发送给Service management,经过Service management的处理将结果反馈给使用者,整个过程下来总结为:发送请求.处理请求.反馈请求,这就是一切方便用户,用户只需要发送和接收反馈,而中间的网络传输和服务的处理就交给网络运营商和服务运营商,根据我们的标题,我们这次来简谈下服务运营商端是怎么处理相对复杂的服务请求.