薛非《品悟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. Win10如何开启IIS服务以及如何打开IIS管理器

    一.开启IIS服务 1.右键点击开始菜单或者使用“win+x”组合键,如然后选择“控制面板”,下如: 2.再控制面板中选择“程序”-->“启动或关闭windows功能”,在弹出的对话框中勾选如下 ...

  2. [转]Android 延迟执行

    开启新线程 new Thread(new Runnable(){ public void run(){ Thread.sleep(XXXX); handler.sendMessage(); //告诉主 ...

  3. TortoiseGit使用与操作

    使用 Git命令有时候确实不怎么方便,特别是每次都要输入密码,如果配置 SSH 的方式,又实在是很麻烦.(当然,必须使用 Windows 神器才有方便友好的客户端图形界面啦!!!) 1.克隆项目 打开 ...

  4. Access数据库创建、使用

    1.创建Access数据库表 1)在office中打开Microsoft Access2010,选择空数据库创建数据库StudentInfo. 2)创建新表,在表格第一列选择数据类型,并输入列名. 3 ...

  5. Android各个版本 版本号对应关系表

    Platform Version API Level VERSION_CODE Notes Android 5.0 21 LOLLIPOP Platform Highlights Android 4. ...

  6. 动画的button(按下时缩小,松开时恢复)

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  7. Using Amazon API Gateway with microservices deployed on Amazon ECS

    One convenient way to run microservices is to deploy them as Docker containers. Docker containers ar ...

  8. 使用Adreno Profiler分析android游戏

    有时候我们需要对自己的游戏或者别人的游戏进行分析,比如我们需要了解一个引擎的大体渲染的流程,这个时候我们可以借助一些工具,在PC上我们可以使用Microsoft PIX.Intel GPA.Nvidi ...

  9. MVC 自定义过滤器/特性来实现登录授权及验证

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    最近在做自学MVC,遇到的问题很多,索性一点点总结 ...

  10. 阿里云的ubuntu server 12.04 下安装jdk和tomcat

    因为想自己在做个简单粗暴的小游戏,弄到朋友圈去,买了个阿里云服务,当时选的的ubuntu sever 12.04的os,恰巧朋友又委托一个小项目,所以先尝试搭建下环境. 首先,用putty或者SSH ...