『Masterminds of Programming 言語設計者たちが考えること』の読書メモ (Python)

言語設計者たちが考えること (Theory in practice)

言語設計者たちが考えること (Theory in practice)

これを買ったのでメモを残していく。

  • 言語設計におけるバグは見つかるときには時既に遅しというパターンが多い
  • 言語設計のバグはコストが大きいのでしっかり設計を練る
  • 言語への変更の要望をいかにrejectするか
    • Pythonをつかったライブラリ
    • Cによる低級なライブラリ
  • コミュニティと意思決定
  • (ユーザからの機能要望に対して) 「具体的なソリューションを念頭に置かず、自らの問題を説明して欲しい」(P26, L12)
  • 動的型付けだとトレースしづらいよ
  • 静的型付けの言語 (Java) で書かれていても、けっきょくバリデーションをランタイムにやってることもある
  • Python関数型言語ではなく、(そう評価されている一因となっているであろう) lambdaやmap, filterなどはあくまでシンタックス・シュガー
  • 学びやすさと力強さはバランスの問題 (そして双方をじゅうぶんに満たすやりかたはある)
    • より強力な機能を表に出さずに隠蔽するというやりかた
  • ボトムアップとトップダウンという手法は相容れないものではなく、適材適所として適用されるもの
  • GAEでPythonが最初にサポートされたのにはVMをいじってハードウェアへのアクセスを制限できたから、というのがある
  • 理論におぼれるよりまず手を動かして書け (実践的になれ)
  • 言語によってやりかたが変わる、それに適応していこう
  • ユニットテストも完全ではない (コンピュータをシャットダウンさせるスクリプトをテストするには?)

PythonRubyとちがってわりと厳格な (というほどでもないかもしれないけど) コミュニティによって言語の仕様について議論されていて、実績もある。Matzとはまたちがった独裁者。特に締めのエンタープライズについての話はかなりキツいことが書いてあったようにおもう。

言語設計に関してはさほど目新しいことは書いてなかったけど、逆に言うと既に知られていることが大きな意味をもつということだろう。C++を槍玉に挙げて「失敗は残る」って言っているのが印象的。