
2026/06/14 23:56
パラリシズムズ(1982)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
核心的な議論は、プログラミングが本質的に不自然であり、衰退しやすいことにあります。厳格な規則と過度な構文的複雑性は、コードを華美なもの(「ルココ調」)から使用不能なもの(「廃墟」)へと導きます。変数のバインディングを関数を通じて遅らせることは、不要な機能の蓄積を助長しますが、大規模なデータセットを効果的に操作するには少ない手法が必要です。主観的な設計判断は、「一人のための定数は、他人のための変数である」という格言が示すように、明瞭さを曖昧にします。「セミコロンの癌」からの逃避のためには、開発者は複雑な実行経路よりもコアの計算原理を優先すべきであり、最初のルールが示すように、一つの大規模データ構造に多くの関数を適用することの方が、複数のデータ構造に少数の関数を適用するよりも望ましいです。長期的には、あらゆるプログラムは計算よりも人為的複雑性に焦点を当てない限り、構造的な衰退を経験します。この分野は尽きることのないものであり、書くべきプログラムは常に存在します。さらに AI の一分間の経験だけでも、人々に「神に信仰を持つ」ようにさせることがあり、これはソフトウェアシステムの畏怖と避けがたい脆弱性の両方を強調しています。
本文
デビッド・アンリ・アセンブルのプログラミングに関する 120 の格言と教訓
定数、変数と設計哲学
- ある者の定数は、別の者の変数となる。
- 関数は結合を遅らせ、データ構造は結合を引き起こす。
- 📝 教訓: プログラミング工程の末期にデータを構造化せよ。
- シンプルさは複雑性に先立ってはならないが、その後に従うものである。
- トップダウン方式で構築すべきだが、例外はその初めてである。
- プログラムに合わせて仕様に合わせる方が、仕様に合わせてプログラムを変えるよりも容易である。
言語、抽象化と構文
- 構文糖衣は分号がんの原因となる。
- プログラミング言語が低水準であるとは、プログラムの実装において無関係な事項に注意を払わねばならない場合にいう。
- コンピューター分野において進歩の単位時間を測定するのは難しい:いくつかの大聖堂は世紀を要した。
- 多くの優れたアイデアは、語義の深淵への航海に出ると二度と聴く機会を失う。
- リストプログラマーはすべての価値を知っているが、コストについては無知である。
- アセンブラ言語からの撤退はエデンの園における禁果の如く。マシンサイクルを浪費する言語の使用は罪である。
複雑性、最適化と人間の本質
- 対称性は複雑さを減少させる概念である(コルーチンにはサブルーチンが含まれる)。これをあちこちに探求せよ。
- 誤ったプログラムを書くことは容易だが、正しいプログラムを理解することは難しい。
- 最適化は進化を妨げる。
- 愚者は複雑性を無視する。実用主義者はそれを我慢し、少数が回避し、天才が除去する。
- 人間・コンピューター・アルゴリズム間のサイバーネティクス交換は椅子取りゲームのようなものである。平衡への必死な探求は常に三つのうちの一つが落ち着いていない状態で終わる。
- システムにはサブシステムがあり、それはさらにサブシステムを持っており、このように無限に続く。これが我々が常に最初からやり直す理由である。
データ構造とアルゴリズム
- 一つのデータ構造に対して 100 の関数が操作する方が、10 つの関数が 10 つのデータ構造を操作するよりも優れている。
- リカージョン(再帰)は計算の根源であり、説明と時間を交換する仕組みだからだ。
- アルゴリズムとプログラムの間の本質的な区別を求めて消耗された精神的エネルギーを考えよ。
- データ構造を信じるなら、並行的処理(従って同時に実行される)も信じなければならない:なぜならデータを構造化内に集めるならば、その一方だけを有して他方を無視する言語を許容することになるからではないか。
- 文字列(string)は stark なデータ構造であり、そこに渡されるたびに処理が多数複製される。これは情報を隠すのに最適な媒体である。
モジュール性、イディオムと習慣化
- 早期に習慣化せよ:同一のプロセスを常に同じ方法で行い、イディオムを蓄積し標準化せよ。
- 🔸 シェイクスピアとあなたの間の違いは語彙量の大きさではなく、彼の持つイディオムのリストの大きさだけである。
- どこでもモジュール性が存在すれば誤解の可能性も存在する:情報を隠すとは、コミュニケーションの確認を必要とすることを意味する。
人間性と学習曲線
- プログラマーは発想力や論理によってではなく、ケース解析の完全性によって評価されるべきである。
- もし我々が幼少期からプログラムを書く訓練を受けたのであれば、大人になってからはそれを読み解くことができるかもしれない。
- コンピュータとの長期接触により数学者は事務員へと、そして逆もまた起こる。
- 英語ではあらゆる単語は動詞として使われることができる:それがプログラミング言語でもあろうと願いたい。
現実のシステムと未来
- 長期的には、すべてのプログラムはロココ様式の装飾へと変わり、やがて破砕(ラブル)に至る。
- プログラムを理解するには、自分自身を機械とプログラムの両方にもなわねばならない。
- 最も重要なコンピューターは、我々の頭蓋の中で咆哮し、満足な外部エミュレータを探求し続けるものである。現実のコンピューターの標準化は災害となり得る:そしておそらくそれは起こらないだろう。
- ソフトウェアシステムにおいて、早期に行動した者こそが虫(worm)となる。
知恵と戒め(まとめ)
- プログラムを書く方法を知ったら、それを他人に書くように頼みなさい。
- 失敗への対処は容易である:努力して改善せよ。成功もまた容易に扱うことができる:間違った問題を解決したのだ。再度努力して改善せよ。
- 不可能なものを求めようとするとき、シンプルさは障害となるだけである。
- プログラミングにおいては、我々が行うことはすべてより一般的な場合の特殊例であり、かつ往々にしてそれを早急に分かってしまう。
- 計算科学を手計算機を使って学ぶことはできないが、算術を忘れることはできる。
- 計算の目標は我々の合成能力のエミュレーションであり、解析的理解の把握ではない。
- コンピューターはどこも秩序を導入するというよりも、機会を明らかにする方が多い。
- プログラムが一つでも存在限り、プログラムすべき事物が尽きることがない。