時代は言語融合

西尾君のブログより

ついかっとなってコメントしてしまった。C++がマルチパラダイム言語であることが伝わればそれでよかった。いまは別に反省していない。


世代を言語の進化でなく、プログラマの考え方の変化で捉えていることに、コメントレスがつくまで気づきませんでした。似たようなもので、出典は忘れましたが

より高い抽象度のオペレータを提供するのがプログラミング言語だ。オペレータは言語ネイティブで提供されるか、ライブラリで提供されるかはさして重要じゃない。

というようなことをどこかで読んだ記憶があります。

コメントにも書きましたが、C++はひとつのソースプログラム上で正規表現BNFPythonを合わせて記述することができます。C++は本来そういう使い方を前提として設計されたわけではない(まあ、正規表現くらいは比較的簡単にライブラリ実装できますが)のですが、結果的にそれができてしまうあたり、C++こそ最強にして最狂の変態言語ではないかとたまに思うのです。(C99以前のC言語と、アセンブリも並記できるというのはまぁネタです。でも嘘ではない!)

で、ふと思ったのが、とことんメタプログラミングをすればどんな言語だって組み合わせる事ができるんじゃないかなぁ・・・ということで、それを目指すプログラマらによって、そんなパラダイムが形成されて行くことでしょう。でもそれは言語というよりも、メタプログラミングライブラリとそれを支援する開発環境じゃないか?・・・てことで、第三世代後期になると、言語とライブラリと開発環境の一体化が進むぞ!っと言ってみたいところですが、それは西尾君の言うところの第二世代なります。そしてその行き着く先は結局のところ抽象化を追い求めた第一世代・・・ありゃ?


結論:第三世代のセンスを持って、各世代と上手に付き合え!!