Skip to content
This repository has been archived by the owner on May 18, 2022. It is now read-only.

Latest commit

 

History

History
115 lines (95 loc) · 7.45 KB

about_perl_language.md

File metadata and controls

115 lines (95 loc) · 7.45 KB

Perlという言語について

Perlって何?

  • 1987年, Larry Wall(右写真)が開発したプログラミング言語です.
    • Ruby, Python, PHPと並ぶLL言語(Lightweight Language)の一種になります.
    • C言語やsed(せど), awk(おーく)の影響を受けた動的型付け言語です.
    • 後のRubyやPHPに影響を与えました.
    • 「Perl」は言語そのもの, 「perl」はその処理系を示します.

Perlの特徴

  • Wikipediaの記事から重要なものだけ引用します...
    • 強力な文字列処理. 正規表現をサポート.
    • 日本語をはじめとして世界中の言語を処理可能.
    • 自由度の高い文法. 簡潔にプログラムを記述できる.
    • 高い後方互換性を持つ.
    • 数多くのオペレーティングシステムで利用可能.
    • プログラムの実行には事前コンパイルは不要.
    • 有志によって開発された豊富なモジュール.

TMTOWTDI

  • Perlのスローガン. 「ティムトゥーディー」と読みます.
    • "There's more than one way to do it."
    • 「やり方はひとつじゃない」.
  • Larryは「プログラミング言語は, いろんな対象をシンプルに記述する為にある程度複雑でなければならない」と信じています.
    • Perlは, 同じ意味を持つ処理をいろいろな書き方で表すことができます.

簡潔にプログラムを書ける

my $number = 123;
my $string = 'perl';
print $string . $numbrer . "\n";
  • 動的型付け言語なので変数に型は存在しません.
    • myというのはスコープの違いを示す. これは明示的に指示する必要があります.
  • C言語やJavaのような, 型のキャストなどは必要ありません.
  • よって, このように数値を格納した変数$numberと, 文字列を格納した変数$stringを直接文字列として結合(.演算子によって)できます.

高い後方互換性

  • Perlのバージョンアップによって昔のスクリプトが動かなくなる, ということはほとんどありません.
  • もちろん, Perlもバージョンアップによる細かい機能変更はあります.
    • しかし, 基本的な処理については後方互換性が相当繊細なまでに維持されています.

Perl5 のバージョンの歴史

  • Perl4以前は前史として, 既に周囲に環境が存在しないと思って良いです.
  • Perl5.00x(xは数字)というバージョンでPerl5が登場しました. 1994年のことです.
  • Perl5.6が登場. 2000年. この頃からインターネットやウェブというものが徐々に一般に普及していきます.
  • Perl5.8が登場. 2002年. 国際化対応や今につながる様々な機能が搭載されます. 5.8時代が長かったため, 多くの企業等に長きにわたって使われ続けました.

Perl5 のバージョンの歴史

  • Perl5.10が登場. 2007年. 後方互換性を損ねない構文拡張等を行います.
  • Perl5.12が登場. 2010年.
  • Perl5.14が登場. 2011年.
  • Perl5.16が登場. 2012年.
  • Perl5.18が登場. 2013年. 2014年4月現在の最新の安定版. この講義もPerl5.18を使用します.

Perl5 のバージョンの歴史

  • 5.(偶数) が安定版. 5.(奇数) が開発版です.
  • 基本的に最新版の一つ手前の安定版までがサポート対象です.
  • Perl5.8時代が長かったので, 今もPerl5.8が生き残っている現場はあるものの, 今ならPerl5.10以降だけを考えれば良いです.
  • Perl5.10以降から5.18まで, Perl初学者にとって大きな違いはあまりありません.

様々な環境で使用可能

  • Linuxのほとんどのディストリビューションで標準装備となっています.
    • システムを管理する多くのツールがPerlで書かれているためです.
  • Pythonもほとんどのディストリビューションで標準装備しています.
    • 但しほとんどがPython2.
  • Rubyを標準で装備するディストリビューションはまだ少ないです.
    • Macは標準装備, Mountain Lionは1.8, Mavericksは2.0.

豊富なモジュール

  • CPANと呼ばれるアーカイブに, 全世界のPerl Mongerがモジュールを投稿しています.
    • Perl Monger ... Perl使いのこと. RubyにおけるRubyist, PythonにおけるPythonistaと同義です.
  • 例: Encode ... 文字列のエンコードを処理するモジュール.
  • 例: Net::Twitter ... TwitterのAPIを操作するモジュール.
  • 例: DBD::SQLite ... Perlから, SQLiteのデータベースを操作するモジュール.

余談: Perl6について

  • Perl5とは別に, Perl6も開発されています.
    • 当初はPerl5の後継となるはずだったが, 後に「Perl5とは別に開発を進める」と公式に発表されました.
    • よって, Perl5の開発は継続されます.
    • また, 現在ではPerl6はPerl5とは別の言語とみなされている, と解説されることもあるほど互換性はありません. これはPerl5のバージョン間での互換性が最大限に保たれていることの裏返しでもあります.
    • 現在の最新版は5.18.2, バージョンを確認する perl -v では, Perl5のバージョン18.2と表記されます.

Perlのコミュニティ

  • 世界各地にPerl Monger(PM)のコミュニティが存在します.
    • 地域のPerl Mongrerコミュニティは, (地名).pmを名乗ることが多いです.
    • 日本でも, 十数個のコミュニティ, 勉強会が開催されています.

地域コミュニティ

  • pm.orgに登録されている, 公認のコミュニティ.
    • Hokkaido.pm, Kushiro.pm, Sendai.pm, Niigata.pm, Tokyo.pm, Shibuya.pm, Yokohama.pm, Kamakura.pm, Nagoya.pm, Kansai.pm, Kyoto.pm, Fukuoka.pm
  • 非公認のコミュニティ
    • Hachioji.pm, Namba.pm, ...
  • 勉強会/イベント
    • Hokkaido.pm Casual, Perl Casual, Perl Beginners, Perl入学式, ...

YAPC::Asia Tokyo

  • YAPC ... Yet Another Perl Conference
    • 年に一度行われる, 日本最大規模のPerlの祭典です.
  • 今年は8月28日から30日の3日間開催です. YAPC::Asia Tokyo 2014.
    • 「There is more than one way to enjoy it!」.

Perlを使っている会社

  • LINE, DeNA, Seesaa, はてな, カヤック, mixi, Mobile Factory, FreakOut, GaiaXなどもPerlを活用しており, 優秀なPerl Mongerが数多く所属しています.
  • 過去のYAPC::Asia Tokyoにスポンサーしていた会社はPerlを最大限に活用している, もしくは一部使っているか, Perlに対して興味を持っている企業です.
  • Perlを使ったサービスとしては, はてなの「はてなダイアリー」やLINEの「ライブドアブログ」, オモロキの「ボケて」などが有名です.

PerlとCGI

  • 一時期, 「PerlでWebサービスを作るならCGI」という時代がありましたが, 今はそうではありません.
  • 最近は, PSGI(Perl Web Server Gateway Interface)という仕様に対応したWAF(Web Application Framework)を使っての開発が増えています.
    • 2014年現在, Perlの代表的かつ新規採用されやすいWAFとしては, MojoliciousやAmon2などがあります.
  • Perl入学式は「モダンなPerlを教える」という方針を取っていますので, CGIについては触れません.