怠け者はプログラマに向いている?
イラっとします!
ではラリー・ウォールと彼が唱えた「プログラマの三大美徳」について詳しくいってみるぞ!
インターネットの発展に貢献したプログラミング言語「Perl」
「Perl」はテキスト処理に優れ、強力な正規表現を備えた汎用スクリプト言語です。
オープンソースなので誰でも利用でき、UNIX や Windows、Linux などの環境を選ばず動作します。
初期のWEBサイトは静的なページばかりでしたが、やがてブラウザから入力された情報を表示に反映させる動的なページが求められるようになりました。
そのためにはサーバ側でプログラムの処理を行わなけばなりません。
この仕組みをCGI(Common Gateway Interface)といいますが、ここでテキスト処理に優れたPerlが活躍していました。
CGI
今ではその役割を PHP や Python に譲ってしまいましたが、かつては「CGIといえばPerl」といわれており、多くの掲示板やCMS、ショッピングカートなどがPerlで動いていました。
インターネットが単なる情報発信だけでなく、様々な用途に使えるようになったのはPerlのおかげと言っても過言ではありません。
Perl は比較的容易に習得でき、知れば知るほどできることが増えて行く奥の深い言語です。
今でも、Ruby開発者のまつもとひろゆき氏をはじめ、堀江貴文氏、オードリー・タン氏など、Perlファンを公言する人は多数います。
その開発者にして「プログラマの三大美徳」の提唱者、ラリー・ウォールは言語学者であり文筆家の顔も持っています。
彼のユニークな経歴と Perl の発展、そして「三大美徳」についてくわしく見ていきましょう!
Perlを生み出した言語学者のプログラマ、ラリー・ウォール
「ラリー・アーノルド・ウォール」は1954年9月27日生まれ。
ワシントン州ブレマートンで育ちました。
地元のキリスト教大学、シアトルパシフィック大学に入学した彼は、化学と音楽を専攻します。
しかし、もっといろいろなことを勉強したくなり、古典ギリシャ語のコースもとります。
教養課程では3年間、コンピュータの基礎を学び、「FORTRAN」「COBOL」「アセンブリ言語」などを習得。
学生時代に結婚し、妻のグロリアと共に文学や言語学の研究にも取り組みます。
カリフォルニア大学バークレー校の大学院では、2人で文字をもたない言語について研究しようとアフリカに行く計画を立てました。
その言語の書記体系を新たに構築するという野心的な計画でしたが、健康上の問題で、これは断念。
そうこうしている間に、言語学の学位をとって卒業するのに8年もかかってしまいました。
ユニシス社に入社しPerlを開発
大学時代には勉強と掛け持ちで、ソフトウェア開発の手伝いをするようになっていました。
彼は転職癖があり、卒業後は様々な企業を渡り歩いていましたが、Perl を開発したのはユニシス社でエンジニアをしていた時です。
当時、NSA(国家安全保障局)のシステムのサポートをしていました。
UNIXのネットワークである「USENET」で、レポートを添付して送信するという作業をしていました。
当時はサーバ上でテキスト処理をするにはC言語で書くか、UNIXコマンドである「シェル」を使うのが一般的でした。
しかし、C言語はコンパイルが面倒でしたし、シェルはテキスト処理に不向きでした。
楽をしようとして生まれたプログラミング言語
彼は、なんとか楽にできないだろうかと思い、1987年、テキスト処理に適した言語を開発します。
できあがったのは「インタープリタ型言語」です。
コードを実行する際に、コンピューターが1行ずつ機械語に翻訳してくれるので、コンパイルせずに自動的に処理され、実行確認が簡単です。
とにかく「面倒なことを自動でできるようにしよう」という発想から生まれた言語です。
Perlの由来
自分の作ったプログラミング言語に名前をつける際、愛妻家の彼は、夫人の名前である「グロリア」も候補にあげていました。
しかし、家庭での会話の際、まぎらわしいという理由で却下。
熱心なクリスチャンでもあったため、新約聖書のマタイによる福音書13章46節に出てくる「高価な真珠」にちなみ「pearl」と名付けようとしました。
しかし、すでに「pearl」という名前の別のプログラミング言語があることを知り、一文字省略して「Perl」としました。
もともとは特に意味のある言葉ではありませんでしたが、後付けの意味もあります。
ラリーによると
”practical extraction and report language”
「実用的なデータ取得レポート作成言語」
または、
”pathologically eclectic rubbish lister”
「病的折衷主義のガラクタ出力装置」
だそうです。
Perlが広まったきっかけは「ラクダ本」
Perlのバージョン1.0は1988年2月1日、ニュースグループでリリースされました。
このころはまだWEBブラウザもない時代だったので、あくまで専門家の間でしか知られていない存在でした。
しかし、コンパイルいらずの便利な言語として静かに広がり、バージョンアップをかさねて行きました。
バージョン4.0になるころ、コンピュータ関連書の出版で有名な「オライリーメディア」を率いる、「ティム・オライリー」からPerlの本を書かないかと声をかけられます。
彼は喜んで引き受け、1991年、Perlの解説書「プログラミングPerl」が出版されます。
他のプログラマとの共著でしたが、ほとんどラリーが書きました。
表紙にラクダの絵が描かれていたため、通称「ラクダ本」と呼ばれ、Perlを学ぶものにとってはバイブルとなります。
有名な「プログラマの三大美徳」と言われる「怠惰」「短気」「傲慢」についてもこの本の中で語られています。
プログラマの三大美徳「怠惰」「短気」「傲慢」
この本の「はじめに」の中で
「私たちはプログラマの偉大な三つの美徳である”怠惰、短気、傲慢”を身につけることを推奨する」
と語られています。
その真意はどのようなものなのでしょうか?
これは順番も大事なので、ひとつずつ読み解いていきましょう。
怠惰(Laziness)
まず、第一の美徳は「怠惰」です。
プログラムは何か面倒な仕事をコンピュータに押し付けるために組まれるものです。
そもそも、ラリーがPerlを作ったのも、「レポートを添付して送信する」という作業が面倒だったからです。
役に立つプログラムを作り、みんなの苦労を減らすことがプログラマの役割です。
また、何度も同じ質問に答えなくても良いように、ユーザマニュアルを書いておくことも大事です。
だから、「これは面倒だからやりたくない」という「怠惰」こそがプログラマの出発点です。
短気(Impatience)
せっかく組んだプログラムも、充分に役目を果たさないケースもあります。
そういったことをのんきに受け入れているようではプログラマは務まりません。
真のプログラマなら、怒りを感じるはずです。
問題が起きてからではなく、今後起こりうる問題も先回りして解決していく。
そんな「短気」な気質が優れたプログラムを生み出すのです。
傲慢(Hubris)
ラリーはプログラマには「神罰が下るほどの過剰な自尊心」が必要だと言っています。
自分の作ったプログラムに他人からあれこれ文句をつけられるのは腹が立つものです。
それを回避するには、どこにだしても恥ずかしくないプログラムを書く必要があります。
そして、それが完璧に機能するよう保守することも大切です。
自分の仕事にプライドを持つこと。
そのような「傲慢」さこそ、プログラマとして成長していくには欠く事のできない気質です。
なんかすごく良いことに聞こえますね
ラリーは、この「美徳」を一つでも欠く人は、プログラマにはなってはならんとまで言っておるぞ
Perlの爆発的普及
ラリーによって生み出されたPerlは、その利便性が評価され徐々に広まって行きました。
ラクダ本も版をかさね、技術系の書籍としては異例のロングセラーとなります。
そして Perl が爆発的に普及したのは、インターネットが発展した1990年代後半です。
そこにはいくつかのポイントがあります。
オープンソースのプログラミング言語
ラリーは Perl 自体を自分にとっての「芸術作品」と考えていました。
それで儲けようとはせず、無料で公開して多くの人に使ってもらうことで満足していました。
時を同じくして、Linuxを無料公開していた「リーナス・トーバルズ」と同じ考え方です。
1998年、オープンソースの定義について話し合う会議「オープンソースサミット」はラクダ本の編集者、ティム・オライリーが主催し、リーナス・トーバルズやラリー・ウォールも出席しています。
現在でも Perl はオープンソースで、ラリーは「優しい終身の独裁者」の地位についています。
サーバに標準インストール
インターネットも盛んになってくると静的なページだけでなく、動的なページが求められるようになりました。
スクリプト言語で取り扱いが容易なうえ、テキスト処理に強いPerlはCGIに盛んに用いられるようになります。
CGIはサーバ側でプログラム処理をすることになりますが、当時主流だったUNIXサーバには、標準でPerlがインストールされていました。
そのため、わざわざ別の言語を使う必要もなく、「CGIといえばPerl」が当たり前だったのです。
充実したライブラリ
そしてもう一つ、Perlが人気だった理由はライブラリの充実度です。
用途に応じ様々なモジュールが競って開発されました。
そうして作られた多数の汎用性の高いモジュールが「CPAN」と呼ばれるWEBサイトに収められています。
ここでは、あるモジュールがどのモジュールに依存しているかという依存情報も保持されています。
特定のモジュールをダウンロードすると、それが必要とする別のモジュールもついてくるので、利便性が高く活発に利用されていました。
でも、今はWEB開発で Perl 使ってる人あまり聞きませんね…
Perlもオブジェクト指向に対応してはいるが、後付けのため他の言語とくらべるといまいちという評価じゃな…
Perlの現在
Perlは1994年にリリースされたバージョン5のマイナーアップデートが今も続いています。
2015年に Perl6 が正式公開されていますが、5以前とは互換性がなく姉妹言語という事になっています。
Perl6 は2019年に「Raku」に改名されましたが、これは日本語の「楽」とラクダの「ラク」に由来しています。
言語学者であるラリーは日本語も勉強しており、Perlカンファレンスで来日した際は、覚えたての日本語を披露しています。
しかし、日本語の勉強はかなりてこずっているようで、「Perlを覚えるのは日本語を覚えるよりずっと楽です」とも言っています。
楽をするために生み出されたPerl
Perl は、すでに終った言語と言う人もいますが、インターネットの発展に対するその貢献度は計り知れません。
Ruby や PHP、JavaScript、Python など多くの言語に多大な影響を与えた言語でもあります。
ラリーはプログラミングについて、
「プログラミングとはシンフォニー(交響曲)を作曲するようなものです。
同時に、さまざまなレベルで物事が動かなくてはならないからです」
と言っています。
プログラミングを「芸術」と捉えたラリー・ウォール。
その思想は多くの言語やエンジニアに影響を与え、引き継がれています。
だからこそテキスト処理に長けたプログラミング言語を作れたのかもしれんのう…
ワシントン大学がプログラミング初心者を集めてPythonの学習をさせる実験を行ったところ、結果と最も相関があったのは計算能力、推論能力、短期記憶などではなく「言語能力」だったそうじゃ
急に誰に向かって話しかけてるんじゃ?
この記事を読んでるそこの君だよ!
(く、口が勝手にうごいてしまう…新手のスタンド使いか!?)