薛非《品悟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. Spark Programming--Transformations

    map 将RDD中的每个数据项,一对一的映射关系,RDD数目不变,分区数也不变 例子: 数据集: map操作: flatMap 和map一样,但是会拆分每一个map之后的list,可以理解为一对多(注 ...

  2. Segments---poj3304(判断直线与线段的位置关系)

    题目链接:http://poj.org/problem?id=3304 题意:给你n个线段,求是否有一条直线与所有的线段都相交,有Yes,没有No; 枚举所有的顶点作为直线的两点,然后判断这条直线是否 ...

  3. LightOj1056 - Olympics(简单数学题)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1056 题意:已知体育场的形状是由一个矩形+两边的两个部分组成,两边的两个部分是属于同一 ...

  4. Oracle中的数据类型和数据类型之间的转换

    Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...

  5. Oracle 11G INDEX FULL SCAN 和 INDEX FAST FULL SCAN 对比分析

    SQL> drop table test; 表已删除. SQL> create table test as select * from dba_objects where 1!=1; 表已 ...

  6. Python开发【第二章】:Python的数据类型

    基本数据类型 一.整型 如: 18.73.84 整型具备如下功能: class int(object): """ int(x=0) -> int or long i ...

  7. robotframework 测试结果写入数据库

    即将更新...........

  8. vs2010制作带卸载功能的安装包过程,及asp.net网站iis发布、备份数据库

    1:新建安装部署项目 打开VS编辑器,点击新建项目,选择:其他项目类型->安装与部署->安装项目,然后点击确定. 2 安装向导完成后即可进入项目文件夹: 双击"应用程序文件夹&q ...

  9. bootstrap学习之一_bootstrap css

    一.文本相关样式 文本格式(用于块状标签):text-left:向左对齐文本:text-center:居中对齐文本:text-right:向右对齐文本:text-justified;text-nowr ...

  10. nsarray排序

    // //  main.m //  05-数组排序 // //  Created by apple on 14-3-21. //  Copyright (c) 2014年 apple. All rig ...