原创 Bash 記

若讓計算機理解我的意圖,可以有兩種方式,說和指。這與生活中我爲了讓他人能夠理解我的意圖所採用的方式相似。譬如,我想讓朋友去超市幫我買瓶飲料,我可以使用祈使句,「幫我去超市買瓶可樂,如何?」我也可以把他領到超市門口,指一下超市,然後再把他領進

原创 解析

大千世界,茫茫人海,我總是可以一眼便認出你。這個過程裏包含着一個叫做解析的過程。計算機程序也能夠通過這樣的過程,在一堆文本中認出一些特定形式的文本。在短暫又漫長的計算機語言編譯原理的發展過程中,誕生了很多種形式化文本解析方法,PEG 是其中

原创 無名

按語:我從懸崖上跳了下去,在除了墜落沒別的事可幹的過程中爲「不懂編程的人」寫了這一系列文章的第八篇,整理於此。它的前一篇是《周遊抑或毀滅世界》,講述了遞歸函數的基本用法。 警告,這一篇很長。若不能堅持看到最後,最好還是別看了。更何況,不看它

原创 從混亂到有序

按語:我在一鍋湯裏爲「不懂編程的人」寫了這一系列文章的第十篇,整理於此。它的前一篇是《長長的望遠鏡》,作爲《無名》一篇的補充,介紹了 Emacs Lisp 的動態域與詞法域。 警告,這一篇雖然很長,不過,基本上想看到哪就看到哪,隨便看點,都

原创 無所遁形

按語:我任何路邊的攝像頭下走過的時候爲「不懂編程的人」寫了這一系列文章的最後一篇,整理於此。它的前一篇是《咒語》,介紹瞭如何在 Emacs Lisp 程序的世界裏登壇作法,呼風喚雨。 還記得 (defun list-map (a f)

原创 周遊抑或毀滅世界

前一篇《紅藥丸,還是藍藥丸》講述了一個 Emacs Lisp 程序如何在自己的人生的十字路口上選擇的故事。 現在,我們已經有了原子,有了發動機,也有了選擇前進方向的能力,因此不用等明天,今天就可以餵馬,劈柴,周遊世界。 在 Emacs 裏,

原创 程序的基本形狀

又名:寫給不懂編程的人 一時興起,用了差不多十天的時間,爲「不懂編程」的人寫了一系列的形散神不散的散文。這是我在這一年裏做的我覺得最有意義的一件事,當然在我身邊的人看來,這可能是我在這一年裏做的最不務正業的事了。 「不懂編程」的人是加了引號

原创 咒語

按語:我在圍觀茅山道士跳大神的時候爲「不懂編程的人」寫了這一系列文章的第十一篇,整理於此。它的前一篇是《從混亂到有序》,介紹瞭如何用 Emacs Lisp 語言寫一個快速排序程序。 咒語,或許是存在的,而且也是有用的。說咒語完全是騙人的鬼話

原创 原子與虛空

前一篇《勤勞,還是懶惰?》講述了編程的目的在於讓自己或者別人更省力地完成一些重複性的勞動。從這篇文章開始,正式學習 Emacs Lisp 編程方面的知識。 到現在爲止,我們已經大致見識了在 Emacs Lisp 語言中如何定義一個函數,也見

原创 紅藥丸,還是藍藥丸

前一篇《周而復始》講述了遞歸函數的周而復始可以作爲程序的動力源。 Murphis 拿出兩顆藥丸,一顆紅色,一顆藍色,讓 Neo 選。吃了紅藥丸,可以覺醒,看到真相;吃了藍藥丸,則可以繼續渾噩地生活下去。 這樣的程序,用 Emacs Lisp

原创 周而復始

前一篇《原子與虛空》籠統講述了 Emacs Lisp 程序或任意一個計算機程序的基本成分。 無論是汽車、輪船還是火箭,所有的交通工具裏面,都有一個被稱爲發動機的東西。即使我們徒步或騎着單車,這裏面也有一個發動機——我們的心臟。計算機裏面也有

原创 長長的望遠鏡

按語:我在送孩子去幼兒園的路上爲「不懂編程的人」寫了這一系列文章的第九篇,整理於此。它的前一篇是《無名》,講述瞭如何一步一步「推演」出 Y 組合子。 我有個長長的望遠鏡,能一直伸到你的家裏面,你說什麼做什麼,我都能看到。 怎樣用 Emacs