• トップ
  • ブログ一覧
  • 【Perl開発者】ラリー・ウォールが唱えた「プログラマの三大美徳」とは?
  • 【Perl開発者】ラリー・ウォールが唱えた「プログラマの三大美徳」とは?

    メディアチームメディアチーム
    2022.07.12

    ITエンタメ

    【Perl開発者】ラリー・ウォールが唱えた「プログラマの三大美徳」とは?

    怠け者はプログラマに向いている?

    ミツオカミツオカ
    あ〜、外暑いし、もう面倒くさすぎて仕事やりたくないです~
    にゃんこ師匠にゃんこ師匠
    怠惰」良いことじゃな!
    ミツオカミツオカ
    なんですか?
    イラっとします!
    にゃんこ師匠にゃんこ師匠
    短気」これも素晴らしい!
    ミツオカミツオカ
    まあ私が素晴らしいのは当たり前ですけど…
    にゃんこ師匠にゃんこ師匠
    傲慢」完璧じゃ!!
    ミツオカミツオカ
    そろそろ〇りますよ!
    にゃんこ師匠にゃんこ師匠
    「粗暴」それは違う!
    ミツオカミツオカ
    どこかのカルト宗教に洗脳されたんですか…?
    にゃんこ師匠にゃんこ師匠
    「怠惰」「短気」「傲慢」は「プログラマの三大美徳」と呼ばれているものじゃ
    ミツオカミツオカ
    どれも悪い言葉としか思えませんけど…
    にゃんこ師匠にゃんこ師匠
    Perlを開発したラリー・ウォールが言った「プログラマの三大美徳」じゃ!
    ミツオカミツオカ
    Perlってプログラミング言語ですよね?
    にゃんこ師匠にゃんこ師匠
    そうじゃ、かつては誰もが使っていたメジャーな言語だったのう…
    ではラリー・ウォールと彼が唱えた「プログラマの三大美徳」について詳しくいってみるぞ!

    インターネットの発展に貢献したプログラミング言語「Perl」

    インターネットの発展に貢献したプログラミング言語「Perl」

    Perl」はテキスト処理に優れ、強力な正規表現を備えた汎用スクリプト言語です。

    オープンソースなので誰でも利用でき、UNIX や Windows、Linux などの環境を選ばず動作します。

    初期のWEBサイトは静的なページばかりでしたが、やがてブラウザから入力された情報を表示に反映させる動的なページが求められるようになりました。

    そのためにはサーバ側でプログラムの処理を行わなけばなりません。

    この仕組みをCGI(Common Gateway Interface)といいますが、ここでテキスト処理に優れたPerlが活躍していました。

    CGI

    今ではその役割を PHP や Python に譲ってしまいましたが、かつては「CGIといえばPerl」といわれており、多くの掲示板やCMS、ショッピングカートなどがPerlで動いていました。

    インターネットが単なる情報発信だけでなく、様々な用途に使えるようになったのはPerlのおかげと言っても過言ではありません。

    Perl は比較的容易に習得でき、知れば知るほどできることが増えて行く奥の深い言語です。

    今でも、Ruby開発者のまつもとひろゆき氏をはじめ、堀江貴文氏オードリー・タン氏など、Perlファンを公言する人は多数います。

    その開発者にして「プログラマの三大美徳」の提唱者、ラリー・ウォールは言語学者であり文筆家の顔も持っています。

    彼のユニークな経歴と Perl の発展、そして「三大美徳」についてくわしく見ていきましょう!

    Perlを生み出した言語学者のプログラマ、ラリー・ウォール

    Perlを生み出した言語学者のプログラマ、ラリー・ウォール

    「ラリー・アーノルド・ウォール」は1954年9月27日生まれ。

    ワシントン州ブレマートンで育ちました。

    地元のキリスト教大学、シアトルパシフィック大学に入学した彼は、化学と音楽を専攻します。

    しかし、もっといろいろなことを勉強したくなり、古典ギリシャ語のコースもとります。

    教養課程では3年間、コンピュータの基礎を学び、「FORTRAN」「COBOL」「アセンブリ言語」などを習得。

    学生時代に結婚し、妻のグロリアと共に文学や言語学の研究にも取り組みます。

    カリフォルニア大学バークレー校の大学院では、2人で文字をもたない言語について研究しようとアフリカに行く計画を立てました。

    その言語の書記体系を新たに構築するという野心的な計画でしたが、健康上の問題で、これは断念。

    そうこうしている間に、言語学の学位をとって卒業するのに8年もかかってしまいました。

    ミツオカミツオカ
    文学とか言語学とか文系の勉強をしていたんですね!
    にゃんこ師匠にゃんこ師匠
    エンジニアは数学者が多いが、彼は言語学者という点は異色じゃな
    ミツオカミツオカ
    結婚までしちゃってるし、経験の多い大学時代だったでしょうね!
    にゃんこ師匠にゃんこ師匠
    このころ、様々な事に挑戦した事が後の仕事に生きて来るんじゃ!!

    ユニシス社に入社しPerlを開発

    大学時代には勉強と掛け持ちで、ソフトウェア開発の手伝いをするようになっていました。

    彼は転職癖があり、卒業後は様々な企業を渡り歩いていましたが、Perl を開発したのはユニシス社でエンジニアをしていた時です。

    当時、NSA(国家安全保障局)のシステムのサポートをしていました。

    UNIXのネットワークである「USENET」で、レポートを添付して送信するという作業をしていました。

    当時はサーバ上でテキスト処理をするにはC言語で書くか、UNIXコマンドである「シェル」を使うのが一般的でした。

    しかし、C言語はコンパイルが面倒でしたし、シェルはテキスト処理に不向きでした。

    楽をしようとして生まれたプログラミング言語

    彼は、なんとか楽にできないだろうかと思い、1987年、テキスト処理に適した言語を開発します。

    できあがったのは「インタープリタ型言語」です。

    コードを実行する際に、コンピューターが1行ずつ機械語に翻訳してくれるので、コンパイルせずに自動的に処理され、実行確認が簡単です。

    とにかく「面倒なことを自動でできるようにしよう」という発想から生まれた言語です。

    Perlの由来

    Perlの由来

    自分の作ったプログラミング言語に名前をつける際、愛妻家の彼は、夫人の名前である「グロリア」も候補にあげていました。

    しかし、家庭での会話の際、まぎらわしいという理由で却下。

    熱心なクリスチャンでもあったため、新約聖書のマタイによる福音書13章46節に出てくる「高価な真珠」にちなみ「pearl」と名付けようとしました。

    しかし、すでに「pearl」という名前の別のプログラミング言語があることを知り、一文字省略して「Perl」としました。

    もともとは特に意味のある言葉ではありませんでしたが、後付けの意味もあります。

    ラリーによると

    ”practical extraction and report language”
    「実用的なデータ取得レポート作成言語」

    または、

    ”pathologically eclectic rubbish lister”
    「病的折衷主義のガラクタ出力装置」

    だそうです。

    ミツオカミツオカ
    綴りが違うから不安だったけど、やっぱり読み方は「パール」で正解なんですね
    にゃんこ師匠にゃんこ師匠
    「真珠」という意味だからそれで問題ないぞ
    ミツオカミツオカ
    でもガラクタなんたらは意味が分かりませんね
    にゃんこ師匠にゃんこ師匠
    他にも、UNIX上でのデータの操作性が高い「C言語」、やりたいことを素早く作成できる「シェル」の影響が強いことから、「Perlは、Cとシェル(殻)がぱっくり割れて、中から出てきた真珠である」とも言っておる!
    ミツオカミツオカ
    文筆家だけあって、そういうレトリックが好きなんですね
    にゃんこ師匠にゃんこ師匠
    実際、C言語とシェルの間がなかったので、そこを埋めるものを作りたかったというのはたしかじゃろうな

    Perlが広まったきっかけは「ラクダ本」

    Perlのバージョン1.0は1988年2月1日、ニュースグループでリリースされました。

    このころはまだWEBブラウザもない時代だったので、あくまで専門家の間でしか知られていない存在でした。

    しかし、コンパイルいらずの便利な言語として静かに広がり、バージョンアップをかさねて行きました。

    バージョン4.0になるころ、コンピュータ関連書の出版で有名な「オライリーメディア」を率いる、「ティム・オライリー」からPerlの本を書かないかと声をかけられます。

    彼は喜んで引き受け、1991年、Perlの解説書「プログラミングPerl」が出版されます。

    他のプログラマとの共著でしたが、ほとんどラリーが書きました。

    表紙にラクダの絵が描かれていたため、通称「ラクダ本」と呼ばれ、Perlを学ぶものにとってはバイブルとなります。

    有名な「プログラマの三大美徳」と言われる「怠惰」「短気」「傲慢」についてもこの本の中で語られています。

    ミツオカミツオカ
    なんでラクダなんです?
    にゃんこ師匠にゃんこ師匠
    彼はPerlについて「美しくないが問題解決には最適の言語。我々の話し言葉でたとえると、台所で交わされる言葉のようなもの」と言っておる
    ミツオカミツオカ
    それがラクダと何の関係が?
    にゃんこ師匠にゃんこ師匠
    ラクダは醜いが、特定の作業をこなすには最適の生き物」という意味が込められているそうじゃ
    ミツオカミツオカ
    見栄えより実用性ってことですか

    プログラマの三大美徳「怠惰」「短気」「傲慢」

    プログラマの三大美徳「怠惰」「短気」「傲慢」

    この本の「はじめに」の中で

    私たちはプログラマの偉大な三つの美徳である”怠惰、短気、傲慢”を身につけることを推奨する

    と語られています。

    その真意はどのようなものなのでしょうか?

    これは順番も大事なので、ひとつずつ読み解いていきましょう。

    怠惰(Laziness)

    まず、第一の美徳は「怠惰」です。

    プログラムは何か面倒な仕事をコンピュータに押し付けるために組まれるものです。

    そもそも、ラリーがPerlを作ったのも、「レポートを添付して送信する」という作業が面倒だったからです。

    役に立つプログラムを作り、みんなの苦労を減らすことがプログラマの役割です。

    また、何度も同じ質問に答えなくても良いように、ユーザマニュアルを書いておくことも大事です。

    だから、「これは面倒だからやりたくない」という「怠惰」こそがプログラマの出発点です。

    短気(Impatience)

    せっかく組んだプログラムも、充分に役目を果たさないケースもあります。

    そういったことをのんきに受け入れているようではプログラマは務まりません。

    真のプログラマなら、怒りを感じるはずです。

    問題が起きてからではなく、今後起こりうる問題も先回りして解決していく。

    そんな「短気」な気質が優れたプログラムを生み出すのです。

    傲慢(Hubris)

    ラリーはプログラマには「神罰が下るほどの過剰な自尊心」が必要だと言っています。

    自分の作ったプログラムに他人からあれこれ文句をつけられるのは腹が立つものです。

    それを回避するには、どこにだしても恥ずかしくないプログラムを書く必要があります。

    そして、それが完璧に機能するよう保守することも大切です。

    自分の仕事にプライドを持つこと。

    そのような「傲慢」さこそ、プログラマとして成長していくには欠く事のできない気質です。

    ミツオカミツオカ
    みんなが楽になるよう、先を見通して、文句のつけようのないプログラムを書く!
    なんかすごく良いことに聞こえますね
    にゃんこ師匠にゃんこ師匠
    逆に「勤勉」「のんき」「謙虚」だと、現状を受け入れ、遠慮がちに仕事をすることになるから、そんなやつには優れたプログラムは生み出せんというわけじゃ
    ミツオカミツオカ
    釣りは一見のんびりした趣味に見えるけど、短気な人の方が、釣れないといろいろ工夫するから向いてるって聞いたことがあります
    にゃんこ師匠にゃんこ師匠
    同じようなことじゃな
    ラリーは、この「美徳」を一つでも欠く人は、プログラマにはなってはならんとまで言っておるぞ
    ミツオカミツオカ
    ちょっと複雑ですが、私は向いてるってことですか…

    Perlの爆発的普及

    Perlの爆発的普及

    ラリーによって生み出されたPerlは、その利便性が評価され徐々に広まって行きました。

    ラクダ本も版をかさね、技術系の書籍としては異例のロングセラーとなります。

    そして Perl が爆発的に普及したのは、インターネットが発展した1990年代後半です。

    そこにはいくつかのポイントがあります。

    オープンソースのプログラミング言語

    ラリーは Perl 自体を自分にとっての「芸術作品」と考えていました。

    それで儲けようとはせず、無料で公開して多くの人に使ってもらうことで満足していました。

    時を同じくして、Linuxを無料公開していた「リーナス・トーバルズ」と同じ考え方です。

    1998年、オープンソースの定義について話し合う会議「オープンソースサミット」はラクダ本の編集者、ティム・オライリーが主催し、リーナス・トーバルズやラリー・ウォールも出席しています。

    現在でも Perl はオープンソースで、ラリーは「優しい終身の独裁者」の地位についています。

    サーバに標準インストール

    インターネットも盛んになってくると静的なページだけでなく、動的なページが求められるようになりました。

    スクリプト言語で取り扱いが容易なうえ、テキスト処理に強いPerlはCGIに盛んに用いられるようになります。

    CGIはサーバ側でプログラム処理をすることになりますが、当時主流だったUNIXサーバには、標準でPerlがインストールされていました。

    そのため、わざわざ別の言語を使う必要もなく、「CGIといえばPerl」が当たり前だったのです。

    充実したライブラリ

    そしてもう一つ、Perlが人気だった理由はライブラリの充実度です。

    用途に応じ様々なモジュールが競って開発されました。

    そうして作られた多数の汎用性の高いモジュールが「CPAN」と呼ばれるWEBサイトに収められています。

    ここでは、あるモジュールがどのモジュールに依存しているかという依存情報も保持されています。

    特定のモジュールをダウンロードすると、それが必要とする別のモジュールもついてくるので、利便性が高く活発に利用されていました。

    ミツオカミツオカ
    Perl の最盛期って感じですね
    でも、今はWEB開発で Perl 使ってる人あまり聞きませんね…
    にゃんこ師匠にゃんこ師匠
    WEBアプリケーションの開発は PHP や Python がメインになってしまったのう…
    ミツオカミツオカ
    それはなぜです?
    にゃんこ師匠にゃんこ師匠
    オブジェクト指向の言語が主流になったことが主な理由じゃな
    Perlもオブジェクト指向に対応してはいるが、後付けのため他の言語とくらべるといまいちという評価じゃな…
    ミツオカミツオカ
    使いやすい言語という評価だったのに残念ですね…
    にゃんこ師匠にゃんこ師匠
    ただ、まったく使われなくなったわけではなく、他の言語とあわせて使われることもあるぞ

    Perlの現在

    Perlの現在

    Perlは1994年にリリースされたバージョン5のマイナーアップデートが今も続いています。

    2015年に Perl6 が正式公開されていますが、5以前とは互換性がなく姉妹言語という事になっています。

    Perl6 は2019年に「Raku」に改名されましたが、これは日本語の「楽」とラクダの「ラク」に由来しています。

    言語学者であるラリーは日本語も勉強しており、Perlカンファレンスで来日した際は、覚えたての日本語を披露しています。

    しかし、日本語の勉強はかなりてこずっているようで、「Perlを覚えるのは日本語を覚えるよりずっと楽です」とも言っています。

    楽をするために生み出されたPerl

    Perl は、すでに終った言語と言う人もいますが、インターネットの発展に対するその貢献度は計り知れません。

    Ruby や PHP、JavaScript、Python など多くの言語に多大な影響を与えた言語でもあります。

    ラリーはプログラミングについて、

    プログラミングとはシンフォニー(交響曲)を作曲するようなものです。
    同時に、さまざまなレベルで物事が動かなくてはならないからです

    と言っています。

    プログラミングを「芸術」と捉えたラリー・ウォール。

    その思想は多くの言語やエンジニアに影響を与え、引き継がれています。

    ミツオカミツオカ
    シンフォニーを作曲した事がないのでよくわかりません!
    にゃんこ師匠にゃんこ師匠
    ワシもないが、そこはニュアンスで理解せい!
    ミツオカミツオカ
    それにしても凝った言い回しをするのが好きな人でしたね
    にゃんこ師匠にゃんこ師匠
    やはり文学や言語学を研究しとっただけはあるんじゃ!
    だからこそテキスト処理に長けたプログラミング言語を作れたのかもしれんのう…
    ミツオカミツオカ
    文系のプログラマというのも異色でした!
    にゃんこ師匠にゃんこ師匠
    実は、プログラミングに必要な素質は数学力よりも言語能力という研究もあるんじゃぞ!
    ワシントン大学がプログラミング初心者を集めてPythonの学習をさせる実験を行ったところ、結果と最も相関があったのは計算能力、推論能力、短期記憶などではなく「言語能力」だったそうじゃ
    ミツオカミツオカ
    そこの怠惰で短気で傲慢な文系のキミ!
    エンジニア目指してみない?
    にゃんこ師匠にゃんこ師匠
    お、おい…
    急に誰に向かって話しかけてるんじゃ?
    ミツオカミツオカ
    君だよキミ!
    この記事を読んでるそこの君だよ!
    にゃんこ師匠にゃんこ師匠
    ラ、ラ、ライトコードではエンジニアを募集しているよ~
    (く、口が勝手にうごいてしまう…新手のスタンド使いか!?)

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    メディアチーム
    メディアチーム
    Show more...

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background