假装自己是人类
再谈闭包

在 Algol/Fortran 世界生活的人们总是不相信在未来的编程中,函数闭包对编程的效率 能有多大的帮助。之后就发生了“面向对象编程”的革命,现在几乎人人都用函数闭包进行编程, 只是他们依旧不把它叫作“函数闭包”。

之前的文章里, 我们试图说服大家:闭包与面向对象在本质上是一样的。这篇文章中,我们要仔细看看什么是闭 包;闭包与 lambda 的区别;将函数作为数据的优缺点;以及其它一些你可能想了解的概念。

JSONP 简介

JSONP 不是 JSON,它是跨域访问的一种机制。那么什么是跨域访问?什么是 JSONP?如果你不清楚的话,不妨点开看看吧。

CSS 垂直居中

简单一句 margin: 0 auto 我们便能搞定水平居中,而正当我们开心地写出 margin: auto 0 时,浏览器却没却无情地拒绝了我们,那我们来看看如何用 CSS 实现垂直居中吧。

Let's Build a C Compiler (1) -- Design

This is the second chapter of series “Let’s Build a C Compiler”, In this chapter we will have an overview of the structures of our compiler.

Let's Build a C Compiler(0) -- Preface

EDIT: Note that I’ve include the full tutorial in the project write-a-C-interpreter. Please check that instead.

结构的悖论

The paradox of structure is that, whatever its nature, any structure is both enabling and limiting at the same time.

每一种结构既会赋予能力,同时又会限制能力。最近在网易公开课看了这节 结构的悖论,是宾夕法尼 亚大学的公开课《创造、创新和改变》中的一节。这里的结构可以代指任何事物,例如 法律,例如公司的制度,我们应该如何对待生活中的结构呢?

写一个 Mustache 模板引擎

前几天在伯乐在线上看到 介绍 mustache.js 的文章Mustache 是一种模板语言,语法简单,功能强大,已经有各个语言下的实现。那么我们今天就用 python 来一步步实现它吧!

Hexo 自动部署到 Github

使用 Hexo 写博客是十分惬意的事。唯一有点不爽的,就是每次修改后都要重新生成并部署到 Github 上,这也是所有静态博客生成工具的通病。那么本文我们就利用 Travis CI 来完成自动部署,解决心中最后一处搔痒。

手把手教你构建 C 语言编译器(9)- 总结

恭喜你完成了自己的 C 语言编译器,本章中我们发一发牢骚,说一说编写编译器值得注 意的一些问题;编写编译器时遇到的一些难题。

手把手教你构建 C 语言编译器(8)- 表达式

这是整个编译器的最后一部分,解析表达式。什么是表达式?表达式是将各种语言要素 的一个组合,用来求值。例如:函数调用、变量赋值、运算符运算等等。

表达式的解析难点有二:一是运算符的优先级问题,二是如何将表达式编译成目标代码。 我们就来逐一说明。