Oh 脳《005》switch の隘路と、さらなら後藤 goto さん

記事一覧Oh 脳: after ZERO《其之伍》
switch の隘路と、さらなら後藤 goto さん

《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1988/09/01

さらばシベリア鉄道, 1980

ぼくは照れて愛という言葉が言えず
君は近視まなざしを読みとれない

受講者のみなさんは、この記号「^」を何と読んでいますか。正式には「サーカムフレックス」ですが、この話を枕にすると「世代間ギャップ」を感じたりするものです。

関連記事

学生の頃には、マイコン(当時はパソコンとは呼ばず)でも単漢字変換ができるようになって歓喜したものです。学会で論文を発表するときに、レジュメだけは英文での提出を求められる場合があります。そんなとき、姓名をローマ字で表記するのですが、そこで活躍するのが、この記号「^」でした。
英文タイプライターで作成するときには、後藤さんだったら「O」の上に「^」を重ね打ち(GOTÔ のように)したものです。さもないと GOTO になるので「君は要らない(GOTO 不要論)よ」と、冗談のネタにされたものです。(^.^)


... zap ...
構造化プログラミング(SP)を理解できるようになると、逆に「あのとき goto を必要としたのはなぜだろう」と考えられるようになります。すると、それまでは見えなかった、伝統的なプログラミング言語の隘路が見えてきます。同様に、オブジェクト指向プログラミング(OOP)を理解できるようになると、逆に「あのとき switch を必要としたのはなぜだろう」と考えられるようになります。すると、それまでは見えなかった、Java/C# などハイブリッド型 OOP 言語の隘路が見えてきます。


... zap ...
Java/C# などから Python へと移行して来る人が「Python には switch もないのか」と囁くのを耳にします。Java/C# の常識を振りかざす滑稽さは、過去の歴史「天動説から地動説へ」を紐解くまでもありません。むしろ、ここで注目して欲しいのは「天動説(地球中心説)」を支持していたのが、当時の識者たちだったことです。同じことは、四半世紀前に「Smalltalk には switch もないのか」と C++ プログラマーから囁かれたものです。歴史は繰り返す…ということでしょうか。過去の歴史から「何を学ぶか/学ばないか」は、受講者のみなさん次第です。

ハードウェアは急速に進歩している。
ソフトウェアはゆっくりとだが着実に進歩している。
遅々として進歩しないのが、我々のヘッドウェアだ。

この言葉が象徴するように、本格的な OOP へのパラダイムシフトが遅々として進まないのは、皮肉にも Java/C# などの普及による影響が大きいのかもしれません。それを象徴する言葉が「Python には switch もないのか」です。
この問題の本質を理解するには「switch を goto に置き換えて」みると分かります。「Java には goto もないのか」と騒がれなかったのは、SP へのパラダイムシフトが、ある程度は浸透している証とも言えます。switch に対する反応をみると、まだ SP ほどには OOP は浸透していない現実を痛感します。
Java の言語仕様が採った戦略は、goto を予約語に据えるだけで、何も機能を与えないので、事実上「goto の使用を禁じる」という過激な?ものです。また、goto を推奨しないまでも、使用までは禁じない戦略を採った言語仕様の下では、SP 以前の伝統的なスタイルを踏襲して、プログラマーの自己責任の下で「goto に興じる」という光景も見られます。ですから「switch に興じる」のを良しとするなら、そこにはプログラマーの自己責任が問われます。
goto が SP では不要になる理由」を説明できる人が、身の回りに何人いますか。同様に「switchOOP では不要になる理由」を説明できる人が、身の回りに何人いるかは、ひとつの「試金石」になるかもしれません。誰もいないなら、新たな職場に活路を求めるのも「switch 選択肢」のひとつかもしれませんね。□
(以下「Oh 脳《006》ハイブリッド車と Java の隘路 - 続・ひよ子のきもち」に続く…)

《余録》switch 文に関する記述などは、その著者がどのくらい OOP に造詣が深いかを知る「試金石」にもなります。そのような宝探しのスリルを味わいながら、平積みになったままの書棚を整理してみるのも一興ですよ。□

Last updated♪2010/02/07