おまえだれ
エンジニア3年目
使ってきた言語は PHP、Go、JavaScript、TypeScript、Python辺り
好きなパスタはボロネーゼとカルボナーラ
これはなに
Perlを勉強してみたくなった
新しい言語を勉強するときの手順、工数などをメモしておきたくなった
まずPerlって
1987年公開の、動的型付け言語・スクリプト言語のパイオニア
コンパイルが不要で、テキスト処理に強い
Perl(パール)とは、ラリー・ウォールによって開発されたプログラミング言語である。実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。ウェブ・アプリケーション、システム管理、テキスト処理などのプログラムを書くのに広く用いられている。
真珠を意味するパール(pearl)とは綴りが異なる(知らなかった)
Perlは当初、新約聖書のマタイによる福音書13章46節の「高価な真珠」にちなんで真珠を意味する「pearl」と名付けられた。ラリー・ウォールは肯定的な意味を持つ短い名前を選びたいと考えていて、彼によれば3文字および4文字の単語を辞書から探したが良いのが見つからなかったということである。
↓草
また、彼は妻のグロリアにちなんで名前を付けることも考えたが、家族の会話でまぎらわしいために却下となった。
登場から数年の90年代には既にUNIXやLinuxには標準でインストールされており、**CGI(Common Gateway Interface)**の開発に広く利用された。
最も普及しているバージョンは、「Perl 5」であるが、最新バージョンは2015年にリリースされた「Perl 6」である。
しかし「Perl 6」は、それ以前のバージョンとは互換性のないため注意が必要。
開発者:ラリー・ウォールさん
プログラマの三大美徳 を提唱した人
文筆家でもあるらしい
↓このあたりのセンス、素敵
〜プログラマの三大美徳〜
・ 怠惰(Laziness)
・ 短気(Impatience)
・ 傲慢(Hubris)
Perlの特徴
- 動的型付け言語・スクリプト言語(短いプログラムを簡単に書ける)のパイオニア
- 同時主流だったシェルやC言語に似た文法
- 表現力・自由度が高い(いい意味で)
- 強力な文字列処理で、正規表現をサポート
- プログラムの実行に事前コンパイルが不要(当時は画期的だった)
- インタプリタ言語の中では処理が速い
- オブジェクト指向をサポート
- Linux/Unix環境にデフォルトでインストールされている
他の後発動的型付け言語 との違い
Python
Perl先輩の4年後輩
保守性
- 「やり方はいくつもある」という理念のPerl
- 開発者によってコードの品質が変わってしまうため、保守性は低い
- 一方で「やり方はいつも同じ」という理念のPython
教育的分野での活用
- Pythonは「書きやすく、誰が書いても同じようなコードになる」という観点から、海外の教育現場で普及している
- その結果、幅広い理系コミュニティで便利なライブラリが数多く作成され、今日における「科学計算や機械学習といえばPython」の地位を築いてる
Ruby
Perl先輩の8年後輩
オブジェクト指向
- 後付けオブジェクト指向のPerl
- Perlがオブジェクト指向に対応するようになったのは1994年のバージョン5.0からで、後付け
- そのためオブジェクト指向により最適とはいえない作りになっている...
- 一方でRubyは、最初から本格的なオブジェクト指向言語として作られた
フレームワーク
- Perlには「Mojolicios」や「Dancer」などのフレームが存在するが、「Ruby on Rails」の登場でシェアを奪われた雰囲気がある
PHP
同じくPerl先輩の8年後輩
Web開発
CGIにおいて、Perlで書かれた実行コードはHTML本体に書かれているのではなく、処理の度に、毎回呼び出し処理が必要である
PHPは、その手間をなくすために、最初からHTML内に記載することができ、より動的なページ作成を作成することができる
CMS
CMSにおいて、当初はPerl製のMovableTypeが人気を集めていたが、突然の有償化・後発で無償のWordPressの登場によって廃れてしまった
↓歴史的背景や多言語比較は下記記事が詳細で分かりやすかった🙌↓
環境構築
筆者の環境はmacOS
であるため、デフォルトでPerl5がインストールされており、環境構築の必要がなかった
Hello Woldする
$ touch sample.pl
$ vi sample.pl
以下を記述
print "Hello, world!";
実行
$ perl script.pl
あとは適当に
日本語サイトの中では、以下が良くまとまっている
基本的な文法を色々触りながら学習を進めた
PHP、Python、Rubyなどを触った経験があればさほど抵抗なく学習が進められるであろうと思う
参考
時間計測メモ
ここまで1時間46分⏰
新しく言語を習得する時間にしてはさほど工数が掛からなかったと思う
他の言語比較が面白く、少々寄り道が多かったかも