翻譯自 SICP (Structure and Interpretation of Computer Programs) 原文出處: http://mitpress.mit.edu/sicp/ 原書作者: Harold Abelson and Gerald Jay Sussman, with Julie Sussman

1.1.2 命名與環境 (Naming and the Environment)

一個程式語言中,將名稱聯繫到計算機物件(computational object) 的方法,是其很重要的一點。我們說名稱(name)可用來識別一個 變數(variable),而變數的 值(value) 則是一個物件(object)。

在 Scheme 中,我們使用 define 來替東西命名。輸入:

1
(define size 2)

會使直譯器把值「2」聯繫(associate) 到名稱「size」。一旦名稱「size」被與數字「2」聯繫後,我們就可以用這個名稱來使用到「2」這個值:

1
2
3
4
size
;=> 2
(* 5 size)
;=> 10

這邊有一些關於 define 更進一步的用法之範例:

1
2
3
4
5
6
7
(define pi 3.14159)
(define radius 10)
(* pi (* radius radius))
;=> 314.159
(define circumference (* 2 pi radius))
circumference
;=> 62.8318

define 是我們的語言中用以實現抽象化最簡單的方法。它允許我們使用簡單的名稱,去聯繫到複雜操作的結果,就如同上例的 circumference 那樣。 一般而言,一個計算機物件可能會有非常複雜的結構,要我們去記住並重述他們的細節是十分不便的。更甚者,複雜的程式是一步一步地,由複雜度逐漸增長的計算機物件們所建構而成的。而直譯器使得這種逐步建構程式的工作變得十分方便,因為名稱與物件的連結關係可以在一連串的互動中逐步增長而成。這個特色有益於逐步式的開發和程式的測試工作,同時它也是 Lisp 程式往往由大量簡單且彼此相關的程序所組成之重要原因。

很顯然地,這個將值與符號(symbol, 即前文所說的名稱) 聯繫並可在之後再利用它的可能性,也意味著直譯器必須維護某種持續追蹤名稱與物件關聯性的記憶空間。而這個記憶空間被稱作 環境(environment)(更精確地說是 全域環境(global environment),因為我們之後會看到,一個計算過程可能會含有數個不同的環境)。


本翻譯必有不盡之處,懇請不吝賜教。我會不斷更新改進,謝謝!

創用 CC 授權條款
本著作由TeenSuu Lin製作,以創用CC 姓名標示-非商業性 3.0 Unported 授權條款釋出。
此作品衍生自http://mitpress.mit.edu/sicp/

見人言某語言優雅有感

有些語言可能可以說是好用.靈巧.在programmer能力值高的情況下能產出好的程式但卻很難被歸類為 “優雅”##比如說這麼一個語言混淆應屬於物件的 method 或獨立的 function甚至狂熱試圖把一切都當成物件然後鼓勵一堆人寫出 `3.times do` 這種念起來很順 …… Continue reading

[Note]Setup SSH on Fedora in VirtualBox

Published on January 30, 2015