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 环境高级编 ...
随机推荐
- Grandpa's Estate - POJ 1228(稳定凸包)
刚开始看这个题目不知道是什么东东,后面看了大神的题解才知道是稳定凸包问题,什么是稳定凸包呢?所谓稳定就是判断能不能在原有凸包上加点,得到一个更大的凸包,并且这个凸包包含原有凸包上的所有点.知道了这个东 ...
- win7不能在同一窗口打开文件夹,解决办法
1.由于IE浏览器的主页被劫持,总是忽然弹出搜狗的主页,有的时候,忽然弹出IE浏览器(主页是搜狗),然后又自行关闭,我X,我的电脑竟然不受我控制,这可得了,这里我又要骂宁美国度了,made,组装机装了 ...
- java第四周学习
这一周学习的还是面向对象的方法和应用 Java中方法的使用和注意事项 如果没有返回值,就不允许通过return关键字返回结果 方法中不允许嵌套使用 Return返回值只允许返回一个值,不允许返回多个 ...
- 在RichTextBox控件中插入图片
. 在RichTextBox控件中插入图片 关键点 . 实现过程 . public void ShowInsertImageDlg() { OpenFileDialog OpenFileD ...
- OpenSSL使用指南
OpenSSL使用指南 1 介绍 OpenSSL是使用非常广泛的SSL的开源实现.由于其中实现了为SSL所用的各种加密算法,因此OpenSSL也是被广泛使用的加密函数库. 1.1 SSL ...
- range() 函数创建并返回一个包含指定范围的元素的数组
语法 range(first,second,step) 参数 描述 first 必需.规定数组元素的最小值. second 必需.规定数组元素的最大值. step 可选.规定元素之间的步进制.默认是 ...
- android 03 TableLayout
MainActivity.java(默认的,什么都没有) package com.sxt.day02_02; import android.os.Bundle; import android.app. ...
- MapReduce计数器
1.MapReduce计数器是什么? 计数器是用来记录job的执行进度和状态的.它的作用可以理解为日志.我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况. 2.MapReduce计数器能 ...
- 面试时,问哪些问题能试出一个Android应用开发者真正的水平?
一般面试时间短则30分钟,多则1个小时,这么点时间要全面考察一个人难度很大,需要一些技巧,这里我不局限于回答题主的问题,而是分享一下我个人关于如何做好Android技术面试的一些经验: 面试前的准备 ...
- Java基础知识强化之集合框架笔记35:List练习之产生10个1~20之间的随机数(要求:随机数不能重复)
1. 需求:获取10个1-20之间的随机数,要求不能重复 用数组实现,但是数组的长度是固定的,长度不好确定.所以我们使用集合实现. 分析: • 创建产生随机数的对象 • 创建一个存储随机数的集合. • ...