Oh 脳《120》Python には switch もないのか
‖記事一覧‖Oh 脳: after ZERO 《其之佰弐拾》
Python には switch もないのか
goto と並んで、悪名高いのが switch です。
OOP への第一歩はその switch への未練(未熟)を断ち切れるかが鍵になります。
思考回路を switch
よくある対症療法は「switch がないなら…」との未練から、次の選択肢に飛びつきます…
- (1) if-else で代用する
- (2) 辞書 dict を導入する
が、これらは「switch があったら…」との未練を捨てられず「同義語」を用いて目先の表現を変えただけで、本質的な問題解決にはなりません。そこで、
- (3) OOP を導入する
という第3の選択肢があります。OOP の本質を理解することが、
- Python では 何故 switch が必要でない のか
を知る早道です。
それは「自身の未熟を映す鏡」になるかもしれません。
- Python には switch もないのか
ここで、switch を goto に代えると、その滑稽さが分かります。(^.^)
まだ AT 車が珍しかった時代を想像してみてください。
- この車には クラッチ もないのか
と囁く人がいたかもしれません。電気自動車が普及する近未来を想像してみてください。
- この車には ガソリンタンク もないのか
と囁く人を見掛けたら、どうしますか。
関連記事
- Oh 脳《131》セミナー通信:なぜ夜になると暗くなるのか - 続・ひよ子のきもち
- INDEX〈Python〉
- OOP への道 〜 if/for/配列と別れる50の方法 〜
- 1.00:JPL の事例から
- 1.01:if/dict による解法(switch の代用表現)
- switch 文の代用表現には、if-else 文を利用する、組み込み型 dict を導入する、などがあります。しかし、これらは switch の同義語のようなもので、本質的な問題解決は望めません。
- 1.02:OOP による解法(思考回路を switch)
- 1.06:Java™ Tutorials の事例から, #1: SP による伝統的な解法
- 1.07:Java™ Tutorials の事例から, #2: テンプレートによる抽象表現
- 1.08:Java™ Tutorials の事例から, #3: 動的スキーマの適用
- The Java™ Tutorials には、伝統的な if/switch 文を利用した事例を紹介しています。if/switch への未練を断ち切るのは容易ではありません。
- if と別れる50の方法
- 2005-08-08《6》switch は百害あって一理なし
- 2005-08-10《31》switch は百害あって一理なし
- 旧・ひよ子のきもち
- 2007年8月18日《21》switch 文は、百害あって一利なし《前篇》
- 2007年8月25日《22》switch 文は、百害あって一利なし《後篇》
- 2007年7月 9日《11》三項演算子 ?: に代わるもの★
↑TOP
〓 歴史は繰り返す
Python には、
- 伝統的なC言語風の for 文
- 悪名高い switch 文
がありません。それには意味(意義)があります。これらは「コードを汚染」するだけでなく「バグの温床」になりがちです。
発音や表記に違いはあっても、その意味が同じ(変化しない)ように、
プログラムに違いはあっても、プログラミングとしては同じことです。
そこには、進歩(進化)の跡が見られません。
すると、思い出されるのは…
... zap ...
Smalltalk に触発され、OOP に魅せられたのは 1988 年のことでした。
「switch 文はもう必要ない」と、新鮮な感動を覚えたものです。
もちろん、Smalltalk にも switch はありません。
純粋な OOP の世界では、もはや必要ないからです。
再び「switch を goto に代える」と、この状況を客観視できます。
「Python では何故 goto が必要ないのか」これならうまく説明できるでしょう。
「Python には goto もないのか」と囁かれないのは、
SP への理解が浸透している証とも言えます。
OOP への理解は、SP ほどには浸透していないのかもしれません。
「Python では何故 switch が必要ないのか」を説明できたなら、
`自身`の理解度にも`自信`が持てるようになるでしょう。
switch すべきは思考回路のほうで、SP への第一歩を阻む goto と同様です。
OOP への第一歩である switch への未練(未熟)を断ち切る鍵を手にしたみなさんは、
それを使って、目の前にある扉を開くだけです。
これまでの(Java/C# などの)常識は通用しなくなるかもしれませんが、
新しい世界観が目の前に開けてくることでしょう。
「Python には switch もないのか」
それを「自身の未熟を映す鏡」と心得てください。(^.^)