COBOL? に反応する人なんか、いるんだろうか?
コンピュータプログラミング言語の中でも最古に属するもの、それが COBOL。FORTRAN よりはやや新しい。誕生は 1959 年だそーな。FORTRAN は 1957 年ね。
ぢつはどっちもそこそこな年数経験あり。FORTRAN は2年間、COBOL も2年間、かな。とはいえパンチカード時代ぢゃないぞ、バカにすんな。
COBOL はまぁ、「まったくもって好きじゃない言語」の一つにカウントされることになったわけだが、COBOL でほぼ唯一、「この機能は他にもくれぃ」と思うもんがあって。それが「多岐選択 EVALUATE」。
C 系言語の switch~case に相当するものなのだけど、「評価対象が複数」を一撃で記述出来る:
1 000190*
2 000200 EVALUATE WRK-X ALSO WRK-Y
3 000210 WHEN 100 ALSO 100
4 000220 DISPLAY "100ずつ" UPON CONSOLE
5 000230*
6 000240 WHEN 100 ALSO 200
7 000250 DISPLAY "100:200" UPON CONSOLE
8 000260*
9 000270 WHEN 300 ALSO ANY
10 000280 DISPLAY "とにかくXは300" UPON CONSOLE
11 000290*
12 000300 WHEN OTHER
13 000310 DISPLAY "判断つかぬ" UPON CONSOLE
14 000320*
15 000330 END-EVALUATE.
今更 COBOL プログラマなんか日本で5人くらいしかいないだろう(ウソです、いまでも2位らしいね、日本で)。だからこんな話はどうでも良い。とも言えなくてな、これが。なぜって、この記述が出来るだけで、「設計書の excel の表そのまんま」書けたりすんだな。
で、特に C、java を使うときに、「あぅ、EVALUATE」と思う。
Python は、やろうと思えば、tuple を使うだけなので、誰も困らないし、気付きもせずに活用してた、なんてツワモノもいるかもね:
1 >>> a, b, c = 1, 2, 3
2 >>> (a, b, c) == (2, 2, 3)
3 False
4 >>> (a, b, c) == (1, 2, 3)
5 True
6 >>> (a, b, c) == (1, 2, 3, 4)
7 False
まぁ Python には switch~case はないわけで、if~elif~else で書き連ねなければいけないけどね。
C++ は、「困ることがない」わけではないんだけど、そこまで困れば Python 流儀と同じく struct (std::pairやstd::tupleも含む) と operator== と if 羅列、でやっちゃうので。もしくは switch~case を出来るだけ避けるよね。