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

lemaden lemaden     2023-03-09     159

关键词:

解答:学习Linux的四个步骤
假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过
我想大概可以分为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设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。

学习编程的正确方法

一,程序和指令是计算机系统最基本的概念二.如何学习语言   ①语言规则是基础   ②分析问题的能力   ③学习和掌握解决问题的思路和方法-->算法(灵魂)   ④用计算机语言编写程序,... 查看详情

linux运维方向需要学些啥,之后可以从事哪些工作

推荐几本学习Linux的书籍供参考:一、《快乐的Linux命令行》这本书介绍如何生存在Linux命令行的世界。不像一些书籍仅仅涉及一个程序,比如像shell程序,bash。这本书将试着向你传授如何与命令行界面友好相处。它是怎样工作的... 查看详情

学习 C 中的宏的建议

】学习C中的宏的建议【英文标题】:SuggestionsforlearningaboutmacrosinC【发布时间】:2011-08-0810:11:05【问题描述】:我参加了涵盖C语言的编程语言本科课程。但是,我并不是开始在嵌入式系统公司工作,而是经常在C语言中使用大量宏... 查看详情

awk学习笔记

1.awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具... 查看详情

学习哪个编程语言呢?python和c#哪个好学?

现在编程语言有很多种,大家在选择的时候可能会疑惑该学习哪个编程语言呢?Python和C#哪个好学?接下来为大家详细介绍一下。  python是一种跨平台语言,无论是Windows、Linux、Unix还是mac系统,我们都可以使用python。甚至在Linux... 查看详情

python全栈学习:如何安装python方法,详解!(代码片段)

...Windows上写Python程序,放到Linux上也是能够运行的。要开始学习Python编程,首先就得把Python安装到你的电脑里。安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境。安... 查看详情

谈谈学习方法

...生,我很喜欢Android,但是我感觉我的逻辑思维有点慢,学习方法也不得巧,所以,问下您有什么建议吗?还是说我不适合学编程,大学计算机专业!其实不止这位同学,之前很多人给我留言,说因为兴趣,选择了编程,而且自... 查看详情

初学者学习编程,如何训练自己的编程思维,资深程序员这样建议

近给大家讲了一堂关于初学者如何从零基础到就业正确的学习步骤,在课堂中我提过两点困难是初学者最大的问题,其中一个问题就是学了后面忘了前面的问题,还有一个最重要的问题就是编程思维。今天主要给大家讲一下初学... 查看详情

网络编程学习方法和图书推荐

    从事网络编程有五年多了,写过自己的Server,读过大部分网络库libevent,redis,muduo等等,市面上的网络用书大多读过,给新人一些建议,主要是从事服务器网络编程后端的同学。     如果你没... 查看详情

给老师的建议

  经过大二一年的学习我举得老师的教学方法很好:让学生自学,我当时也是看着老师的这种方法来的软件工程。到那时经过长时间的学习,我不禁发现了几个问题,老师的教学方法很好,但是就是感觉有点太快了,我们在大... 查看详情

想学习 Windows 编程,有啥建议吗? [关闭]

】想学习Windows编程,有啥建议吗?[关闭]【英文标题】:WanttolearnWindowsProgramming,somesuggestions?[closed]想学习Windows编程,有什么建议吗?[关闭]【发布时间】:2010-03-1118:45:32【问题描述】:有人告诉我使用MFC,但似乎MFC会死,虽然它... 查看详情

linux下的c语言编程

...作系统的接口,其重要性自然不用说,一定要掌握。推荐学习资料为steven先生的UNIX环境高级编程(简称APUE)。三、库的学习无论是在哪个平台做软件开发,对于库的学习都很重要,linux下的开发库很多,我主要介绍一下我常常用到... 查看详情

资料收集:学习linux/*bsd/unix的30个最佳在线文档

文章转自:https://linux.cn/article-10311-1.html手册页(man)是由系统管理员和IT技术开发人员写的,更多的是为了作为参考而不是教你如何使用。手册页对于已经熟悉使用Linux、Unix和BSD操作系统的人来说是非常有用的。如果你仅仅需要... 查看详情

编程学习建议

...?还是编程就是饭碗?总之,要任务导向,要学以致用,学习编程要能创造有效生产力。 选择适合自己的学习材料如何找教材?知乎、豆瓣、专业论坛(博客)推荐,e.g.直接百度"数据挖掘教材推荐知乎";请教前辈如何选教材... 查看详情

这是一名java学者关于学习方向的建议

...编程的潮流,你会是怎样去学的呢?这是一名Java学者的学习方向的建议注:学习顺序只是参考,内容学习可以根据自己需求选择性学习。别人的学习套路不一定适应你,因为每个人都是独一无二的。Java学习路线第一阶段:Java基... 查看详情

想学软件开发有啥建议吗???

...样的工作。二、学好英语。不解释。三、加强编程实践。学习编程的方法和路径是:学习基础语法和知识,看别人优秀的代码,自己写代码,debug,写代码,debug。。。当然其中要多总结和写文档。学生在校期间,基础课比较多... 查看详情

学习编程最好的方法

刚开中学习编程,很多人都不知道怎么样才能学习的更好,学的更快。到底学习编程,有什么样的秘诀呢?今天看到一句话:学习编程语言,学习技术,一定要多练习,练习,练习,再练习,没有代码量,一切都是扯淡。看为,... 查看详情

少儿编程在哪里学?求推荐。

每个地方都有学编程的,也可以在网上进行学习。少儿如果想要学习编程的话,建议选择scratch开始入门,也就是可视化积木堆积教学,这个是比较适合少儿的。02在scratch入门那之后,根据自己孩子的兴趣以及能力来选择python、C+... 查看详情