前回、「FastCGI」や「CGI」、「Perl」について解説しました。
今回は「Perl」に特化して解説します。
レンタルサーバーを選ぶ時に各レンタルサーバー会社のサイトを見て比較したり詳しく調べたりしていると思いますが「プログラミング言語」については「Perl」という単語もよく見かけるのではないかと思います。
Perlとは何か?
Perlとは「Practical Extraction and Report Language」の略です。
日本語に直訳すると「実用的な抽出とレポート言語」でしょうか。
意味が不明になりますね。
Perlは、ラリー・ウォール氏によって開発された、テキスト関連の操作を主目的としたプログラム言語です。
実際に使ってみると分かると思いますが、テキスト関連の処理(検索、抽出、置換等)に非常に強いと思います。
※強いというのは、機能が豊富、処理速度が速いなどパフォーマンスがいいという意味です
元々UNIX系で使用されていましたが、現在はLinux、Windowsでも使えます。
UNIXの sed や awk を引き継いだ言語
sedやawkは非常に古い「プログラム言語」だと思いますが、Perlはその sed や awk の機能を引き継いでいます。
特にドキュメント関連、文字列操作関連です。
正規表現も豊富にあるのはもちろんのこと、今ではネットワーク関連の機能も揃っています。
インターネット上のサイトをスクレイピングするモジュールも揃っています。
Perl はスクリプト言語
Perlはスクリプト言語です。
スクリプト言語とは、viなどのテキストエディタで作成したテキストファイルをコンピュータがコンパイルをせずに直接実行する形式の言語です。
そのため、C言語と比べると処理のスピードが遅く、大規模なシステム開発には向いていません。
しかし、その反面スクリプト言語は毎回毎回プログラムをコンパイルする必要がないため、プログラムを作る壁が低いです。
私も「Ruby」や「Python」や「シェルスクリプト」でプログラムを作ったりしていますが、インフラエンジニアがちょっとしたツールを作り、業務を改善するにはスクリプト言語が一番いいと思います。
とにかくすぐにプログラムが作れる、しかもプログラムを書く敷居が低いです。
私にとってはこれは最も重要です。
以前、Javaでプログラムを作っていたことがあるのですが、開発環境(Eqlipseとか)を構築したり、ライブラリのパスを通したり、ライブラリの優先順位を考えたり、とにかく目的は「プログラムを作ること」なのに環境構築に大半の時間を使っているような状態でした。
そこでコンパイル言語は使えないなと思ってスクリプト言語に切り替えたことがあります。
どうしてもコンパイル言語でなければプログラムが作れないなど制約があるなら別ですが、ないならスクリプト言語を選べばいいと思います。
PHP、Python、Rubyもスクリプト言語
他にもスクリプト言語として「PHP」「Python」「Ruby」などがあります。
PHP(Hypertext Preprocessor)
HTMLのコード内に記述するタイプのスクリプト言語です。
# cat helloWorld.php <html> <head><title>HelloWorld</title></head> <body> <?php </body> |
MySQLやPostgreSQLなどのフリーのDBソフトとの連携に優れています。
主にWeb系のアプリケーション開発に優れています。
Python
Pythonは高速なオブジェクト指向のスクリプト言語です。
いろんなサイトではPythonは習得が容易であると推奨されていますが、私はほとんどの人が「文字コード」で引っかかり、Pythonを諦めてしまうのではないかと心配します(笑)
文字コードを勉強すればいいという話だと思うんですが、私も含めてプログラム初心者は最初のとっかかりの部分で「プログラムを勉強するためにPythonをやっているのか?文字コードを勉強するためにPythonをやっているのか?」混乱すると思います。
オブジェクト指向型のプログラムを学ぶにはいい言語だと思います。
あとは、機械学習の情報やライブラリが揃っているのが素晴らしいですね。
Ruby
Rubyは私が一押しするプログラム言語です。
一番のお勧めする理由は「簡単」だからです(笑)
私はこれが一番大事だと思います。
プログラムに興味があるということはやりたいことがあるということです。
そしてすぐにプログラムを作って動かせる。と考えると私は Ruby 一択ですね。
Javaや他の言語にも手を出したことがありますが、Javaは開発環境をうまい具合に構築するのが難しくて面倒くさいです(笑)
特にAndroidの開発環境とか。
ライブラリがないって言われてビルドに失敗して、何日も調べて分からなくて再インストールするとか、「目的はAndroidのアプリ開発なのに、何のために毎日仕事から帰ってきて開発環境で悩んでいるんだろう」って思ってしまいました(笑)
余計なことは考えずにすぐにプログラムが書けて動かせる。だからRubyが一番いいですね。
文字コードとか環境とか余計なことは、まずはやってみてから後から勉強するというスタイルが一番好きです。
Perlのメリット
話が脱線してしまいましたが、Perlのメリットを挙げてみます。
メリット①歴史があるので情報量が豊富
古くから使われている言語なのでインターネット上には情報量が豊富にあります。
CGIとして使用できる掲示板やコメント欄などのPerlのサンプルコードも豊富にあります。
ただ今現在使っている人がそんなに多くないので古い情報が多いです。
例えばPythonは近年機械学習ブームもありPythonを勉強するプログラマーが増えているので新しい情報が豊富にあります。
メリット②多くの環境で使用可能
UNIX、Linux、Windowsと多くの環境で使用できます。
Linuxでは大体デフォルトでPerlがインストールされています。
Perlがインストールされていなければ、すぐにインストールできて、すぐにPerlでプログラムを作れます。
Windowsでも「Active Perl」をインストールすればすぐにPerlでプログラムを作って動かすことができます。
メリット③テキスト処理関連の機能が豊富
正規表現などテキスト処理関連の機能が豊富にあります。
シェルでは達成的ない、もしくはシェルだととんでもない冗長なプログラムになってしまうなどといった状況でもPerlなら可能、且つプログラムのコードもシンプルで分かりやすい、ということが多いです。
メリット④意外とモジュール(ライブラリ)が充実している
プログラムを作りたいということはやりたいことがあるということです。
しかし全部ゼロから作るのは無理です。(車輪をゼロから作らずに、今ある車輪を使おう)
Ruby や PHP や Python は数多くのライブラリが提供されていますが、Perlも意外とモジュールが豊富にあり、すぐにやりたいことができると思います。
データベースとのやり取りや、XMLの処理、HTMLファイルの操作など、DB系ネットワーク系のモジュールも豊富にあります。
Perlのデメリット
次にPerlのデメリットを挙げてみます。
パフォーマンスがコンパイル言語に負ける
Perlはスクリプト言語なのでしかたがありません。
C言語に比べると処理速度は劣ります。
複雑かつ膨大な量の計算をする場合は差が出るでしょう。
ただ、スペックのいいレンタルサーバー、且つデータベースを最大限活用して処理をしている場合は、コンパイル言語と比べても大して差が出ません。
結局コアな処理をしている部分がデータベースになるからです。
Perlはただ単にデータベースに情報を流し込むだけならPerl自体で情報を処理するようなことがないためパフォーマンスの低下はそれほどではないと思います。
結論
Perlについていろいろ勉強しましたが、まだまだPerlは健在ですね。
Perlは、プログラム界のベテランという感じがします(笑)
ただ、私はPerlを利用するかといえば、多分しないと思います。
シェルスクリプトだと実現できないような処理なら Ruby、PHP、Python を使うと思います。
コメント