6章第1級関数を使ったデザインパターン
パターンを順守しているかどうかは優劣の判断基準ではありません。
——Ralph Johnson『Design Patterns』の共著者[EN-14][JP-05]サンパウロ大学数学統計研究所で発表された「Root Cause Analysis of Some Faults in Design Patterns」のスライドより(2014年11月15日)
デザインパターンは言語に依存してはいませんが、だからといってすべてのパターンがどんな言語にでも適用されるわけではありません。Peter Norvigは「Design Patterns in Dynamic Languages」と題した1996年の発表で、Gammaらの『Design Patterns』に示されている23種類のパターンのうち16パターンは、動的な言語では「不用にできるか、よりシンプルにできる」と述べています(スライド10枚目)[06-01]。対象はLispとDylanでしたが、関連する動的な機能はPythonにもたくさんあります†1。
[†1] 監訳注:DylanはAppleが開発した、Lispに似たオブジェクト指向・関数型の言語です。
『Design Patterns』の著者らは導入部分で、どのパターンが妥当かは実装する言語で決まることを認めています†2。
[†2] 『Design Patterns』,p. 4[EN-14][JP-05]
プログラミング言語の選択は、使い手のモノの見方に影響を与える重要なものです。ここでのデザインパターンはSmalltalk/C++レベルの言語機能を前提としており、そのような選択をしたことで簡単に実装できることと、できないことが決まります。 ...
Get Fluent Python ―Pythonicな思考とコーディング手法 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.