Wicky’s Blog

Keep a record of what happened in my life.

HTDP(1) - Brief Introduction to HTDP

很早就想读读被捧为圣经的SICP,看了部分评论大多数都说不是太好理解,表示看了几遍还是云里雾里的。那我就果断退而求其次决定先阅读一遍HTDP,它比SICP更为基础,step by step 的讲解方式也更能让人清楚的理解含义,并且全文配合讲解的语言和SICP一样也是Scheme,看完这本之后再看SICP应该能更为顺利和透彻。

那先大概讲一下HTDP这本书会讲解些什么吧

为什么

为什么要读这本书?这一定是每一个人都会提到的问题。值不值?值!这简直是一定的,整本书不是通过很多exampe code教你某个特定语言(虽然它以Scheme作为讲解语言),而是教你编程模式,设计语言的方式,解决问题的途径与步骤,这是每个程序员最重要的东西。它能教会你:

  • 设计程序中涉及的初步代数以及几何学的知识
  • 分析读与写的技能

总会时不时听到别人说“学什么语言并不重要,重要的是编程思想”,我想HTDP教的就是这个思想,这将是无价并不可多得的财富。

整本书将会围绕如何设计好程序来展开,一般程序设计的步骤有以下组成:

  • 问题分析
  • 定义目的
  • 举出程序样例
  • 制定程序框架
  • 定义程序
  • 测试

而想要能很好的设计一个程序,往往需要遵循以下几点:

  • 分析问题声明
  • 通过样例来剥离表达出问题本质
  • 基于以上的分析制定程序框架和计划
  • 评估希望得到的结果
  • 通过测试修改程序

那么如果你不是程序猿有没有必要读这本书呢?答案也是一定的。在现在这个飞速发展的时代,无论是什么职业,投资分析师也好,设计师也好,工作与生活中碰到的问题其实都可以以程序的逻辑方式去一一化解,因此分析问题和快速有效解决问题的能力也显得格外重要,它能帮你在工作生活中助力不少。

章节内容

这里大概说一下各章节的基本内容

固定大小的数据

介绍最基本的程序设计机制以及计算的核心理念。从Scheme最基本的数字、字符、图片等开始介绍方程和程序,并会展开到数据的间隔、列举、分项、结构和以上各种结合的领域之中

任意的大数据

它是固定大小数据的延伸,由于程序处理的数据可能是一些数字、字符串等(称为固定大小的数据)的组合,这章节便是告诉我们如何处理此类数据的

抽象概念

世界上没有一个程序语言会迫使我们写一些重复的代码,相反的,好的程序语言会提供很好的机制来帮助我们统一处理这种重复代码。计算机科学家称这为“抽象”,它能大大提高程序员的编程效率。这章节就是讲如何创建和使用这些抽象的

交织的数据

介绍了设计概念中的迭代优化

生成递归

虽然结构化的设计以及抽象足以解决大多数的问题,但往往会走向效率不高的境地。换句话说吧,结构化的设计可能会使用过多的时间和内存去得到希望的结果。这章节就介绍了如何处理这些矛盾的

累加器

简单的说,累加器就是给方程添加了“内存”,它极大的提升了结构化设计的效率

好了,大概也介绍的差不多了,让我们赶紧开启这次旅程吧!

Hello Octopress

其实很早之前我就想写一个自己的博客来记录我看到或学到的点点滴滴,可患有晚期懒癌的我迟迟都没有行动起来。是时候迈出第一步了,相信任何事情开头总是最难的,之后也便是顺水推舟的事情了。

之前使用过Blogspot,但是被GFW墙了,还是决定自己搭建一个比较方便,恰好在网上看到Octopress,感觉一下子就被它多简洁吸引住了,Octopress是基于Jellyll的静态页面博客,使用Markdown来生成页面也省了很多排版的琐事。

接下来讲一下基本步骤

创建

首先你必须要安装了Git
其次,如果没有rbenv的话也需要安装,这是在osx下安装的命令

1
2
3
brew update
brew install rbenv
brew install ruby-build

然后照以下步骤初始创建博客

1
2
3
4
5
6
git clone git://github.com/imathis/octopress.git octopress
cd octopress
gem install bundler
rbenv rehash
bundle install
rake install # 安装Octopress默认主题

值得注意的是由于访问https://rubygems.org 不稳定,如果在运行bundle install出现资源获取问题时,建议把Gemfile的source指向 http://ruby.taobao.org 的镜像就可以解决问题了

发布

这一步就是把刚刚建立的博客发布到Github Pages上
首先你要在Github上创建一个repo,命名规则是username.github.io
接着就可以运行rake setup_github_pages,它会帮你设置好一切配置
rake generate会把生成的静态博客拷贝到_deploy/
rake preview可在本地4000端口下预览
rake deploy会把_deploy/里的内容push到master分支里,发布成功!
但是最后别忘了commit你的source code

1
2
3
git add .
git commit -m 'your message'
git push origin source

基本操作

这里大致写一下博客的一些基本操作命令

新建文章

rake new_post["title"]可以新建一篇文章存于source/_posts文件夹下,文章的命名格式为YYYY-MM-DD-post-title.markdown,其中日期能帮助博客文章的排序

新建板块

rake new_page[super-awesome]会为你在导航栏创建一个新的板块

那基本就介绍到这里了 希望能有所帮助