#プログラミング言語の簡潔で不完全、そしてほとんど間違った歴史 #六21 #平成IT史ざっくり解説
スパゲッティから神のお告げまで😂プログラミング言語たちのありえない誕生秘話【たぶんほとんど間違ってます】#技術史 #開発者あるある
――開発者の愛と偏見に満ちた、もう一つのプログラミング言語史
目次
- 本書の目的と構成
- 要約
- 登場人物紹介
- 目次 (このセクションです)
- 第一部 黎明期から成熟期へ?嘘と本当の狭間
- 第二部 ウェブ時代の混乱と模倣の美学 (1990s後半-2000s)
- 補足資料
- 巻末資料
本書の目的と構成
プログラミング言語の歴史について、真面目な教科書だけでは伝わりにくい、開発者の「あるある」やコミュニティの雰囲気、そして何よりユーモア💡を交えてご紹介することを目的としています。歴史的事実に基づきつつも、大胆な飛躍や誇張、そして多分に筆者の偏見を含んだ内容となっていますので、くれぐれも「真実」として受け止めないでくださいね😂。
本書は、時代を追って主要なプログラミング言語の「誕生秘話(ほとんど嘘)」を語る第一部と第二部、そして記事の内容をさらに深掘りしたり、遊び心を詰め込んだりした補足資料と巻末資料という構成になっています。どうぞ肩の力を抜いて、気楽にお読みいただければ幸いです。
要約
この「プログラミング言語の簡潔で不完全、そしてほとんど間違った歴史」と題された奇妙な年代記は、1801年のジャカード織機から始まり、2003年のScala誕生に至るまでの主要なプログラミング言語の誕生を、事実を盛大に歪曲し、皮肉とユーモアたっぷりに描いています。エイダ・ラブレスはコンピュータが無いのにプログラムを書き、チューリングとチャーチは同じ年に「全ての言語」を発明したものの、一方は見向きもされません。FORTRANは退屈で、LISPは「戦略括弧」の枯渇で高価に。COBOLは怪しげな賭けから生まれ、Pascalはまだ存在しないCとの比較で批判されます。CとUnixは破壊衝動の賜物、Prologは2歳児並みの知性で「いいえ」しか言いません。Smalltalkは禅問答、Adaは国防総省の公共事業、C++は聞いたものを何でも詰め込み、Objective-Cは失読症が生んだとされます。Perlは神のお告げ、Haskellはセレブと動物愛護団体が作った難解言語。Pythonは謎の手術で独裁者が生まれ、「唯一の道」を宣言。PHPはスパゲッティとナプキンから、Rubyは黙示録回避のために作られ、JavaScriptは設計ミスを読み上げてパワーアップしたとされています。JavaとC#は瓜二つで、Scalaは両方のパラダイムを混ぜて両陣営の「ジハード」を招いた、とまあ、こんな調子で各言語と開発者を愛ある(?)いじりで紹介する、技術コミュニティにおけるパロディ文化の一端を示す記事なのです。
登場人物紹介
この物語(フィクションです!)を彩る、個性豊かな(歪められた)登場人物たちをご紹介しましょう。
(年齢は2025年現在の計算値、故人は生没年です。)
-
ジョセフ・マリー・ジャカード (Joseph Marie Jacquard) [1752-1834]
パンチカードを使った織機を発明したフランスの発明家。本作ではプログラミング言語の超・超・超ご先祖様として登場し、「こんにちは、世界」を織り込んだ伝説のタペストリーを生み出したとされます。 -
エイダ・ラブレス (Ada Lovelace) [1815-1852]
世界初のプログラマーとされるイギリスの数学者。バベッジの解析機関のためのアルゴリズムを記しました。本作では「コンピュータが無いのにプログラムを書いた」という偉業(?)が強調され、後のエンタープライズアーキテクトにUMLで再学習されるという無茶苦茶な設定がなされています。 -
アラン・チューリング (Alan Turing) [1912-1954]
イギリスの数学者、論理学者、計算機科学の父の一人。チューリングマシンという計算モデルを提唱しました。本作では「これまでにない全てのプログラミング言語を発明」という壮大な業績を一人で達成したことになっています。ついでに007(ジェームズ・ボンド)になる話も出てきますが、これはもちろんジョークです。 -
アロンゾ・チャーチ (Alonzo Church) [1903-1995]
アメリカの数学者。ラムダ計算の提唱者です。本作ではチューリングと同じく「これから存在するあらゆる言語を発明」したとされますが、彼のラムダ計算は「Cらしさが不十分」という謎の理由で無視されたことになっています。C言語がまだない時代の批判者たちは、一体どうやって評価したのでしょうか…? -
ジョン・バッカス (John Backus) [1924-2007]
アメリカのコンピュータ科学者。FORTRANを開発しました。本作では彼とIBMが設立したFORTRANが「面白くない」と酷評され、さらに「青いネクタイがないと構文エラー」という奇妙な制約が付いています。IBMの堅いイメージを皮肉っているのでしょう。 -
ジョン・マッカーシー (John McCarthy) [1927-2011]
アメリカのコンピュータ科学者。人工知能研究のパイオニアであり、LISPを開発しました。本作ではLISPの括弧の多さを「戦略括弧の枯渇」という資源問題に結びつけ、普及しなかった理由としています。再帰や「見下し」(condescension)というLISP文化を象徴する言葉も登場します。 -
ポール・グレアム (Paul Graham) [1964年生]
イギリス出身のアメリカのプログラマー、ベンチャーキャピタリスト。LISP系の言語(Common LispやArc)に関わっています。本作ではマッカーシーと共にLISP開発者として名前が挙がっています。Hacker News創設者でもありますね。 -
L. ロン・ハバード (L. Ron Hubbard) [1911-1986]
アメリカのSF作家。サイエントロジーの創始者。本作ではCOBOLの誕生が彼との「賭け」に負けた結果とされており、全く関係ない人物が唐突に登場するユーモアが炸裂しています。 -
グレース・ホッパー (Grace Hopper) [1906-1992]
アメリカの海軍提督であり、コンピュータ科学者。COBOLの開発に多大な貢献をしました。本作ではL. ロン・ハバードとの賭けに負けた「悲しいサディスト」の一人として描かれています。続くRubyカンファレンスに関する言及は、ホッパー提督への不当な報復という文脈で語られますが、これも皮肉でしょう。 -
ジョン・ケメニー (John Kemeny) [1926-1992]
ハンガリー出身のアメリカの数学者、計算機科学者。BASICを開発しました。本作では「非コンピュータ科学者向け」という設計思想と「非構造化」言語であることが強調されています。 -
トーマス・クルツ (Thomas Kurtz) [1928-2024]
アメリカの計算機科学者。ジョン・ケメニーと共にBASICを開発しました。本作ではケメニーと共にBASIC開発者として名前が挙がっています。年代の記述に奇妙な繰り返しがあるのもジョークです。 -
ガイ・スティール (Guy Steele) [1953年生]
アメリカのコンピュータ科学者。Scheme(LISPの方言)やJava言語仕様などに貢献しました。本作ではジェラルド・サスマンと共に「計画」という論文に関わったとされ、これが「究極のラムダ」シリーズ、さらには深夜のインフォマーシャルの基礎になったという荒唐無稽な展開になります。 -
ジェラルド・サスマン (Gerald Sussman) [1947年生]
アメリカのコンピュータ科学者。MITの教授であり、SchemeやAbelson & Sussmanの有名な教科書『計算機プログラムの構造と解釈 (SICP)』の著者としても知られます。本作ではガイ・スティールと共に登場します。 -
ニクラウス・ヴィルト (Niklaus Wirth) [1934-2024]
スイスのコンピュータ科学者。Pascal、Modula-2、Oberonなどを開発しました。本作では彼の開発したPascalが、まだ存在しないCと比較され「Cライクでない」と批判されたことになっています。まるで歴史改変ですね。 -
デニス・リッチー (Dennis Ritchie) [1941-2011]
アメリカのコンピュータ科学者。C言語とUnixを開発しました。本作では彼が「前後同時に発砲する強力な銃」を発明したという物騒な設定が付与され、さらにそれに満足せずCとUnixを発明したという、破壊衝動を原動力とするような描写がなされています。もちろんフィクションです。 -
アラン・コルメラウアー (Alain Colmerauer) [1941-2017]
フランスのコンピュータ科学者。Prolog開発者の一人です。本作ではPrologの目標を「2歳児のような知性」とし、全てのクエリに「いいえ」と答えることでそれを証明したという、言語の特徴を極端に揶揄するジョークが盛り込まれています。 -
ロビン・ミルナー (Robin Milner) [1934-2010]
イギリスのコンピュータ科学者。ML(Meta Language)を開発しました。本作では彼のMLが「M&M型理論」に基づくとされ、さらに形式意味論を求められ「頭が爆発した」という衝撃的な展開になります。これはMLの形式的な性質や、時に難解とされる理論を茶化しているのでしょう。 -
アラン・ケイ (Alan Kay) [1940年生]
アメリカのコンピュータ科学者。Smalltalk開発者の一人であり、「オブジェクト指向プログラミング」という言葉の提唱者としても知られます。本作では彼が「オブジェクト指向とは何か」という問いに対し、「すべてはオブジェクトだ」と禅問答のような回答を繰り返し、最終的に「カメにたどり着くまで」という、彼の影響を受けたLogo言語への言及と思しき言葉で締めくくるという、彼の哲学的な側面を戯画化しています。 -
ジーン・イクビア (Jean Ichbiah) [1940-2007]
フランスのコンピュータ科学者。米国国防総省の依頼でAda言語を設計しました。本作ではAdaが「ギャングから守るための公共事業プロジェクト」として描かれており、軍事利用された背景と、それに従事する請負業者(=プログラマー)への皮肉が込められています。 -
ビャーネ・ストラウストラップ (Bjarne Stroustrup) [1950年生]
デンマーク出身のコンピュータ科学者。C++開発者です。本作ではC++の複雑さと機能の多さを「聞いたこと全てをCにボルト止め」と表現し、そのビルド時間の長さを未来のAI「Skynet」がコンパイルを手伝うほどと誇張しています。C++開発者の苦労をネタにしています。 -
ブラッド・コックス (Brad Cox) [1944-2021]
アメリカのコンピュータ科学者。トム・ラブと共にObjective-Cを開発しました。本作ではObjective-Cを「Cのメモリ安全性とSmalltalkの驚異的速度」と評したとされますが、すぐに現代史家に「失読症では?」と疑われるという、手厳しい(しかし愛のある)皮肉が向けられています。 -
トム・ラブ (Tom Love) [1937-2023]
アメリカのコンピュータ科学者。ブラッド・コックスと共にObjective-Cを開発しました。 -
ラリー・ウォール (Larry Wall) [1954年生]
アメリカのプログラマー。Perl開発者です。本作ではPerlの誕生が、彼がキーボードに額を打ち付けた際にモニターに表示された文字列を「神のお告げ」と解釈した結果とされており、Perlの自由な構文と、開発者の個性的な側面を神秘的に(そして面白く)描いています。 -
サイモン・ペイトン・ジョーンズ (Simon Peyton Jones) [1958年生]
イギリスのコンピュータ科学者。Haskell開発の主要メンバーです。本作ではHaskell開発委員会の奇妙なメンバー構成(アシュトン・カッチャーやPETAなど)や、モナドに関する難解な説明で登場します。 -
ポール・フダック (Paul Hudak) [1952-2015]
アメリカのコンピュータ科学者。Haskell開発の主要メンバーでした。 -
フィリップ・ワドラー (Philip Wadler) [1956年生]
アメリカのコンピュータ科学者。Haskell開発の主要メンバーであり、モナドに関する研究でも知られます。本作での「モノイド in the category of endofunctors」という発言は、彼の有名な言葉を引用し、Haskellの理論的な難しさを象徴しています。 -
アシュトン・カッチャー (Ashton Kutcher) [1978年生]
アメリカの俳優、投資家。本作ではHaskell開発委員会に唐突に参加したことになっています。完全にジョークであり、なぜ彼が選ばれたのかは謎です。 -
動物の倫理的扱いを求める人々 (People for the Ethical Treatment of Animals - PETA)
動物の権利擁護団体。本作ではHaskell開発委員会に唐突に参加したことになっています。これも完全にジョークであり、純粋な関数型言語と動物愛護の関連性は不明です。 -
グイド・ファン・ロッサム (Guido van Rossum) [1956年生]
オランダのプログラマー。Python開発者であり、Pythonコミュニティで「終身の慈悲深き独裁者 (BDFL)」と呼ばれていました。本作では「謎の手術」と「大きな頭蓋の傷跡」を得て独裁者となり、「やるべき方法は一つしかない (There Is Only One Way to Do It - TIOBE)」と宣言した結果、ポーランドが緊張するという、彼の役割とPythonの設計哲学、そして全く関係ない国の情勢を結びつけたシュールなジョークとなっています。 -
ラスムス・レルドルフ (Rasmus Lerdorf) [1968年生]
グリーンランド生まれのデンマーク系カナダ人のプログラマー。PHP開発者です。本作ではスパゲッティを見てPHPのアイデアを得て、ナプキンにデザインしたことになっています。PHPの構造が時に「スパゲッティコード」と揶揄されること、そして初期のドキュメントが簡素だったことなどをネタにしています。 -
松本 幸宏 (Yukihiro "Matz" Matsumoto) [1965年生]
日本のソフトウェア技術者。Ruby開発者です。本作では「漠然と特定されていない黙示録」を回避するためにRubyを作成したという、壮大な使命を帯びた開発者として描かれています。日本のプログラミング言語が世界史(?)に登場する重要な瞬間です。 -
デビッド・ハイネマイヤー・ハンソン (David Heinemeier Hansson - DHH) [1979年生]
デンマークのプログラマー。Ruby on Railsの作者です。本作ではコメント欄で登場し、松本氏がRubyを発明したという記述を「削除した方が良い」と否定するというメタなツッコミを入れています。これはRuby on Railsの人気と、それがRuby自体の認知度向上に大きく貢献したという歴史的経緯を踏まえたジョークでしょう。 -
ブレンダン・アイク (Brendan Eich) [1961年生]
アメリカのソフトウェア技術者。JavaScript開発者です。本作では彼が「プログラミング言語の設計で犯した全ての間違いを読み上げ、さらにいくつかを発明」してJavaScriptを作成したという、強烈な自己否定的な描写がなされています。LiveScriptからJavaScriptへの名称変更、そしてECMAScriptへの改称も、当時の状況を皮肉っています。 -
ジェームズ・ゴズリング (James Gosling) [1955年生]
カナダのコンピュータ科学者。Javaの主要開発者として知られます。本作ではJavaが「比較的冗長な」オブジェクト指向言語として描かれ、「太陽がジャワの斬新さを大声で告げる」という、当時のSun Microsystemsの熱狂的な宣伝を思わせる表現が使われています。 -
アンダース・ヘルスバーグ (Anders Hejlsberg) [1960年生]
デンマーク出身のソフトウェアエンジニア。Turbo Pascal、Delphi、C#、TypeScriptの開発に関わりました。本作では彼の開発したC#がJavaとほぼ同じ説明で登場し、「マイクロソフトがC#の斬新さを大声で告げる」という、当時のMicrosoftの宣伝を思わせる表現が使われています。JavaとC#の類似性や競争関係をネタにしています。 -
マーティン・オデルスキー (Martin Odersky) [1958年生]
ドイツのコンピュータ科学者。Scala開発者として知られます。本作では彼がリースのピーナッツバターカップ(チョコレートとピーナッツバターを混ぜたお菓子)の広告を見てScalaのアイデアを得たという、ユニークな誕生秘話が語られます。オブジェクト指向と関数型プログラミングを統合した結果、両陣営から「ジハード」を宣言されたという描写は、Scalaコミュニティ内で起きたちょっとした混乱や論争を誇張したものです。 -
Skynet
映画「ターミネーター」シリーズに登場する架空の人工知能。本作ではC++のコンパイルが未来のSkynetによって行われるほど複雑で時間のかかる作業とされており、C++のビルド時間の長さをネタにしています。
第一部 黎明期から成熟期へ?嘘と本当の狭間
プログラミング言語の歴史は、意外なほど昔に遡ります。そして、その始まりから、私たち開発者をニヤリとさせる奇妙なエピソードが満載なのです。まずは、コンピュータがまだ黎明期にあった頃から、様々なプログラミングパラダイムが芽吹いた時代を見ていきましょう。ただし、これから語られることは「ほとんど間違っている」可能性がありますので、鵜呑みにしないでくださいね!😉
第1章 遠い昔、コンピュータが「配線」だった頃 (1801-1940s)
コンピュータという言葉すら存在しない時代から、プログラムの萌芽はありました。それは織機という、今思えば信じられないような装置から始まったのです。
H5 ジャカード織機と幻のレディッター (1801)
物語は1801年に始まります。フランスの発明家、ジョセフ・マリー・ジャカード氏は、パンチカードを使って織機に複雑な模様を織らせる技術を発明しました。これは、後のコンピュータにおけるプログラム制御の先駆けとも言える画期的な出来事でした。
さて、この「ほとんど間違った歴史」によると、ジャカード氏はなんと、そのパンチカードを使って織機に「こんにちは、世界 (Hello, World!)」と織り込むよう指示したそうです! しかもそれをタペストリーにしたとか。想像するだけで面白いですよね。
さらに驚くべきことに、当時のインターネット掲示板…というか、当時の「レディッター」たちは、この壮大なタペストリーを見て、「末尾再帰(tail call recursion)がない!」「並行処理(concurrency)が考慮されていない!」「適切な大文字小文字の使い分け(capitalization)ができていない!」と、現代のプログラマー顔負けの細かいレビューをしたそうです。もちろん、これは歴史的な事実ではありません🤣。当時の技術者や職人が、パンチカードの技術的な限界や表現の細かさについて議論したことは想像に難くないですが、まさか「レディッター」のような集団が存在し、現代的なプログラミング用語を使って批判したとは…。この時点で、この歴史書がいかにふざけているかお分かりいただけるでしょう。
H5 コンピュータなきプログラマー (1842)
時は少し進んで1842年。数学者であるエイダ・ラブレス伯爵夫人が登場します。彼女は、チャールズ・バベッジが設計したものの完成しなかった「解析機関 (Analytical Engine)」のために、世界初のアルゴリズム、つまり「プログラム」を書いたとされています。
記事によると、エイダ夫人は「コードを実行するための実際のコンピュータがないという小さな不便さによって、自分の努力を妨げられています」とのこと。これは半分本当ですね。解析機関は彼女の生前には完成しませんでしたから。しかし、彼女の頭の中では、そのプログラムは完全に動作していたのかもしれません✨。
そして記事は続きます。エイダ夫人のテクニックは、「後にエンタープライズアーキテクトが、UMLでプログラミングするために再学習する」と。これもまた盛大なジョークです。UML (Unified Modeling Language) は20世紀後半に登場したモデリング言語であり、これ自体でプログラムを直接実行することは基本的にはありません(限定的な実行可能なUMLはありますが)。さらに、エンタープライズアーキテクトという職種が、エイダ夫人の時代に存在したはずもなく、ましてや彼女の技術を学び直すとは、時代も職務内容もごちゃ混ぜのナンセンスですね。ただ、高度な抽象思考や設計への情熱といった点では、何か通じるものがあるのかもしれません。
H5 同時多発的「全言語」発明事件 (1936)
20世紀に入り、理論計算機科学の時代が訪れます。1936年、驚くべき偶然が二つ重なりました。
一人は、偉大なる英国の数学者、アラン・チューリング氏。記事によると、彼は「特許を取得する前に英国諜報機関によって007になるよう奨励されたものの、これまでにない全てのプログラミング言語を発明」したそうです。これはチューリング氏の業績(チューリングマシン、計算可能性理論など)と、彼の諜報活動への関与(ブレッチリー・パークでの暗号解読など)を混ぜ合わせたジョークですね。そして「全てのプログラミング言語を発明」という、もはや神の領域に達したかのような業績を帰属させています。
もう一人は、アメリカの数学者、アロンゾ・チャーチ氏。なんと彼も同じ1936年に、「これからも存在するであろうあらゆる言語を発明」したというのです! つまり、1936年に二人同時に、過去から未来にわたる全てのプログラミング言語を発明したと😲。何というシンクロニシティでしょう。これは、チューリングの計算可能性理論とチャーチのラムダ計算(Lambda Calculus)が、計算の限界や普遍性を示す上で同等であることが後に証明された(チャーチ=チューリングの提唱)という史実を踏まえたネタですね。
しかし、記事は非情です。「彼のラムダ計算は C らしさが不十分であるため無視されます」と。いやいやいや!待ってください!C言語が誕生するのは1972年ですよ!? 1936年の理論が、まだ存在しない言語に似ていないという理由で無視されるなんて、これほど不条理な話があるでしょうか。この「CがないのにCライクでないと批判される」というネタは、この後も別の言語の項目で繰り返され、読者の腹筋を破壊しにかかります💣。
H5 タブとスペースを巡る初期の戦い (1940年代)
実際に動くコンピュータが登場した1940年代。プログラムはまだ、パンチカードやスイッチ、配線といった物理的な手段で入力されていました。記事ではこれを「直接配線とスイッチを使用して『プログラム』されています」と表現しています。
なぜそんな方法だったのか? 記事の答えは秀逸です。「エンジニアは、タブとスペースの議論を避けるためにこれを行います」。現代のプログラマーであれば誰しも一度は巻き込まれる(あるいは巻き起こす)「インデントはタブ派?スペース派?」論争。まさか、初期のコンピュータ開発者たちがこの論争を予見し、それを回避するために物理的なプログラミングを選んだとは!😂 技術的な制約を、現代の開発者文化における内輪ネタに結びつける、見事な飛躍です。実際には、当時の技術ではそれが最も効率的だっただけでしょうが、そう考えるとちょっと夢がないですね。
コラム:歴史とユーモアの間
初めてこの記事を読んだとき、あまりのくだらなさに吹き出してしまいました。特に「当時のレディッター」とか「CがないのにCライクでない」とか、歴史的事実を知っていれば知っているほど、そのズレっぷりが面白くてたまりません。同時に、この記事のネタの元になっている各言語の特徴や、開発者たちの苦労、コミュニティの雰囲気を少しでも知っていると、より深く楽しめることに気づきました。ユーモアというのは、しばしば知識や共通認識の上に成り立つものなのだと実感します。私自身、初めてコードを書いたのはBASICでしたが、まさかその誕生にこんな(嘘の)ドラマがあったとは思いもしませんでしたね。歴史は重厚長大である必要はない。時にはこんな風に軽やかに、愛ある(そして少し悪意のある)視点から語られることで、かえって親しみやすくなることもあるのだと感じています。皆さんの好きなプログラミング言語の「ありえない誕生秘話」、ぜひ考えてみてください。想像力が膨らみますよ!
第2章 パラダイムの衝突と奇妙な誕生 (1950s-1970s)
1950年代から1970年代にかけては、コンピュータが学術機関や大企業で使われるようになり、様々なプログラミング言語が次々と誕生した時代です。FORTRANやCOBOLといったビジネス・科学技術計算向けの言語、LISPのような斬新なパラダイムを持つ言語、教育用のBASIC、構造化プログラミングの先駆けPascal、そしてコンピュータ科学の基礎となるCとUnixなど、現代に繋がる多くの言語がこの時代に生まれました。もちろん、その誕生には奇妙な物語が付随しているのですが…
H5 退屈なFORTRAN、高価なLISP (1957-1958)
まずは1957年。ジョン・バッカス氏とIBMが、科学技術計算用のプログラミング言語、FORTRANを開発しました。これは現代から見ても非常に古い言語ですが、科学計算の分野では長く使われました。
記事の評価は辛辣です。「IBMもFORTRANも面白くない」。まあ、確かにFORTRANは構文が独特で、最近の言語に慣れているととっつきにくいかもしれませんし、IBMもクールさより堅実さのイメージが強いかもしれません。しかし、面白くないと断言されるのは、ちょっと可哀想ですね😅。
さらに、「青いネクタイを着用していないときに FORTRAN を書くのは構文エラーです」とのこと。これはIBMの社員がよく青いネクタイをしていたというイメージ(IBMのブランドカラーは青)と、FORTRANの厳格な構文を掛け合わせたジョークでしょう。真面目な格好で書かないとコンパイルできないなんて、どんな世界線なんでしょうか。
翌1958年。ジョン・マッカーシー氏と、後にポール・グレアム氏も関わることになるLISPが発明されました。LISPは括弧()
を多用する独自の構文と、リスト処理、そして強力な再帰(Recursion)を特徴とする、当時としては非常に革新的な言語でした。その設計思想は、その後の多くの言語(特に関数型言語)に影響を与えています。
記事によると、LISPが普及しなかった理由は「戦後の戦略括弧の枯渇によるコストの高さ」!📦️ 戦略括弧って何!?🤣 そして、それが枯渇してコストが高くなったから普及しないって、どんだけ括弧使うんだLISP! 実際には括弧の多さが当時の開発者には敬遠されたり、実行環境の整備が難しかったりといった理由が普及の妨げになったと言われています。
しかし記事は、LISPの影響力は認めます。「再帰や見下しなどの主要なアルゴリズム手法」において、今なお影響力がある、と。「再帰」は分かりますが、「見下し(condescension)」! これは、LISP(特にCommon Lispなど)を使う開発者が、他の言語を使う開発者を見下す傾向がある、というコミュニティの内輪ネタ・ステレオタイプを皮肉ったものでしょう。「君たちにはまだこのパラダイムは理解できない」みたいな感じでしょうかね。まあ、どの言語のコミュニティにも、そういう傾向は少なからずあるかもしれませんが… LISPが特にネタにされがち、ということですね。
H5 賭けが生んだ大文字の怪物 COBOL (1959)
1959年。ビジネスデータ処理に特化した言語、COBOL(Capitalization Of Boilerplate Oriented Language)が誕生します。グレース・ホッパー提督らが開発に関わった、非常に息の長い言語です。
記事によると、その誕生はなんと、SF作家のL. ロン・ハバード氏との「賭け」に負けた結果だそうです🎲。そしてホッパー提督たちは「悲しいサディスト」と呼ばれています。賭けの内容は不明ですが、おそらく「最も退屈で冗長な言語を作れるか?」といったものだったのでしょうか?
COBOLは非常に冗長な構文を持ち、「PROCEDURE DIVISION.」「MOVE A TO B.」のように英語に近い単語を多用します。そして、キーワードや予約語を大文字で書く慣習があります(これが記事タイトルの「Capitalization」ですね)。ビジネスデータ処理という堅実な目的に最適化された結果なのですが、記事はこれを「ボイラープレート指向言語の大文字化」と呼び、その冗長さを揶揄しています。
さらに、「後の世になって、ホッパー提督のCOBOLでの仕事に対する見当違いで性差別的な報復として、Rubyカンファレンスでは頻繁に女性蔑視的な内容が取り上げられる」という、突拍子もない展開に。これは恐らく、当時のRubyコミュニティの一部で見られた性差別的な発言や雰囲気が問題視されたことと、COBOLの誕生を無理やり結びつけたジョークでしょう。COBOLの誕生自体に性差別的な意図があったわけでは全くないはずなので、かなり強引なネタですね。
H5 非コンピュータ科学者のための言語 BASIC (1964)
コンピュータが一部の専門家だけでなく、より多くの人々に使われるようになるにつれて、初心者向けの簡単な言語の必要性が高まりました。1964年、ダートマス大学のジョン・ケメニー氏とトーマス・クルツ氏によって、その名の通り初心者向けのプログラミング言語、BASIC(Beginner's All-purpose Symbolic Instruction Code)が開発されました。
記事では、BASICが「非コンピュータ科学者のための非構造化プログラミング言語」とシンプルに(そしてちょっと見下すように?)紹介されています。確かにBASICは手軽さを重視したため、構造化プログラミングの概念が導入される前はGOTO文を多用するプログラムが書かれがちで、「スパゲッティコード」の温床とも言われました。
続く1965年の記述がまた面白い。「ケメニーとクルツが1964年に移籍」。いや、同じ年に移動してるやん!😅 これは単なる年号の冗談ですが、こういう細かいズレもこの記事の味ですね。BASICは多くの人にプログラミングの楽しさを教え、パーソナルコンピュータ時代に大いに普及しましたが、そのシンプルな設計ゆえに、より複雑なプログラムを書くには不向きと見られることもありました。
H5 計画、ラムダ、インフォマーシャル、そしてCなき時代の再批判 (1970)
1970年、再び複数の重要な言語開発が報じられます。
一組は、ガイ・スティール氏とジェラルド・サスマン氏。「計画(Scheme)」というLISPの方言に関わる彼らの研究は、「究極のラムダ」という一連の論文に繋がったそうです。記事はさらに飛躍し、この論文が「究極のキッチン用品ラムダ」で最高潮に達し、長期にわたるものの失敗に終わった深夜のインフォマーシャルの基礎となった、と😲。これはLISPやSchemeがラムダ計算を深く取り入れていることと、「究極の〇〇」といったインフォマーシャルの謳い文句を掛け合わせた、完全にシュールなジョークです。関数型プログラミングの理論が深夜の通販番組になるとは、誰が想像したでしょうか。
記事は、この時代のラムダ(Lambda)が、「Java が持たずに人気を博すまで、比較的無名に追いやられていました」と続けます。これは、ラムダ式(匿名関数)といった機能が関数型言語では早くから一般的だったのに、当時は主流だったJavaのようなオブジェクト指向言語には長く導入されず(Javaにラムダ式が導入されたのはJava 8から)、にも関わらずJavaは人気を博した、という歴史的事実を皮肉ったものです。ラムダは日の目を見なかったわけではなく、特定のコミュニティでは重宝されていましたが、確かに多くの開発者にとっては馴染みが薄かったかもしれません。
同じく1970年、スイスのニクラウス・ヴィルト氏が、構造化プログラミングを推奨する手続き型言語、Pascal(Pascal)を作成しました。教育用としても広く使われ、Clearコードの書き方を教える上で重要な役割を果たしました。
しかし、記事はまたしてもあのネタを繰り出してきます。「批評家は、Pascal がより馴染みのある C のような『x = x + y』ではなく『x:= x + y』構文を使用しているため、すぐに非難します。この批判は、C がまだ発明されていないという事実にもかかわらず起こります」。やっぱり来た!🤣 1936年のアロンゾ・チャーチ氏に続き、ヴィルト氏も「Cなき時代のCライクでない批判」の犠牲者です。Pascalの代入演算子:=
はAlgol系の言語でよく見られるもので、現代の多くの言語が採用している=
とは異なります。この構文の違いを、ありえない時代設定で批判するという、徹底したジョークです。
H5 破壊衝動が生んだ二つの巨人 CとUnix (1972)
プログラミング言語史において、非常に重要な年である1972年。デニス・リッチー氏が、ベル研究所でC言語とUnixオペレーティングシステムを開発しました。これらはその後のコンピュータ世界に計り知れない影響を与え、現代の多くのシステムや言語の基盤となっています。
この偉大な功績について、記事はこう語ります。リッチー氏はまず「前後に同時に発砲する強力な銃」を発明したそうです💥🔫💥。そして、「その発明による死者数や永久的な傷害の数に満足せず」、さらにCとUnixを発明した、と。これは、C言語のポインタ操作などの低レベルな機能が、使い方を誤ると容易にメモリ破壊などの深刻なバグを引き起こし、システムをクラッシュさせたり不安定にしたりする「危険性」を、物騒な「銃」と「死者数」に例えて誇張したジョークです。Unixもまた、強力で柔軟である反面、初心者には難しく、操作を誤るとシステムを壊してしまう可能性があることから、同じような文脈で語られているのでしょう。
もちろん、デニス・リッチー氏が実際に銃を発明したり、破壊衝動を持っていたわけではありません。彼は非常に穏やかで思慮深い人物だったと伝えられています。しかし、CとUnixが提供する強力な力と、それを扱うことのリスクを、これほどまでに過激かつユーモラスに表現した例はそうそうないでしょう。まるで、プログラマーは強力な武器を手にした危険人物であるかのような…!
H5 2歳児の知性を持つ論理言語 Prolog (1972)
同じ1972年、フランスのアラン・コルメラウアー氏らが、人工知能研究のために論理型プログラミング言語、Prolog(Prolog)を設計しました。Prologは「事実」や「規則」を記述し、それに基づいて「クエリ(質問)」に対する答えを導き出すという、これまでの命令型や手続き型とは全く異なるアプローチをとる言語です。
記事によると、コルメラウアー氏の目標は「2歳児のような知性を備えた言語を作成すること」だったそうです👶。そして、彼は「全てのクエリに『いいえ』と表示される Prolog セッションを表示することで、目標を達成したことを証明」した、と。
これもまたPrologを強烈に皮肉ったジョークです。Prologは、与えられた事実や規則から答えを「推論」しようとしますが、答えが見つからない場合や、クエリが解決不能な場合は「false」(または「No」)と応答します。記事はこれを「2歳児が何を聞かれても『いや!』と答える」様子になぞらえ、Prologが簡単には望む答えを出してくれない(または、少しの条件不足でもすぐに「No」と言う)性質を揶揄しています。実際にはPrologは非常に強力な言語であり、特定の種類の問題(特に論理推論や制約充足問題)を解くのに適しています。しかし、その独特の考え方に慣れるまでが難しく、思った通りの答えを得られない初学者の「あるある」をユーモアに変えています。
H5 頭部爆発とM&M型理論 ML (1973)
1973年、イギリスのロビン・ミルナー氏が、関数型プログラミング言語ML(Meta Language)を開発しました。MLは厳密な型システム(特に型推論)を持つことで知られ、その後の多くの言語に影響を与えています。SML(Standard ML)など、いくつかの亜種が存在します。
記事によると、MLは「M&M型理論に基づいた言語」だそうです🍫。M&Mって、チョコレートのやつですよね? そんな美味しそうな理論があるのでしょうか? これは、MLの厳密な「型理論(Type Theory)」を、お菓子のM&Mにかけたダジャレでしょう。
そして衝撃的な展開が待っています。ミルナー氏は形式意味論(Formal Semantics)、つまり言語の厳密な意味を数学的に定義することでも知られていましたが、記事によると「形式意味論の形式意味論を求められたとき、ミルナーの頭は爆発した」そうです💥🤯! 言語の意味を定義すること自体が形式的であるのに、その「形式意味論」をさらに形式的に定義せよ、という要求は、まさに無限後退のような、あるいは非常に複雑な理論の深淵を覗き込むようなものだったのでしょうか。そのあまりの複雑さに、天才科学者の頭が耐えきれず爆発した、という極端な表現で、形式意味論の難しさを表しています。
MLファミリーの有名な言語として、OCamlやF#が挙げられるのは正しいのですが、記事は最後に衝撃の一言を付け加えます。「ML ファミリーの他のよく知られた言語には、OCaml、F#、Visual Basic などがあります」。Visual Basic!? VBはMicrosoftが開発したイベント駆動型プログラミング言語であり、MLやHaskellのような純粋な関数型言語とは全く異なるパラダイムの言語です。これは、もはや冗談を通り越して悪意すら感じる、あるいはただの知識の間違いを装った高度なジョークかもしれません。「いやいや、VBは絶対違うだろ!」とツッコミを入れたくなること請け合いです。
コラム:初めて触れた「変な」言語
学生時代に初めてLISPやPrologに触れた時、それまでCやJavaといった手続き型・オブジェクト指向言語に慣れ親しんでいた私にとって、その独特の世界観は衝撃的でした。LISPの括弧の嵐、Prologの「事実」と「クエリ」で全てを解決しようとするアプローチ。「なんでこんな書き方するんだろう?」「これでどうやってあの有名なソフトが動いてるんだ?」と、正直戸惑うことばかりでした。この記事のLISPやPrologのネタは、当時の私の困惑を思い起こさせてくれます。特にPrologの「いいえ」しか言わないジョークなんて、「あー、最初本当に何も動かせなかったな…」と苦笑いするくらいリアル(?)に感じます。新しいパラダイムの言語を学ぶのは大変ですが、それが世界を全く別の視点で見せてくれる経験になることもあります。この記事を読んで、もし「なんか変な言語、面白そうだな?」と思った方がいたら、ぜひ実際に触れてみてください。新しい扉が開くかもしれません🚪✨(ただし、本当に頭が爆発しないようにご注意ください!)
第3章 オブジェクト指向、神のお告げ、そしてナプキン (1980s-1990s前半)
1980年代に入ると、プログラミングの世界は新たな潮流を迎えます。それは「オブジェクト指向」という考え方でした。また、個性的すぎる開発者たちの手によって、現在も広く使われる言語が続々と誕生します。神のお告げや、ナプキンに描かれた設計図までが登場する、混沌としつつも創造的な時代です。
H5 「すべてはオブジェクト」禅問答 Smalltalk (1980)
1980年、ゼロックスのパロアルト研究所(PARC)にいたアラン・ケイ氏が、オブジェクト指向プログラミングの概念を体現した言語、Smalltalk(Smalltalk)を作成しました。彼は「オブジェクト指向」という用語を生み出した人物としても知られています。
さて、その「オブジェクト指向とは何か?」という根源的な問いに対するアラン・ケイ氏の説明が、記事では禅問答のように描かれています。尋ねる者に対し、「Smalltalkプログラムは単なるオブジェクトです」と答え、どのようなオブジェクトかと尋ねると「オブジェクト」とだけ答え、さらに尋ねると「ほら、それはすべて下の方のオブジェクトだ」と言い、最終的に「カメにたどり着くまで」と言ったそうです🐢。
これは、Smalltalkが徹底して全てをオブジェクトとして扱うという設計思想(例えば、if文やループですらメッセージ送信によるオブジェクト間のやり取りとして実装されうる)を、難解な問答形式で表現したものです。最後の「カメ」への言及は、アラン・ケイ氏がSmalltalk開発以前に関わっていた教育用プログラミング言語Logoで使われた、画面上を動き回るカメ(タートルグラフィックス)を指していると考えられます。つまり、「オブジェクト指向の概念をどこまで掘り下げても、最終的には最も基本的な要素(カメ)にたどり着く」という、深遠なのか適当なのか分からない哲学を示唆しているようです。開発者なら一度は耳にしたであろう「全てはオブジェクト」という言葉の、哲学的(?)な側面をユーモラスに表現しています。
H5 国防総省のギャング対策プロジェクト Ada (1983)
1983年、米国国防総省(DoD)は、様々な軍事システムで使用する言語を統一するため、高性能で信頼性の高い言語としてAda(Ada)を開発しました。名前は、最初のプログラマーとされるエイダ・ラブレスに敬意を表して付けられました。設計を主導したのはフランスのジーン・イクビア氏です。
記事では、Adaがエイダ・ラブレスの功績を称えて作られたことは触れつつも、その目的を「数千人の巡回防衛請負業者をギャングから締め出す成功した公共事業プロジェクトであると信じられている」としています🕶️。え?ギャングから守るため?国防総省が?プログラマーを?
これは、Adaが主に軍事や航空宇宙などの高信頼性システムで使われるニッチな言語であり、一般的な開発者(記事の文脈ではおそらく「ギャング」と皮肉られている?)からは距離があること、そして米国の国防予算を使った巨大プロジェクトであったことを風刺したジョークでしょう。実際には、Adaは形式検証などの厳しい要求に応えるために設計された堅牢な言語ですが、その複雑さや特定の分野に特化していることから、広く一般に普及したわけではありません。記事はそれを「公共事業プロジェクト」と呼び、本来の目的とはかけ離れた「ギャング対策」というトンデモ目標を掲げることで、その特殊性を面白おかしく表現しています。重要なAdaプログラムが「これまでに完了したという証拠が不足している」という記述も、その開発・維持にコストがかかることや、成功が見えにくい巨大プロジェクトへの皮肉かもしれません。
H5 C++ ─ あらゆるものをボルト止めしてSkynetへ (1983)
オブジェクト指向の波は、既存の言語にも影響を与えました。1983年、ベル研究所のビャーネ・ストラウストラップ氏が、C言語にオブジェクト指向機能などを追加したC++(C++)を作成しました。C++は、Cの持つ低レベル制御能力と、オブジェクト指向やジェネリックプログラミングなどの高レベルな抽象化能力を併せ持つ、強力かつ複雑な言語です。
記事は、ストラウストラップ氏が「これまで聞いたこと全ての良いアイデアを C にボルトで固定して」C++ を作ったと表現しています🔩。これは、C++がオブジェクト指向、手続き型、ジェネリックプログラミング、そして後のバージョンで関数型に近い要素など、様々なプログラミングパラダイムや機能を取り込んできた歴史を、ユーモラスに、そして少し批判的に(詰め込みすぎだろ、と)表現したものです。
その結果生まれた言語は「非常に複雑であるため、プログラムを未来に送信して Skynet 人工知能によってコンパイルされる必要があります」と!🛰️ 未来の破滅的なAI、SkynetがC++のコンパイルを手伝うほど、C++のビルドは時間がかかり、難解であるという究極の誇張表現です。「ビルドタイムが苦しむ」という表現も、多くのC++開発者が経験するコンパイル時間の長さへの共感を呼ぶでしょう。Skynetがコンパイルを手伝う動機は不明とされ、「心配することはないよ、ベイビー(There is nothing to worry about, baby)」というオーストリア訛りのモノトーンな言葉が引用されていますが、これは映画「ターミネーター」のアーノルド・シュワルツェネッガー演じるターミネーターのセリフ「心配ない、任せろ(No problem)」や、その後のシリーズのセリフ「心配はいらない(There is no need to worry)」などを混ぜ合わせたものでしょう。また、「Skynetは単なる大げさなバッファオーバーランに過ぎない」という憶測も、低レベル言語であるC++におけるバッファオーバーランの危険性と、それがシステム全体の崩壊(Skynetによる人類滅亡)に繋がる可能性を皮肉ったものです。
H5 失読症が生んだ幻の理想言語 Objective-C (1986)
オブジェクト指向を取り込んだC言語のもう一つの派生が、1986年にブラッド・コックス氏とトム・ラブ氏によって開発されたObjective-C(Objective-C)です。後にAppleのmacOSやiOSアプリ開発で主要な言語となります。Smalltalk風のメッセージ送信構文[receiver message]
を持つのが特徴です。
開発者たちはObjective-Cを発表する際に、「この言語には C のメモリの安全性と Smalltalk の驚異的な速度がすべて組み合わされています」と謳ったそうです。おお、それは素晴らしい! Cの低レベルな効率性と、Smalltalkの動的な柔軟さ・速度を兼ね備えているとは!
…ところが記事はすぐに水を差します。「現代の歴史家は、二人は失読症だったのではないかと疑っている」。えええ!?😨 これはつまり、「彼らの言っていること(Cのメモリ安全性とSmalltalkの速度)は、実際のObjective-Cの性質とは全く逆だったのではないか?」という強烈な皮肉です。
当時のC言語はメモリ管理を手動で行うため、非常に危険でした(バッファオーバーランなど)。Objective-CもCのスーパーセット(上位互換)であるため、Cの危険性をそのまま引き継いでいました。また、Smalltalkはメッセージングの仕組みから、当時の技術では必ずしも「驚異的な速度」が出せるわけではありませんでした(特にCと比較して)。Objective-CもSmalltalk風のメッセージングを取り入れたことで、C単体よりもオーバーヘッドが生じる場合がありました。つまり、記事の皮肉は、「彼らが『安全で速い』と言ったのは、実際は『危険で(Cよりは)遅い』だったんじゃないか? 言ってることと真逆だから失読症を疑うレベルだ」という、手厳しいながらも開発者なら思わず頷いてしまうかもしれない(!)ユーモアなのです。Objective-C開発者への、愛情(?)と毒舌に満ちた一撃ですね。
H5 キーボードへの額打ちと神のお告げ Perl (1987)
1987年、言語学者でありプログラマーでもあるラリー・ウォール氏が、テキスト処理やシステム管理に強いスクリプト言語、Perl(Perl)を作成しました。Perlはその柔軟すぎる(あるいは自由すぎる)構文と、CPANという巨大なライブラリ群で知られています。
記事によると、Perlの誕生は神秘的です。「ラリー・ウォールが眠りに落ち、ラリー・ウォールの額をキーボードに叩きつける」。そして「ラリー・ウォールは目を覚ますと、ラリー・ウォールのモニターにある一連の文字はランダムではなく、神が預言者ラリー・ウォールにデザインしてもらいたいプログラミング言語のサンプルプログラムであると判断しました」。こうしてPerlが誕生したそうです✨🙏キーボードドンッ!
これは、Perlの非常に自由で多様な記述方法が、まるで人間が書いたとは思えない(?)ほど難解に見えることがあること、そしてラリー・ウォール氏が言語学者として、あるいは宗教的な視点を持つ人物として知られていることをネタにしたジョークでしょう。特に、「The only way to stop Perl is to kill it with a hammer」(Perlを止める唯一の方法はハンマーで叩き殺すことだ)といった、Perlのコードの解読不能さやメンテナンスの難しさを示すような有名なフレーズ(これは記事にはありませんが、Perlに関する「あるある」ネタです)を連想させます。「神のお告げ」によってランダムな文字列が言語になった、というのは、Perlの奇抜な構文に対する、ある種の畏敬(?)と困惑を同時に表しているのかもしれません。ラリー・ウォール氏は確かにユニークな人物として知られていますが、さすがに神のお告げで言語を作ったわけではないはずです。
コラム:言語の名前とイメージ
プログラミング言語の名前って、結構ユニークなものが多いですよね。この章に出てきたSmalltalkなんて、最初は「子供のための言語」というニュアンスがあったそうですし、Pascalは有名な数学者の名前、Adaは世界初のプログラマーの名前から取られています。Perl(真珠)は宝石から、Ruby(ルビー)も宝石から。Pythonはコメディ番組から、Javaはコーヒーの名前から…と、由来を辿るだけでも面白い発見があります。これらの名前が、開発者のイメージやコミュニティの文化にどう影響するのか考えるのも楽しいですね。この記事のように、名前や由来をネタにしてジョークが生まれるのも、言語に親しみを感じている証拠かもしれません。そういえば、私が初めて使ったC言語は、B言語の次だからC、というシンプルな理由だったそうですが、あの言語にまつわる「銃」のジョークを聞くと、妙に納得してしまう自分がいるのはなぜでしょうか…?😅
第二部 ウェブ時代の混乱と模倣の美学 (1990s後半-2000s)
1990年代後半から2000年代にかけては、インターネット、特にWorld Wide Webが爆発的に普及し、プログラミング言語の世界にも大きな変化をもたらしました。ウェブサイトを作るための言語、サーバーサイドで動かす言語など、新たなニーズに応える言語が次々と登場します。この時代は、アイデアの模倣や競争が激化し、奇妙な誕生秘話もウェブのように混沌としてきます。
第4章 ウェブを巡るナプキンと黙示録 (1995)
1995年は、ウェブ開発にとって非常に重要な転換点となった年です。この年に、現在のウェブの多くを支える二つの言語(と、それにまつわるフレームワーク)が誕生しました。その誕生秘話は、全く対照的でありながら、どちらもこの記事では奇妙に描かれています。
H5 スパゲッティとナプキン PHP (1995)
ウェブ開発で広く使われるスクリプト言語、PHP(PHP: Hypertext Preprocessor)。その誕生について、記事は衝撃的なエピソードを語ります。1995年、開発者のラスムス・レルドルフ氏は「近所のイタリアンレストランで、自分のスパゲッティの皿がワールド・ワイド・ウェブを理解するための優れたモデルであり、ウェブアプリケーションがその媒体を模倣する必要がある」ことに気づいたそうです🍝。そして、その場でナプキンの裏面に「プログラマブル ハイパーリンク パスタ(Programmable Hyperlinked Pasta)」、略してPHPをデザインしたと!
これは、PHPがHTMLの中にコードを埋め込んで書けるという、初期のウェブ開発に適した手軽さを持っていたこと、そして、その手軽さゆえに構造が複雑になりがちなコードが「スパゲッティコード」と揶揄されることが多い、という二つの側面を巧妙に掛け合わせたジョークです。実際に、初期のPHPは個人的なツールとして開発が始まり、その設計思想は、ある種の「継ぎ接ぎ」や柔軟さ(良く言えば自由、悪く言えば無秩序)を許容するものでした。ナプキンに設計図、というのは、その手軽さや非公式な始まりを象徴しているのかもしれません。
記事はさらに追い打ちをかけます。「PHP ドキュメントは今日に至るまでそのナプキンに残っています」。これは、PHPの公式ドキュメントが非常に巨大で、時には分かりにくい、あるいは情報が整理されていないといった批判があったこと(特に古いバージョンや特定の機能について)を皮肉ったものでしょう。「ドキュメントがナプキンに残ってるレベルで整備されてない!」という、PHP開発者なら思わず苦笑いしてしまう「あるある」ネタです。もちろん、現在のPHPドキュメントは非常に充実しており、ウェブ上で誰でも参照できますのでご安心ください!😂
H5 黙示録回避と「Rails」改名 Ruby (1995)
同じ1995年、遠く離れた日本では、プログラマーの松本 幸宏氏(Matz)が、まつもと自身が楽しいと思えるプログラミング言語としてRuby(Ruby)を作成しました。オブジェクト指向スクリプト言語として、シンプルさと楽しさを重視した設計が特徴です。
記事では、松本氏がRubyを作成した目的を「オーストラリアをモヒカン族の戦士とティナ・ターナーが運営する砂漠にしてしまう、漠然と特定されていない黙示録を回避するため」としています🛡️🏜️。マッドマックスの世界観!? なんという壮大な、そして全く根拠のない誕生理由でしょう。もちろん、松本氏がRubyを作ったのは世界を救うためではなく、より生産的で楽しいプログラミング環境を作るためです。このジョークは、ある種のプログラマーが持つ「自分の作ったもので世界を変えたい」「既存の不満な状況を打破したい」という情熱を、極端な「黙示録回避」という形で表現したのかもしれません。
そして、記事のRubyに関する記述には、さらにメタなジョークが隠されています。「この言語は後に、実際の発明者である David Heinemeier Hansson によって Ruby on Rails と改名されました」。まず、Ruby on RailsはRuby上で動作するウェブアプリケーションフレームワークであり、Ruby言語そのものではありません。そしてDHHはRailsの発明者ではありますが、Ruby言語の発明者ではありません。この記事の筆者は、RubyとRuby on Rails、そしてそれぞれの作者を意図的に混同させているのです。
さらに、この記事の原文のコメント欄には、なんとDHH氏本人からのものらしきツッコミが引用されています。「[松本が Ruby と呼ばれる言語を発明したという部分は決して起こらなかったので、この記事の次の改訂版 - DHH] で削除したほうがよいでしょう」。これは、Railsの知名度がRuby言語自体の知名度を上回るほどになった時期があったこと、そして一部で「Rubyと言えばRails」という誤解があったこと、さらにDHH氏自身がユーモアを解する人物であることを踏まえた、非常に高度な(?)ネタです。このコメント自体が記事の一部として引用されていることで、ユーモアのレイヤーが何重にもなっています。😂
H5 設計の間違いを読み上げて… JavaScript/ECMAScript (1995)
ウェブブラウザ上で動作する唯一のプログラミング言語として、絶大な普及を誇るJavaScript(JavaScript)。1995年にネットスケープコミュニケーションズのブレンダン・アイク氏によって、わずか10日間で開発されたと言われています。
記事によると、ブレンダン・アイク氏は「プログラミング言語の設計で犯したすべての間違いを読み上げ、さらにいくつかを発明し、LiveScript を作成しました」と…💀。これはあまりにもひどい言い草です! JavaScriptは開発期間が非常に短かったこと、そして当初は設計思想が固まっていなかったことなどから、その仕様には確かに多くの問題点や「気持ち悪い」部分があると指摘されてきました。しかし、それを「設計の間違いを読み上げてさらに増やした」とまで言うのは、JavaScript開発者への愛が溢れすぎた(あるいは毒が強すぎた)表現でしょう。初期のJavaScriptは、まさに「動けばいい」という、ウェブの黎明期らしい混沌を体現していたのかもしれません。
言語の名前に関する記述も皮肉たっぷりです。最初はLiveScriptという名前だったのが、「Javaの人気を利用するために、この言語の名前は JavaScript に変更されました」。当時Sun Microsystemsが猛烈にプッシュしていたJavaにあやかろうとしたマーケティング戦略は事実です。そして、さらに「皮膚疾患の人気を利用するために、言語の名前が ECMAScript に変更されました」と! 😱 これは、JavaScriptの標準仕様の名前がECMAScriptであることと、エキセマ(湿疹)という皮膚疾患(eczema)の発音が似ていることをかけた、最低最悪のダジャレであり、強烈な皮肉です。ECMAScriptはJavaScriptの公式名称ですが、普段はあまり呼ばれないことや、その名称に馴染みがない人もいることをネタにしているのでしょう。JavaScriptの複雑な名称変更の歴史と、その背景にあるマーケティングや標準化のドタバタを、悪趣味なユーモアで表現しています。
コラム:ウェブ言語の進化を見守って
私がプログラミングの世界に入った頃は、ちょうどウェブが登場し始めて、HTMLとCSSで静的なページを作るのが主流でした。そこにJavaScriptやPHPが登場して、ウェブサイトが動的になったり、ユーザーとインタラクションできるようになるのを見て、本当にワクワクしたものです。最初はJavaScriptで簡単なアラートを出したり、PHPでフォームの送信を処理したりするだけでも感動しました。「スパゲッティコード」なんて言葉も、その頃は知りませんでしたね。ただ、PHPのコードがHTMLの中に<?php ... ?>
みたいに混ざっているのを見て、「なんか汚いな…」と感じたことはあります(笑)。ナプキンドキュメント、というネタを聞くと、ああ、初期はそんな風に混沌としてたのかもな、と妙に納得してしまいます。ウェブの進化は本当に早くて、次から次へと新しい技術やフレームワークが出てきて、ついていくのが大変だなーと感じることもありますが、根底にあるのは、より便利に、より楽しくウェブを使いたい、作りたいという開発者たちの情熱なのだと思います。時にはこの記事のように、その情熱が奇妙な方向へ暴走することもあるみたいですが!😂
第5章 巨大企業の宣伝合戦と両刃の剣 (1996-2003)
ウェブの普及は続き、エンタープライズの世界でもプログラミング言語の重要性が増します。特に巨大IT企業が主導する言語開発が活発になり、それぞれの言語が市場で競い合います。この時代は、似たような言語が競合したり、異なるパラダイムを統合しようとした結果、新たな混乱が生まれたり…といったドラマが待っています。もちろん、そこにはこの記事らしい「間違った」視点が加わります。
H5 太陽が告げるオブジェクト指向 Java (1996)
1996年、サン・マイクロシステムズ(Sun Microsystems)のジェームズ・ゴズリング氏らが開発したJava(Java)が登場します。「Write Once, Run Anywhere」(一度書けばどこでも動く)をスローガンに、オブジェクト指向、ガベージコレクション、プラットフォーム非依存性などを特徴として、ウェブアプリケーションやエンタープライズシステムの分野で爆発的に普及しました。
記事によるJavaの説明はこうです。「Java は、比較的冗長なガベージ コレクション、クラス ベース、静的型付け、単一ディスパッチ、単一実装継承と複数インターフェイス継承を備えたオブジェクト指向言語です」。…なんだか専門用語が並んでいて、真面目な説明っぽいぞ?🤔 と思いきや、記事は続けます。「太陽はジャワの斬新さを大声で告げる」。サン・マイクロシステムズ(Sun = 太陽)が、自社のJavaの革新性や優位性を盛大に宣伝した様子を、「太陽が告げる」という詩的な(?)表現で描写しています。当時のSunは確かにJavaを強力に推進していましたから、その熱狂を伝えていますね。
冗長性(redundancy)や単一実装継承、複数インターフェイス継承といった言葉は、Javaの設計における特徴や、他の言語と比較した際の記述量の多さなどを指しており、Javaに対する開発者の率直な評価(褒め言葉の場合も、少し手間に感じる場合もある)を反映していると言えるでしょう。
H5 マイクロソフトが告げるもう一つのオブジェクト指向 C# (2001)
時は移って2001年。マイクロソフト(Microsoft)が、.NET Frameworkの主要言語としてC#(C#)を発表しました。開発を主導したのは、Delphiなどで実績のあるアンダース・ヘルスバーグ氏です。
さて、記事によるC#の説明を読んでみましょう。「C# は、単一の実装継承と複数のインターフェイス継承を備えた、比較的冗長なガベージ コレクション、クラス ベース、静的型付け、単一ディスパッチ、オブジェクト指向言語です」。…あれ?🤔 これ、さっきのJavaの説明とほとんど同じでは? そうなんです、記事は意図的にJavaとC#の説明をほぼコピペしています! そして続くのは、「マイクロソフトはC#の斬新さを大声で告げる」。
このジョークは、C#がJavaの成功を強く意識して設計されており、構文や多くの機能がJavaと非常に似通っていたという歴史的事実をネタにしています。後発であるC#は、Javaの良い点を学びつつ、さらに改良や新しい機能(例えば、デリゲートやプロパティなど、当時のJavaにはなかったもの)を取り入れて設計されました。しかし、登場当初はその類似性から「Javaのパクリでは?」という批判も少なからずありました。記事は、その類似性を極端に描くことで、「結局やってることは同じだろ!」という、当時のJava vs C#論争の一端をユーモラスに表現しています。サン(太陽)とマイクロソフトがそれぞれ自社の言語の「斬新さ」を大声で主張し合う構図も、当時の両社の激しい競争と宣伝合戦を彷彿とさせます。
H5 ピーナッツバターカップと両陣営からのジハード Scala (2003)
2003年、スイス連邦工科大学ローザンヌ校(EPFL)のマーティン・オデルスキー氏が、オブジェクト指向言語と関数型言語のパラダイムを統合したScala(Scala)を発表しました。Java仮想マシン(JVM)上で動作し、Javaとの相互運用性が高いことも特徴です。
この記事によると、オデルスキー氏がScalaのアイデアを思いついたのは、なんと「酔ったマーティン・オデルスキーは、他人のチョコレートに誰かのピーナッツバターが乗っているリースのピーナッツバターカップの広告を見て」だそうです🍫🥜🍺。お菓子を見て言語のアイデアが浮かぶなんて、天才の思考回路は凡人には理解できませんね! リースのピーナッツバターカップは、チョコレートとピーナッツバターという異なるものが組み合わさって美味しい(?)お菓子ですが、これがオブジェクト指向と関数型という異なるプログラミングパラダイムを組み合わせるアイデアに繋がった、というわけです。
そして、その結果どうなったかというと、「これは両方のグループを怒らせ、それぞれがすぐにジハードを宣言します」と!⚔️ オブジェクト指向開発者からは「関数型なんて分からない!」、関数型開発者からは「オブジェクト指向なんて不純だ!」と、両陣営から猛烈な反発を食らった、という強烈な皮肉です。Scalaは両方のパラダイムの利点を享受できる強力な言語ですが、その柔軟さゆえに様々なスタイルでコードが書けてしまい、チーム開発でコードスタイルが統一しにくい、といった課題も指摘されることがあります。また、オブジェクト指向と関数型のどちらに重きを置くかなど、コミュニティ内で活発な(時には激しい)議論が起きることもありました。記事はこれを「ジハード(聖戦)」という言葉で極端に表現し、パラダイム統合の難しさや、コミュニティ内の論争をユーモラスに描いています。平和的な統合を目指したはずが、両陣営から戦いを挑まれるとは… Scala開発者の苦労が偲ばれますね。
コラム:言語戦争は続く
新しいプログラミング言語が登場するたび、あるいは既存の言語に大きな機能追加があるたび、開発者のコミュニティでは活発な議論…というか、しばしば「戦争」が勃発しますよね。「あの言語はダメだ」「いや、こっちの方が優れている」「この機能は不要だ」といった意見が飛び交い、時にはかなり感情的な衝突に発展することもあります。この記事に描かれている「Cなき時代のCライクでない批判」や「Java vs C#」「Scalaのジハード」といったネタは、まさにそうした「言語戦争」の歴史を風刺していると言えます。どの言語にも熱狂的なファンと、そうでない人たちがいて、それぞれの主張がある。それは技術への情熱の裏返しでもありますが、傍から見ると滑稽に見えることもあります。この記事は、そんな開発者たちの熱い(時に暑苦しい)議論や対立を、ユーモラスに切り取って見せてくれる鏡のような存在かもしれません。「私の愛する言語がこんな風にネタにされてる!」と怒る人もいるかもしれませんが、それはその言語が多くの人に使われ、議論の対象になっていることの証でもあります。「あー、うちのチームでもこんな議論してるなー」と共感する人もいるでしょう。言語戦争はきっとこれからも続く。私たち開発者は、その最前線で戦い続ける兵士…いや、楽しんでコードを書く旅人でありたいですね🚀
補足資料
本編でご紹介した「プログラミング言語の簡潔で不完全、そしてほとんど間違った歴史」について、さらに理解を深めたり、別の角度から眺めたりするための資料をいくつかご用意しました。ここからは、少し真面目な視点も交えつつ、記事の背景にあるものや、そこから広がる可能性について考えていきましょう。
疑問点・多角的視点
この記事は、意図的に事実を歪曲し、誇張することでユーモアを生み出しています。そのため、記事の内容を鵜呑みにすることはできませんが、逆にその「間違っている」点を深掘りすることで、様々な疑問や多角的な視点が生まれてきます。
- 技術的正確性への疑問(を楽しむ): 例えば、ジャカード織機で「Hello, World」が可能だったのか?当時の技術水準で「テールコール再帰」や「並行処理」といった概念が存在したのか?など、記事の記述が史実とどう異なるのかを考えることは、逆に正確な歴史を知るきっかけになります。「CがないのにCライクでない」という批判のジョークは、技術の評価軸が時代と共に変化すること、あるいは新しい技術が常に既存の枠組みで評価されがちであることを示唆していると捉えることもできます。
- 開発者コミュニティの文化の反映: 各プログラミング言語にまつわる皮肉やステレオタイプ(C++は複雑、Javaは冗長、Haskellは難解、PHPは汚いなど)は、開発者コミュニティ内で実際に語られている共通認識や内輪ネタを強く反映しています。これらのネタはどこから生まれたのか?なぜ特定の言語がそのように認識されるようになったのか?を考えることは、各言語のコミュニティ文化や歴史的経緯(設計思想、普及の仕方、典型的な使い方など)を理解する上で興味深い視点を提供してくれます。
- 人物描写の戯画化: 記事に登場する開発者たちの描写(デニス・リッチーの破壊衝動、ラリー・ウォールの神秘体験、グイド・ファン・ロッサムの独裁など)は、彼らの実際の人物像を極端にデフォルメしています。なぜ彼らがそのように描かれているのか?彼らの実際の業績や性格、コミュニティでの立ち位置などが、どのようにユーモアの元ネタになっているのか?を考えることで、技術史を彩る人物たちの人間的な側面に思いを馳せることができます。
- インターネット文化との関連: この記事がHacker Newsのような技術系コミュニティで繰り返し話題になり、コメント欄で新しいネタ(Rust, Go, TypeScriptなど)が追加されていく過程は、インターネットにおけるコンテンツの拡散、ミーム化、そしてコミュニティによる共創の一例と言えます。なぜこの記事は「エバーグリーン(常緑樹)」として愛され続けるのか?技術コミュニティにおけるユーモアやパロディの役割とは何か?といった疑問は、現代の技術文化を理解する上で重要です。
- 教育への応用可能性: 硬い技術史に苦手意識を持つ人にとって、この記事のようなユーモアを交えたアプローチは、興味を持つきっかけになる可能性があります。ただし、事実誤認を招かないように、どこまでがジョークでどこが事実なのかを明確に伝える必要があります。技術教育において、歴史や文化をどのように楽しく伝えるか?という視点も生まれてきます。
この記事は単なるお笑いとしてだけでなく、それを鏡としてプログラミング言語の世界を多角的に眺めることで、様々な発見や気づきを得ることができるのです。
日本への影響
このユーモア記事自体が日本のIT業界や技術政策に直接的な影響を与えるものではありません。しかし、いくつかの間接的な関連や示唆はあります。
- Rubyの国際的認知: 記事に日本の松本幸宏氏が開発したRubyが登場し、特にコメント欄でDHH氏によるRuby on Railsに関する言及があることは、日本の開発者が生み出したプログラミング言語が国際的な技術コミュニティで広く認知され、議論やユーモアの対象となっていることの表れです。これは日本の技術力が世界に影響を与えている一例と言えるでしょう。
- 技術コミュニティの文化共有: このような英語圏で生まれた技術系ユーモア記事が日本の開発者の間でも話題になり、共感を呼ぶのは、日本の技術コミュニティが世界の技術コミュニティと共通の文化や「あるある」ネタを共有しているからです。プログラミング言語の特性や開発者の苦労は、国境を越えて共通の話題となり得ます。
- 技術教育への示唆: 硬質な技術史を学ぶ際に、このようなユーモアを交えた物語が、学習者の興味を引きつける有効な手段となりうることを示唆しています。日本の教育現場でも、歴史や概念を伝える際に、文化的な側面や開発者の人間像を面白く取り入れることの可能性を示しています。
- 特定の言語コミュニティへの影響: Ruby、PHP、Java、C++など、日本でも広く使われている言語が記事のネタになっているため、これらの言語の日本のコミュニティ内でこの記事が話題になることで、コミュニティ内の交流や自己認識に影響を与える可能性があります。「うちの言語はこんな風に言われてるのか!」と面白がることも、コミュニティの一体感を醸成するかもしれません。
総じて、この記事は日本の技術社会に直接的な変革をもたらすものではありませんが、世界の技術文化との繋がりや、コミュニティ内でのユーモアの役割といった側面から、日本におけるIT文化を考える上で興味深い材料となり得ます。
歴史的位置づけ
この「プログラミング言語の簡潔で不完全、そしてほとんど間違った歴史」という記事は、単なる技術的な歴史解説ではなく、以下の観点から独自の位置づけを持つと言えます。
- 技術文化におけるユーモアの記念碑: 技術文書や学術的な歴史書が避けがちな、開発者の感情、コミュニティの内輪ネタ、技術に対する愛憎、そしてそれらを笑いに変えるユーモアの精神を凝縮して表現しています。これは、厳密さだけではない技術文化の側面を捉えた、ある種の「文化資料」として位置づけられます。コンピュータ黎明期からのハッカー文化に見られる、権威や既存の常識を茶化す反骨精神にも通じるものです。
- インターネット時代の「エバーグリーン」コンテンツ: Hacker Newsのようなオンラインコミュニティで繰り返し共有され、投稿されるたびに新たなコメントやネタが追加される「エバーグリーン(Evergreen)」コンテンツとしての地位を確立しています。これは、特定のコミュニティ内で共有される笑いや知識が、インターネットを通じてどのように持続し、進化していくかを示す好例です。記事自体の内容は時間の経過とともに古くなる部分もありますが、それに対するコミュニティの反応や追加されるネタが、時代と共に変化する技術トレンドや文化を映し出しています。
- 非公式な言語「批評」の一形態: 各プログラミング言語に対する記述は、しばしば辛辣な皮肉や極端な誇張を含んでいます。「C++は複雑」「Javaは冗長」「PHPは汚い」「Haskellは難解」といったステレオタイプは、厳密な技術評価とは異なりますが、多くの開発者が経験的に感じたり、コミュニティ内で語られたりする「あるある」に基づいています。この記事は、そうした非公式で感情的な言語「批評」が、ユーモアという形をとって広く共有されている様子を示しています。
- 技術発展の人間的側面の提示: 技術発展を、開発者の個人的な奇行(?)や偶然、コミュニティの対立といった非合理的な要素によって描くことで、技術史が合理的なプロセスだけでなく、人間の個性、文化、社会的な文脈に深く影響されることを示唆しています。これは、技術史を単なる技術の進化ではなく、人間が関わる物語として捉え直す視点を提供します。
結論として、この記事はプログラミング言語の「公式な」歴史書とは一線を画し、技術開発を取り巻く人間のドラマ、コミュニティ文化、そしてそれを彩るユーモアを、インターネットという媒体を通じて広く共有した、独特な歴史的・文化的価値を持つ作品と言えるでしょう。
今後望まれる研究
この「ほとんど間違った歴史」という一見不真面目な記事も、学術的な視点から見れば興味深い研究対象となり得ます。ここから派生する可能性のある研究テーマをいくつかご紹介します。
- パロディ・ユーモア研究:
- この記事で用いられているユーモアの構造(誇張、時代錯誤、擬人化、ステレオタイプ化など)を詳細に分析し、技術系ユーモアの定型や特徴を明らかにする研究。
- この記事のネタ元となっている各プログラミング言語に関するコミュニティ内での評判やステレオタイプを収集・分析し、ユーモアがどのように現実の認識に基づき、そしてそれを増幅・再生産しているかを考察する研究。
- 他の技術分野(例: ハードウェア、オペレーティングシステム、インターネット文化など)におけるパロディやミームと比較し、共通点や相違点を探る研究。
- コミュニティ研究・文化研究:
- Hacker Newsなどのプラットフォームにおけるこの記事のスレッドのコメントを時系列で分析し、時間の経過(新しい言語の登場、トレンドの変化など)に伴う議論の内容、追加されるネタ、ユーモアのスタイルの変化を追跡する研究。
- 異なる言語コミュニティ(例: Java, Python, Haskellコミュニティなど)において、この記事がどのように受け止められているか(共感、反発、無視など)を比較分析し、各コミュニティの文化的な特徴を探る研究。
- この記事が英語圏以外の技術コミュニティ(例えば日本)でどのように翻訳、紹介、議論されているかを調査し、技術文化のローカライズやグローバルな共有のあり方を考察する研究。
- 技術史研究(補助的な視点として):
- この記事で言及される各プログラミング言語の実際の開発史や設計思想、コミュニティ形成の歴史などを詳細に調査し、記事の「間違った」記述が、実際の歴史のどの側面(技術的特徴、開発者の個性、マーケティング、コミュニティの雰囲気など)を歪めているのか、そしてなぜそこが歪曲の対象となったのかを分析する研究。
- 教育研究:
- この記事のようなユーモラスなコンテンツが、コンピュータ科学やプログラミングの歴史、あるいは各プログラミング言語の文化的な背景に対する学習者の興味関心をどの程度喚起するかを、教育現場での試行やアンケート等を通じて検証する研究。
これらの研究は、厳密な技術史の知識だけでなく、社会学、文化人類学、言語学、ユーモア論など、様々な分野のアプローチを組み合わせることで、より多角的に技術文化を理解する手助けとなるでしょう。
年表 (完全不正確版)
この記事の内容に基づいた、正確性は保証されない年表です。歴史上の出来事とジョークが混在しています。🤯
用語解説 (不正確なものも含む)
本記事で使用されている、専門用語や独自のジョーク用語を解説します。ただし、この解説自体も記事のトーンに合わせて不正確なものを含む場合がありますのでご注意ください!🤪
- Ada: 米国国防総省が作った、軍事用(らしい)のプログラミング言語。ギャング対策に有効という噂も。
- 解析機関 (Analytical Engine): 19世紀にエイダ・ラブレスがプログラムを書いたとされる、未完成の機械式コンピュータ。
- Arc: LISPファミリーのプログラミング言語。記事ではLispの別名として言及されている。ポール・グレアム氏が関わった。
- BASIC: Beginner's All-purpose Symbolic Instruction Code の略。初心者向けの非構造化言語。手軽だがスパゲッティコードになりやすい。
- C言語: デニス・リッチーが開発した、強力だが危険な低レベル言語。後の多くの言語の基礎となった。
- チャーチ=チューリングの提唱: 計算の限界に関する理論的な提唱。記事ではチューリングとチャーチが同時に「全言語」を発明したというジョークの元ネタ。
- COBOL: Capitalization Of Boilerplate Oriented Language の略(記事内ジョーク)。ビジネス処理用言語。冗長で大文字を多用する(ことがある)。
- 並行処理 (Concurrency): 複数の処理を同時に(または同時に見えるように)実行する技術。ジャカード織機には無かったと幻のレディッターが指摘。
- C++: ビャーネ・ストラウストラップが作った、Cに様々なものをボルト止めした複雑な言語。Skynetでないとコンパイルできないらしい。
- ECMAScript: JavaScriptの標準仕様名。記事では「皮膚疾患の人気を利用」して改名されたことになっている(ジョーク)。
- 自己関手圏のモノイド (Monoid in the category of endofunctors): モナドの定義の一つらしい。フィリップ・ワドラーがこれで説明しようとしたが、余計に混乱を招いた(ネタ)。
- エンタープライズアーキテクト (Enterprise Architect): 企業のITシステム全体を設計する偉い人(らしい)。エイダ・ラブレスの技をUMLで再学習したとされている(完全にジョーク)。
- 形式意味論 (Formal Semantics): プログラミング言語の意味を数学的に厳密に定義すること。ロビン・ミルナーはこれで頭が爆発した(ネタ)。
- FORTRAN: 科学技術計算用言語。IBMとジョン・バッカスが作ったが、「面白くない」らしい。
- GOTO文: プログラムの実行を指定した行番号にジャンプさせる命令。非構造化プログラミングでスパゲッティコードを生みやすい。BASICなどで使われた。
- Haskell: 純粋な関数型プログラミング言語。委員会にはアシュトン・カッチャーや動物愛護団体もいたらしい。難解なモナドで有名。
- こんにちは、世界 (Hello, World!): プログラミング学習の最初によく書く簡単なプログラム。ジャカード織機が最初に織り込んだとされている(ジョーク)。
- IBM: 大手コンピューター会社。「面白くない」らしい(ジョーク)。
- Java: サン・マイクロシステムズが開発した、広く普及したオブジェクト指向言語。比較的冗長らしいが、太陽が大声で斬新さを告げた。
- JavaScript: ブレンダン・アイクが作った、ウェブブラウザで動く言語。「設計間違いを読み上げて増量」されたらしい。
- ジハード (Jihad): イスラム教における聖戦。記事ではScalaがオブジェクト指向と関数型を混ぜた結果、両陣営から宣戦布告されたこと(コミュニティ内の論争)を指す(比喩表現)。
- ラムダ (Lambda): ラムダ計算や、それを実装したLISP,Scheme,Haskellなどの言語、あるいはJavaやC#などで導入されたラムダ式を指す。記事では深夜の通販番組になったり、Javaの人気まで無名だったりと散々。
- ラムダ計算 (Lambda Calculus): アロンゾ・チャーチが提唱した、計算の理論的なモデル。C言語に似ていないと無視された(ジョーク)。
- LISP: ジョン・マッカーシーとポール・グレアムが作った、括弧を多用する関数型言語。戦後の戦略括弧枯渇で高価だったらしい。見下しで有名。
- ML: ロビン・ミルナーが作った関数型言語。M&M型理論に基づく。形式意味論でミルナー氏の頭が爆発。ファミリーにVisual Basicも含まれるらしい(間違い)。
- M&M型理論 (M&M Type Theory): ML言語の基礎となったとされる、お菓子のM&Mにちなんだ理論(ジョーク)。実際は型理論のこと。
- モナド (Monad): 関数型プログラミングにおける抽象的な概念。Haskellで副作用などを扱うのに使うが難しい。フィリップ・ワドラーは自己関手圏のモノイドだと説明した。
- Objective-C: ブラッド・コックスとトム・ラブが作った、CにSmalltalk風のオブジェクト指向を足した言語。「Cのメモリ安全性とSmalltalkの驚異的速度」を持つらしいが、開発者は失読症だったかも(皮肉)。
- Pascal: ニクラウス・ヴィルトが作った手続き型言語。構造化プログラミングを推奨。C言語がないのに「Cライクでない」と批判された。
- Perl: ラリー・ウォールが作った、テキスト処理に強い言語。神のお告げで誕生したらしい。
- PETA: 動物の倫理的扱いを求める人々。Haskell開発委員会に参加したらしい(ジョーク)。
- PHP">PHP
巻末資料
本編はいかがでしたか? 正確な歴史を学ぶことも大切ですが、たまにはこんな「ほとんど間違った」視点から眺めてみるのも面白いのではないでしょうか。さて、巻末資料では、本編では語りきれなかった(あるいは、本編よりもさらに脱線した)内容をお届けします。
結論 (何も解決しない)
さて、プログラミング言語の簡潔で不完全、そしてほとんど間違った歴史を最後までお読みいただき、ありがとうございました。
この壮大な物語(?)を通じて、私たちはジャカード織機から始まり、PHPのナプキン、SkynetによるC++コンパイル、そしてScalaのジハードに至るまで、様々な言語とその誕生にまつわる奇妙なエピソードに触れてきました。これらの話は、技術的な事実をベースにしながらも、大胆な誇張、時代錯誤、そして開発者のコミュニティで囁かれる(あるいは叫ばれる)ステレオタイプや内輪ネタがふんだんに盛り込まれています。
では、この歴史書から私たちは何を学ぶべきなのでしょうか? 厳密な技術史を学ぶことは、技術の進化の道筋を理解し、未来を予測する上で非常に重要です。しかし、この記事が教えてくれるのは、それだけではありません。技術というのは、突き詰めれば人間が作り、人間が使うものです。開発者の個性、偶然の出来事、コミュニティの雰囲気、そして時にはくだらないジョークが、言語の設計や普及に影響を与えることもある。技術史は、単なる出来事の羅列ではなく、人間ドラマと文化の物語でもあるということを、この「ほとんど間違った歴史」は強烈に、そして面白おかしく示唆しているのです。
この記事を読んで、特定のプログラミング言語について「なんだ、そんな変な誕生した言語なのか!」と避けるのではなく、「こんな面白いエピソードがあるのか! ちょっと触ってみようかな?」と思っていただけたなら、筆者としてはこれほど嬉しいことはありません。
技術は常に進化し、新しい言語やツールが次々と生まれてきます。それぞれの言語には、設計者の思想があり、コミュニティの文化があり、そしてきっと、誰かをニヤリとさせるような「ほとんど間違った誕生秘話」があるはずです。
この歴史はここで終わりではありません。読者の皆さんが、これから出会う新しい言語の、あるいはすでに関わっている言語の、自分なりの「ほとんど間違った誕生秘話」を見つけたり、作り出したりすることで、この物語は続いていくのです。さあ、あなたのキーボードを叩いて、自分だけの歴史を紡ぎ始めましょう! 🎉💻✨
…え? 結局、プログラミング言語の歴史について、正確な知識は何一つ得られなかったって? いやいや、歴史は教科書で学んでください。この記事で得られるのは、笑いと、プログラミング言語への(歪んだ)愛情ですから! それが、このレポートの、そしてプログラミング言語の、結論です。
ありがとうございました!😊
参考リンク・推薦図書 (真面目なものと不真面目なもの)
本記事の内容はフィクションですが、プログラミング言語の実際の歴史や文化についてもっと知りたいという方のために、参考になる資料をいくつかご紹介します。(リンクは貼りません。ご了承ください。)
実際の歴史を学ぶための書籍:
- 『コンピュータの構成と設計』 (デイビッド・パターソン, ジョン・ヘネシー) - コンピュータの基本から歴史まで触れられています。
- 『プログラミング言語の歴史』 (ロバート・セジウィック) - より技術的、学術的な視点からの歴史書。
- 『チューリングの計算理論入門』(高橋 直人) - チューリングマシンの理論など、計算機科学の基礎を学ぶための書籍。
- 各プログラミング言語の公式ドキュメントや仕様書 - 最も正確な情報源。
開発者文化や思想に触れるための書籍・記事:
- 『ハッカーと画家』 (ポール・グレアム) - LISP開発者でもある著者の思想に触れられます。
- 『達人プログラマー』 (アンドリュー・ハント, デビッド・トーマス) - プログラミング哲学に関する名著。
- 『計算機プログラムの構造と解釈 (SICP)』 (ハロルド・エイベルソン, ジェラルド・ジェイ・サスマン) - Schemeを通じた計算機科学の古典的な教科書。この記事の「計画」や「ラムダ」のネタ元の一つです。
- Hacker News (news.ycombinator.com) - この記事が生まれたコミュニティそのもの。技術者間の生の声や議論に触れられます。
- プログラマーや研究者のブログ、カンファレンスでの講演録など - 各言語の誕生秘話や開発者の想いが語られている場合があります。
この記事の元ネタ(英語):
- "A Brief, Incomplete, and Mostly Wrong History of Programming Languages" by James Iry - 本記事のベースとなった原文です。この記事を楽しめた方は、ぜひ原文も読んでみてください。
これらの資料を「ほとんど間違った歴史」と対比しながら読むことで、プログラミング言語の世界がより深く、そして面白く見えてくるかもしれません。
用語索引(アルファベット順)
本記事中に登場した専門用語や独自のジョーク用語を、初学者にも分かりやすく解説します。本文中の該当箇所へのリンク付きです。
- Ada: 米国国防総省が作った、軍事用(らしい)のプログラミング言語。ギャング対策に有効という噂も。
- 解析機関 (Analytical Engine): 19世紀にエイダ・ラブレスがプログラムを書いたとされる、未完成の機械式コンピュータ。
- Arc: LISPファミリーのプログラミング言語。記事ではLispの別名として言及されている。ポール・グレアム氏が関わった。
- BASIC: Beginner's All-purpose Symbolic Instruction Code の略。初心者向けの非構造化言語。手軽だがスパゲッティコードになりやすい。
- ボルト止め (Bolt on): 既存のものに後から機能や部品を無理やり追加すること。記事ではC++がC言語に様々なものをボルト止めしたと表現されている。
- C言語: デニス・リッチーが開発した、強力だが危険な低レベル言語。後の多くの言語の基礎となった。
- C#: マイクロソフトが開発した、Javaとよく似たオブジェクト指向言語。
- チャーチ=チューリングの提唱: 計算の限界に関する理論的な提唱。記事ではチューリングとチャーチが同時に「全言語」を発明したというジョークの元ネタ。
- COBOL: Capitalization Of Boilerplate Oriented Language の略(記事内ジョーク)。ビジネス処理用言語。冗長で大文字を多用する(ことがある)。
- 並行処理 (Concurrency): 複数の処理を同時に(または同時に見えるように)実行する技術。ジャカード織機には無かったと幻のレディッターが指摘。
- C++: ビャーネ・ストラウストラップが作った、Cに様々なものをボルト止めした複雑な言語。Skynetでないとコンパイルできないらしい。
- 神のお告げ (Divine Revelation): 神から与えられる啓示。記事ではPerlがラリー・ウォールへの神のお告げで誕生したことになっている(ジョーク)。
- 失読症 (Dyslexic): 文字を読んだり理解したりするのが難しい障害。記事ではObjective-Cの開発者が、言語の実際と異なる特徴を謳ったことから疑われた(皮肉)。
- ECMAScript: JavaScriptの標準仕様名。記事では「皮膚疾患の人気を利用」して改名されたことになっている(ジョーク)。
- 自己関手圏のモノイド (Monoid in the category of endofunctors): モナドの定義の一つらしい。フィリップ・ワドラーがこれで説明しようとしたが、余計に混乱を招いた(ネタ)。
- エンタープライズアーキテクト (Enterprise Architect): 企業のITシステム全体を設計する偉い人(らしい)。エイダ・ラブレスの技をUMLで再学習したとされている(完全にジョーク)。
- すべてはオブジェクト (Everything is an object): Smalltalkやオブジェクト指向プログラミングの基本的な考え方。アラン・ケイが禅問答のように説明した。
- 形式意味論 (Formal Semantics): プログラミング言語の意味を数学的に厳密に定義すること。ロビン・ミルナーはこれで頭が爆発した(ネタ)。
- FORTRAN: 科学技術計算用言語。IBMとジョン・バッカスが作ったが、「面白くない」らしい。
- GOTO文: プログラムの実行を指定した行番号にジャンプさせる命令。非構造化プログラミングでスパゲッティコードを生みやすい。BASICなどで使われた。
- Haskell: 純粋な関数型プログラミング言語。委員会にはアシュトン・カッチャーや動物愛護団体もいたらしい。難解なモナドで有名。
- こんにちは、世界 (Hello, World!): プログラミング学習の最初によく書く簡単なプログラム。ジャカード織機が最初に織り込んだとされている(ジョーク)。
- IBM: 大手コンピューター会社。「面白くない」らしい(ジョーク)。
- ジャカード織機: パンチカードで模様を制御できる織機。ジョセフ・マリー・ジャカードが発明。最初の「プログラム」を使った機械とされる。
- Java: サン・マイクロシステムズが開発した、広く普及したオブジェクト指向言語。比較的冗長らしいが、太陽が大声で斬新さを告げた。
- JavaScript: ブレンダン・アイクが作った、ウェブブラウザで動く言語。「設計間違いを読み上げて増量」されたらしい。
- ジハード (Jihad): イスラム教における聖戦。記事ではScalaがオブジェクト指向と関数型を混ぜた結果、両陣営から宣戦布告されたこと(コミュニティ内の論争)を指す(比喩表現)。
- ラムダ (Lambda): ラムダ計算や、それを実装したLISP,Scheme,Haskellなどの言語、あるいはJavaやC#などで導入されたラムダ式を指す。記事では深夜の通販番組になったり、Javaの人気まで無名だったりと散々。
- ラムダ計算 (Lambda Calculus): アロンゾ・チャーチが提唱した、計算の理論的なモデル。C言語に似ていないと無視された(ジョーク)。
- ラムダ式 (Lambda Expression): 匿名関数を簡潔に記述するための構文。多くのプログラミング言語で使われる。
- LISP: ジョン・マッカーシーとポール・グレアムが作った、括弧を多用する関数型言語。戦後の戦略括弧枯渇で高価だったらしい。見下しで有名。
- 見下し (Condescension): 人を見下す態度。記事ではLISP開発者の「主要なアルゴリズム手法」とされている(ジョーク)。
- エイダ・ラブレス (Ada Lovelace): 世界初のプログラマーとされる人物。解析機関のためにプログラムを書いた。Ada言語の名前の由来。
- ML: ロビン・ミルナーが作った関数型言語。M&M型理論に基づく。形式意味論でミルナー氏の頭が爆発。ファミリーにVisual Basicも含まれるらしい(間違い)。
- M&M型理論 (M&M Type Theory): ML言語の基礎となったとされる、お菓子のM&Mにちなんだ理論(ジョーク)。実際は型理論のこと。
- モナド (Monad): 関数型プログラミングにおける抽象的な概念。Haskellで副作用などを扱うのに使うが難しい。フィリップ・ワドラーは自己関手圏のモノイドだと説明した。
- 謎の手術 (Mysterious operation): Python開発者グイド・ファン・ロッサムがアルゼンチンで受けたとされる手術(ジョーク)。その結果、傷跡とPythonを得た。
- Objective-C: ブラッド・コックスとトム・ラブが作った、CにSmalltalk風のオブジェクト指向を足した言語。「Cのメモリ安全性とSmalltalkの驚異的速度」を持つらしいが、開発者は失読症だったかも(皮肉)。
- 唯一の道 (There Is Only One Way to Do It - TIOBE): Pythonの設計哲学を示すスローガンの一つ。記事ではグイド・ファン・ロッサムが独裁者となって宣言したことになっている。
- Pascal: ニクラウス・ヴィルトが作った手続き型言語。構造化プログラミングを推奨。C言語がないのに「Cライクでない」と批判された。
- Perl: ラリー・ウォールが作った、テキスト処理に強い言語。神のお告げで誕生したらしい。
- PETA: 動物の倫理的扱いを求める人々。Haskell開発委員会に参加したらしい(ジョーク)。
- PHP">PHP: ラスムス・レルドルフが作ったウェブ言語。プログラマブル ハイパーリンク パスタの略(記事内ジョーク)。スパゲッティを見て思いつき、ドキュメントはナプキン。
- プログラマブル ハイパーリンク パスタ (Programmable Hyperlinked Pasta): 記事内でPHPの正式名称とされているジョーク。
- Prolog: アラン・コルメラウアーが作った論理型言語。2歳児のような知性で「いいえ」しか言わないらしい(ジョーク)。
- Python: グイド・ファン・ロッサムが作った言語。謎の手術と傷跡とともに誕生し、「唯一の道」を宣言。ポーランドが緊張したらしい(ジョーク)。
- 再帰 (Recursion): 関数や手続きが自分自身を呼び出すこと。LISPなどで重要な手法。
- 冗長性 (Redundancy): 余分な繰り返しや回りくどい表現が多いこと。JavaやC#は比較的冗長らしい(評価による)。
- リースのピーナッツバターカップ (Reese's Peanut Butter Cup): チョコレートとピーナッツバターのお菓子。Scalaがこれをヒントに誕生したことになっている(ジョーク)。
- Ruby: 松本幸宏が作ったオブジェクト指向スクリプト言語。黙示録回避のために作られたらしい(ジョーク)。
- Ruby on Rails: Ruby上で動くウェブフレームワーク。DHHが発明者(合ってる)だが、Ruby言語の発明者だと勘違いされた(ネタ)。
- Scala: マーティン・オデルスキーが作った、オブジェクト指向と関数型を混ぜた言語。ピーナッツバターカップを見て思いつき、両陣営からジハードを招いた。
- Scheme: ラムダ計算を重視するLISPの方言。ガイ・スティールとジェラルド・サスマンが関わった「計画」。
- Skynet: 映画「ターミネーター」のAI。記事ではC++のコンパイルを手伝うらしい(ジョーク)。
- Smalltalk: アラン・ケイが作った、純粋なオブジェクト指向言語。「すべてはオブジェクト」という思想を徹底。
- スパゲッティコード (Spaghetti Code): 構造が複雑で、あちこちに処理が飛び交っているような読みにくいプログラムコード。GOTO文を多用したコードなどがこう呼ばれた。PHPの誕生もスパゲッティから(ジョーク)。
- 戦略括弧の枯渇 (Strategic parentheses depletion): LISPが普及しなかった理由とされる、記事独自のジョーク。
- Sun Microsystems: かつて存在したコンピュータ会社。Javaを開発し、「太陽が大声で告げる」宣伝をした。
- タブとスペース (Tabs and Spaces): プログラムコードのインデントにタブ文字を使うかスペース文字を使うかの論争。初期のコンピュータ開発者はこれを避けたらしい(ジョーク)。
- 末尾再帰 (Tail Call Recursion): 再帰呼び出しが関数の最後に行われる再帰。最適化される場合がある。ジャカード織機のプログラムには無かったと幻のレディッターが指摘。
- 2歳児のような知性 (Two-year-old intelligence): Prologの設計目標とされた、記事独自のジョーク。
- 型理論 (Type Theory): プログラミング言語の型システムに関する理論。MLの基礎だが、記事ではM&M型理論となっている。
- UML: Unified Modeling Languageの略。ソフトウェア設計などで使うモデリング言語。エイダ・ラブレスの技をこれで再学習したとされている(ジョーク)。
- Unix: デニス・リッチーが開発したオペレーティングシステム。C言語と共に誕生。
- Visual Basic (VB): Microsoftが開発した、GUIアプリケーション開発などに使われた言語。記事ではMLファミリーに含まれることになっている(間違い)。
用語索引(アルファベット順)
本記事中に登場した専門用語や独自のジョーク用語を、初学者にも分かりやすく解説します。本文中の該当箇所へのリンク付きです。
- Ada: 米国国防総省が作った、軍事用(らしい)のプログラミング言語。ギャング対策に有効という噂も。
- 解析機関 (Analytical Engine): 19世紀にエイダ・ラブレスがプログラムを書いたとされる、未完成の機械式コンピュータ。
- Arc: LISPファミリーのプログラミング言語。記事ではLispの別名として言及されている。ポール・グレアム氏が関わった。
- BASIC: Beginner's All-purpose Symbolic Instruction Code の略。初心者向けの非構造化言語。手軽だがスパゲッティコードになりやすい。
- ボルト止め (Bolt on): 既存のものに後から機能や部品を無理やり追加すること。記事ではC++がC言語に様々なものをボルト止めしたと表現されている。
- C言語: デニス・リッチーが開発した、強力だが危険な低レベル言語。後の多くの言語の基礎となった。
- C#: マイクロソフトが開発した、Javaとよく似たオブジェクト指向言語。
- チャーチ=チューリングの提唱: 計算の限界に関する理論的な提唱。記事ではチューリングとチャーチが同時に「全言語」を発明したというジョークの元ネタ。
- COBOL: Capitalization Of Boilerplate Oriented Language の略(記事内ジョーク)。ビジネス処理用言語。冗長で大文字を多用する(ことがある)。
- 並行処理 (Concurrency): 複数の処理を同時に(または同時に見えるように)実行する技術。ジャカード織機には無かったと幻のレディッターが指摘。
- C++: ビャーネ・ストラウストラップが作った、Cに様々なものをボルト止めした複雑な言語。Skynetでないとコンパイルできないらしい。
- 神のお告げ (Divine Revelation): 神から与えられる啓示。記事ではPerlがラリー・ウォールへの神のお告げで誕生したことになっている(ジョーク)。
- 失読症 (Dyslexic): 文字を読んだり理解したりするのが難しい障害。記事ではObjective-Cの開発者が、言語の実際と異なる特徴を謳ったことから疑われた(皮肉)。
- ECMAScript: JavaScriptの標準仕様名。記事では「皮膚疾患の人気を利用」して改名されたことになっている(ジョーク)。
- 自己関手圏のモノイド (Monoid in the category of endofunctors): モナドの定義の一つらしい。フィリップ・ワドラーがこれで説明しようとしたが、余計に混乱を招いた(ネタ)。
- エンタープライズアーキテクト (Enterprise Architect): 企業のITシステム全体を設計する偉い人(らしい)。エイダ・ラブレスの技をUMLで再学習したとされている(完全にジョーク)。
- すべてはオブジェクト (Everything is an object): Smalltalkやオブジェクト指向プログラミングの基本的な考え方。アラン・ケイが禅問答のように説明した。
- 形式意味論 (Formal Semantics): プログラミング言語の意味を数学的に厳密に定義すること。ロビン・ミルナーはこれで頭が爆発した(ネタ)。
- FORTRAN: 科学技術計算用言語。IBMとジョン・バッカスが作ったが、「面白くない」らしい。
- GOTO文: プログラムの実行を指定した行番号にジャンプさせる命令。非構造化プログラミングでスパゲッティコードを生みやすい。BASICなどで使われた。
- Haskell: 純粋な関数型プログラミング言語。委員会にはアシュトン・カッチャーや動物愛護団体もいたらしい。難解なモナドで有名。
- こんにちは、世界 (Hello, World!): プログラミング学習の最初によく書く簡単なプログラム。ジャカード織機が最初に織り込んだとされている(ジョーク)。
- IBM: 大手コンピューター会社。「面白くない」らしい(ジョーク)。
- ジャカード織機: パンチカードで模様を制御できる織機。ジョセフ・マリー・ジャカードが発明。最初の「プログラム」を使った機械とされる。
- Java: サン・マイクロシステムズが開発した、広く普及したオブジェクト指向言語。比較的冗長らしいが、太陽が大声で斬新さを告げた。
- JavaScript: ブレンダン・アイクが作った、ウェブブラウザで動く言語。「設計間違いを読み上げて増量」されたらしい。
- ジハード (Jihad): イスラム教における聖戦。記事ではScalaがオブジェクト指向と関数型を混ぜた結果、両陣営から宣戦布告されたこと(コミュニティ内の論争)を指す(比喩表現)。
- ラムダ (Lambda): ラムダ計算や、それを実装したLISP,Scheme,Haskellなどの言語、あるいはJavaやC#などで導入されたラムダ式を指す。記事では深夜の通販番組になったり、Javaの人気まで無名だったりと散々。
- ラムダ計算 (Lambda Calculus): アロンゾ・チャーチが提唱した、計算の理論的なモデル。C言語に似ていないと無視された(ジョーク)。
- ラムダ式 (Lambda Expression): 匿名関数を簡潔に記述するための構文。多くのプログラミング言語で使われる。
- LISP: ジョン・マッカーシーとポール・グレアムが作った、括弧を多用する関数型言語。戦後の戦略括弧枯渇で高価だったらしい。見下しで有名。
- 見下し (Condescension): 人を見下す態度。記事ではLISP開発者の「主要なアルゴリズム手法」とされている(ジョーク)。
- エイダ・ラブレス (Ada Lovelace): 世界初のプログラマーとされる人物。解析機関のためにプログラムを書いた。Ada言語の名前の由来。
- ML: ロビン・ミルナーが作った関数型言語。M&M型理論に基づく。形式意味論でミルナー氏の頭が爆発。ファミリーにVisual Basicも含まれるらしい(間違い)。
- M&M型理論 (M&M Type Theory): ML言語の基礎となったとされる、お菓子のM&Mにちなんだ理論(ジョーク)。実際は型理論のこと。
- モナド (Monad): 関数型プログラミングにおける抽象的な概念。Haskellで副作用などを扱うのに使うが難しい。フィリップ・ワドラーは自己関手圏のモノイドだと説明した。
- 謎の手術 (Mysterious operation): Python開発者グイド・ファン・ロッサムがアルゼンチンで受けたとされる手術(ジョーク)。その結果、傷跡とPythonを得た。
- Objective-C: ブラッド・コックスとトム・ラブが作った、CにSmalltalk風のオブジェクト指向を足した言語。「Cのメモリ安全性とSmalltalkの驚異的速度」を持つらしいが、開発者は失読症だったかも(皮肉)。
- 唯一の道 (There Is Only One Way to Do It - TIOBE): Pythonの設計哲学を示すスローガンの一つ。記事ではグイド・ファン・ロッサムが独裁者となって宣言したことになっている。
- Pascal: ニクラウス・ヴィルトが作った手続き型言語。構造化プログラミングを推奨。C言語がないのに「Cライクでない」と批判された。
- Perl: ラリー・ウォールが作った、テキスト処理に強い言語。神のお告げで誕生したらしい。
- PETA: 動物の倫理的扱いを求める人々。Haskell開発委員会に参加したらしい(ジョーク)。
- PHP">PHP: ラスムス・レルドルフが作ったウェブ言語。プログラマブル ハイパーリンク パスタの略(記事内ジョーク)。スパゲッティを見て思いつき、ドキュメントはナプキン。
- プログラマブル ハイパーリンク パスタ (Programmable Hyperlinked Pasta): 記事内でPHPの正式名称とされているジョーク。
- Prolog: アラン・コルメラウアーが作った論理型言語。2歳児のような知性で「いいえ」しか言わないらしい(ジョーク)。
- Python: グイド・ファン・ロッサムが作った言語。謎の手術と傷跡とともに誕生し、「唯一の道」を宣言。ポーランドが緊張したらしい(ジョーク)。
- 再帰 (Recursion): 関数や手続きが自分自身を呼び出すこと。LISPなどで重要な手法。
- 冗長性 (Redundancy): 余分な繰り返しや回りくどい表現が多いこと。JavaやC#は比較的冗長らしい(評価による)。
- リースのピーナッツバターカップ (Reese's Peanut Butter Cup): チョコレートとピーナッツバターのお菓子。Scalaがこれをヒントに誕生したことになっている(ジョーク)。
- Ruby: 松本幸宏が作ったオブジェクト指向スクリプト言語。黙示録回避のために作られたらしい(ジョーク)。
- Ruby on Rails: Ruby上で動くウェブフレームワーク。DHHが発明者(合ってる)だが、Ruby言語の発明者だと勘違いされた(ネタ)。
- Scala: マーティン・オデルスキーが作った、オブジェクト指向と関数型を混ぜた言語。ピーナッツバターカップを見て思いつき、両陣営からジハードを招いた。
- Scheme: ラムダ計算を重視するLISPの方言。ガイ・スティールとジェラルド・サスマンが関わった「計画」。
- Skynet: 映画「ターミネーター」のAI。記事ではC++のコンパイルを手伝うらしい(ジョーク)。
- Smalltalk: アラン・ケイが作った、純粋なオブジェクト指向言語。「すべてはオブジェクト」という思想を徹底。
- スパゲッティコード (Spaghetti Code): 構造が複雑で、あちこちに処理が飛び交っているような読みにくいプログラムコード。GOTO文を多用したコードなどがこう呼ばれた。PHPの誕生もスパゲッティから(ジョーク)。
- 戦略括弧の枯渇 (Strategic parentheses depletion): LISPが普及しなかった理由とされる、記事独自のジョーク。
- Sun Microsystems: かつて存在したコンピュータ会社。Javaを開発し、「太陽が大声で告げる」宣伝をした。
- タブとスペース (Tabs and Spaces): プログラムコードのインデントにタブ文字を使うかスペース文字を使うかの論争。初期のコンピュータ開発者はこれを避けたらしい(ジョーク)。
- 末尾再帰 (Tail Call Recursion): 再帰呼び出しが関数の最後に行われる再帰。最適化される場合がある。ジャカード織機のプログラムには無かったと幻のレディッターが指摘。
- 2歳児のような知性 (Two-year-old intelligence): Prologの設計目標とされた、記事独自のジョーク。
- 型理論 (Type Theory): プログラミング言語の型システムに関する理論。MLの基礎だが、記事ではM&M型理論となっている。
- UML: Unified Modeling Languageの略。ソフトウェア設計などで使うモデリング言語。エイダ・ラブレスの技をこれで再学習したとされている(ジョーク)。
- Unix: デニス・リッチーが開発したオペレーティングシステム。C言語と共に誕生。
- Visual Basic (VB): Microsoftが開発した、GUIアプリケーション開発などに使われた言語。記事ではMLファミリーに含まれることになっている(間違い)。
補足 1:このレポートを読んだら、きっとこう思うはず…!
この「ほとんど間違った歴史」レポートを読んだ、様々なタイプの読者の反応を予測してみました。あなたは誰に一番近いですか?😊
ずんだもんの感想なのだ
「きりたん、このプログラミング言語の歴史、なんだかおかしいのだ。ジャカード織機が『こんにちは、世界』を織り込むなんて、聞いたことないのだ。それに、チューリングさんとチャーチさんが同じ年に『全ての言語』を発明したのに、チャーチさんのラムダ計算がCっぽくないから無視されたなんて、理不尽すぎるのだ。Cなんてまだないのに、ひどい評価なのだ。」
「えーと、LISPは括弧が枯渇して普及しなかった?そんなわけないのだ!括弧なんてたくさんあるのだ!COBOLがお偉いさんの賭けで生まれたり、PHPがスパゲッティから生まれたり、JavaScriptが設計の間違いを増やして作られたり…もうめちゃくちゃなのだ。」
「特に面白かったのは、Pythonのグイドさんが謎の手術から帰ってきたら独裁者になって、『やり方は一つだけ』って宣言したってところなのだ。ポーランドが緊張する理由が全く分からないのだ。あと、Haskellの委員会にアシュトン・カッチャーさんがいたって、嘘だとしても面白すぎるのだ。」
「結局、この歴史はほとんど間違ってるらしいのだ。でも、プログラミング言語のこととか、開発者さんのことを面白おかしく書いてあって、読んでるとつい笑っちゃうのだ。これ、本当の歴史より面白いかもしれないのだ。これからは、コード書くときにこの記事のこと思い出して、ニヤニヤしちゃうかもしれないのだ。なんだか、プログラミング言語に親しみを感じたのだ。良かったのだ。」
ビジネス用語多用!ホリエモン風の感想
「あー、プログラミング言語の歴史?これさ、要は技術の『進化の過程』を面白おかしく語ってるだけじゃん。でも本質は捉えてるよね。結局、言語なんてのはツールなんだよ。その時々の課題を解決するために生まれてくる。」
「LISPが括弧ガーとか言ってるけど、あれって結局、新しいパラダイムに挑戦した結果、当時の技術とか市場にフィットしなかったってことでしょ。FORTRANが面白くない?いやいや、あれはビジネス要件を満たすために必要だったんだろ。効率化っていう目的があったから生まれた。IBMが面白くない?ビジネスで結果出すのが仕事だろ。」
「PHPがナプキン?別にいいじゃん。結果的にウェブを動かす基盤の一つになった。アイデアなんてどこから湧いてもいいんだよ。重要なのは実装して、ユーザーに使われるかどうか。Pythonが『唯一の道』?それはコミュニティを統一して、スケールさせるための戦略でしょ。ビジネスでは方針統一は重要。」
「C++が複雑?まあ、肥大化はよくある話。要は設計思想がブレたか、色々詰め込みすぎたか。JavaもC#も似てる?そりゃ競合が成功したら真似するだろ。ビジネスの基本じゃん。後出しの方が有利なこともある。」
「Scalaがジハード?イノベーションを起こそうとした結果、既存勢力から反発食らったってこと。新しいことやると、必ず摩擦は起きる。それを乗り越えるか潰されるか。」
「結局、この記事って、表面的なエピソードを面白おかしく書いてるけど、その裏には技術的な課題、ビジネス的な判断、そして開発者っていう人間のエゴとか情熱とか、そういうものが全部詰まってるってことだよ。歴史なんて、結局は人間ドラマ。面白いじゃん。こういうのを真に受けちゃダメだけど、ネタとして知っとくのはアリだね。勉強になる。」
論破王?西村ひろゆき風の感想
「なんかプログラミング言語の歴史?らしいんだけど、これ、ほとんど嘘っぱちじゃん。知ってたけど。」
「ジャカード織機で『こんにちは世界』とか、ありえないし。当時のネットの反応とか書いてるけど、ネット無いし。ウソつくにしても雑すぎない?」
「エイダ・ラブレスがコンピュータなくてプログラム書けなかったとか、まあ実際そうなんだけど、それをUMLで再学習とか、意味わかんないし。UMLでプログラム書くとか無理だし。」
「Perlが神のお告げとか、いや、宗教?キモいだけじゃん。PHPがスパゲッティとか、食べ物から言語生まれるわけないでしょ。バカなの?ナプキンがドキュメントとか、もうね。ちゃんとしたドキュメント書けないやつって、なんか信用できないよね。」
「JavaとC#がほとんど一緒?いや、全然違うし。まあ、似てるところもあるけど。それを一緒って言っちゃうの、雑だよね。思考停止してない?」
「Rubyが黙示録回避とか、どんだけ中二病なの。イタい。あと、コミュニティの人が俺が作ったって言ってるけど、元の記事には違うこと書いてあるじゃん。どっちが本当なの?どっちでもいいけど。」
「結局、この手のネタ記事って、あるあるネタとか、ちょっとした技術的な特徴をいじってるだけでしょ。本質的なこと何も言ってないし。これ読んで賢くなった気になってるやついたら、ヤバいと思うよ。アホだなーって思うだけ。」
補足 2:もう一度、あの歴史を年表で振り返る
本文中の年表を、補足資料の年表と統合し、コメント欄のネタも少し追記した拡張版です。繰り返しになりますが、正確性よりも面白さ重視の「完全不正確版」です。
補足 3:この歴史を遊戯王カードにしたら?
この記事のネタを元に、もしオリジナルの遊戯王カードを作るとしたら…? という遊び心から生まれたカード案です。デュエルで使っても勝てるかどうかは分かりません!バトルシティへの道は遠い…!
-
カード名:ラージ・クレーニアル・スカー(大規模頭蓋傷跡)
カード種類: 魔法カード
効果: 手札からレベル7以下の「プログラミング言語」モンスター1体を特殊召喚する。この効果で特殊召喚されたモンスターは、このターン攻撃できない。「Python」モンスターを特殊召喚した場合、相手フィールドのモンスター1体を破壊し、自分フィールドのモンスターは「このターン攻撃表示から変更できない」永続効果を得る。
フレーバーテキスト: 謎の手術の代償は、世界を変える言語の発明と、時折発生する強制インデントの悪夢だった。 -
カード名:ナプキン・オブ・ドキュメンテーション(文書化のナプキン)
カード種類: 永続魔法カード
効果: フィールド上の「PHP」モンスターの攻撃力・守備力は500アップする。また、1ターンに1度、自分の手札をランダムに1枚選び墓地へ送る事で、自分の墓地の「PHP」モンスター1体を手札に戻す。このカードがフィールド上に存在する限り、フィールド上の全てのモンスターは「警告やエラーメッセージが表示されない」効果を得る。
フレーバーテキスト: これが公式ドキュメントだ。質問があるなら、自分でスパゲッティを食べて考えろ。 -
カード名:スキゾイド・オブ・シープ(羊飼いの分離症)
カード種類: 永続罠カード
効果: 相手が「関数型プログラミング」または「オブジェクト指向」を含む効果を持つ魔法・罠カードを発動した時、このカードを発動できる。発動したカードの効果を無効にし破壊する。その後、自分フィールド上の全てのモンスターは「ジハード」カウンターを1つ得る。「ジハード」カウンターを持つモンスターは、他のモンスターとの戦闘で破壊されない。
フレーバーテキスト: ピーナッツバターカップを混ぜた代償は、終わりのない論争と分断だった。 -
カード名:エンタープライズ・アーキテクト(企業建築家)
カード種類: 効果モンスター
レベル: 4
属性: 光
種族: 魔法使い族
攻撃力: 1000
守備力: 2000
効果: このカードは攻撃できない。このカードがフィールド上に表側表示で存在する限り、お互いのプレイヤーは「UML」と名のついた魔法・罠カードの効果を発動できる(ただし、「UML」カードは存在しないものとする)。1ターンに1度、手札のカード1枚を墓地へ送り、デッキから「レガシーコード」と名のついたモンスター1体を手札に加える事ができる。
フレーバーテキスト: 過去の遺産を再学習し、存在しない設計図を語る者。彼の話は長い。 -
カード名:コンドセンション・ウィザード・オブ・LISP(LISPの見下し魔術師)
カード種類: 効果モンスター
レベル: 6
属性: 闇
種族: 魔法使い族
攻撃力: 2200
守備力: 1800
効果: このカードが召喚・特殊召喚に成功した時、相手フィールド上のレベル5以下のモンスター1体を対象として発動できる。そのモンスターの攻撃力はターン終了時まで半分になる。このカードがフィールド上に存在する限り、自分の墓地の「括弧」カード(※存在しないものとする)1枚につき、このカードの攻撃力は100ポイントアップする。
フレーバーテキスト: 「君たちにはまだこのパラダイムは理解できないだろうね」と呟きながら、圧倒的な再帰で場を制圧する。
補足 4:関西弁で一人ノリツッコミ
この「ほとんど間違った歴史」、関西人ならどうツッコむやろか? ちょっと想像してみたで!
「なんやて、プログラミング言語の歴史? ええやん、勉強なるわ…て、『ほとんど間違った』やて!? 最初からアカンやつやんけ!なんでやねん!🤪」
「ジャカード織機で『こんにちは、世界』て、お前、いつの時代やねん!しかも当時のネット民(レディッター)が文句言うとるて、タイムスリップしとるんか!細かすぎやろ!😂」
「エイダさんがコンピュータないのにプログラム書いた? それは凄いわ!…って、エンタープライズアーキテクトがUMLで再学習? いつの話や!UMLでプログラム書けるかいな!アーキテクトは絵描いとけ!ってそれは言い過ぎか…いや、ちゃうわ、ツッコミやで!」
「チューリングとチャーチが同じ年に『全部の言語』発明したて!? どんだけ頭ええねん!でもチャーチさんのは『Cっぽくない』て無視? Cまだ影も形もないやんけ!未来からクレーム来とるんか!理不尽すぎるやろ!」
「COBOLがL.ロン・ハバードとの賭けで生まれたて?なんでや!そんでホッパー提督がサディストやて?失礼やろ!あとRubyカンファレンスで性差別ネタ?これは笑えんわ…って、記事がネタにしとるんか。もう何が何やら!」
「PascalがCないのに『Cライクちゃう』て言われたて? またか!お前、歴史は繰り返すってレベルちゃうぞ!デジャヴュや!ヴィルト先生、泣いてええで!」
「デニス・リッチーが銃に飽き足らずCとUnix作ったて? どんな人やねん!バイオレンスすぎるやろ!Cはもうちょっと静かに生まれたて信じたいわ…」
「Prologが2歳児の知性で『いいえ』ばっかり? うちの子の方が賢いんちゃうか? いや、知性てなんやねん!論理言語に失礼やろ!」
「MLのミルナーさん、頭爆発したて!? M&M型理論、危なすぎやん! Visual BasicがMLファミリー? いや絶対ちゃうやろ! それ一番アカンやつや!」
「Smalltalkのアラン・ケイさん、オブジェクト問答? 『全部オブジェクトや!』て、禅問答か! カメにたどり着くまでて、どこまで行くんやねん!🐢」
「Perlが神のお告げて… ラリー・ウォールさん、キーボードに額打ち付けて天啓?どんなんやねん! 神様も大変やな!」
「Haskellの委員会にアシュトン・カッチャーと動物愛護団体? なんでやねん! 意味わからん! モナドの説明が『自己関手圏のモノイド』? いや、問題しかないやろ! なんでそんな説明したんやワドラーさん!」
「Pythonのグイドさん、謎の手術で独裁者に…? ポーランドが緊張て、関係あらへんやろ! なんやその因果関係!」
「PHPがスパゲッティ見てナプキンに設計… ドキュメントもナプキンて… いや、ちゃんと公式ドキュメントあるやろ!…多分な! いや、やっぱナプキンの方がリアルかも知れん…!」
「Rubyが黙示録回避用て!まつもとさん、そんな使命背負うとったんか!DHHさんのコメントがメタすぎて、ついていけんわ!」
「JavaScriptが設計ミスを読み上げて増量て… 正直すぎやろ! ECMAが皮膚疾患の人気利用て!なんて例えやねん!ひどすぎるわ!」
「JavaとC#がほとんど一緒で、太陽とマイクロソフトが競い合ったて… お前ら仲良くせぇよ! 大声で叫ぶな!」
「Scalaがピーナッツバターカップ見て、両方のジハード招いたて! いいとこ取りしたら両方から怒られたて! プログラミング界は戦場やな!⚔️」
「いやー、もう滅茶苦茶やん!でも面白い!読んでて飽きへんわ!どこまでが嘘か分からんくなるけど、プログラマーなら『あるある』ってニヤニヤできるネタばっかりや!これ書いた人、絶対プログラマーやと思うわ。ほんま、最高やで!あーしんど、ツッコミ疲れたわ!🤣」
補足 5:大喜利大会!「ほとんど間違った歴史」新作エピソード
もしこの「ほとんど間違った歴史」の続きを書くとしたら? コメント欄にあった新しい言語のネタなども参考に、新しいエピソードを考えてみましょう!
お題:次のプログラミング言語の「ほとんど間違った」誕生エピソードを考えてください。
-
Rust
回答:グレイドン・ホアは、C++のコードレビュー中にあまりのポインタエラーに頭を抱え、「もう誰のコードも信用できない!」と叫びながら、他人のバグをコンパイルエラーにする言語を発明しました。彼は常に茶色いTシャツを着ていたことから、「茶色いコードへの抵抗」という意味でRust(錆)と名付けられたという説が有力です。後日、この言語のあまりの厳しさに耐えかねた一部の信奉者が、「Crap」というフォーク言語を生み出しました。💩 -
Go
回答:Googleのエンジニアたちは、C++のビルド時間中にコーヒーを飲みすぎてカフェイン中毒になり、もっとコンパイルが速い言語を求めて開発しました。マスコットがGopherなのは、コードを書いてもすぐにどこかへ行ってしまう(ビルドが速い)という願いが込められているからですが、実際はコードが急にいなくなるバグとは関係ありません。また、アイビーリーグ出身者でも簡単に使えるように設計されたという噂があります。🎓️ -
TypeScript
回答:JavaScriptの「実行してみないと何が起こるか分からない」というスリルに飽きたマイクロソフトのエンジニアが、「退屈で予測可能な」言語を開発しようとして生まれたそうです。彼らは「JavaScriptをより退屈に!」を合言葉に開発を進めた結果、誤って「型安全」という、予測可能すぎる機能を発明してしまいました。元Microsoft CEOのスティーブ・バルマーが椅子投げに負けた罰として開発させられたという噂もあります。🪑 -
Kotlin
回答:JetBrainsの地下研究所で、Javaの冗長性に苦しむエンジニアたちが「もっと短く、もっと安全に!」と呪文を唱え続けた結果、魔法陣から召喚された言語です。Javaと共存できるのは、召喚契約に「既存の世界を破壊しないこと」という条項があったためです。🧙♀️ -
Swift
回答:Appleは、Objective-Cの角括弧を見つめているうちに目が回る開発者が続出したため、「もっと丸っこい」構文の言語を開発しました。スティーブ・ジョブズは「この言語は鳥のように速く飛ぶ!」と発表しましたが、実際はコンパイル時間のことだったという説があります。🐦💨 -
AIによるコード生成(番外編)
回答:ある日、OpenAIという研究慈善団体が、Web上のあらゆるコードをディープラーニングさせた結果、要求に応じてコードを生成できる「神託マシン」を誤って作ってしまいました。Googleはすぐに大量のコーダーを解雇しましたが、生成されたコードのデバッグとレビューのために新たなデバッグ専門のAIが必要となり、事態はさらに複雑化しています。🤖➡️🐛
補足 6:炎上覚悟!?予測されるネットの反応と反論
このようなユーモア記事は、ネット上で様々な反応を引き起こす可能性があります。いくつかのコミュニティでの反応を予測し、それに対して軽く反論してみましょう。
なんJ民風コメントとその反論
コメント: 「ジャッッッップwwwwwルビーwwwwwガイジが作った猿山の言語wwwww黙示録回避ってなんやねん草生えるわwwwwwナプキンPHPとかやっぱ底辺やんけwwwww」 反論: おいおい、いきなりヘイト全開かよ。記事のネタに乗っかるのはいいけど、さすがに言いすぎだろ。あとRuby作ったの日本人な。そこは誇れよ。てかお前、何語でコード書いてんだ?ナプキン言語もウェブを支えてんだぞ。アホはお前や。
ケンモメン風コメントとその反論
コメント: 「この記事書いてるやつ絶対情弱だろ。裏で糸引いてるマイクロソフトとかGAFAの工作に気づいてない。プログラミング言語なんて資本家が労働者を効率的に搾取するためのツールに過ぎない。こんなお気楽なネタ記事書いてる時点で思考停止。」 反論: まあ、記事はジョークだけど、確かに巨大企業が技術トレンドを牛耳ってる側面はあるかもな。でも、この記事はそういう構造をユーモアで風刺してるとも読めるだろ。完全に無視するより、笑い飛ばす方が健全じゃね?思考停止かどうかは、この記事のネタ元をどこまで深掘りできるかにかかってる。お前がその裏側を暴く記事書けば?
ツイフェミ風コメントとその反論
コメント: 「COBOLの発明者、グレース・ホッパー提督への性差別ネタ最悪。Rubyカンファレンスの話も気持ち悪い。技術史のユーモアと称して、女性プログラマーへの侮辱を平然と書くなんて、日本の技術界の腐敗を象徴してる。」 反論: 記事の原文は英語だけど、確かにCOBOLとRubyのくだりは(特にRubyの方は)女性開発者を揶揄しているように見えるね。原文のニュアンスや意図をもう少し詳しく見る必要はあるけど、特定のジェンダーを不適切に扱うのはユーモアとして成立しない場合がある、という点は同意だね。この記事全体が皮肉や誇張でできてるから、額面通り受け取るのは違うかもしれないけど、不快に感じる人がいるのは事実だろうね。日本の技術界の腐敗云々は飛躍しすぎかもしれないけど、問題意識を持つことは重要だと思うよ。
爆サイ民風コメントとその反論
コメント: 「●●言語とか▲▲言語使ってる奴ら、結局アホばっかだろ。簡単に稼げるって聞いて飛びついた情弱。俺は●●で何千万稼いだとか、▲▲がオワコンになった理由とか、もっと裏の事情書けよ。」 反論: え、この記事はプログラミング言語の歴史ネタであって、お前の稼ぎ話とか特定の言語への恨み節を聞く場じゃないんだけど…。場所を間違えてるぞ。そもそも簡単に稼げるプログラミング言語なんてないし、裏の事情って何だよ。ちゃんと技術磨けよ。
RedditやHackerNews風コメントとその反論
コメント: 「Classic evergreen. The Ashton Kutcher part in Haskell always gets me. Needs an update for Rust and Go though! Also, the Scala "jihad" bit perfectly captures the community back then. Anyone remember Arc? pg really moved on quickly. Still, great piece, shows how absurd some language origins sound when you put them like this. What's your favorite line? Mine is the Objective-C one. LMAO." 反論: Agreed, it's a timeless classic. While adding Rust/Go/TypeScript would be cool, part of its charm is being a snapshot from maybe ~2009-2012 era. The community comments are the update. The Objective-C line is pure gold. The Arc mention definitely dates it, but also reminds us of pg's unique takes. And yeah, Scala's multi-paradigm nature causing holy wars was a real thing, albeit exaggerated here. It's fun to see how these jokes evolve. (日本語訳: 同意、まさに時代を超えた名作ですね。Rust/Go/TypeScriptなどを加えるのも面白いですが、ある意味、2009年〜2012年頃のスナップショットであることも魅力の一つかと。コミュニティのコメントこそが『アップデート』ですね。Objective-Cのくだりは最高に面白い。Arcへの言及は確かに古さを感じさせますが、pg(ポール・グレアム)のユニークな視点を思い出させます。あと、Scalaのマルチパラダイム性が聖戦を引き起こしたというのは、誇張されてはいますが、実際そうした側面はありました。こうしたジョークがどう進化していくかを見るのも楽しいですね。)
目黒孝二風書評とその反論
コメント: 「本書は、プログラミング言語という知的営為の歴史を、通俗的なユーモアとペーソスを交えて語る試みである。ジャカード織機に始まり、PHPのナプキンに至るまで、その筆致は常に諧謔に満ちている。殊に、開発者個人の奇行やコミュニティの内紛といった、『公式の歴史』には決して登場しないであろう些末(あるいは本質的)なエピソードに焦点を当てることで、技術史の裏側に潜む人間ドラマを浮き彫りにしている点は評価に値しよう。ただし、その不完全さ、そしてほとんど間違った記述ゆえに、読者は本書をあくまで『風刺文学』として読むべきであり、決して史実として受け止めてはならない。この『間違っていること』そのものが本書の最も重要なメッセージであると捉えられなくもないが、それにしても情報の偏りや悪意ある誇張が見られる箇所も散見される。良書か否かと問われれば、読者のユーモアセンスと技術史への理解度によって評価は大きく分かれるであろう。ある者にとっては陳腐なジョーク、ある者にとっては示唆に富む寓話となる。私は後者でありたいと願うが、果たして…。」 反論: さすが目黒孝二さん、深読みしますね。技術史の裏側とか人間ドラマとか、そういう解釈もできるか。ただ、『悪意ある誇張』とまで言うのは、少し真面目に受け止めすぎかもしれません。これは多分に『愛のあるいじり』の範疇かと思いますが…。まあ、受け止め方は人それぞれ、という結論には同意です。このレポートを「風刺文学」として読む、というのは面白い視点ですね。
補足 7:高校生向けクイズ & 大学生向けレポート課題
この記事の内容は、コンピュータ科学やプログラミングに関心を持つ高校生や大学生にとって、硬い歴史の導入として面白いかもしれません。事実とジョークを切り分ける練習にもなりますね!
高校生向け 4択クイズ
この記事を読んで、以下のクイズに挑戦してみましょう! (答えは最後にあります)
-
「プログラミング言語の簡潔で不完全、そしてほとんど間違った歴史」によると、世界初のプログラムを書いたとされるエイダ・ラブレスは、何に悩まされていましたか?
A. プログラムを実行するためのコンピュータがなかった
B. プログラムが長すぎてパンチカードに収まらなかった
C. バグが多すぎて全く動かなかった
D. 自分の書いたコードの意味が理解できなかった -
この記事の中で、「戦後の戦略括弧の枯渇」によりコストが高くなったため、あまり普及しなかったとジョークで書かれているプログラミング言語は何でしょう?
A. FORTRAN
B. COBOL
C. LISP
D. BASIC -
この記事によると、ニクラウス・ヴィルトがPascalを作った際、Cがまだ発明されていないのに「Cライクじゃない」と批判されました。同様の批判を別の言語で受けたのは誰でしょう?
A. ジョン・バッカス(FORTRAN)
B. アロンゾ・チャーチ(ラムダ計算)
C. アラン・ケイ(Smalltalk)
D. ジェームズ・ゴズリング(Java) -
PHPが生まれたきっかけについて、この記事はどのようなジョークを述べていますか?
A. ラリー・ウォールの夢のお告げ
B. スパゲッティの皿を見て思いついた
C. L. ロン・ハバードとの賭けに負けた
D. 巨大な頭蓋の傷跡を持つ人物が発明した -
この記事の中で、モナドの説明として「自己関手圏のモノイドだ、何が問題なんだ?」と言って批判者を鎮めようとしたと書かれている言語は何でしょう?
A. Python
B. Scala
C. Haskell
D. JavaScript
クイズの答えはこちら!
解答: 問題1: A, 問題2: C, 問題3: B, 問題4: B, 問題5: C
大学生向け レポート課題
このレポートの内容を踏まえ、以下のテーマでレポートを書いてみましょう。
-
「ほとんど間違った歴史」と「本当の歴史」の比較分析:
本レポートで取り上げられているプログラミング言語の中から1つまたは2つを選び、本レポートの記述(ジョーク)と、その言語の実際の開発史、設計思想、コミュニティの歴史などを、信頼できる資料(書籍、論文、公式情報など)に基づいて比較分析しなさい。なぜ本レポートではそのように「間違って」描かれているのか、そのユーモアの背景にあるもの(技術的な特徴、開発者の個性、コミュニティの文化、歴史的な出来事など)を考察しなさい。 -
技術文化におけるユーモアの役割:
プログラミング言語の歴史に関する本レポートのようなユーモア記事が、技術コミュニティにおいてどのような役割を果たしているかを論じなさい。例えば、知識の共有、コミュニティの結束、技術に対する批判や愛憎の表現、新規参入者への興味喚起といった視点を含めて考察しなさい。インターネット上の他の技術系ミームやパロディと比較しても良い。 -
新しいプログラミング言語の「ほとんど間違った誕生秘話」創作:
本レポートのスタイルを参考に、2010年以降に登場した主要なプログラミング言語(例: Rust, Go, TypeScript, Kotlin, Swiftなど)の「簡潔で不完全、そしてほとんど間違った誕生秘話」を創作しなさい。その際、その言語の実際の特徴やコミュニティの雰囲気、開発者のエピソードなどを踏まえつつ、ユーモアのポイントを明確に説明しなさい。なぜそのように描くことが面白いのか、その言語のどのような側面を風刺・誇張しているのかを併せて解説しなさい。
レポートを作成する際は、必ず複数の資料を参照し、どこまでが本レポートのフィクションで、どこからが(あなたが調べた)実際の情報なのかを区別して記述するように心がけてください。頑張ってください!💪
補足 8:潜在的読者のためのヒント集
この記事をより多くの人に読んでもらうために、あるいはブックマークや共有に役立つ情報をまとめました。
この記事につけるべきキャッチーなタイトル案(再掲+α)
- プログラミング言語たちのふざけた誕生物語(フィクション)
- 【エンジニア爆笑】ありえないプログラミング言語の歴史
- 公式には語られない? プログラミング言語の「ヤバい」真実(大嘘)
- スパゲッティ、賭け事、神のお告げ…言語はこうして生まれた!(たぶん違う)
- ツッコミどころ満載! 世界のプログラミング言語偏向史
- 開発者歴〇年でも知らない!?「ほとんど間違った」言語史
SNSなどで共有するときに付加するべきハッシュタグ案
- #プログラミング言語
- #プログラミング言語史
- #技術史
- #ITエンジニア
- #開発者あるある
- #ジョーク記事
- #技術ネタ
- #HackerNews
- #LISP
- #PHP
- #Ruby
- #Java
- #C言語
- #Haskell
- #面白い
- #知ってた
- #知らんけど
SNS共有用に120字以内に収まるようなタイトルとハッシュタグの文章
プログラミング言語の歴史が爆笑ジョークに😂 スパゲッティからPHP誕生、神のお告げPerl、ギャング対策Ada…開発者なら絶対ニヤニヤ!読むと元気出る技術史ネタ記事。 #プログラミング言語 #技術史 #ITエンジニア #開発者あるある #ジョーク記事
ブックマーク用にタグを[]で区切って一行で出力(7個以内, 80字以内)
[プログラミング言語][歴史][ジョーク][ITエンジニア][開発者あるある][HackerNews][ネタ]
この記事に対してピッタリの絵文字
😂🤣🤪🤡🤓👨💻💻✨🍝🐙🐒🔥📚💡🤔🤯🤨🤷♂️🐢💥🔫🔩🧬🧬☕🍫🥜🎲🙏✝️👑🧙♀️🪑✈️🏖️🏜️🛡️🦖🐧🐘🕷️🐿️🦀🧪💉💊🤖💩🎓️🏫✏️💯❓❗✅❌⭕️▶️⏮️⏭️▶️⏯️◀️➡️⏪⏩
この記事にふさわしいカスタムパーマリンク案
- programming-language-wrong-history-joke
- tech-history-absurd-take
- developers-inside-joke-languages
- laughable-language-origins
- not-so-serious-programming-history
- pj-wrong-history
この記事の内容が単行本ならば日本十進分類表(NDC)区分のどれに値するか
007.2 [コンピュータの歴史]
奥付
発行日: 2024年6月21日
著者: Doping_Consomme
発行元: [Doping_Consomme_Magazine] https://dopingconsomme.blogspot.com/
本レポートの内容は、公開されている情報に基づき、プログラミング言語の歴史と文化をユーモラスに描写したものです。歴史的な正確性を保証するものではありません。記事の解釈やユーモアの理解には個人差があることをご了承ください。
時代 | 言語 | 年 | 開発者/背景 | 特徴/影響 |
---|---|---|---|---|
1840年代 | 解析機関のアルゴリズム | 1842-1849 | アダ・ラブレス | チャールズ・バベッジの解析機関向けに記述された初のアルゴリズム。プログラミングの理論的基礎。 |
1940年代 | Plankalkül | 1942-1945 | コンラート・ツーゼ | 初の高級言語とされるが、当時は実装されず。工学目的で設計。 |
1940年代 | Short Code | 1949 | ジョン・モークリー | 初期の高級言語。解釈型で、機械語より扱いやすい。 |
1950年代 | Autocode | 1952 | アリック・グレニー | マンチェスター大学で開発された初期の高級言語。オブジェクトコード最適化の進歩。 |
1950年代 | FORTRAN | 1954 | IBM(ジョン・バッカス) | 科学計算向け。初の広く使われた高級言語。現在も高性能計算で使用。 |
1950年代 | FLOW-MATIC | 1955 | グレイス・ホッパー | ビジネスデータ処理向け。COBOLの基礎を築く。 |
1950年代 | LISP | 1958 | ジョン・マッカーシー | AI研究向け。関数型プログラミングの先駆け。ガーベジコレクション導入。 |
1950年代 | COBOL | 1959 | Short Range Committee | ビジネス用途向け。読みやすさとデータ処理に特化。 |
1960年代 | ALGOL 60 | 1960 | 国際委員会 | 構造化プログラミングの基礎。BNFやレキシカルスコーピング導入。 |
1960年代 | BASIC | 1964 | ジョン・ケメニー、トーマス・カーツ | 初心者向け。教育用途で広く普及。 |
1960年代 | APL | 1966 | ケネス・アイバーソン | 配列操作に特化。独特の記号を使用。 |
1960年代 | C | 1969 | デニス・リッチー | UNIX開発向け。低レベル操作と高級言語の柔軟性を両立。現代言語の基盤。 |
1970年代 | Pascal | 1970 | ニクラウス・ヴィルト | 教育用。構造化プログラミングを強調。 |
1970年代 | Smalltalk | 1972 | アラン・ケイ他 | オブジェクト指向プログラミングの基礎。JavaやPythonに影響。 |
1970年代 | SQL | 1978 | IBM | リレーショナルデータベース操作用。データベースの標準に。 |
1980年代 | C++ | 1983 | Bjarne Stroustrup | Cにオブジェクト指向を追加。システム開発やゲームで広く採用。 |
1980年代 | Objective-C | 1985 | ブラッド・コックス | Smalltalkの影響を受けたオブジェクト指向。macOS/iOS開発で重要。 |
1980年代 | Perl | 1987 | ラリー・ウォール | テキスト処理に特化。ウェブ開発で人気。 |
1990年代 | Python | 1991 | Guido van Rossum | シンプルな文法。AI、データサイエンス、ウェブ開発で主流。 |
1990年代 | Ruby | 1993 | まつもとゆきひろ | オブジェクト指向スクリプト言語。Ruby on Railsでウェブ開発に革命。 |
1990年代 | Java | 1995 | サンマイクロシステムズ | プラットフォーム非依存。企業向けやAndroid開発で普及。 |
1990年代 | JavaScript | 1995 | ブレンダン・アイク | ウェブブラウザ向け。動的ウェブページの標準。 |
1990年代 | PHP | 1995 | ラスムス・ラードフ | サーバーサイドウェブ開発向け。広く使用。 |
2000年代 | C# | 2000 | マイクロソフト | Javaに似たオブジェクト指向。.NETフレームワークと統合。 |
2000年代 | Go | 2009 | シンプルさと並行処理に特化。クラウドやサーバー開発で人気。 | |
2010年代 | Kotlin | 2011 | JetBrains | Javaの代替。Android開発の公式言語。 |
2010年代 | Swift | 2014 | Apple | iOS/macOSアプリ開発向け。安全性重視。 |
2010年代 | Rust | 2014 | Mozilla | 安全性とパフォーマンスを両立。システムプログラミングで注目。 |
2010年代 | TypeScript | 2014 | マイクロソフト | JavaScriptに型付けを追加。大型ウェブアプリで普及。 |
2020年代 | Mojo | 2023 | Modular | AIと機械学習に特化。Pythonの高速化を目指す。 |
コメント
コメントを投稿