お疲れ様です。ITSS 松浦です。好きな選手はジョージ・ベストです。

前回意気揚々と長いやつを書き上げたところ

「ながい」
「くどい」
「しつこい」
「目が滑る」
「松浦の悪いところの縮図」
「結局何言ってんのかわかんない」
「検閲する側のことも考えろ」
「ハッピーな生き様を晒しすぎ」
「てか、私生活が荒んでる」
「昼間からケロリン桶で酒飲むとか、常軌を逸してる」
「そもそも生活態度を改めるべきでは?」
「若作りに無理がでてきてる」

と、超大絶賛でした。全米が泣いた。僕も泣いた。
覚えてろよ。

そこんところを踏まえまして、今回はなるべくシンプルに、かつ、まろやかに行きたい所存です。

*注: 個人ブログであることをいいことに今回も盛大にグダる予定でございますので、大変恐縮ではございますが、技術的な側面、見どころ、読み応えはほぼほぼございません。IT関係で頑張ってるおじ様の妄言でございます。

今日覚えて帰ってもらいたいのはですね、【パラダイム】 です。
ああ、パラダイムがシフトってるなあ」 とか遠い目をしながら呟くと、なんか、それっぽくないっすか?

~ パラダイムシフトでお茶を濁す ~

「テク夫、父さんな。…… 母さんになろうと思うんだ。いろんなイミで。っていうか、もう、すでにほぼ母さんなんだ」

はいこれ。パラダイムシフトです。

テク夫君パパのパラダイムがこの瞬間、ママにシフトしました。
これがパラダイムシフトです。
同時に、テク夫君にとってもかなりのインパクトをもたらすパラダイムシフトです。

気持ち的にシフトしきれない分は、まあ、時間が解決するんじゃないっすかね。たぶん。しらんけど。

さて、プログラミング言語におけるパラダイムとはなんでしょうか、ってお話なのです。プログラミング言語におけるパラダイムシフトとは何ぞや? って事なのですが、この パラダイム って単語の扱いが微妙なもんで、プログラミングパラダイムとパラダイムシフトのそれぞれが指すパラダイムの意味がちょっと違ってて、まあ、わかりづらいし、正直興味持たれづらい話題だと思ってます。ぶっちゃけ父ちゃんが母ちゃんにトランスフォームした方が、まだネタになるわ。繰り返しになりますが、今回も対象年齢低めに攻めていきます。プロの方は生ぬるく見守っていてください。

じゃあ、さわりとして、ちょっこっとだけプログラミングパラダイムを並べてみます。
「ああ、そういうコトね」ってなんとなく掴んでもらえるかと思います。

・手続き型
・関数型
・イベント駆動型
・ジェネリック
・構造化
・オブジェクト指向

ってな具合です。もっともっと一杯あります。概念的な、名前の無いパラダイムも存在しますし、互いが必ずしも排他的ではありません。今では多くの言語が複数のパラダイム特性を持っています。

例えるなら、「逆サイドへのスペースに刺さるようなパスと、ゴール前混戦でのボールコントロールが得意です。あと、マンマークもできますし、なんだったらキーバーもできちゃいます。それと、遠泳とガトーショコラのデコレートが得意です。ついでにみっつぐらい油田もってて、漢の武将の末裔です」みたいな、わりとスーパーマンな装いって事ですね。ガトーショコラってなんだかわかんないけど。

これがプログラミング言語のパラダイム。
パラダイムシフトってのは、時流の移り変わりみたいな意味合いなんで、プログラミングパラダイムが指すパラダイムとはちょこっと意味合いが違ってきちゃいますね。

そろそろパラダイムって単語のゲシュタルト崩壊が始まった頃合いだと思います。

そんなわけで、そういう、ひとりでなんでもできちゃうマンが存在しているのに、どうしてパラダイムがシフトしてしまうのか。
それは、「いや、だって、こっちのがやりやすいんだもん。あと、新しいやつって、なんかナウいし」です。
話終わっちゃうけど、より良くしようとするすることが、新たなトレンドを生み出す原動力です。
で、多くの人が「こちらの方が良い」と考えた時にパラダイムはシフトします。

ちょっと古いですが、Java は確実にパラダイムをシフトさせた (この言い回しは正しいのだろうか?) んじゃないかな、と思っています。
だって、あんなにシャレオツで、ほどほどの難易度で、おまけにどんなパソコンでも動くんだぜ? Windows だろうか Linux だろうがお構いなしなんだぜ? そりゃみんな飛びつくよね。
これから先、もう確実に一生 Windows でしか使われないソフトなのに、Web の う の字もないのに、 Java で開発しちゃう。是非は置いといて、それだけ市民権を得たのが Java であり、まさにパラダイムシフトだと思います。

「その程度の処理なら Java 使わなくても Visual Basic だって十分だよ? OS Windows なんでしょ?」
「VB とかwwww イwンwタwプwリwタwww」
たかが言語で優越感を得られてお幸せですね。草を刈れ、草を。君のご自慢の C# だってインタプリタだよ?

そうじゃなくて、優位性・利便性を語ることで納得させてください。
「VB であれば、これをこうやって、それからこう。それをいったん置いといて、こっちからのやつで、こう。最後にこう。だけど Java なら、こうやって、こう。で、終わり」
「すげー!」ってなりますよね。こういうシンプルな目の覚めるようなライブ体験がオーディエンスのソウルを揺さぶって、メインストリームになっていき、ビルボードもやんややんやってなって、そうやって新たなデファクトスタンダードが生まれていくんだと思います。もうね、アリーナ席なんてモッシュピットだぜ?

C++-- と言われるJava とよく比較される、C++++ と言われる C# もパラダイムをシフトしたと言えると思います。
どちらも九龍城のような、ガウディのような C++ をより良くしていこう、という立ち上がりであったと思います。
より直感的に、高機能に。なるべくシンプルに、汎用的に。

更には Java の JVM や、C# (Visual Studio) の CLI 、乱暴に言うと異なる OS 、異なる言語間での動作を担保する、というわかりやすい武器まであり、これらのインパクトもあいまって、天下を取るのに十分なプログラミング言語だったんじゃないかな、と思います。

個人見解ですが、別に Java や C# での開発が絶対! じゃなくてもいいと思います。Python だろうが Ruby だろうが、VB だって、CASL や COBOL、LabVIEW だって、用途にさえ合っていれば問題ないと思います。VBA? VBA でミレニアムファルコンの制御を? それはなかなかパンクな生き様ですね。是非とも本懐を遂げられますよう。
とはいえ、趣味でもない限り、一人で全て、最後まで面倒を見きれないのが仕事という環境での実情ですので、やはり最大公約数として選ばれそうな言語は、少し嗜んでおくのが良いというのも否めないところです。

昔、僕は C++ が (僕の仕事をする) 世界で最も優れた言語だと思っていました。楽ではなかったけど。ホントに楽ではなかったけど、「これで開発すべきなんだ。だって、みんなも使ってるし」って泣きながらやっていました。トレンドの本流が C++ だった頃です。
今は「えー? C++ とかマジカンベンしてください」ってなっちゃいます。「同じようなのをもっと短期間で、おまけに保守し易く作れますが、如何でしょうか?」
恐らく、僕の中のパラダムがシフトしてしまったのだと思います。
もしかしたら近い将来、「C# とか、正気ですか?」となっているかもしれません。

いずれにせよ、確実に次のスタンダードが現れるはずです。明日か来年か、もしかしたら僕の引退後か、とにかく不意にパラダイムシフトは訪れます。
自分にとって魅力的であっても、そうでなくても、大勢のエンジニアに選ばれる次の言語がでてきたら、それは時流の変化に他なりません。
変化を感じたその時にどうふるまえるかが、モダンとレガシーエンジニアの分水嶺となることを忘れないようにしたいものです。 (他人事みたいな言いっぷり)

パラダイムの流行り廃りが、言語の進化が健全に行われているという事に他ならないとしたら、むしろ僕たちは歓迎すべきなのでしょうね。
僕は正直、そろそろ新しい事を覚えるのが厳しくなってきてますが。

そういえば、横浜に引っ越してきてからというもの、あれだけ「草なんか食ってられるか!」と言っていた野菜が食べられるようになり、あろうことか、少し美味いな、と思うようになりました。
じいちゃんがばあちゃんに変化するような劇的なものではありませんが、個人的にはこれも素晴らしいパラダイムシフトです。

“飲みすぎない” っていうパラダイムは、未だに受け入れられません。そこんとこはまだまだレガシーです。