ドナルドクヌヌスのプログラミングの最初のステップ女の子ずではなく、コンピュヌタヌで倏を過ごした方法19,20,21,22 / 97

「䞀番䞋の行は、このIBM Model 650の取扱説明曞はかなり銬鹿だったずいうこずです。 プログラミングに远い蟌たれたした。」



画像








コンピュヌタヌにどのように興味がありたすか 私はキヌ゜フ工科倧孊で勉匷する奚孊金を持っおいたしたが、それは蚓緎の党費甚をカバヌしおいたせんでしたが、䞀郚だけなので、アルバむトをしなければなりたせんでした。 私の䞡芪にはお金がなく、私は統蚈局の仕事に行きたした。 私の責務の1぀は、パンチカヌドを゜ヌトするためのIBM機械である゜ヌティングマシンを管理するこずでした。 パンチカヌドを取り出しおマシンに配眮し、別のポケットに送り、特定の順序でパンチカヌドを取埗し、結果を確認しおチャヌトを描画する必芁がありたした。 それで、私は統蚈孊郚の図を描きたした。



翻蚳ゞュリア・ハむトワ

この出版物は、支郚の仕事を調敎するために 、オヌクず悪魔 、 CRMシステムを䜿甚した ゞオロケヌションゲヌムを開発する゚ゞ゜ンによっおサポヌトされおいたす 。



グラフぞの興味ずコンピュヌタヌの最初の経隓







思考が逃れる前に、グラフに぀いお䜕か远加すべきこずがあるず思いたす。 高校では、私は倏の間ずっず過ごしたした...私は数孊のグラフに情熱を傟けおいたした、匕数xず関数yがあり、軞よりもy単䜍セグメント高いグラフを描画する必芁があり、実際に関数のグラフを取埗したす。 その瞬間から私はビゞュアルが奜きです。



私は最終的に取埗したい画像から始めお、それを可胜にするグラフを持぀方皋匏をピックアップできるずいう考えに非垞に熱心でした。 だから、倏を過ごしおグラフを敎理したした。 䞀床に䜕癟ものグラフを描きたした。 方皋匏ずしお、䟋えば、x ^ 3 + 5xの平方根から他の数を匕いたものを取り、それをプロットしたす。



私の父には、根を蚈算できる小さな蚈算機がありたした。 圌女も結果を印刷したした。 父は䌚蚈士だったので、機械は結果を印刷しさえしたした。 乗算などの算術挔算に䜿甚したした。 次に、x ^ 3 + 5xをx ^ 3 + 4xに倉曎し、異なるグラフがどのように芋えるかを芚えお新しいグラフを描きたした。



私は孊校で数孊的分析を持っおいたせんでしたが、これを認識しおいたせんでしたが、方皋匏グラフをプロットするこずができたした。 これは私を魅了したした。 私はこれに䞀生懞呜取り組み、オレンゞ色のグラフ甚玙にグラフを䜜成し、頭を痛めたした。 この時期に県鏡をかけ始めたのは、スケゞュヌルのせいだず思いたす。 しかし、私は少なくずも建蚭の経隓があり、高校の時でもこの数孊のセクションが奜きでした。



それから、Keysov Institute of Technologyで私の最初のアルバむトを埗たした。そこでは統蚈孊者のためにグラフを描く必芁がありたした。 それは玠晎らしく、仕分け機からそれほど遠くない新しいコンピュヌタヌ、たたは「人工知胜」ず呌ばれたIBM Model 650でした。



これは最初の倧量生産されたコンピュヌタヌモデルであり、1000台以䞊が生産されたしたが、それ以前は、30を超えるコピヌがあるコンピュヌタヌはバッチで生産されおいたせんでした。 そしお、このコンピュヌタヌが持ち蟌たれたずき、研究所での最初の1幎の真ん䞭にあり、私が働いおいたオフィスの䞋の階の郚屋に蚭眮されおいたした。 オフィスの窓からコンピュヌタヌを芋るこずさえできたした。



ある日、埓業員が私がコンピュヌタヌを芋おいるのに気づき、私を招埅したした。 圌はこのデバむスがどのように機胜するか説明しおくれたした。 父が芋せおくれたコンピュヌタヌずは異なり、このコンピュヌタヌは非垞に倚くのこずができるので、私は感銘を受けたので、取扱説明曞に粟通するこずにしたした。



圌はすぐに、コンピュヌタヌ甚に蚭蚈されたパンチカヌドに穎を開けるこずを蚱可したした。 ゜ヌティングマシンの制埡方法は知っおいたしたが、その瞬間、コンピュヌタヌプログラムでパンチカヌドを䜜成しおいたした。 そしお、私はこのデバむスの䞭に䜕があるかを知り始めたした。



プログラミングに興味を持ったきっかけ







IBMの取扱説明曞を読みたしたが、プログラムの䟋が含たれおおり、プログラムの䜜成プロセスを改善する方法に぀いお考えたした。 「そうですね、これらのプログラムは動䜜したすが、䜕かを倉曎するず、さらに良くなるでしょう。」 プログラミングの才胜があるのではないかずいう自信を䞎えおくれたした。



マニュアルに倱敗した䟋が含たれおいなかった堎合、私は自分自身にそれほど自信がなく、恐ろしく、ただ振っただけだったので、おそらくプログラムを曞くこずに興味さえありたせんでした "ああ、私はそのようなこずを考えたこずがなかった「。 しかし、䞀番䞋の行は、この取扱説明曞はかなり愚かだったずいうこずです。 私は、これで成功するこずができたので、プログラミングに远い蟌たれたした。



それで、私は研究所での研究の最初の幎の間にコンピュヌタヌに興味を持ち始めたした。 そしお、私が友愛䌚に参加したずき、参加者の1人は、圌が緊急に解決しなければならない課題に問題を抱えおいたした。次数5の方皋匏の根を芋぀けおください。 私はすでに「Bell Interpretive System」ず呌ばれるプログラムに぀いお知っおいたした。 圌は、自分でそれをやりたくなかったのです。



それで、私は圌のために圌の仕事の䞀぀をする「兄匟」のためのプログラムを曞きたした。 そしお、プログラムは機胜したした。 信じるのは倧倉でしたが、そうでした。 それで圌はずおも幞せでした。 さらに、倜間にこのIBMマシンを䜿甚できるようになったずき、Computer Centerの人々ずもっず話し始めたした。



そしお、1幎目から2幎目の間のどこかで、コンピュヌタヌセンタヌでパヌトタむムで働いおいたした。 圌らは実際、他の人、他の孊生が䜿甚する゜フトりェアを曞くこずを蚱可したした。



私が曞いた最初のコンピュヌタヌプログラムは次のずおりでした数の玠因数分解。 コン゜ヌルを介しお番号を入力したす。぀たり、100などの番号に移動できるロヌタリヌスむッチを入力するず、次のデヌタが出力されたした。100= 2 * 2 * 5 * 5。 そのため、コン゜ヌルから入力された数倀の玠因数を蚈算するこずができたした。



私はただこのプログラムのコピヌを持っおいたす。 最初は、プログラムの玄60たたは70のチヌムから始たり、2週間埌にようやく正垞に機胜し、130になりたした。この間に玄200の゚ラヌを修正したず思いたす。



぀たり、プログラミングだけでなく、゚ラヌ修正も孊びたした。 あなたがちょうど䜕がうたくいかないのか...たあ、私はプログラミングに぀いおあたり知りたせんでしたが、私はこの緎習から倚くのこずを孊び、数の玠因数を蚈算するプログラムを曞きたした。



IBM 650でのプログラミング方法の孊習







たた、いく぀かのこずも理解したした。たずえば、バむナリシステムではなく10進数で動䜜する10進数のコンピュヌタヌがありたした。 そしお、最終的には、10桁の数字さえ取埗できたした。 私はそのようなコンピュヌタヌの䜿い方を孊ぶこずができたしたが、非垞に遅いものでした。



分割のプロセスには玄4ミリ秒かかりたしたが、コンピュヌタヌは数癟䞇倍高速に動䜜しおいたす。 今日の暙準では、非垞に遅いコンピュヌタヌであり、同時に耇数の郚門プロセスを生成するこずさえできたせんでした。



そしお、芁因を芋぀けるこずは次の通りでした最初に、この数を2぀に分けるこずは適切ではありたせん。 䞉 いや 4時 いや そしお、うたくいくたで続けたす。 これで、最倧の10桁の玠数を簡単に遞択できるようになりたしたが、時間がかかりたしたので、プログラムを少なくずもわずかに高速化する必芁がありたした。



最初に2、3、4、5で陀算するべきではありたせんでしたが、元の数倀が2ず4で割り切れない堎合、すべおの偶数をスキップするこずができたした。そしお、プロセスを高速化するためにこのようなこずをしなければなりたせんでした。 最初は、すべおの可胜な数倀で陀算する必芁がないこずを理解しおいたせんでした。数倀に係数がある堎合、最小の係数はこの数倀の平方根よりも小さいか、ほが同じ倀になるためです。 これが、プログラムのアルゎリズムをわずかに倉曎する必芁があるこずを認識した方法です。



プログラムで最も暗黙的な゚ラヌの1぀は、修正に倚くの時間を芁したしたが、突然その数に倚くの玠因があるこずですか 刀明したように、パンチカヌドの9぀の芁因のみを突砎するこずができたした。数倀は30を超える芁因があるため、プログラムをやり盎す必芁がありたした。 そしお、答えが1぀のマップではなく、4぀のマップに反映されるように倉曎したした。



それでも、それは...この乗数プログラムが圓時私にずっお非垞に有甚だった理由を説明したいだけです。 そしお結局、私は最初の幎の終わりにそれを曞きたした。私はこの装眮に座っお、レバヌを切り替え、ボタンを抌すこずを蚱されたした。 教垫は、私たちが自分でコンピュヌタヌを䜿甚し、倜間に仕事をし、教宀で寝入り、他の生埒が䜿甚するプログラムを曞くこずを蚱可したした。



スタンフォヌド倧孊では、すべおが異なっおいたした。 スタンフォヌドでは、埌でわかったように、マシンに盎接枡すために䜜業を匕き継がなければならなかったIBMの埓業員がいたため、翌日だけ結果を埗るこずができたした。



Keysov Instituteでは、自分ですべおを行うこずが蚱可されおいたした。圌らは䜕かを壊すこずさえ心配したせんでしたが、玙やカヌドが詰たったらパネルを開きたした。 そしお、私たちは新入生でした 圓時、ケヌスずダヌトマスは、孊生に察しお非垞に寛倧で、自分で技術を䜿甚するこずを蚱可された唯䞀の倧孊だったず思いたす。



䞉目䞊べプログラムの䜜成







倏には、コンピュヌタヌセンタヌで働いおいたので、ミルりォヌキヌの家にいなかったのは、数日だけでした。 そしお、それは私がすでに話したそれらの2幎目の女の子に䌚う前でした。 それで、私は倏の間ずっずコンピュヌタヌで過ごしたした。 2番目のプログラムは10進数から他の数倀システムぞの倉換でしたが、かなり高速でした。 私がもっず時間を費やした3番目のプログラムは、ゲヌム「䞉目䞊べ」でした。



埌に、倚くの科孊者がこのゲヌムに取り組んでいるこずを知りたした。 1800幎代にTic Tac Toeをプレむする最初のマシンを発明した英囜の数孊者、Charles Babbage。 ダニヌ・ヒリスは、ティンカヌトむズの子䟛デザむナヌから䞉目䞊べのスロットマシンを補䜜したした。これは珟圚ボストン科孊博物通に展瀺されおいたす。 それにもかかわらず、私はこのゲヌムのためにコンピュヌタヌプログラムを曞くこずにしたした。 かなり問題がありたした。



私はTinkertoysを䜿甚したせんでしたが、IBM 650には別の興味深い機胜がありたした。10桁の数字を䜿甚する10進数システムだけでなく、2000だけしか機胜したせんでした。 圌の䞀般的な蚘憶は、どれくらいですか 5バむト したがっお、わずか10 KBのメモリです。 そしお今、10 GB、たたは少なくずも10 MBがなければ、これで終わりです。 数癟MBを持っおいない堎合は、Microsoft Windowsをダりンロヌドするこずもできたせん。共有メモリは10 KBしかありたせん。



そしお、マシンが私に察しお䞉目䞊べを再生できるようにしたかったのです。 そしお、私は3぀の難易床を曞きたした。 最初のレベルは、私が確信しおいた戊略を持぀「専門家」です。



二番目は䜕でしたか 芚えおいたせんが、3番目が最も面癜かったです。 これは「孊習版」でした。マシンは䜕も知らずにゲヌムを開始し、圌女はゲヌム䞭にフィヌルド䞊のすべおの可胜な䜍眮を芚えお孊習したした。



これを10 KBに収めるこずはほずんど䞍可胜でした。 ゲヌム䞭に負けるたびに、圌女は次のようなこずを蚀いたした「私はミスをし、盞手の動きは良かった」、そしお勝ったずき「私の動きは良かったが、盞手の動きは良かった」。 圌女は調敎できたした。



難易床の各レベルは特定の数に察応し、ゲヌムは4から始たり、勝った堎合は次のゲヌムは5になり、負けた堎合は3になりたす。異なる戊略を䜿い始めた堎合、圌女は最も適切ず思われる動きを遞択したした。



このプログラムを曞くのに1か月かかりたした...この間に倚くのこずを孊び、その埌、「゚キスパヌト」バヌゞョンを䜿甚しおゲヌムの「トレヌニングバヌゞョン」を教えようずしたした。 「゚キスパヌト」は「トレヌニングバヌゞョン」で䜕回プレむしたしたか 私は120に぀いお考え、それから「蚓緎版」は「専門家」に負けなくなった。



䞉目䞊べはかなり退屈なゲヌムです。なぜなら、あなたはそのプレむ方法を知っおいお、各ゲヌムは匕き分けに終わったからです誰も勝ちたせん-誰も負けたせん。 しかし、あなたが間違っおいるずき-それは運び去る。 そしお、私は2぀の「孊習バヌゞョン」を䜜成し、それらが互いに遊ぶこずを決定したした。最初はゲヌムに぀いお䜕も知らず、最初の動きは盲目的にランダムに行われたした。



もちろん、圌らは間違いを犯したすが、最終的には、そのうちの1人が勝ち、䞀郚は敗北し、圌らの戊略は少し倉わりたす。 そしお、私が知ったように、ゲヌムがプレむされた埌、圌らはかなり保守的にプレむし始め、ゲヌムは退屈になりたした。 慎重で危険な動きをする代わりに、圌らは非垞に慎重にプレヌしたした。 それにもかかわらず、このプログラムを曞くこずはやりがいのある経隓になりたした。



続きを読む





97ドナルドクヌヌスビデオのリスト
Youtubeプレむリスト



1. 家族歎

2. 読曞ず孊校の孊習

3. 私の母

4.䞡芪の財政

5.高校ぞの関心

6.高校のオタクであるこず

7. ナヌモアのセンス

8.重みず枬定のポトゞヌビヌシステム

9. 自分自身を蚌明する必芁性を感じる

11.倧孊生掻バスケットボヌル管理システム

12.倧孊生掻友愛制床

13.劻のゞルず䌚う

14.倧孊での聖曞研究ず個人的な挑戊の時

15.ケヌスでの課倖掻動

16.ケヌスで倧孊院クラスを取る

17.物理孊、溶接、倩文孊、数孊

18. Caseの数孊教垫ず難しい問題

19. グラフに察する私の興味ずコンピュヌタヌの最初の経隓

20. プログラミングに興味を持ったきっかけ

21. IBM 650でのプログラミング方法の孊習

22. 䞉目䞊べプログラムの䜜成

23.シンボリック最適アセンブリプログラムに぀いお孊ぶ

24.内郚翻蚳者

25. RUNCIBLEに機胜を远加する

26.教垫になりたいず私がカリフォルニア工科倧孊に行くこずを遞んだ理由

27.バロヌズコヌポレヌションのコンパむラヌの䜜成

28.バロヌズ瀟で働く

29.バロヌズコヌポレヌション

30.文脈自由蚀語に興味がある

31.博士号および察称ブロック蚭蚈の問題を取埗する...

32.射圱平面に関する未解決の問題の解決策を芋぀ける

33. コンピュヌタプログラミングの芞術の始たり

34.1967激動の幎

35.属性文法ずKnuth-Bendixアルゎリズムの䜜業

36.森で創造的であるこず

37. 新しい分野アルゎリズムの分析

38. コンピュヌタヌプログラミングの技術サむズの過小評䟡...

39. The Art of Computer Programmingの最初のリリヌスの成功

40. 超珟実的な数字を曞くためのむンスピレヌション

41. オスロのホテルの郚屋でシュヌルな数字を曞く

42. 超珟実的な数字の仕䞊げ

43.孊術科目ずしおのコンピュヌタヌサむ゚ンスの出珟

44.議論するのではなく、コンピュヌタヌサむ゚ンスをやりたい

45.プリンストンで囜家奉仕をする䞀幎

46.スタンフォヌドに移動し、私が正しい遞択をしたかどうか疑問に思う

47.スタンフォヌドの家の蚭蚈

48. コンピュヌタプログラミングのアヌトの第3å·»

49. コンピュヌタヌプログラミングのアヌトの第4巻の䜜業

50.私の本の第2版の質の悪い組版

51.独自の組版プログラムの䜜成を決定する

52.組版プログラムの䜜成

53.文字圢状の数匏

54.タむポグラフィの歎史に関する研究

55.私の手玙ずSの問題に取り組む

56.タむプセットの方法ず仕様の問題を理解する

57. TeXでの䜜業

58.プログラムの蚭蚈者ず実装者がどうしお...

59.ボリュヌム2をTeXに倉換する

60. TeXのナヌザヌマニュアルの䜜成

61.タむポグラフィの仕事に぀いおギブスに講矩をする

62. MetafontずTeXの開発

63. TeXに察する暩利を保持しないこずを遞択し、それを転写した理由...

64.フォントの調敎ずTeXぞの資金提䟛

65.ボリュヌム2の問題

66. Literateプログラミング

67.受け取ったフィヌドバックを䜿甚しおTeXを曞き換える

68. TeXの安定性の重芁性

69. LaTeXおよびConTeXt

70. TeXプロゞェクトの抂芁

71.ボストンでの1幎

72.聖曞に぀いおの本を曞く

73.䞖界で最も矎しい3:16

74. Adob​​e Systemsでプレむするチェスマスタヌ

75. MITで科孊ず宗教に関する講矩シリヌズを開催する

76.スタンフォヌドでの仕事に戻り、早期退職

77.ストレスに察凊するために氎泳を始める

78.倧孊院生ず64歳の誕生日

79.コンクリヌト数孊の私のクラス

80.具䜓的な数孊のクラスで本を曞く

81. ボリュヌム1から3のコンピュヌタヌプログラミングの技術の曎新

82. 「The Art of Computer」の第4巻を始めたしょう...

83. 2぀の最埌の䞻芁な研究プロゞェクト

84.私の曞くこずぞの愛ず幞運な人生

85.がんぞの察凊

86.名誉博士号

87.賞ず京郜賞の重芁性

88.パむプオルガン音楜は人生の倧きな楜しみの䞀぀です

89.私の居間のパむプオルガン

90.オルガンの挔奏

91. ゜ビ゚ト連邊のアルゎリズムに関する囜際シンポゞりム

92. Knuth-Morris-Prattアルゎリズム

93. 若者ぞの私のアドバむス

94.私の子䟛ゞョン

95.私の子䟛たちゞェニヌ

96.収集した論文の䞀連の本の䜜成

97. アルゎリズムの分析を䞻題ずしお遞んだ理由




All Articles