薛非《品悟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. js判断是电脑访问手机版网站,跳转到电脑版

    function uaredirect(murl,wurl){ //murl为手机网站域名,wurl为电脑版网站域名地址 67 try { 68 if(document.getElementById( ...

  2. MySQL一些常用的时间函数

    https://my.oschina.net/sallency/blog/470370

  3. C语言:其他进制数转换为十进制(方法一)

    #include<stdio.h> #include<math.h> #include<string.h> //其他任意进制转换为十进制 int main() { ...

  4. iptables常用操作

    1.iptables服务重启 service iptables restart 2.保存iptables规则 iptables-save > ~/iptables.save 3.恢复iptabl ...

  5. 再探Java基础——throw与throws

    http://blog.csdn.net/luoweifu/article/details/10721543 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待 ...

  6. Java多例设计模式

    class TrafficLight{ private String lightType; private static final TrafficLight GREENLIGHT = new Tra ...

  7. Android APP开发笔记

    环境搭建 windows系统上需要以下软件: android SDK -- app开发工具包, 开发运行环境(包括SDK管理工具,和虚拟设备管理). JDK -- java 开发工具包, 负责app代 ...

  8. c# 排序算法总结

    /// <summary> /// 冒泡排序法1 /// </summary> /// <param name="list"></para ...

  9. Java基础之一组有用的类——生成日期和时间(TryDateFormats)

    控制台程序. java.util包中含有相当多的类涉及日期和时间,包括Date类.Calendar类和GregorianCalendar类. Date类对象其实定义了精确到毫秒的时刻,从1970年1月 ...

  10. 在自定义的UINavigationController中设置背景图片

    //这个方法中设置 + (void)initialize { UINavigationBar *bar = [UINavigationBar appearance]; [bar setBackgrou ...