パール木本のPerlテックブログ

世界的プロジェクトに携わるPerlプログラマー「パール木本」のテックブログ。書籍「業務に役立つPerl」,ユーチューバー, 木本システム代表取締役社長。

GUIアプリケーションを作るのに最適なプログラミング言語は?

木本「GUIアプリケーションを作るのに最適なプログラミング言語について」

青年「GUIというのは、画面が見えるアプリケーションですよね」

木本「そうだね、デスクトップアプリケーションとか、ipadのタブレットのアプリケーション、iphoneやandroidのスマートフォンアプリとかだね。」

青年「どういう点が、GUIアプリケーションを作るという点で重要だと思いますか?」

木本「まず、バイナリが作れるということだね。」

青年「えっと、バイナリが作れるというのは、機械語にできるということでしょうか?」

木本「そうそう、コンパイルして、実行ファイルだけで、起動できるということだね。共有ライブラリがあることもあるけどね。」

青年「Perlはどうなんですか?」

木本「Perlは、この点で、不向きだと思うね。Perlに限らず、インタープリタ言語は、不向きだと思うよ。」

青年「インタープリタというのは、動的型言語と考えてよいでしょうか?」

木本「動的型言語は、全部がインタープリタだね。静的言語は、インタープリタで動くこともあるよ。」

青年「動的型言語で、GUIというのは、あまりお勧めしない?」

木本「うん、インタープリタが必要になっちゃうから、配布するというときに、どうしようかってなっちゃうからね。」

青年「とすると、静的型言語の中でも、どんな特徴があるとよいのでしょう。」

木本「OSメーカーが、サポートしているというのは、前提条件としてある。」

青年「んーっと、そもそも、MicrosoftやAppleやGoogleがサポートしていなければ、厳しいと。」

木本「厳しい。」

青年「とすると、C#、Visual Basic, Objective-C, Swift, Kotlin, Javaというあたりが最終候補ですか」

木本「そうだね。僕が考えるに、GUIアプリケーションというのは、ユーザーとインタラクティブに対話をするから、あるタイミングで、長く固まるというのは、良くないと感じます」

青年「なんというか、突然、固まったー、5秒くらい、みたいな」

木本「そうそう、そういうのがないほうがよいよね。」

青年「上記の内で、それが起こりにくそうなのは、どれなのですか?」

木本「リファレンスカウントGCを持っている、Objective-CかSwiftだね。実感としても、ipad/iphoneアプリは、なかなか応答速度がよい」

青年「リファレンスカウントGCだから、GCがその都度行われるから、長期的に固まることが少ないということですね。」

木本「うん。というわけで、ユーザーから見た書きやすさという点では、Swiftかなぁ。Swiftは最終的に一つのバイナリになるしね。でも、Objective-Cはデバイスドライバを書くときは、必要になるからね。相補的な関係性で、Swiftがあれば、Objective-Cがいらないということじゃないんだ。」

青年「なるほど~」

木本「もし僕が、新しいGUI OSを書く機会がもしあれば、C言語の上に、Swiftを乗っけるかいなぁ。」

青年「Perlじゃないんですね。」

木本「うん、Perlじゃないね」