OOP への道 〜 if/for/配列と別れる50の方法 〜

記事一覧if 篇for 篇配列 篇

Python.use(better) 《Python3.1, Jython2.5.0, IronPython2.6.x》
OOP への道 《余録》〜 if/for/配列と別れる50の方法 〜

《著》真樹育未・後藤いるか・小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1988/10/12 ● 第1版♪1993/05/23 ● 第2版♪2003/05/25

Smalltalk-80 セミナー用に作成したテキスト(1988)をもとに、C++ 版(1993)を経て、Jython 版(2003)として加筆/再構成した余録集です。

■ 概要

伝統的なC言語風の for 文や悪名高い switch 文、配列の呪縛から解かれ、オブジェクト指向プログラミング〔OOP〕の醍醐味を堪能するための準備を行います。

■ 旅への誘い(いざない):はじめの一歩から末の千里へ

Python には、伝統的なC言語風の for 文や悪名高い switch 文がありません。それには理由があります。その理由のひとつは、これらが「コードの汚染」を誘発するからです。「アナログ Java 思考からディジタル Jython 思考へ」パラダイムシフトの旅に出掛けませんか。

■ 関連記事

雛鳥は最初に見た動くものを親だと信じ込む…とされる「刷り込み」と同様に、最初に見たコードから得た知識や経験は、その後のプログラマー人生にも多大な「影響」を及ぼすことは、容易に想像できるでしょう。しかし、それは同時に、新たな知識や経験を獲得 するときの「障害」にもなりかねません。


if と別れる50の方法

1.00:JPL の事例から
  • Java 言語の解説書 JPL には、伝統的な switch 文を利用した事例を紹介しています。しかし、switch 文は多くの問題を抱え「百害あって一利なし」です。その中でも醜悪なのは、OOP を実践する障害になることです。

Java™ Programming Language, The (Java Series)

Java™ Programming Language, The (Java Series)

1.01:if/dict による解法(switch の代用表現)
  • switch 文の代用表現には、if-else 文を利用する、組み込み型 dict を導入する、などがあります。しかし、これらは switch の同義語のようなもので、本質的な問題解決は望めません。
1.02:OOP による解法(思考回路を switch)
  • 本質的な問題解決を望むなら、むしろ思考回路の方を switch して、OOP を導入することです。逆に、何故今でも Java/C# などには switch が必要なのかが分かると、ハイブリッド型 OOP 言語の隘路が見えてきます。
1.05:ジャンケン問題, #3: N人ジャンケンへの道
  • SP に沿った伝統的な問題解決の手法では、多重 if 文や論理演算が必要になります。OOP を導入すると、if/switch の呪縛から解かれ、簡潔で見通しの良いコードを記述できます。

》作業中です《

1.99:


for と別れる50の方法

2.00:K&R の事例から
  • C言語の「バイブル」の代名詞でもある K&R には、伝統的な for 文を利用した事例を紹介しています。しかし、for 文はいくつかの問題を抱え、OOP を実践する際の「障害」になりがちです。

C Programming Language (Prentice Hall Software)

C Programming Language (Prentice Hall Software)

2.02:配列と連結リスト, #2
  • 伝統的な for 文を利用すると、データの内部構造に依存する記述を余儀なくされるので「コードの汚染」が広がる傾向にあります。
2.04:ジェネレーター yield
  • イテレーターを導入すると、制御構造 for..in だけでなく、演算子 in や組み込み関数など「iterable が期待される」状況ならどこでも、その恩恵に浴することができます。さらに、ジェネレーターと組み合わせることで相乗効果が期待できます。
2.05:クロージャー
  • クロージャーを導入すると、すべての問題解決を「静的(コンパイル時)に」行う必要がなく、その状況に応じた最適なアプローチを「動的(実行時)に」注入できるようになります。
2.06:配列とリスト

2.07:配列と集合

》作業中です《

2.99:


配列と別れる50の方法

3.00:JPL の事例から
  • Java 言語の解説書 JPL には、伝統的な配列を利用した事例を紹介しています。しかし、配列はいくつかの問題を抱え「コードを汚染」する一因になり「バグの温床」になりがちです。

Java™ Programming Language, The (Java Series)

Java™ Programming Language, The (Java Series)

3.01:配列の隘路
  •  
3.02:配列と二分木

》作業中です《

3.99:


Last updated♪2009/07/03