今天终于把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 环境高级编程》读后感的更多相关文章

  1. APUE(unix环境高级编程)第三版---first day---部署书中实例的运行环境(apue.h)

    操作环境:RHEL7.0 部署apue.h实例运行环境 1.下载头文件src.3e.tar.gz 2.解压 tar zxvf src.3e.tar.gz 3.创建普通用户(我仿照书上创建的sar用户) ...

  2. (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  3. (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  4. (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  5. (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  6. (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  7. (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  8. (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  9. (七) 一起学 Unix 环境高级编程(APUE) 之 进程关系 和 守护进程

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  10. (八) 一起学 Unix 环境高级编程 (APUE) 之 信号

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

随机推荐

  1. Validate XML using a XSD (XML Schema)

    Consider this XML file howto.xml : <?xml version="1.0" encoding="ISO-8859-1"? ...

  2. Maven 私服配置 转

    1.配置Nexus为maven的私服 第一种方式:在项目的POM中如下配置 <repositories>     <repository>         <id> ...

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单 系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四 ...

  4. Annotation Type @bean,@Import,@configuration使用--官方文档

    @Target(value={METHOD,ANNOTATION_TYPE}) @Retention(value=RUNTIME) @Documented public @interface Bean ...

  5. Java基础知识强化04:判断101~200之间有多少素数

    1. 判断101~200之间有多少素数? package himi.hebao; /** * (1).编写函数isPrime()用来判断输入数据是否为素数 (2).遍历判断101~200之间的数据是否 ...

  6. HDFS的Java客户端操作代码(查看HDFS下的文件是否存在)

    1.查看HDFS目录下得文件是否存在 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache. ...

  7. Unity3D 游戏的碰撞

    首先创建两个精灵,然后都绑定上碰撞方法(这个是在上一篇文章的基本上): 不过 要注意一点就是碰撞器需要挂一个重力组件,不然无效 所以添加了差不多就能够实现物体碰撞了: 接下来技术写代码,让碰撞的时候进 ...

  8. 调优系列-tomcat调优

    http://www.360doc.com/content/14/1208/13/16070877_431273418.shtml 使用JMeter对Tomcat进行压力测试与Tomcat性能调优 n ...

  9. retain two decimal digits.

    package kju.o; import static kju.print.Printer.*; import java.text.*; class MathDemo { public static ...

  10. c# 左连接写法

    var itemandformulas = from i in AttendanceItemList join f in AttendanceFormulaList on i.AttendanceCo ...