APUE《UNIX 环境高级编程》读后感

今天终于把APUE17章全部看完了,基本上主要知识就在这些章节里。

之前看完《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带控制台的geditgcc是开发环境,不断手动编译和调试,才能理解程序的构造运行过程。

有一句话不是说,在信息时代,所有客观困难几乎不存在,有一台速度过的去的电脑,加上一条宽带,和与之献身的决心,你即可拥有任何你想拥有的编程境界。

网络资料太有用处了,学习上遇到的困难,前辈几乎都遇到过,这几乎是最好的老师了。

你可能感兴趣的:(APUE《UNIX 环境高级编程》读后感)