薛非《品悟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. Fiddler-007-修改HTTP请求响应数据

    前文简述了如何通过 Fiddler 修改 HTTP请求 的请求参数,详情请参阅:Fiddler-006-修改HTTP请求参数. 在进行 App 测试时,经常需要修改请求参数,以获得不同的显示效果,以查 ...

  2. 用Intellij IDEA 创建第一个maven项目!

    1. 一直想如何复用以前项目的maven的jar包! 其实只要拿到pom.xml即可!!! 1.1 创建一个maven项目 2. 3. 创建项目名和项目路径,我给项目起的名字是mavenV1.0 4. ...

  3. mysql按条件查询当条件是数字的时候加不加引号是一样的。

    select * from user where id=1 select * from user where id="1" 在查询的注意是否需要加上"";

  4. Qt4过渡至Qt5

    技术在不断进步,新知识也理应不断学习!Qt5的发布带给我无尽的好奇心,然而,受项目影响,一直使用VS2008 + Qt4.8也未曾及时更新.这几天,果断装上VS2010 + Qt5.1,开始研究.Qt ...

  5. HashMap put,get操作

    HashMap中的put方法 public V put(K key, V value) { //当key为null,调用putForNullKey方法,保存null与table第一个位置中,这是Has ...

  6. PHP框架Yii2.0安装(基础版、高级版)

    最近农成也是切入了yiiframework 2.0,就是安装yii2.0就花费了不少的时间,为此做了很多的弯路,特此写一篇博文来给后面学习的同学少走一点的弯路.写的不好的地方欢迎各位学习的同学们能够指 ...

  7. 线程池——JAVA并发编程指南

    TPS00-J. 用线程池实现应用在流量暴涨时优雅降级 很多程序都要解决这样一个问题——处理一系列外来的请求.Thread- Per-Message这种设计模式是最简单的并发策略了,它为每一个请求创建 ...

  8. TNS-01201: Listener cannot find executablen

    有哥们说,他的数据库监听无法启动,报如下错误: 让其查看一下环境变量是否设置,说设置没问题,但是还是报同样的错误.只好让其截图了: 1.监听文件 2.profile文件 从上面的截图中,可以看出,pr ...

  9. mysql explain输出中type的取值说明

    原文: http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html 这列很重要,显示了连接使用了哪种连接类别,有无使用索引. 从最好 ...

  10. 使用javap反编译class文件

    一个普通的Java类: package org.ccnt.concurrence; public class VolatileTest { public static volatile int rac ...