薛非《品悟C-抛弃C程序设计中的谬误与恶习》读后感part1

  上个月,薛非兄 http://weibo.com/u/2781971343 在微博上联系我,送我一本《品悟C-抛弃C程序设计中的谬误与恶习》,非常感谢。十一长假这天略读了几段,写一个简短评论。

  首先,这本书的目的个人感觉是针对谭浩强的《C语言设计》,但是由于出版编辑无法说得这么明确,这就造成一个问题,这本书其实要针对某本书看,但是又没法提这本书,这种矛盾纠结导致不知真相的读者会稍微有些迷惑目的。

  书很厚实,文字也通顺可读,粗粗看了几个小节,觉得很有体会,由于手边没有环境就没试试某些问题,比如“问题11”中的词不达意,就想验证一下。

  如果能有机会再版,有几个建议:

  1. 代码排版,这几乎是计算机编程类书籍最大的问题,要么字体选择让人无法读下去,要么排版不舒服。《品悟C》里面的字体选择一般,排版非常不好,行距看着难受,括号、缩进没有一定之规,很不舒服。就这一点来说不够好。
  2. 作为一本纠错的书籍,里面常常会提到C89或者C99标准,其实应该把具体页码或者章节也同时标注出来,因为这个工作对于作者应该就是顺手而为的事情。
  3. 就我个人而言,不推荐也不感兴趣谭浩强那本书。在这种情况下,代码示例可以稍微选择的更实用更倾向工程化。再次推荐两本书,一是K&R圣经,另外是《代码阅读》,这两本书中的代码都是很具有实用性,《代码阅读》是从实际开源代码中摘取,相比现在书中这些例子,更有代表性。谭浩强的代码示例,不提也罢。
  4. 有些例子提出了问题,解释了原因,但是没有提出一个解决方案,这个有些可惜。比如说“问题1”使用VC++6练习C语言项目,关键点在于要把language切换成C,另外也可以建议使用codeblock或者codelite这样的开源编辑器,但是书中在这方面着墨不多。
  5. 问题3中,中文引号括号的问题,非常典型非常好的一个问题。书中没有一个比较好的方案,我的建议是选择一个不支持中文的编辑器,或者选择一个支持代码高亮的程序员友好的编辑器,比如sublime text。
  6. 不知道实际学习和实践中哪些问题比较典型,但是感觉某些问题实际上不算大问题,或者是说只针对某些纸面作业的代码写手(比如计算机考试)才是问题。这种其实应该单独分开一个章节就好了。

  总而言之,这本书算是一本很揪细节的书,不是一本系统的C语言学习。有点像《C语言深度解剖》 《C标准和实现》以及王聪 http://wangcong.org/ 要写的一本书,对于C语言初学者而言可能会稍显枯燥,但是如果作为谭浩强《C程序设计》的对照或者用来增加C语言编程的底气,应付面试、考试,作为进阶的学习,还是蛮有价值的。

  另外,对C语言感兴趣的朋友,参考我这篇吧 http://sunxiunan.com/?p=1661 “漫谈C语言及如何学习C语言”

薛非《品悟C-抛弃C程序设计中的谬误与恶习》读后感part1【转】的更多相关文章

  1. 将src非空的属性注入到des中

    package lizikj.bigwheel.common.vo.merchandise.util; import java.lang.reflect.Field; import lizikj.bi ...

  2. 《程序设计中的组合数学》——polya计数

    我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...

  3. 嵌入式程序设计中C/C++代码的优化

    虽然使软件正确是一个工程合乎逻辑的最后一个步骤,但是在嵌入式的系统开发中,情况并不总是这样的.出于对低价产品的需求,硬件的设计者需要提供刚好足够的存储器和完成工作的处理能力.所以在嵌入式软件设计的最后 ...

  4. WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了

    原文:WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4 ...

  5. 《挑战30天C++入门极限》理解C++面向对象程序设计中的抽象理论

        理解C++面向对象程序设计中的抽象理论 很多书在一开始就开始学习josephus问题,为了让大家前面学起来较为容易我把前面涉及到此问题的地方都故意去掉了,现在我们已经学习过了结构体和类,所以放 ...

  6. 嵌入式实时程序设计中C/C++代码的优化

    1 引言 计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用.嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体. ...

  7. 浅谈产品模型(Profile)在程序设计中的作用

    引言:物联网平台的一个重要功能就是资产管理,产品或者设备都可以看成是资产中组成部分,所以有时候说物联网平台可以进行产品管理和设备管理.通常应用物联网平台开发一套具有产品或者设备管理功能的系统的时候,必 ...

  8. C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现【可运行】

    C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现[可运行] #include <stdio.h> #include <stdlib.h> typedef int Key ...

  9. 程序设计中的计算复用(Computational Reuse)

    从斐波那契数列说起 我想几乎每一个程序员对斐波那契(Fibonacci)数列都不会陌生,在很多教科书或文章中涉及到递归或计算复杂性的地方都会将计算斐波那契数列的程序作为经典示例.如果现在让你以最快的速 ...

随机推荐

  1. c#上传文件(二)使用文件流保存文件

    1.html代码: <asp:FileUpload runat="server" ID="UpLoadFile"/> <asp:Button ...

  2. 如何在intellj Idea中给新建的项目添加jar包?

    1. 假如我加入joda.jar 2. 找到发布的你想要的jar包,下载! 3. 解压刚下载的jar包,复制 4. 在intellj idea中新建一个java项目,然后创建一个专门用于放jar的li ...

  3. 深入理解Redis主键失效原理及实现机制

    http://blog.jobbole.com/71095/ 对于缓存失效,不同的缓存有不同的处理机制,可以说是大同中有小异,作者通过对Redis 文档与相关源码的仔细研读,为大家详细剖析了 Redi ...

  4. Nginx反向代理的模拟

    CentOS起两台tomcat,端口分别是8080和8081! 1. nginx配置文件:nginx.conf upstream tomcats{ server 192.168.198.128:808 ...

  5. html5添加音乐包括暂停

    <audio id="musicfx" loop="loop" autoplay="autoplay"> <source ...

  6. tag标签调取

    {dede:tag row='10' sort='new' getall='1'}                                <li> <a href='[fie ...

  7. git安装步骤

    Git简单使用说明 安装git msysgit是Windows版的Git,从https://git-for-windows.github.io下载,然后按默认选项安装即可(注:安装适合自己电脑版本的g ...

  8. jiffies和HZ

    全局变量jiffies用来记录自系统启动以来产生的节拍的总数.启动时,内核将该变量初始化为0,此后,每次时钟中断处理程序都会增加该变量的值.一秒内时钟中断的次数等于Hz,所以jiffies一秒内增加的 ...

  9. javascript中数组的concat()方法 - 数组连接

    <html> <head> <title>数组的concat()方法</title> <script> /* 数组的concat()方法: ...

  10. Hanoi T note

    hanoi(n,x,y,z) { hanoi(n-1,x,z,y);//n-1 from x to y move(x,z);//x->z hanoi(n-1,y,x,z);//n-1 from ...