Perlテックブログ

ITエンジニアの成長意欲を刺激する技術考察、モジュール開発の日記。Perlイベントや国内や海外のPerlの記事の紹介。

Perlはオペレーションシステムと密結合している言語

Perlテックブログに今日、名称が変わりました。

PerlPerlらしくしているものは何だろう。普段は空気のように意識していないけれど、そういう要素が、たくさんあって、それが積み重なっているはずだ。

最近C言語をやっていて比較して気が付いたのだけれど、Perlはオペレーションシステムと密結合している言語だ。

オペレーションシステムというのはOSのことね。WindowsとかLinuxとかMac OS Xとか。

C言語は、オペレーションシステムと疎結合

C言語をやっていると、言語とOSは疎結合しているということがわかる。それは、ファイルオープンなどの、OSの機能を利用するためには、ライブラリを必ず読み込まないといけないからだ。

#include <stdio>

こうして初めてC言語はOSにアクセスするAPIを利用できる。fopen関数などだ。

Perlは、オペレーションシステムと密結合

Perlの場合は、最初からopen関数を使える。何を意味しているかというとPerlはOSと密結合だということ。

さらに密結合なことに、Perlの標準関数は、実は関数ですらない。open関数は、関数というよりも、オペコードであって、関数として分離されておらず、言語自体と密結合している。

Perlの標準関数呼び出しのパフォーマンスのよさは、関数ではなくって、オペコードだということに起因している。関数呼び出しが発生せず、引数や戻り値がどのようなものであるかによって、最適化がされている。

Perlは言語自体が、OSと密結合している。

利点は、デフォルトでオペレーティングシステムの機能が利用できることと、標準関数呼び出しを最適化できること。

欠点は、オペレーティングシステムと分離した状態で利用できないこと。

プログラミング言語銀の弾丸はないというけれど、どちらかの利点をとると、欠点を受け入れざるを得ないということによる。