グレース・ホッパーの功績と初期のコンピューティング
グレースホッパーですかね。 そうですね。最初のソフトエンジニア、グレースホッパーについてちょっと喋っていきますか。
グレースホッパー、何した人っていうと一番伝わりやすいんですかね。 これ、さっきの関連人物辞典を見れば一発じゃねって思ったけど、これ
何順?ああ、アルファベット順か。
54人じゃねえんだなあと思って。
ムムムってなってたけど、アルファベット順なら得意だからいけるはず。 ただスペルわかんないですからね。
ホッパー、ヴィンセント、フォスターが先に見つかったけど、グレースホッパーの夫らしいですね。
関連人物だから当人が載ってないのか、もしかして。 いや、でもドナルド・クルースとか載ってるから。
クムースは取り上げられてなかったから、まあでも出てきましたか。 ああ、そっか出てきてないか。
クムースは小レベルでは出てきてはないですね。 そう、なんか出てきそう出てきてない人多いですよね。リスコフとか出てくるかなと思ったけど。
ちょろっとね、名前はリスコフの名前があってか、リスコフの痴漢原則というところで名前が出ているって感じですね。
うん、これはまあ母子取り上げざるを得ない。 そうそうそう。
ケント・ベックもいるけどな、まあグレースホッパー。 うん、コボルのあれですかね、言語使用の策定みたいなとこにアドバイザーで勤めたり、みたいなとこが出てきたりとか。
コボルの母と呼ばれてますね。 うん、なのでその辺が多分一番、皆さんにまだ馴染みのあるというか、いうところが近いって感じですかね。
うん、あとバグっていうのを広めた人とも言われてるかな、バグという呼び方。
虫が入っていたことに由来するとかしないとかって言われる感じですね。 そう、諸説ありそうなやつ。
まあそんなグレースホッパーさんですよと。どうでした、議員さん的に第4章、グレースホッパー最初のソフトウェアエンジニアは読んでて。
読んでてやっぱあれですね、パンチカードの話とか出てきて、もうそういう時代なのねみたいなことを思いながら、どうやって頑張って計算機に本当に計算させるのかをすごい戦ってるなみたいなのが
感じられて、もはや今の自分からはこう、多すぎてわからんけど、わからんけどなんかすごいぞこの人って、なんかいろんなどうやったらそのうまいことを
計算させることができるのか、めちゃくちゃ考えてた人なんだっていうのがなんか一番思ったところですかね。
なんか全然当たり前なんですけど、今の感覚と全く違いますよね、そのプログラミングというか。
コンピューターを使うっていうこと自体が全然違いますよね。
そう、コンピューターに入力をしてから、そのなんか24時間体制でオペレーター機械を動かしとかって書いてあって、24時間体制でみたいな、
何を言ってるんだみたいな気持ちになるぐらいには、多分全然、全然感覚が本当に違うんだろうなっていう感じを受けますね。
うーん。
コンピューター で、またテープがね、読み込んだはいいけどうまく動かねえとかいうのが出てきたりとかあるわけですよね、物理的なものだったりするわけだから。
どこだっけ、ここじゃなかった気するけど、テープの信頼性が著しく低いみたいな話もありましたね。
コンピューター そうそうそう。
メディア側が壊れるっていう。
コンピューター ねえ、我々が言うと多分HDDとかSSDが書き込めなくなるとか読み取れなくなるとかっていうレベルだと思うけど。
あとあれじゃないですか、CDに傷つきまくって音飛びするみたいな。いやーその話通じなくなるんだろうな。
コンピューター そう、いやそれももはやって感じがあるから。
コンピューター うーん、まあなんなら手元じゃなくて、ネットワークの向こう側にものが動いてるっていう時代ですからね。
本当ですね。
コンピューター 手元が壊れても導入用もなるからなーって思うと、だからやっぱそういう感覚とは全然違うんだよなーって思っていて。
コンピューター だからまあどことってもやっぱ面白いんだよなと思って、なんかそのコメントを書くという規律を導入したよとか、そのコーディングシートにそういうようなルール作ったよとかって言ってて。
コンピューター 今コメント書くって当たり前だけど、そうか。
コンピューター ってか今より分かりにくいんだからもっとコメント書かないとダメじゃん。
コンピューター でもまあそういうことをこう閃いたというか、そういうことをやってやるってやっちゃったっていうところがすごいなーってやっぱ思ったりしますね。
ホッパーの革新:標準用語と規律の導入
いやだって第4章の扉が本当に読んでて鳥肌立つぐらいやばくて、我々が標準的な用語、
カッコ、アドレス、バイナリ、ビット、アセンブラ、コンパイラ、ブレイクポイント、キャラクターコード、デバッグ、エディット、みたいなめちゃくちゃ単語並んでるんですけど、カッコとGを使えるのも彼女の功績であるって書いてあって、そんなことあるかっていうぐらい一人でやってますよね。
そうすよね。
ああそっか。我々が使用する多くの技術、カッコ、コメント、サブルーチ、マルチプロセッシング、規律ある方法論、デバッグ、コンパイラ、オープンソース、ユーザーグループ、経営情報システムなどは、彼女が発明したか発明に貢献したものだ。
偉大すぎる。偉大すぎるよ。
いやだってコメントとマルチプロセッシングって同じ人から出てきてると思わない?思わないんですけど、やっぱり歴史のこういう本読むと、それがなかった世界からそれが生まれつつあっていよいよ生まれましたみたいなちょっとグラデーション上に変化してるところを目の当たりにできるから、
全然関係なさそうなのに、ちゃんと繋がってるみたいな感動というか発見があって、面白いですよね。
面白いですよね。
今から振り返ったら、我々アトジエバイアスいっぱい知ってるから、いくらでも言えるし、
いやほら当時はまだ草分けだったから、広大なフロンティアがあって発見する余地がたくさんあっていいなとか思うけど、
当時そこにいたら絶対自分が発見できるかって言ったら、たぶんそんなことはないんだろうなっていうことを思ったりとかして、やっぱりすげえなって思っちゃうんだよな。
あとこうしたらいいんじゃねえよ、ちゃんとやりきって成果も出して浸透させてっていうのをやってる人たちなんだなっていう気がして、
でグレソッパなんか特にそんな感じですよね、なんかこの人割と政治とかマネジメントにも強いみたいな感がちゃんとしていて、
政治強いというかなんかもう成果でぶん殴るみたいな感じはあるんですけど。
いやーすごいよなぁ。
あと読んでてあったのが、ミスがとにかく起きるんでそれをどうにかしたいなって思って、
ホッパーは機械自身に出力を確認させるという規律を導入したって書いてあって、チームは人間よりも高速に出力を検証できる命令列を書いたって書いてあって、
これテスト駆動開発の先駆けであるっていうふうに注釈で書いてあって、
なんかこうあったらいいな本当にちゃんとやっぱ作って導入して実行できるだけのなんていうか力を持ってるって、
なんかもうグレソッパーが今いたらどんなことやってたんだろうってちょっと思っちゃうぐらいにはいろいろ、
いろんなことやってるんだなってやっぱ思っちゃいますね。 確かに。
何やってるんですかね今はね。 AIでなんかあれもできるじゃんこれもできるじゃんとか言ってそうだなって思ったりとか。
うん。 あとはあれですねルーチンみたいなものを発明したっていうところもあって、
コードの断片をスニペットとして用意しておいて、それを再利用できるようにしたよって書いてあって。
本当にライブラリですよね。 そうそうそう。だから今の感覚からすると普通じゃんって思うけど、
そうかそうやってやっとくといいのかみたいなことをどんどんどんどん発明してるんですよね。
でそのルーチンというか再利用可能なスニペットである必要があって、そうすると再利用できるためには、再利用するためには再利用できる必要があるっていう話があって。
だから、従ってチームはライブラリではレジスタをゼロにするという規約を採用した。
こうすることでルーチンをプログラムにコピーするときに、ライブラリの再配置可能なアドレスにプログラムのレジスタを加算するだけで良くなったっていうふうに書いてあって。
すごい、本当に後じえなんですけど、まあそりゃそうだよねって感じなんですけど、それまでは多分あれですよね、職人の手元によく使うチートシートというか、スニペット書き置きみたいなのはあったけど、
それをちゃんとみんなで共有しようぜ。で、そのためにはちゃんとレジスタ初期化しとく。だからどこからどのタイミングで読まれても副作用が残ってない状態にするっていうの大事だよねっていうのをちゃんと言って、それによって超効率上げてるみたいなやつですよね。
そうですそうですそうです。すごいね、すごいね、なんかこう、何ですかね、やっぱ問題発見の能力と問題解決の能力がすごい高いんだろうなって気がしますよね、こういうのを見ると。
そうですよね。
周りを見ながら、なんか同じことやってるな、繰り返しやってるなとか、その間違いがたくさん起きてるなって思った時に、じゃあこの問題を解決するためには、まずその問題はどっから来ているんだっけとか、これは誰の問題なのかとか、どういう、この問題を解こうと思った時にどういう問題がまた問題が増えてしまうのかみたいなところとか、
そういうようなことがすごく捉える能力が高そうだなっていうのを感じますね。
効率化への飽くなき探求とCOBOLの誕生
さっき言ってた、本当に24時間というか、コンピューターの稼働率を物理的に上げるみたいな、要するに人間よりはるかにお値段が高い費用がかかるものを寝かせている、暇させとく、遊ばせとくなんてもったいなさすぎるってなると、本当に24時間耐性というかね、寝る時間を削ってやるわけですよね、多分。
っていうところに対して効率化っていうのは本当に命に関わってくる効果があるので、多分効率上がったら限界まで使われてる気はするんですけど、時代背景考えても。
すごいですよね、サバイバルみたいな状況にありつつ、決してサバイバルモードに陥らなかったみたいなのは素晴らしいよなと思って。
うん。 いやーすごいすごい、本当すごい。でまたそういうことをやりながら、初期はそういうことをやっていて、だんだんだんだん言語を作っていくとか、コンパイラーの話が出てきたりとかして、
コボルを作って、どうにかもうちょっと分かりやすい、ビジネスの人でも書けるようなものを書ける言語を作ろうっていうところでコボルみたいなものを作ったりとかしていて、すごいですね。
ここら辺超面白いなと思ったのが、さっき言ってた機械に食わせるためにパンチカードとかテープ使ってますっていうところに、ただただ記号的に処理してるっていうよりか少しでも意味が分かるとミス減るよねってコメントっていうのを導入して、
決まった手続定型的な処理っていうのを再利用可能にしようって言ってサブルーチンとかライブラリーって言われるものが作られましたっていう同じ人の発想の先に、じゃあ人間が分かりやすい表現で書いてそれをコンピューターが実行できる形に変換するものがあればいいんじゃないかって言って、そこからコンパイラーが生まれるわけですから。
信じらんない、コメントとコンパイラーって同じ根っこから出てくるんだって、やばいなーって思って。
そうですね。 言われてみたらその通り過ぎるんですけどね。
そうですね、言われてみたらその通り過ぎるけど、過ぎるけどさ、そんなまたまた夢物語をさ、みたいなこういう話じゃないですか。
今我々が体感してるのもそうだけど、自然言語でいい感じに書いたら後コード書いてくんねえかなーみたいなって思ったら、本当にAがそれをやり始めて、わーってびっくりしてるけど、そのもっと難しい制約の中でグレストップはやってたわけですもんね。しかも全部自分で作らないといけないしみたいな。
そうそうそう、作るんですよね。あくまで汎用言語じゃなくて、このコンピューターというかこの機械でこのマシンで動くための何かみたいな制約が当時強かったりしたんで、やっぱり新しいハードウェアが出てくるとそこらへんのちょっと流れが変わったりとか、もしくは制約が緩くなったりとかっていうので、
だから新しいOSどころかハードウェアごとなんだ、言語を進化させようって思った時に、ミドルウェアとかOSっていうレベルじゃなくてハードウェアごと何か新しいものを作れないかっていうのは結構、この本に出てくる人が全員異常者なんであれなんですけど、そういう発想になっていくみたいな。
うんうん。
シンポジウムとアイデア創出の場
で、それでね、こぼれの話もあるんですけど、そこでよかったのが新しいコンピューター作れないかなみたいな、もしくはお披露目みたいな感じでシンポジウムやったりして、いくつかのグループが集まってるみたいな場があったんですよね、その4の4シンポジウムのところで。
うんうん。
で、そこで他のチームとか、他の会社の人もいたのかな、招待して。他の大学とかっていう、ちょっと交流があって、みたいなくだりがあるんですけど、この87ページの最後の方に出てるところでおって思ったのが、
確かに確かに。
ねえ、すごいですよね。
本番はこうなんて、懇親会が本番みたいな、その懇親会の短いが本番みたいな、なんかそんな感じになってますね。
懇親会が本番話、なんかちょいちょいちょいやりますもんね、アザエルかな、なんかの話でもコーヒーブレイクが大事だったみたいな、そこからアイデアが発明が生まれましたみたいな話聞いたりするし。
まあ結構その昼間のセッションとかで、こうなんていうか、みんなのこう知識が前提が揃った上で、いろいろそのだんだん時間が経つにつれ、こうフリートークをするときにこうなんですかね、前提条件が揃うから、こう会話の一気にその深いところまでいけるみたいな、きっとあるんだろうなっていうのを思ってますね。
そうでしょうね、あの刺激をバーって流し込んでおいて、たまに溜まったのをアルコールの勢いとか夜のテンションを借りつつドカーンとやるみたいな。
いやだからなんていうか、こうパッと1時間ミーティングしてなんか結論が出るみたいな、なんかそういうのはやっぱね、まあできたらいいんだけど、まあ難しいだろうなっていうのを思うと、なんか結局長時間人を拘束していいアイデアが出るまで、なんか話し合いを続けさせる、だらだら話すみたいな、なんかまあ結構大事なんじゃないかなって最近思ったりもしますね。
なんかあの言論カフェってゴタンダにありますけど、あずまひろきがやってる、あれとかもなんか4時間とか6時間とか配信やってて、でなんかそれの考え方がなんか2時間番組をやって、なんかこういい話題ができるかって言ったら、
だいたいなんか前提条件を揃えるのに2時間以上かかるから、そんなことはできんやろって言ってて、なのでもう4時間とか6時間とか、まあ延長が自由にできる場所が欲しくて作ったって言ってて、なんかそれすごいわかるなと思う一方で、まあ見る方は大変なんだよなと勝手に思いながら感じてるんだけど、
でもなんか深い話をするためには結構そういうテンションというか長時間話すみたいなのってきっと大事なんだろうなーっていうのは思ったりしますね。
まあそうっすよね、いいところだけ切り取ってもやっぱり感動が薄くなったりっていうのはありますしね、見てる側としても。
ペシパワーは月に1回長い時間拘束し合ってこう話し合ってて、いいアイディアが多分きっといろいろ、まあいいアイディアっていうのはなんかその正規な発明とかっていうことじゃなくて、
各々の中にモチベーションが高まるようなことが起きたりとかしてんじゃないかなーって勝手に毎月のようにコンファレンスがあるんで思ったりします。
まあ刺激を得る機会が多いのはとても良いですよね、毎回が毎回ホームランではもちろんないと思うんですけど、でもやっぱり打席に立たないと打てないので。
そうそうそう。
COBOL言語の設計思想と普及
で、グレーズオッパーの話だけをやりすぎるとあれなんで、コボルに最後ちらっと触れておきますか。
そうですね。
コボルはコモンビジネスオリエンテッドランゲージですね。
知らなかった。
交通事務所利用言語、僕はですね、コボルによる構造化プログラミングっていう本を読んでるんでね、知ってました。
すごいすごい。そんな、なんか銀行に転職するんですかみたいな。
銀行に転職する人向けのもうちょい新しい本あるんじゃないかな。
まあそうだろうね。わざわざそれ読まんでもって確かに。
構造化プログラミングの話を知りたいなって思って、ってなると構造化プログラミングが当たり前になりすぎてない時代の、まだ確立されてないっていうか浸透されてない概念を説明してる本が欲しかったんですよ。
っていう。
だからといって、そんなコボルになるのかと思いながらそれぐらいの時代になるんだっていう気持ちはありますね。
そうですね、コボル以外の本もありましたけど、あと構造化ベーシックも一緒に買いました。
すごい、もうこの本を読むための前田が整ってる人みたいな。
いやでも構造化ベーシックね、新しいんですよ多分。
新しいのか古いのか全然わかんないんだよ、伸びてこないんだよそれ。
もうちょいオリジナルのベーシックを知りたいんだよなって思って。
まあいいや、コボルの話でしたね。
そうですね。
コボルはなんかこの本で改めて、さっきの共通事務処理用言語って話もそうですけど、すごいですよね。
誰でもっていうのは、いつ何時も時の場合によって意味が全く違う言葉として有名なんですけど、誰でも使える言語必要だみたいなコンセプトがあり。
そうなんですよね、ここではプログラマーが使うっていうよりはもうちょっと対象が広く想定してるって感じがありますよね。
あれでもすごいんですよね、さっき言ったコメントとかコンパイラーの話もそうでしたけど、とにかく人間が扱いやすいようにしようみたいな話があって、
それと同時に使えるプログラマーを探してくるのはもう限界がとっくに来てるから育てるしかねえって腹をくくっていて、
っていう流れでコボル的な言語を作っていこうよっていう議論の中で決定した項目が、特定の機会に依存せずに移植可能であることっていうのは、
さっき言ってた共通事務所利用言語の共通の部分に入ってると思うんですけど、新人のプログラマーの教育が容易であることっていうのも入れてあるんですよね。
動作がわかりやすい、大した通りに動くっていう意味で直感的な言語表現シンタックスみたいな考えた時に、ある派閥は数学的な記号はビジネス分野であっても使うべきだと考えていたが、
もう一方の派閥は掛け算や足し算のような基本的な演算子も英語で書くべきだと主張したっていう日本の中で書かれていて、ホッパ様校舎だと、数学みたいな見た目を外してとにかく英語でやるぞみたいなこと言ってるわけですよね。
そうですね、そうですね。
すごくないですか、だってこんなん。
たぶんホッパから見たら別に数学的な書き方とかで見てもきっとわかっていたはずだろうから、これぐらいだったらいいんじゃないとかっていうことを足し算とかプラスとかアスタリスクでかけるとかスラッシュ割るとか、
たぶんそういうことでもいいんじゃないって思うんだろうけども、でも実際に教育をするとか、この中の制約条件みたいなところのルールの中には英語を最大限に使用するとか、プログラミングの機能よりも使いやすさを優先することとかって、
すごいいろんな制約条件も加えて言語を設計するっていうところに、一貫性だったりとかなんでここはこうなってるんですかみたいな、そういうことは聞かれなくてもいいような、本当に文章を読むように使えるみたいなところをすごい意識してたんだろうなっていうのを強く感じますよね。
あともう一個めちゃくちゃすごいのが、マーケティング要素、マーケティング的な視点も含めて英語にしようみたいなふうに言ってますよね。どこだっけ。なので汎用的なビジネス言語こぼる。
ただ一方で現代の我々はこぼるを書きたいかって言われると多分そんなにモチベーションはなく、ボボおじさんもすごくこぼるはすごい情緒だし、あんまり書きたくないなっていうようなことを言ってますね。
あんまり書きたくないななんて優しい言葉で書いてないです。こぼるはひどい言語だってボールドで書いてあるし、あらゆる点においてこの言語は忌まわしいまで言ってる。
そうですね、後事例というか、構成から見た時にはそういうふうに見られてるけど、やろうとしたことは別に、なるほどねってすごく感心するものだよねっていうふうな感じですね。
でもその後にちゃんと書いてあったの。こぼるがこれほどまでに普通したのは技術的に優れていたからではなく企業の政治力が大きかったからだと思う。
実際ホッパーはプログラマーが言語に影響を与えることを意識的かつ明確に拒み、ユーザーやマネージャーたちを優先していた。こぼるにはそれが反映されているって書いてあって。
言語レベルで汚いコードでも売れるものを作るってやばくないですか。
すごいですね、すごいですね。しかも4.13のところも、こぼる嫌いだけどこぼるは成功したっていうところで、2000年までに書かれたコードの80%がこぼるだと推定されているって。
どういうふうに推定したのかわからないけど、80%ってすごいですよね。
80%やばいですよね。インターネットに対して占める絶頂期のワールドプレスを超えてますよ多分。
多分そう超えてるはずなんで。
こんな凄さがわからない例えだったら。
まあだから世の中で動いているプログラムはほぼこぼるだって言ってもいいぐらいな感じだってことですもんね、この80%って考えると。
こぼる以外が異端ってことですもんね多分。
そうですね。ちょっと2000年以降からしかプログラム書いてないからわかんないんだよな。
そうなんだよな。
もちろん90年の終わりぐらいにはPerlとかJavaとかPHPとかいろいろRubyもそうだけど言語が出てきて、多分カーザー向けはインターネットによって変わってくるっていうところはあるんだろうけど、
実際多分多くを占めてたのは企業向けのデカいマシンで動いているようなものだったりするんで、そういうところでこぼるが多分たくさん動いてたんだろうなっていう気はしますけど、それにしても80%ってすごいなっていうのは思いますね。
すごいですよね。ビジネス的に大成功と言わざるを得ないですよね。
これで一行書くたびにいくらってお金が取れてたらどんな大金持ちになってたんだろう。そんなことになってたら全然採用されてないと思いますけど。
COBOLの成功と現代からの評価
こんなすごい人たちがさらにまだまだ出てくるんですか。やばいですね。
やばいですね。誰が一番すごいのかわかんないよな。
わかんないです。
まあでも5章いきますか。
いきますか。