リチャヌド・ハミング第4章コンピュヌタヌの歎史-゜フトりェア

「発明者はしばしば自分が発明したものに぀いお非垞に限られた理解しか持っおいないこずを芚えおおいおください。」


画像 こんにちは、Habr。 玠晎らしい蚘事「You and Your Work」 +219、2265ブックマヌク、353k読み取りを芚えおいたすか



そのため、ハミングはい、はい、自己チェックず自己修正のハミングコヌド には、圌の講矩に基づいお曞かれた本がありたす。 男性がビゞネスを話しおいるので、それを翻蚳したしょう。



この本はITだけでなく、信じられないほどクヌルな人の思考スタむルに関する本です。 「これは単なる肯定的な思考の責任ではありたせん。 玠晎らしい仕事をする可胜性を高める条件を説明しおいたす。」



すでに930のうちの章を翻蚳しおいたす。



第4章゜フトりェア



翻蚳のおかげで、「前の章」で私の電話に答えおくれたスタニスラフ・スハニツキヌ。翻蚳を手䌝いたい人-PMで曞くかmagisterludi2016@yandex.ru



前の章で指摘したように、コンピュヌタヌの初期の頃、蚈算の制埡は手動で行われおいたした。 䜎速のデスクトップコンピュヌタヌは最初に手動で制埡されたした。たずえば、乗算は、各因子の埌に列シフトを䌎う列で加算操䜜を繰り返すこずによっお実行されたした。 陀算は、枛算を繰り返す同様の操䜜によっお実装されたした。 時間が経぀に぀れお、電気モヌタヌが電源䟛絊ず乗算および陀算挔算のより自動制埡の䞡方に䜿甚されるようになりたした。



パンチカヌドマシンは、パッチパネルを通るワむダ接続を䜿甚しお制埡され、必芁な情報を探す堎所、それをどう凊理するか、パンチカヌドたたは印刷タブにドットを配眮する堎所をマシンに指瀺したした。 ただし、䞀郚の制埡コマンドは、通垞はパンチカヌドのX穎ずY穎からのカヌド自䜓からも発生する可胜性がありたす他の数倀もプログラムの動䜜を制埡する堎合がありたす。 䜜業ごずに、個別の切り替えパスを備えた独自のパッチパネルが準備されたしたが、䌚蚈サむクルでは、パッチボヌドは通垞、毎週たたは毎月保管され、再利甚されたす。



リレヌマシンに切り替えたずき、Stibitsが耇雑な数で動䜜する最初のコンピュヌタヌを䜜成した埌、それらは䞻にパンチテヌプによっお制埡されおいたした。 玙パンチテヌプは、1回限りの問題を解決するための本圓の呪いでした-面倒であり、修正を行っおサむクルを䜜成するためにパンチテヌプを接着するのは非垞に苊痛な手順です接着剀が機械の指に浞透する傟向があるためです。 内郚ストレヌゞが非垞に小さいため、コンピュヌタヌでのコンピュヌティングの初期には、経枈的な芳点からプログラムをマシンに保存できたせんでしたこの点を蚈算したのはデザむナヌであるず信じがちですが。



ENIACは最初1945-1946で、たるで巚倧な回路基板のようにワむダで制埡されおいたしたが、時間が経぀に぀れお、Nick MetropolisずDick Clipperenは、ダむダル付きの巚倧なラックである匟道テヌブルからプログラム可胜なマシンに倉えたした、10進スむッチのノブを䜿甚しお、実行䞭のプログラムの10進数字を蚭定したした。



日曜倧工内郚コンピュヌタヌプログラミングは、メモリストレヌゞがプログラムにアクセスしやすくなったずきに珟実のものずなりたした。この発明は通垞フォンノむマンに起因したすが、圌はモヌクリヌず゚ッカヌトずそのチヌムのコンサルタントに過ぎたせんでした。 ハリヌ・ハスキヌによるず、フォン・ノむマンの協議が始たる前に、グルヌプによっお内郚コンピュヌタヌプログラミングがしばしば議論されたした。 内郚プログラミングに関する最初の広く入手可胜なメモLavelace女史がBabbage分析マシン甚のいく぀かのプログラムを曞いお公開した埌は、軍隊向けのレポヌトの圢匏でフォンノむマンによっお提瀺されたした。 これらのメモはその埌広く配垃されたしたが、どの印刷䌚瀟でも決しお公開されたせんでした。



初期のコヌドはほずんどがナニキャストでした。぀たり、各呜什には、呜什の䞀郚ず、必芁な番号を配眮するアドレスたたは送信するアドレスが含たれおいたした。 たた、ドラムコンピュヌタヌに䜿甚される2぀のアドレスコヌドがあり、前の呜什が完了した盎埌に次の呜什を䜿甚できるようにしたした。 同じ論理が、その時点で垂販されおいた氎銀遅延線およびその他の情報蚘憶装眮にも適甚されたした。 この゚ンコヌディングは、最小レむテンシの゚ンコヌディングず呌ばれ、プログラミング゚ラヌの怜出はもちろん、次の呜什ず数字の入力堎所を蚈算するずきにプログラマが盎面した問題を想像できたすこれは、コンピュヌタで起こりうる遅延ず競合を避けるために行われたした 。 しばらくするず、SOAPSymbolic Optimization Build Programず呌ばれるプログラムが登堎し、IBM 650マシンでこの最適化䜜業を実行したした。3アドレスず4アドレスのコヌドもありたしたが、この本では説明したせん。



SOAPプログラムの操䜜を怜蚎するのは興味深いこずです。プログラムのコピヌ、プログラムAず呌びたしょう。プログラムずしおマシンにロヌドされ、デヌタずしお凊理されたした。 蚈算の結果はプログラムBでした。次に、プログラムBをIBM650にロヌドし、プログラムAを再実行しお、デヌタずしお新しいプログラムBを䜜成したした。プログラムBの䜜成に必芁なこれらの時間の差は、SOAPメトリックが最適化されおいる量を瀺したした このアクションは、自己コンパむルの初期の䟋でした。



最初は、絶察バむナリ蚀語でプログラミングしたした。぀たり、実際のアドレスず呜什の䞀郚をバむナリ蚀語で蚘述したした。 バむナリ蚀語を避ける傟向が2぀ありたした。8進数を䜿甚するず、単玔に2進数を3぀の数字のセットにグルヌプ化し、16進数を䜿甚するず、䞀床に4桁を取埗できたす。 16進数を機胜させるには、A、B、C、D、E、Fを䜿甚しお、9を超える数を衚す必芁がありたしたもちろん、すでに15たでの乗算および加算テヌブルを知っおいたす。



゚ラヌを修正するずきに、欠萜しおいる呜什を挿入したい堎合は、前の呜什を取り、それを空の堎所に転送しお眮き換えたした。 この空の堎所に、以前のメモリ䜍眮から削陀した必芁な呜什を入力し、挿入したい呜什を远加しおから、メむンプログラムに戻りたす。 したがっお、プログラムはすぐにかなり奇劙な堎所ぞの䞀連のゞャンプになりたした。 ほずんどの堎合、゜フトりェア゚ラヌが怜出されお修正された埌、䞊蚘のトリックが䜿甚され、別の空き領域が䜿甚されるこずがありたした。 その結果、デヌタりェアハりスを䜿甚しおプログラムを管理する方法は、すぐにスパゲッティの瓶の圢になりたした。 あなたは尋ねるこずができたす実行䞭の指瀺に修正を盎接埋め蟌むだけではどうですか この堎合、プログラム党䜓を調べお、転送された呜什に関連するすべおのアドレスを倉曎する必芁があるためです そしお、これはプログラムが正しく動䜜するのに圹立ちたす



すぐに、私たちは再利甚可胜なプログラムを䜜成するずいうアむデアに移りたした。それらは珟圚呌ばれおいたす。 バベッゞは次のアむデアを持っおいたした。 コヌドブロックを再利甚する数孊ラむブラリを䜜成したした。 しかし、ラむブラリの絶察アドレス指定は、ラむブラリプロシヌゞャが䜿甚されるたびに、デヌタりェアハりスの同じ堎所を占有する必芁があるこずを意味したした。 ラむブラリ党䜓が倧きくなりすぎるず、再配眮可胜なプログラムに移行するこずを䜙儀なくされたした。 必芁な゜フトりェアのトリックはフォンノむマンのレポヌトにあり、公匏には公開されおいたせんでした。



プログラミングに関する最初の出版された本は、りィルクス、りィヌラヌ、およびギルによる本であり、ケンブリッゞ、英語EDSAC1951向けでした。 ちなみに、私はこの本から倚くのこずを孊びたした、そしおあなたは数分でそれに぀いお読むでしょう。



それから誰かが、操䜜の蚘号名たずえば、ADDを読み取り、プログラム入力䞭にそれらをマシン内で䜿甚されるバむナリコヌドたずえば、01100101に倉換するプログラムの短い郚分を曞くこずができるこずに気付きたした。 その埌すぐに、コンピュヌタヌでシンボリックメモリアドレスを䜿甚するずいうアむデアが生たれたした。これは、叀いプログラマヌにずっお本圓の異端でした。 今、あなたはその叀い英雄的な絶察プログラミングを芋るこずはありたせんあなたが圌に圌のデザむナヌずビルダヌが今たで蚈画しおいた以䞊のこずをさせようずしおいる間にプログラム可胜なコンピュヌタヌにだたされおいない限り。



Bell Telephone Laboratoriesの女性プログラマヌの助けを借りお、1幎を過ごし、IBM 701を絶察バむナリ蚀語でコヌディングするずいう倧きな問題に取り組みたした。圓時は利甚可胜な32Kレゞスタを䜿甚しおいたした。 そのような経隓の埌、私は誰にも二床ずそのようなこずをするよう決しお頌たないず誓った。 IBMのポキプシヌの町でシンボリックシステムに぀いお孊んだ埌、私は女性にこのシンボリックシステムを取り、それを䜿っお次の問題を解決するように頌みたす。 予想通り、女性は仕事がずっず簡単になったず蚀った。 したがっお、私たちは党員に新しい方法に぀いお話したした-このマシンが立っおいたIBMオフィスのカフェテリアで食べたのは玄100人だけでした。 それらの玄半分はIBMの人々で、残りの半分は私たちず同様に郚倖者に雇われおいたした。 私の知る限り、たった1人-はい、100人䞭1人だけが興味を瀺したした



最埌に、より完党で有甚なシンボリックアセンブリプログラムSAPが開発されたした。これは、あなたが思っおいるよりも数幎埌、ほずんどのプログラマヌがバむナリプログラミングの英雄的な旅を続けたした。 圓時、SAPが最初に登堎したずき、成熟したプログラマヌの玄1がそれに興味を持っおいるず思いたす。SAPを䜿甚するこずは「意志のため」であり、実際のプログラマヌはSAPを䜿甚しおプログラムを構築するためにマシンのパワヌを無駄にしないでしょう。 はい プログラマヌはこれを認めたくありたせんでしたが、圌らに圧力をかけるず、圌らの叀いプログラミング方法は、SAPプログラムを䜿甚した堎合よりもはるかに倚くのマシン時間を䜿甚し、゚ラヌを芋぀けお修正するのに時間がかかるこずを認識したした SAPに関する䞻な䞍満の1぀は、メモリ内の情報のアドレスがわからないシンボリックシステムの䜿甚でした。 初期には実際のストレヌゞぞのシンボリックリンクを衚瀺するためのスキヌムを提䟛しおいたしたが、信じられないかもしれたせんが、プログラマは仕事で問題が発生した堎合にこの情報を知る必芁がなくなったこずに気づかずに、埌でこれらのスキヌムを愛で芋たしたシステムに しかし、゚ラヌを修正しおいる間、圌らはただアドレスのバむナリ衚珟でこれを行うこずを奜みたした。



FORmula TRANslationを意味するFORTRANは、Backusず友人によっお提案され、再び圌はほずんどすべおのプログラマヌに反察されたした。 最初に、圌らはそのような蚀語を䜜成するこずは䞍可胜だず蚀った。 第二に、それができれば、マシンの時間ずパワヌにずっお無駄になりすぎたす。 第䞉に、たずえそのようなシステムのアむデアが機胜したずしおも、尊敬されるプログラマヌはそれを䜿甚したせん-結局のずころ、そのようなこずを扱うこずができるのはシシだけです



FORTRANの䜿甚は、以前のシンボリックプログラミングのように、専門家が理解するのは非垞に困難でした。 そしお、そのような行動はほずんどすべおの専門家グルヌプの特城です。 医垫は他の人に䞎えるアドバむスに埓わず、その䞭でも薬物䞭毒者の割合が高い。 匁護士はしばしば、死ぬずきにたずもな意志を残さない。 ほずんどすべおの専門家は、ゆっくりず自分の経隓を仕事に䜿いたす。 この状況は、「ブヌツのない靎屋」ずいう叀い栌蚀でよく説明されおいたす。 真剣な専門家になったずきに、将来このような兞型的な間違いをどのように回避するかを考えおください



FORTRANにアクセスできるので、次のようにそれを䜿甚しお䜜業を構築したした。FORTRANで䜜業するようにプログラマヌに指瀺したした。 ゜フトりェア゚ラヌの分析。 このプログラムをチェックしお、問題が正しく解決されるこずを確認しおください。 この堎合にのみ、圌女は、必芁に応じお、䜜業プログラムの内郚サむクルを機械語で曞き盎しお、䜜業を高速化し、機械時間を節玄できたした。 その結果、私たちは、ほが同じリタヌンで、他のほが10倍の䜜業を行うこずができたした。 ただし、残りの郚分では、FORTRANでのプログラミングは実際のプログラマヌ向けではありたせんでした



物理的に、私たちが撮圱したニュヌペヌクのIBM本瀟でIBM 701を管理するこずはひどいものでした。 これは機械時間圓時は1時間あたり300ドルでしたが、それはかなりの時間ず人間の時間の無駄でした。 その結果、最初のIBM 709甚に誰かが䜜成した監芖システムをどこで入手できるかがわかり、それをIBM 7096甚に倉曎するたで、倧型マシンの泚文を拒吊したした。



繰り返したすが、最近「監芖システム」ず呌ばれるこずの倚いモニタヌは、前述したすべおのこずず同様に、毎日コンピュヌタヌを䜿甚するすべおの人にずっお明らかな買収になるはずです。 しかし、ほずんどのナヌザヌは、すべおがどれほど悪いのか、さたざたなものをより簡単か぀安䟡に䜿甚できるようにするためにコンピュヌタヌがどれだけできるのかを考えるのに忙しすぎたようです。 明らかなこずは、仕事を䞭断しおいる人、たたは自分のようなこずや、なぜこの仕事が必芁なのかを考え、疑問に思う私のような人によっおしばしば気づかれたす。 高霢者は、おそらく過去に誇りを持ち、長い間䜿甚しおきた方法よりも良い方法があるこずを認めたくないために、慣れたたたで孊習しお働くでしょう。



゜フトりェアの歎史の䞭で起こったこずを説明する1぀の方法は、絶察マシンから仮想マシンに埐々に移行するこずです。 たず、実際のコヌド呜什を削陀し、次に実際のアドレスを削陀し、次にFORTRANで、耇雑なコンピュヌタヌの倚くの内郚コンポヌネントずその動䜜を調査する必芁性を取り陀きたした。 私たちは車のナヌザヌを車自䜓から䜜りたした。



Bell Telephone Laboratoriesのかなり早い段階で、テヌプデバむスを仮想化しお、マシン自䜓から独立させたデバむスを構築したした。 そしお、完党な仮想マシンを所有しおいる堎合にのみ、無限の問題や゚ラヌなしで、あるマシンから別のマシンに゜フトりェアを転送できたす。



FORTRANは信じられないほどの成功を収めたした。圌の名前が意味するずおりのこずをしおいるずいう心理孊的な事実により、誰よりもはるかに成功しおいたした。圌は孊校で孊んだこずすべおを定型匏に翻蚳したした。 そしお、これは新しい考え方のセットの研究を必芁ずしたせんでした。



1958幎から1960幎頃のAlgolは、ACMを含む䞖界䞭の倚くのコンピュヌタヌ組織によっおサポヌトされおいたした。 これは、FORTRANを倧幅に改善しようずする理論家の詊みでした。 しかし、論理孊者である圌らは、人間の蚀語ではなく論理的な蚀語を䜜成したした。もちろん、ご存知のように、この実隓は倱敗したした。 ちなみに、これはブヌル論理に起因するものであり、単なる定呜のものそしおしばしば論理孊者自身でさえには理解されおいたせん。 パむオニアのFORTRANを眮き換えるはずの倚くの他の開発された論理蚀語が出入りしたしたが、FORTRANやや修正されたは、ロゞックを考慮しお開発された蚀語よりも心理孊を考慮しお開発された蚀語の力を明確に瀺す広く䜿甚されおいる蚀語のたたです。



これが、問題指向蚀語を意味するPOLである特殊蚀語の倧きな垌望の始たりでした。 このアむデアにはある皋床のメリットがありたすが、熱意はすぐに消えたした。耇数の地域で倚くの問題が発生し、蚀語が原則ずしお互換性がないこずが刀明したためです。 さらに、長い目で芋れば、十分なレベルの人々のトレヌニングの段階では、それらは耇雑すぎたした。



1962幎に、LISP蚀語が登堎したした。 さたざたなうわさが圌が実際にどのように登堎したかに぀いお回芧されたした。おそらく真実はこれですゞョン・マッカヌシヌは理論的な目的のために蚀語芁玠を提案したした。 この提案は他の人々によっお考慮され、倧幅に改蚂されたした。ある孊生が、簡単な自己コンパむルトリックを䜿甚しおLISPでこの蚀語のコンパむラを曞くこずができるこずに気づいたずき、明らかに、McCarthy自身。 圌は孊生にこれを詊しおみるように勧め、ほが䞀晩で圌らは理論から本物のLISPコンパむラに切り替えたした



䜙談ですが、IBM 650での私の経隓に぀いおお話ししたしょう。これは、固定10進数で機胜する2アドレスドラムマシンでした。 過去の研究経隓から、浮動小数点数別の蚀い方をすればフォンノむマンアヌキテクチャが必芁であり、提䟛されたマシンにはないむンデックスレゞスタが必芁であるこずがわかりたした。 IBMはい぀の日か、圌らが蚀ったように、浮動小数点ルヌチンを提䟛するでしょうが、それは私にずっお十分ではありたせんでした。 EDSACプログラミングゞャヌナルを芋お、付録Dに、小さなリポゞトリで倧きなプログラムをホストするために曞かれた特別なプログラムがありたした。 通蚳でした。 しかし、付録Dにある堎合、圌らはこのプログラムの重芁性を認識したしたか 私はそれを疑いたす さらに、第2版では、圌はただ付録Dに存圚しおいたしたが、明らかに著者によっおただ認識されおいたせん。



これはい質問を提起したすい぀䜕かが理解され始めるのですか はい、1぀のプログラムを䜜成しお䜿甚したしたが、むンタプリタずコンパむラの普遍性を理解しおいたしたか 私はそうは思いたせん。同様に、私たちの倚くが、コンピュヌタヌが実際に数字を凊理するように蚭蚈された機械だけでなく、文字を操䜜する機械であるこずに気づいたずきも同様でした。私たちは歩き回り、このアむデアに぀いお話し合いたした。これを蚀ったずき、人々が頭をうなずくようにうなずいおいるのを芋たしたが、私は圌らのほずんどが蚀われたこずを理解しおいないこずにも気付きたした。もちろん、Turing1937の元の蚘事は、コンピュヌタヌが蚘号を操䜜するための機械であるこずを明確に瀺しおいたず蚀うこずができたすが、フォンノむマンのレポヌトを泚意深く読み盎すず、著者はこれを理解しおいないこずに気付くかもしれたせん。゜ヌト手順。



歎史は同様の䟋で非垞に寛倧です。これは、初めお䜕かをするずきに䜕かが意味するこずを明確にしたす。しかし、賢明なこずわざがありたす「䜕か新しいこずを発芋したほずんどの人は、フォロワヌのようにこの知識を本圓に理解しおいたせん。」この声明の蚌拠は、残念ながらあたりにも有名です。物理孊では、重芁なこずの䜜成者は誰も圌が䜕をしたかを完党に理解しおいないず蚀われおいたした。



アむンシュタむンの盞察性理論は、埌の評論家によっおのみ明確に理解されたした。そしお、私の友人の少なくずも䞀人が私の埌ろに蚀った「ハミングぱラヌ修正コヌドを理解しおいないようだ」圌はおそらく正しい。私は圌ず同じくらいはっきりず思い぀いたこずがわかりたせん。これが頻繁に発生する理由は、クリ゚むタヌがそのような暗い困難に察凊し、知識の扉が開いおその埌の理解ぞの道を明るくするこずができないほど倚くの誀解や混乱を乗り越えなければならないためです簡単になりたす。発明者は倚くの堎合、自分が発明したものに぀いお非垞に限られたアむデアしか持たないこずを芚えおおいおください。しかし、これも芚えおおいおくださいあなた自身がいく぀かの玠晎らしい新しいアむデアの著者であるずき;すぐにあなたにも圓おはたるかもしれたせん。圌は私たちの珟代䞖界の創造に重芁な圹割を果たしたしたが、ニュヌトンは叀代人の最埌であり、圌の同時代人の最初ではないず以前に蚀われたした。



IBM 650ず私に戻りたしょう。私は1956幎頃蚀語を開発するための次の4぀のルヌルから始めたした



。

2.䜿いやすい。

3.デバッグが簡単゚ラヌの怜出ず修正。

4.䜿いやすいルヌチン。



最埌の点は今では気にしないはずです。なぜなら、圓時は「オヌプン」ルヌチンず「クロヌズ」ルヌチンを区別しおいたためです。



私はトップダりン方匏のプログラミングに関䞎しおいるず䞻匵するこずができたすが、すぐにコヌドの有効性をテストするために内郚ルヌプの詳现を曞きプログラミングのボトムアップ方匏、その埌、ダりンアプロヌチを再開したした、哲孊的アプロヌチ。したがっお、ダりンストリヌムプログラミングは良いアプロヌチであるず考えおいたすが、アップストリヌムプログラミングも時々必芁であるこずを明確に認識しおいたす。



浮動小数点数で動䜜する3アドレスマシンのように、固定小数点数で動䜜する2アドレスマシンを䜜成したした-それが私の目暙でした-操䜜B = C.マシンの10桁の10進数を䜿甚したしたこれで䜜業したいのは10進数のコンピュヌタヌでした兞型的なナヌザヌマシンずしお



画像



どうやっおやったの簡単私は想像しお次のサむクルを曞きたした図4.Iたず、珟圚のアドレスのレゞスタであるCARが必芁でした。このために、この情報を保存するために2000 IBM 650コンピュヌタレゞスタの1぀を割り圓おたした。次に、次の手順を䜿甚しおプログラムを䜜成したした。 1CARを䜿甚しお、䜜成されたプログラムの次の呜什の読み取りアドレスを芋぀けたす。 2プログラム実行呜什を匷調衚瀺し、IBM650メモリヌの適切なセルに3぀のアドレスA、B、およびCを保管したす。 3固定定数を操䜜に远加し、そのストレヌゞアドレスに移動したす。そこでは、各呜什に察しお、察応する操䜜を説明するサブルヌチンが必芁です。あなたは私が10の可胜な操䜜しか持っおいないず思うかもしれたせんが、3぀のアドレスで4぀の可胜な操䜜しかありたせん加算、枛算、乗算、陀算。だからnullコマンドを䜿甚したした。これは、「アドレスBに移動しお、さらに必芁な情報を芋぀ける」こずを意味したした。各サブルヌチンは、終了するず、ルヌプ内の指定された堎所に制埡を移したした4マシンず同じように、CARレゞスタの内容に1を远加し、いく぀かのパラメヌタヌを倉曎しお、次にログむンしたす。もちろん、ゞャンプ呜什芚えおいる限りでは7぀ありたしたは、CARにアドレスを入れ、CARレゞスタの内容にナニットを远加した埌にのみ、ルヌプ内のその堎所に転送されたす。車はどうやっおそれをしたすか。もちろん、ゞャンプ呜什芚えおいる限りでは7぀ありたしたは、CARにアドレスを入れ、CARレゞスタの内容にナニットを远加した埌にのみ、ルヌプ内のその堎所に転送されたす。車はどうやっおそれをしたすか。もちろん、ゞャンプ呜什芚えおいる限りでは7぀ありたしたは、CARにアドレスを入れ、CARレゞスタの内容にナニットを远加した埌にのみ、ルヌプ内のその堎所に転送されたす。



プロセスを研究するず、どのような意味で指瀺を出したいずしおも、それは指瀺の数に応じお曞かれたルヌチンから埗られるべきであるこずがわかりたす。これらのルヌチンは、プログラミング蚀語の意味を定矩したす。この単玔なケヌスでは、各呜什は他の呜什ずは独立しお独自の意味を持ちたしたが、もちろん、䞀郚の呜什はスむッチ、フラグ、たたは他のビットを蚭定できるため、埌に実行される呜什はこの情報を認識し、さたざたな方法で解釈されたす。したがっお、目的を䞀意に決定できれば、どの蚀語を開発する必芁があるかを理解できたす。目的を理解するこずは、マシンの蚀語の特定の蚘述を超えお、特定のマシンを他のマシンに倉えたす。



画像



もちろん、これはたさにチュヌリングがナニバヌサルチュヌリングマシンで行ったこずです。しかし、䞊蚘のように、このマシンの目的は、人々が䜿い始めるたで完党には理解されおいたせんでした。



私が䜜成した゜フトりェアシステムは、1000〜1999のストレヌゞレゞスタに配眮されたした。



したがっお、3桁の10進数しか持たない合成蚀語で蚘述されたプログラムは、000〜999のアドレスのみを参照でき、゜フトりェア内の他のレゞスタは参照できたせんでした提䟛し、それによっおそれを曞き換えたす。このシステムは、ナヌザヌから゜フトりェアを保護するために蚭蚈されたした。



私たちは通垞、機械語のラッパヌずしお蚀語を蚘述し、思考を衚珟するために䜿甚したい蚀語を機械に远加するたで、いく぀かのより高レベルの蚀語を重ねお曞くこずもできるため、このトピックを詳现に調べたした。各段階でむンタヌプリタヌを䜿甚する堎合、もちろん、これらの操䜜は効果的ではありたせん。高レベル蚀語によるコンパむラの䜿甚は、最高レベルの蚀語が䜎レベル蚀語の1぀に翻蚳されるこずを意味したすが、ある皋床のレベルではむンタヌプリタヌを匕き続き芳察できたす。これは、EDSACの堎合のように、原則ずしお、曞かれたプログラムの収益の増加ずそのストレヌゞの改善も意味したす。



論理蚀語ず心理蚀語を曞くこずの違いをもう䞀床指摘したいず思いたす。残念なこずに、論理指向のプログラマヌはめったに人間指向ではなく、論理蚀語を䜿甚したり賞賛したりする傟向がありたす。おそらく、この願望の絶察的な䟋はAPLです。論理的には、APLは優れた蚀語であり、今日たで熱烈なファンがいたすが、普通の人にはたったく䞍適切です。この蚀語のナヌザヌは、倚くの堎合、プレヌダヌに1行のコヌドが䞎えられる「1行」ゲヌムをプレむし、圌はそれが䜕を実行するのかを尋ねたす。この蚀語の専門家でさえ、プログラムのいく぀かのバヌゞョンに答えるこずができないこずがよく知られおいたす。



APLの1文字を倉曎するず、プログラムの意味が完党に倉曎される可胜性があるため、蚀語にはほずんど冗長性がありたせん。しかし、人々は信頌できず、冗長性を芁求したす。話されおいる蚀語は玄60冗長であり、曞き蚀葉は玄40冗長です。おそらく、曞き蚀葉ず話し蚀葉は同じだず思うかもしれたせんが、間違いです。この違いを確認するには、ダむアログを䜜成しおから読み、それがどのように聞こえるかを詊しおください。そのような察話を正しく聞こえるように曞くこずはほずんど誰もできず、たずえ察話が正しく聞こえおも、それはただ話された蚀語ではありたせん。



人は信頌できないので、私はこれを䞻匵し続けたす。したがっお、冗長性が䜎いず倚くの゚ラヌが怜出されず、冗長性が高いず゚ラヌを怜出できたす。音声蚀語はすべおのノむズを䌎う音響チャンネルであり、蚀語はその堎でキャッチする必芁がありたす。曞かれた蚀語が印刷されたす。䜜成者の蚀葉の意味をより深く理解するために、䞀時停止したり、読んだテキストをスキャンしたり、他のこずをしたりできたす。英語では、倚くの堎合、異なる単語は同じ音ず異なるスペルたずえば、 "there"ず "their"を持ち、同じスペルず異なる音 "record" " を名詞たたは動詞ずしお、「涙」目の涙、vsドレスの涙目の涙、ドレスの隙間。このように蚀語は人にどれだけ合っおいるかで刀断する必芁がありたす。そしお、孊校での蚀語の孊習方法も考慮に入れおいたす。それ以倖の堎合は、倚くの時間を費やしお、䜿甚する新しい蚀語を人々に教える準備が必芁です。プログラマにずっお蚀語が単玔であるずいう事実は、玠人にずっおも同じくらい単玔であるこずを意味するものではなく、近い将来、ほずんどの人がコンピュヌタヌプログラミングの倧郚分を行うようになりたす必芁に応じおコヌディングを行いたす。そしお近い将来、ほずんどの人がコンピュヌタヌプログラミングの倧郚分を行うようになるでしょう必芁に応じおコヌディングを行いたす。そしお近い将来、ほずんどの人がコンピュヌタヌプログラミングの倧郚分を行うようになるでしょう必芁に応じおコヌディングを行いたす。



もちろん、最終的には、問題を抱えおいる人が専門コンピュヌタヌの圢のむンタヌフェヌスなしでそれを解決できる解決策が必芁です。しかし、今日では、問題だけを知っおいる人ずプログラミング蚀語だけを知っおいる人がいる状況を芳察するこずはあたりにも頻繁に可胜です。残念ながら、このむベントの予枬日は遠すぎたすが、2020幎たでに、実際の分野の専門家にずっおは、この分野のコンピュヌタヌの専門家実際の分野の専門家ではないがいなくおも、仕事のためにプログラムを準備するこずは非垞に普遍的なプラクティスになるず思いたすビゞネス。



残念なこずに、少なくずも私の意芋では、ADA蚀語は専門家によっお開発されたものであり、期埅できる非人間論理機胜の完党なセットを備えおいたす。私の意芋では、この補品はコンピュヌタヌサむ゚ンスのハッキングにおける兞型的な仕事です。あなたがしおいるこずを理解しようずするのではなく、単にこのこずを機胜させるためです。 ADAの心理的蚭蚈が貧匱だったため、政府機関は顧客にADAでプログラムを曞くこずを芁求しおいるが、プログラムの90以䞊がFORTRANずその埌、手䜜業で苊劎しおADAの゚ラヌコンテンツが倚いプログラムに曞き換えられたす。



蚀語の基瀎は今日たで理解されおいたせん。 1950幎代初期のどこかで、私は圓時の地元の自然蚀語の専門家䞀般の人々によるを連れおIBM 701を蚪問し、デザヌトの昌食時に次のように述べたした。 「。圌は単にこの質問を理解できず、特定の蚀語が耇数の単語をどのように圢成するか、遞択された単語の䞭倮を䜿甚しお、蚀語の特城などを教え続けたした。私が知りたいこず-コミュニケヌションのための効果的な蚀語を開発するこずは可胜ですか独自の蚀語を開発できる堎合、コミュニケヌションの䞀方には欠点がすべおあり、他方には信頌性の高い機械がありたす圌らは圌女に蚀うが、それ以䞊は䜕もしない。知りたいこれらの蚀語に必芁な冗長性の割合。その蚀語で䞍芏則で芏則的な動詞が芋぀かる頻床。反意語ず同矩語の割合は䜕パヌセントですか。蚀語に特定の単語数しかない理由;コミュニケヌションチャネルを効果的に圧瞮し、蚀語の冗長性などの芳点から人が䜿甚するのに適した蚀語を残す方法。前述したように、圌は蚀語の工孊効率に関する私の質問を理解せず、それ以来、倚くの研究を芋おいたせんこの゚リアで。しかし、これらのこずを本圓に理解するたで、もし合理的であれば、既存の自然蚀語は長い進化を遂げ、これを理解するたで人々にずっお理想的であるず考えるたで、人間ず機械のコミュニケヌションのための人工蚀語を䜜成するこずはできたせん。そのため、自然蚀語を介した人間のコミュニケヌションを理解する方法には倚くのトラブルが予想されたす。



もちろん、人間ず機械のコミュニケヌションの問題は、人間ず人間のコミュニケヌションずは倧きく異なりたすが、それらがどのように、たたどの皋床異なるかはただわかりたせん。



人々が話す蚀語をよりよく理解できるようになるたでたたは、簡単に蚓緎できるようになるたで、この堎合、゜フトりェアの問題の倚くがなくなるこずはほずんどありたせん。



少し前、「第5䞖代」のコンピュヌタヌが導入されたずき、日本人はAIず組み合わせお䜿甚​​しお、マシンず人の間のより良いむンタヌフェヌスを取埗するこずを蚈画しおいたした。車ず蚀語の䞡方に倧きな䞻匵がなされたした。その結果、宣䌝されおいるマシンが登堎し、゚ンゞニアはAIを䜿甚しおプログラミングを支揎するために描画ボヌドに戻りたした。このこずは、ロス・アラモスの堎合、圓時予枬したように、日本人が䞊蚘の工孊的な意味で蚀語の基瀎を理解しようずしおいるのを芋なかったために起こりたした。 「゜フトりェアの問題」を枛らすためにできるこずはたくさんありたすが、人の間や人ず機械の間の通信に䜿甚される蚀語を理解する方法に぀いお基本的な理解が必芁です。この費甚のかかる問題に察しお本圓にたずもな解決策を埗る前に。そしお、この問題は消えたせん。



生産効率ず補品の信頌性の䞡方に぀いお、「゜フトりェア補品開発」に぀いお垞に読みたす。しかし、あなたは小説家が「小説の制䜜を蚭蚈する」こずを期埅しおいたせん。疑問が生じたす「プログラミングは叀兞的な工孊よりも曞くこずに近いですか」はい宇宙ぞの人間の䟵入の問題を考えるず、ロシア人もアメリカ人も、すべおの状況を考慮しお、この目暙をほが同じように実珟し、ある皮のスパむ行為を蚱可したした。それらは同じ物理法則によっお制限されおいたした。しかし、2人の小説家に「人間の偉倧さず貧困に぀いお」曞く仕事を䞎えれば、おそらく2぀の完党に異なる小説を手に入れるでしょう違いをどのように枬定するかに぀いおも蚀及せずに。同じ耇雑な問題を珟代の2人のプログラマヌに䞎えおください。2぀の完党に異なるプログラムを取埗したす。したがっお、珟代のプログラミングぱンゞニアリングよりも執筆に近いず思いたす。小説家は圌らの空想によっおのみ瞛られたす。それは゜フトりェアを曞くプログラマヌにも圓おはたりたす。䞡方のアクションには優れた創造的なコンポヌネントが必芁です。プログラミング゚ンゞニアリングを行いたい堎合、この目暙を実珟するのに倚くの時間が必芁になりたす。たぶんそれはすべおいい音かもしれたせん。今埌数幎間で、これに぀いお倚くを考える必芁がありたす。あなたは今、それを今始めるこずができ、あなたが聞くプロパガンダ、そしおこの地域に来た倢想家を信じないでくださいコンピュヌタヌ甚のナヌティリティの䜜成は非垞に頻繁に行われ、範囲は非垞に限られおいたすが、したがっお、この分野は「゚ンゞニアリング」になるず予想されたすが、仕事甚の゜フトりェアの䞀般的な準備が䜕幎もの間「゚ンゞニアリング制埡」䞋にあるこずはほずんどありたせん。



プログラマヌの個人およびグルヌプの䞡方のパフォヌマンスを改善する方法に関する倚くの提案がありたす。䞊向きず䞋向きのデザむンに぀いおはすでに述べたした。プログラムが数孊的な意味で正しいこずを蚌明するメむンプログラマヌ、リヌディングプログラマヌの立堎を䜿甚する他のアプロヌチがありたす階局蚭蚈アプロヌチを意味したす。プログラミングりォヌタヌフォヌルモデルは、そのようなアプロヌチの1぀です。それぞれにメリットがありたすが、ほずんど蚀及されおいないものだけを信じおいたす。 「プログラムを曞く前に考えおください」ず呌ぶこずができたす。プログラミングを開始する前に、プログラムがどのテストに合栌する必芁があるか、プログラムのその埌のメンテナンスがどのように実行されるかなど、すべおの詳现に぀いお慎重に怜蚎しおください。最初は正しい決定生成されたコヌドに倉曎を加えるよりも



プログラミングでは、次の問題が発生するこずがよくありたす。プログラミングでは、説明が䞍十分なタスクを扱うこずが倚く、プログラミングプロセス䞭に、実際にどのような問題に取り組んでいるかが埐々に明らかになりたす。プログラミングを開始する前に特定の問題を明確に尋ねられるずいう芁望は珟実ず䞀臎しないこずが倚いため、゜リュヌションアルゎリズムが非垞に厳密に蚘述されおいる堎合、「プログラミングを䜿甚した短期的な問題の解決」に関する珟圚の提案の倚くは倱敗したす。



高レベルのプログラミング蚀語の䜿甚は、倧きな進歩を意味しおいたす。 30幎間の改善指暙の1぀を次に瀺したす。



画像



したがっお、プログラマの生産性が30幎で90倍に向䞊したこずがわかりたすこれは16の改善にすぎたせん。これは䞀人の想定であり、少なくずも信じられたす。しかし、機械の開発ず比范しお-これは単なる些现なこずです人々は人々が同じペヌスで成長できるこずを望んでいたすが、この堎合、ボトルネックは人自身であり、私たちがそうなりたいずいう意味で管理するこずはできたせん。



倚くの研究は、プログラマヌが最悪から最高たで10倍以䞊生産的であるこずを瀺しおいたす。このこずから、私はずっず前に、優れたプログラマヌに非垞に良いお金を払うこずが最善のポリシヌであるずいう結論に達したしたが、定期的に質の悪いプログラマヌを定期的に华䞋したす。



もちろん、1぀の方法は、定期的にではなく契玄ベヌスでそれらを雇うこずですが、この慣行は法埋に反しおおり、最悪の堎合でも特定の仕事で働くこずを保蚌するこずになっおいたす。実際には、貧しい埓業員に絊料を支払っお自宅に座らせるこずは、より有胜な人々の仕事を邪魔しないようにする方がはるかに有益ですそしお、私は今絶察に真剣です



珟圚、ニュヌラルネットワヌクをシミュレヌトするためにデゞタルコンピュヌタヌが広く䜿甚されおおり、コンピュヌティング分野で同様のデバむスがたすたす䜿甚されおいたす。ニュヌラルネットワヌクは、慣れおいない堎合、䞀連の入力デヌタを䞎えたずきに結果を取埗し、正確な蚈算方法を蚀うこずなく、蚱容できる品質の出力デヌタを取埗するこずを孊習できたす。たた、これらのオブゞェクトをグルヌプ化たたは怜玢する方法に関する最初の指瀺を受け取るこずなく、オブゞェクトをクラスにグルヌプ化できたす。圌らは、単玔なフィヌドバックの助けを借りお孊習したす。これは、入力出力が入力に基づいお正しい答えを䞎えない堎合に来る情報を䜿甚したす。ある意味では、ニュヌラルネットワヌクは「プログラミングの問題」の解決策です。構築されおいるため、実際にはたったくプログラミングされおいないため、それでも、倚くの問題を十分に解決できたす。これは発展途䞊の分野であり、この本ではスキップしなければなりたせんが、おそらくコンピュヌタヌの将来に倧きな圹割を果たすでしょう。ある意味では、これらは耇数のパラメヌタを遞択しお倧量のデヌタを提䟛する際の幅広い皮類の問題を解決するための「ハヌドワむダヌド」コンピュヌタ単なるプログラムである可胜性がありたすです。



ニュヌラルネットワヌクのもう1぀の芋方は、かなり䞀般的なクラスの堅牢なフィヌドバックシステムです。あなたの意芋では、デヌタを正しく説明するレビュヌのタむプず数を遞択するず、ニュヌラルネットワヌクフィヌドバックシステムが独立しおこの決定を䞋したす。繰り返したすが、これにより、少なくずもコンピュヌタヌ䞊の蚘述されたニュヌラルネットワヌクの堎合、倚くのプログラミングが回避されたす。䞀般的な問題を解決するプログラムを䜜成したら、ニュヌラルネットワヌクを䜿甚しお、䞀般的なプログラムを䜿甚しお解決できるさたざたな問題を解決できたす。プログラマヌは、ニュヌラルネットワヌクを機胜させる以䞊のこずを行うこずはほずんどありたせん。



ただし、プログラミングにおける同様の䞀般的なプログラムは珟圚知られおいないため、これらの䞀般的なプログラムは「プログラミングの問題」の解決策ずしお考えられるかもしれたせん。



ハヌドりェアの章では、分子のサむズ、光の速床、熱の陀去など、いく぀かの制限に぀いお慎重に説明したした。ここで、倚かれ少なかれ゜フトりェアの制限を芁玄する必芁がありたす。



゜フトりェアを曞くこずず文孊を曞くこずの行為を比范したした。どちらも明確な思考に䟝存しおいるようです。良いプログラミングを教えるこずは可胜ですか 「創造的なラむティング」のコヌスで察応する教えを芋るず、そのようなコヌスの孊生のほずんどは偉倧な䜜家にはならず、過去の偉倧な䜜家は創造的なラむティングコヌスに埓事しおいたせんでしたしたがっお、優秀なプログラマヌを簡単にトレヌニングできるかどうかは非垞に疑わしいです。



経隓は圹立ちたすか官僚は、長幎にわたる報告曞や指瀺曞を曞いた埌、圌らの仕事を芋方を倉えるこずができたすか実際のデヌタはありたせんが、時間が経぀に぀れお、これらの手順は悪化するだけだず思いたす 「政府文曞の蚀語」の長幎の通垞の䜿甚は、おそらく官僚の執筆スタむルに浞透し、それらを悪化させたす。そしお、プログラマヌにも同じこずが埅っおいるず思いたす長幎の経隓も、䜿甚されおいる蚀語の数も、この経隓のおかげでプログラマヌが良くなったずいう事実を受け入れる根拠にはなりたせん。プログラミングの本を孊ぶずき、明らかな結論は、ほずんどの著者が優れたプログラマヌではないずいうこずです



私があなたに提瀺する結果は非垞に䞍愉快ですが、あなたがする必芁があるのは垌望的芳枬だけではありたせん。私があなたに蚀っおいるこずを信じおください-プログラミングの長幎の経隓は私の偎にありたす



継続するには...



誰が翻蚳を手䌝いたいのか-個人のメヌルたたはメヌルに蚘入しおくださいmagisterludi2016@yandex.ru



本の内容ず翻蚳された章
  1. 科孊ず工孊を行う技術の玹介孊ぶこずを孊ぶ1995幎3月28日 準備䞭
  2. 「デゞタル離散革呜の基瀎 」1995幎3月30日 第2章デゞタル離散革呜の基瀎
  3. コンピュヌタヌの歎史-ハヌドりェア1995幎3月31日 䜜業䞭
  4. コンピュヌタヌの歎史-゜フトりェア1995幎4月4日が完了したした
  5. コンピュヌタヌの歎史-アプリケヌション1995幎4月6日 䜜業䞭
  6. 「人工知胜-パヌトI」1995幎4月7日 䜜業䞭
  7. 人工知胜-パヌトII1995幎4月11日 䜜業䞭
  8. 人工知胜III1995幎4月13日 䜜業䞭
  9. 「N次元空間」1995幎4月14日 第9ç« N次元空間
  10. 「コヌディング理論-情報の衚珟、パヌトI」1995幎4月18日 in
  11. 「コヌディング理論-情報の衚珟、パヌトII」1995幎4月20日
  12. 「゚ラヌ修正コヌド」1995幎4月21日 䜜業䞭
  13. 情報理論1995幎4月25日 仕事䞭、Alexey Gorgurov
  14. デゞタルフィルタヌ、パヌトI1995幎4月27日が完了したした
  15. デゞタルフィルタヌ、パヌトII1995幎4月28日
  16. デゞタルフィルタヌ、パヌトIII1995幎5月2日
  17. デゞタルフィルタヌ、パヌトIV1995幎5月4日
  18. 「シミュレヌション、パヌトI」1995幎5月5日 䜜業䞭
  19. 「シミュレヌション、パヌトII」1995幎5月9日 準備完了
  20. 「シミュレヌション、パヌトIII」1995幎5月11日
  21. 䜜業䞭の光ファむバヌ1995幎5月12日
  22. コンピュヌタヌ支揎指導1995幎5月16日 䜜業䞭
  23. 数孊1995幎5月18日 第23ç« æ•°å­Š
  24. 量子力孊1995幎5月19日 第24章量子力孊
  25. 創造性1995幎5月23日。 翻蚳 第25章。創造性
  26. 「゚キスパヌト」1995幎5月25日 第26章゚キスパヌト
  27. 「信頌できないデヌタ」1995幎5月26日 䜜業䞭
  28. システム工孊1995幎5月30日 第28章システム工孊
  29. 「枬定するものを取埗する」1995幎6月1日 䜜業䞭
  30. 「私たちが知っおいるこずをどうやっお知るか」1995幎6月2日
  31. ハミング、「あなたずあなたの研究」1995幎6月6日。 翻蚳あなたずあなたの仕事




誰が翻蚳を手䌝いたいのか-個人のメヌルたたはメヌルに蚘入しおくださいmagisterludi2016@yandex.ru






All Articles