APUE《UNIX 环境高级编程》读后感
今天终于把APUE前17章全部看完了,基本上主要知识就在这些章节里。
之前看完《unix/linux编程实践教程》时,有一种豁然开朗、心旷神怡的感觉,在代码级别了解了linux很多系统机制,和一直不理解编程细节,而且对UNIX编程的整体知识结构有了很好的把握。
APUE是公认的经典,事无巨细的把每个知识讲解很透,还有很多细心的提示。但是看起来的过程并不觉得那么美好,原因有以下几点:
- 1.译者那糟糕的水平!很多句子根本就不是中国人能说口的。无奈英语烂,顶多能看看man的水平,只能看中文版了。这本书是尤晋元和几个研究生一起翻译的,有的地方勉强能通畅的阅读,但是有的章节,真的要去仔细揣摩原意到底是什么。如果恰巧遇到一些难以理解的知识点,感觉坑爹到家了,非要百度google一番才能愉快下去。虽然翻译如此,还是能够体会到作者严谨的编撰水平。
- 2.很多章节对细节抠得太多了。导致很容易陷入纷繁的细枝末节,而忘了该章节整体的知识脉络。系统编程很多功能并列的函数,很多位旗标,很多参数设置,让人叫苦不迭。
- 3.只限于讲解接口,没有多少扩展的知识,对UNIX系统本身的一些机制和原理涉及得并不多。这个实践教程做得比较好,目录结构,重定向,进程,脚本特性,shell原理讲得津津有味。
- 4.图例很少,内存分析,结构体关系,程序结构,系统内核交互图,这些都是非常有助于理解知识的图。
- 5.实例非常少,很多都是特定为了一个接口做的例子,很少有一些实际意义的将知识点串联的例子。而且有些难以理解的章节,没有实例,只是介绍一下接口功能,而至于怎么去用,在实际编程中起到什么作用,并不知道。仿佛就在说,现在给你看看,有这个接口,等哪天你用到了,来参考吧。
- 6.学院派研究精神体现的太多,很多时候都到了一种挑剔的地步。全篇充斥着各个平台的各种对比评判。我相信很多人第一次,都不会乐于纠结这些东西。可能大而全的书,特别是UNIX like这么多版本,想要一本书涵盖所有情况,不得已所造成的结果吧,但这也是跨平台所必须考虑的细节。
- 7.它的确像是一本UNIX重点接口的参考手册,不要指望能一下子吃透,看完理想情况下应该是这样的:记得有哪些功能、接口和特性,至于细节和用法,再查一查应该能够马上理解。
- 8.他对新手很不友好,仿佛看书的人就已经在unix上编程领域摸爬滚打过,只是还没形成经验、知识体系而已。没有linux操作经验,是完全不能直视这本书的,就算有了很多linux运维(常用命令,linux系统机制,文件系统,管道,进程特点,shell脚本)的功底,但没有完整的c语言、数据结构,和一点操作系统、gcc编译知识的功底,也会碰到很多大小困难。其实这本书,本质上算参考书,不算入门之作,已经尽力循序渐进了。
至于这本书优点,不消说,网上歌颂的太多。对我而言,最主要的是,对一个操作系统能够为用户程序层提供的功能,也就是所谓系统接口 ,有了一个全面深刻的了解——让我知道程序究竟能够做哪些事,也能大致知道复杂的软件,底层到底用的是哪些技术。对C语言安全、稳定编程,和跨平台程序开发有了很好的认识。终于理解了 直来直去、直击要害的C语言 和 简约至上、只做好一件事的UNIX 之间的血缘关系。
最后说一下,看这本书的过程 。当然是对着电脑,而且是对着有UNIX like系统的联网电脑,这是必须的。
没有用vi,但我不反对用他,甚至很欣赏用得6的人。我只是不想被那些宗教信仰所束缚,不想为其他细节干扰着我的精力,只想痛痛快快的学编程,做好一件事,这才是主要的,不舍本求末。
虚拟机Ubuntu12.04带控制台的gedit和gcc是开发环境,不断手动编译和调试,才能理解程序的构造运行过程。
有一句话不是说,在信息时代,所有客观困难几乎不存在,有一台速度过的去的电脑,加上一条宽带,和与之献身的决心,你即可拥有任何你想拥有的编程境界。
网络资料太有用处了,学习上遇到的困难,前辈几乎都遇到过,这几乎是最好的老师了。
APUE《UNIX 环境高级编程》读后感的更多相关文章
- APUE(unix环境高级编程)第三版---first day---部署书中实例的运行环境(apue.h)
操作环境:RHEL7.0 部署apue.h实例运行环境 1.下载头文件src.3e.tar.gz 2.解压 tar zxvf src.3e.tar.gz 3.创建普通用户(我仿照书上创建的sar用户) ...
- (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (七) 一起学 Unix 环境高级编程(APUE) 之 进程关系 和 守护进程
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (八) 一起学 Unix 环境高级编程 (APUE) 之 信号
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
随机推荐
- mahout算法源码分析之Collaborative Filtering with ALS-WR拓展篇
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 额,好吧,心头的一块石头总算是放下了.关于Collaborative Filtering with AL ...
- hdu5127 Dogs' Candies CDQ分治 动态凸包
传送门 题意 有三种操作 加入一个二元组\((x,y)\) 删除一个二元组\((x,y)\) 给出一个二元组\((a,b)\),问\(ax+by\)的最大值 题解 \(z=ax+by \Rightar ...
- volley使用与解析(一)
1.什么是volley Volley是google发布的基于Android平台上的网络通信库,能使网络通信更快,更简单,更健壮.获取地址:git clone https://android.googl ...
- mxGraph实现按住ctrl键盘拖动图形实现复制图形功能
实现这个功能很easy,仅仅须要重写moveCells方法就能够了.以下是源文件里的代码: mxGraph.prototype.moveCells = function(cells, dx, dy, ...
- Android ADT离线更新办法
Troubleshooting ADT Installation If you are having trouble downloading the ADT plugin after followin ...
- Git 经常使用的命令
查看.参加.服从.删.恢复,复位更改文件 git help <command> # 演出command的help git show # 显示的提交内容 git show $id git c ...
- InstallShield 12 制作安装包
目 录 一. 二. 三. (一) 打开project... 2 (二) project助手页面... 3 1.Application Information:程序信息... 4 2.Installa ...
- Qt 学习之路 2(79):QML 组件
前面我们简单介绍了几种 QML 的基本元素.QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用.这种组合元素就被称为组件.组件就是一种可重用的元素.QML 提供了很多方法来创建组件.不 ...
- c#中跨线程调用windows窗体控件
c#中跨线程调用windows窗体控件解决. 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首先来 ...
- svn 1.8.11 命令行提交新添加文件错误
由于公司的svn服务器版本不兼容最新的svn 1.8.11导致 提交代码报错 ➜ images svn ci arrowico.png -m"add images for png ico ...