われわれはプログラミングをする

[コミュニティガイドラインについての補足説明][guideline-qanda]を読んだらプログラミングの意味がワカラナクナッチャッタ。

-----

幅のあることばなのはわかったから、[僕の好きな本][sicp]の序文を引きたくなりました。

## 原文

> Educators, generals, dieticians, psychologists, and parents program. Armies, students, and some societies are programmed. An assault on large problems employs a succession of programs, most of which spring into existence en route. These programs are rife with issues that appear to be particular to the problem at hand. To appreciate programming as an intellectual activity in its own right you must turn to computer programming; you must read and write computer programs -- many of them. It doesn't matter much what the programs are about or what applications they serve.
>
> *(中略)*
>
> Our traffic with the subject matter of this book involves us with three foci of phenomena: the human mind, collections of computer programs, and the computer. Every computer program is a model, hatched in the mind, of a real or mental process. These processes, arising from human experience and thought, are huge in number, intricate in detail, and at any time only partially understood. They are modeled to our permanent satisfaction rarely by our computer programs. Thus even though our programs are carefully handcrafted discrete collections of symbols, mosaics of interlocking functions, they continually evolve: we change them as our perception of the model deepens, enlarges, generalizes until the model ultimately attains a metastable place within still another model with which we struggle. The source of the exhilaration associated with computer programming is the continual unfolding within the mind and on the computer of mechanisms expressed as programs and the explosion of perception they generate. If art interprets our dreams, the computer executes them in the guise of programs!
>
> *(後略)*

by Alan J. Perlis.
[Structure and Interpretation of Computer Programs #Foreword](https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-5.html#%_chap_Temp_2)

## 和訳 (書籍第2版)

> 教育者, 将軍, 栄養士, 心理学者, 親はプログラムする. 軍隊, 学生, 一部の社会はプログラムされる. 大規模な問題への攻撃はプログラムを次々と利用するが, その殆んどは途中で現れる. プログラムには手元の問題に特有と思われる議論が多い. プログラミングをそれ自身で知的活動と評価するには計算機プログラミングに向わなければならない. 計算機プログラム---その多くを読み, 書きしなければならない. そのプログラムが何に関するものか, どの応用のためかということには関係しない. 関係するのはいかにうまく動作するか, 更に大きいプログラムを作るために他のプログラムといかにうまく適合するかということである. プログラマは部品の完成度と集積の妥当性の両方を求めなければならない. 
>
> *(中略)*
>
> 本書の主題との関係でわれわれは三つの現象: ひとの心, 計算機プログラムの集積と計算機に関る. 計算機プログラムは心に生れた物理的, 心理的プロセスのモデルである. ひとの経験と思考から生じたこれらのプロセスは数において巨大であり, 細部において複雑であり, 一時には部分的にしか理解されない. それらは計算機プログラムによって永遠に満足出来るようにモデル化されることは殆んどない. 従ってプログラムが注意深く細工した離散的な記号の集積, 相互作用する関数の組合せであっても, 絶えず進化する. われわれはモデルの認知が深まり, 広まり, 一般化するにつれ, まだ苦闘中の他のモデルの間で, モデルが究極的に準安定な場所を得るまで変化を続ける. 計算機プログラミング対応した陽気な気分の源泉は, プログラムとして表現した機構の心の中と計算機の上での絶えまなき解明と, それらが生成する認知の拡大である. 技術が夢を解釈するなら, 計算機はプログラムを装って夢を実行するであろう.
>
> *(後略)*

和田英一訳
[計算機プログラムの構造と解釈 第二版](http://sicp.iijlab.net/fulltext/xfore.html)

## 和訳 (新訳)

> 教育者、将軍、栄養士、精神分析医、そして両親は、計画を立て(program) ます。軍隊や学生は計画によって動いていますし、計画によって動いている社会もあります。大きな課題に取り組むときにはいくつもの計画を使いますが、それらのほとんどは問題に取り組む中で生まれるものです。それらの計画には、そのとき取り組んでいる課題に特化しているように見える問題があふれています。計画を立てるということ自体を知的な活動として理解するためには、コンピュータプログラミングに目を向ける必要があります。コンピュータプログラムを読み書きする必要があります— それも、大量に。何のプログラムか、どういう応用のためかというところはあまり重要ではありません。重要なのは、それらがどのようにふるまい、またより大きなプログラムを作る中でそれらがどれだけスムーズにほかのプログラムと協調できるかということです。プログラマは、部品の完全性と、組み合わせたものの妥当性の、両方を追求しなければいけません。
>
> *(中略)*
>
> この本の主題について考えるうえで、3 つの事象を考えることになります。人間の心、コンピュータプログラムの集合、そしてコンピュータです。コンピュータプログラムはすべて、実際のプロセスや精神的なプロセスのモデルであり、人間の心の中で生まれるものです。これらのプロセスは、人間の経験と思考から浮かび上がってくるもので、数はとても多く、細かいところまで入り組んでいて、いつでも部分的に理解することしかできません。それらがコンピュータプログラムとして永遠に満足できるようにモデル化されるなんていうことは、めったにありません。ですから、私たちのプログラムは、注意深く工夫されたバラバラの記号の集合であり、絡まり合う関数の組み合わせでありながらも、絶えず進化していきます。私たちのモデルに対する理解が深まったり、広がったり、一般化したりするたびに、私たちはプログラムに手を加えていきます。最終的に、モデルは準安定状態に達し、それは私たちが取り組む別のモデルの中に位置を占めることになります。コンピュータプログラミングに関する興奮の源は、プログラムとして表現されたメカニズムが私たちの心の中とコンピュータ上で絶え間なく広がっていくことと、またそれが生み出す知覚の爆発です。芸術が私たちの夢を解釈するものだとすると、コンピュータは夢を、プログラムという形で実行するものなのです！
>
> *(後略)*

真鍋宏史訳 ([非公式PDF版SICP・新訳 - アスペ日記](http://d.hatena.ne.jp/takeda25/20151030/1446174031))
[SICP非公式日本語版 翻訳改訂版](https://github.com/hiroshi-manabe/sicp-pdf)

-------

僕にはこの記事が客観的にプログラミングや技術に関係があると解釈されうるものなのか、よくわかりません。あと、<q>(中略)</q>とか<q>(後略)</q>の部分には[Lisp](https://ja.wikipedia.org/wiki/LISP)の話が書いてあります。SICPはプログラミングの真髄について触れることができる本です。

[guideline-qanda]: http://blog.qiita.com/post/160967008724/guideline-qanda
[sicp]: https://ja.wikipedia.org/wiki/%E8%A8%88%E7%AE%97%E6%A9%9F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E6%A7%8B%E9%80%A0%E3%81%A8%E8%A7%A3%E9%87%88