2020年4月、日本の小学校ではプログラミングが必修となります。そのプログラミングが生まれたのは、今から200年近い前の1842年。発明したのは英国の26歳の女性、エイダ・ラブレス伯爵夫人です。彼女がプログラミングを着想したのは、布模様も少なからず影響しています。そんなウソのような本当の話をご紹介します。エイプリル・フールじゃなくてエイダ・ラブレスですよ。

ということで、プログラミングのお話なんですが。プログラミングといえばその「器」であるコンピュータを語らないわけには行きません。で、コンピュータってのはいつ頃できたんや? というと、まあ、第二次世界大戦が分水嶺なんでございますな。

モチベーションとしては戦争で、暗号の解読や、弾道計算、兵器の開発などのために多大な計算が必要となり、そのために軍隊が予算を出したんですな。まあ、例外もあって現在、世界最初のデジタルコンピュータと言われているのは1941年に作動したABC(アタナソフ・ベリー・コンピュータ)ですが、これは大学の研究室のプロジェクトでした。

一方で、そのABCをみたモークリーは米軍スポンサーで1946年にENIACを開発します。一方、英国のフラワーズらがColossusという暗号解読用のコンピュータを1943年に作っています。また電子式ではないのですが、やはり米軍が計算に使用したハーバード・マークI(IBM ASCC)は1944年に出荷されています。

そして、ENIACでは6人の女性プログラマが活躍し、ハーバード・マークIでは、後にコンパイラ(プログラム言語をコンピュータに理解できる機械語に変換するプログラム)を発明する女性プログラマのグレース・ホッパー氏が膨大な世界初のプログラミングマニュアルを作成しています。

じゃあ、プログラミングは、第二次世界大戦を起源として1940年代に誕生したものかーーといえば、いや、それは違うのです。

プログラミングは、編み物機械を触媒として、200年前に詩人バイロンの娘として生まれた才女、エイダ・ラブレス伯爵夫人が26歳の時に書いた科学論文(の注釈)に書かれたことで生み出されたのです。

さて、ここで疑問が出てきます、コンピュータがないのに、どうやってプログラミングを考えられたのか? コンピュータ登場の100年も前に、ということでございますな。

いや、実はコンピュータのアイデアは100年も前に、イギリスの天才チャールズ・バベッジにより提唱され、しかも設計もされていたのです。スポンサーが集まらずに完成しなかったのですが、「解析機関(analytical engine)」というコンピュータです。これは、歯車を蒸気機関で回すことにより計算をさせるという代物で、部分的に作られたりしました。

まさしく、スチーム・パンク!! ですな。

この解析機関についてイタリアのメナブレアが書いた論文(ハードウェアの開発構想)の翻訳をしたのがエイダ・ラブレス伯爵夫人なのですが、彼女は本文より多い注釈としてプログラミング、すなわちソフトウェアについて書き加え、自分の名前を署名したのでございます。しかも、ベルヌーイ数を求める手順、すなわちプログラムを書いていました。これが世界初のコンピュータプログラムだと言われています。

ただ、まだ布模様が出てきませんねー。

布模様に関係するのは、穴が開いたカードです。エイダは彼女が書いた文章の中に、穴が開いたカードを読み込ませることで、解析機関のプログラムをするというアイデアを書き(これはバベッジのアイデアでもあった)。さらにカードを繰り返し使うことでループや、あるいはサブルーチンのような考えも書いていたんですな。これが布模様と関係しているのです。

布模様よりもうちょっと荒い「編み物」には、パターン編みなんてのがあります。アラン編みなんてやっていると、もうこんなんコンピュータにやらせたらええやん、ループとサブルーチンや! と言いたくなるわけでございます。

で、それを布模様で行ったのが、正確には自動で模様を編み込める、1801年に発明されたパンチカードで動くジャガード織り機です。バベッジとエイダは解析機関にこのジャガード織り機のアイデアを取り込んだのですな。

まあ、実際に動くことはなかったのですが、解析機関。

後に、IBMの前身を作ったホレリスは1890年に実際にパンチカードで統計集計をするビジネス機械を作っています。インターナショナル・ビジネス・マシーン、はコンピュータの登場以前からある会社ですが、こんなところで先駆的な企業だったんですな。

よく知られていることですが、1970年代に米軍が専用のコンピュータ言語を開発します。生産性が高く、間違いにくいプログラミング言語の名前は、Ada。もちろんエイダ・ラブレス伯爵夫人に因んだものでございます。F22戦闘機のコントロールプログラムにも使われたAdaですが、最近はC++とかに変わっているのだそうでございます。

なお、いままでエイダ・ラブレスについては、結構つまみ食いで知ってきたのですが、最近ウォルター・アイザックソンの「イノベーターズ」講談社、という本が出まして、これがエイダの激しいところも含めて結構よく書かれているのでオススメでございます。