Edsger Dijkstra意識的なプログラミングぞの「最短の方法」を求めお

画像

abv24.comからの画像



シャヌマニズムから科孊ぞのプログラミングの倉容に関連した名前を持぀人々の1人は、゚ドガヌダむクストラです。 圌は、プログラミングは高床な芞術であり、知的創造性であるず䞻匵するこずに倱敗したした。



圌のすべおの研究においお、ダむクストラは数孊的掚論の単玔さず優雅さを非垞に重芖しおいたす。 圌の䜜品を曞くずき、圌は新しいスタむルの科孊技術コミュニケヌションを䜜成したした。



プログラミングは、パスや呪文のセットではなく、シャヌマニズムではなく、タンバリンで螊るのではなく、数孊的蚓緎です。 そしお、倖郚の効果以䞊のものであるず䞻匵する分野は、匷固な基盀の䞊に構築されるべきです。 ダむクストラのこのような基盀は、数孊的論理、たたはむしろ述語蚈算です。



今ではこれは珍しいこずではありたせんが、50幎代には啓瀺のように聞こえたした。 ダむクストラは、理論がどのように実践に圹立぀こずができるか、たたそうするべきかを理解し、説埗力をもっお瀺したした。



才胜のために



Edsger Vyb Dijkstraは、1930幎にロッテルダムオランダで生たれたした。 圌の䞡芪は教育氎準が高く、父芪は化孊者であり、母芪は数孊者でした。 1942幎、ダむクストラは12歳で、ギリシア語、ラテン語、フランス語、ドむツ語、英語、生物孊、数孊、化孊などのさたざたな科目が教えられおいる、特に才胜のある子䟛向けの孊校である゚ラスミニりムゞムナゞりムに入孊したした。



画像

balto-slavica.comからの画像



1945幎、ダむクストラは法埋を勉匷し、おそらく囜連でオランダの代衚ずしお働くこずができるず考えたした。 しかし、化孊、数孊、物理孊の研究で成功したため、圌はラむデン倧孊に入孊し、そこで理論物理孊を研究するこずにしたした。 1951幎、圌はケンブリッゞ倧孊のプログラミングのサマヌスクヌルに参加したした。



ゞレンマ



卒業する1幎前、ダむクストラはゞレンマに盎面したした。䞻な専門分野である科孊理論のキャリアを远求するこず-理論物理孊、たたはプログラミングを続けるこず-



画像

私は遞択をしなければなりたせんでした-プログラミングをやめお、立掟な理論物理孊者になるか、理論物理孊の蚓緎を最小限の劎力で正匏に完了し、誰になるか... プログラマヌ しかし、これは立掟な職業ですか 結局のずころ、プログラミングずは䜕ですか プログラミングを科孊の分野ず芋なすこずを可胜にする確かな知識は䜕でしょうか


ある日、ダむクストラは監督のノァン・りェむンガヌデンの研究宀をノックしたした。 ダむクストラが懞念しおいるこずを蟛抱匷く聞いた埌、ノァン・りィンガヌデンはプログラミング分野に起因するものはそれほど倚くないこずに同意したしたが、自動機械蚈算は短期モヌドではなく、未来は圌らにあるず静かに説明し続けたした私たちは非垞に始たりであり、誰が知っおいる -おそらく、Dijkstraは、プログラミングを名誉ある科孊分野に倉えるために呌び出されたす。 これぱドガヌ・ダむクストラの人生のタヌニングポむントであり、できるだけ早く理論物理孊の孊䜍を取埗するために必芁なすべおのコヌスを通過し、プログラミングに埓事し始めたした。



ダむクストラは1952幎3月1日に正匏に「プログラマヌ」になり、自分の囜でこれを始めた最初のオランダ人でした。 圌は、アムステルダムの数孊センタヌでアルバむトずしお働き始めたした。



霧の未来



ダむクストラは、そのような゚キゟチックな職業を遞ぶこずを本圓に危険にさらしたず蚀わなければなりたせん。 プログラマヌはほずんどいたせんでしたし、コンピュヌタヌは2぀か3ダヌスで数えられおいたした。 科孊ずしおのコンピュヌタヌサむ゚ンスの未来はあいたいでした-倚くのコンピュヌタヌサむ゚ンスを応甚数孊の分野ず芋なしたしたそしお、理由なく認めなければなりたせん。



しかし、次の数幎は、ノァン・ワむンガヌデンがミスを犯さず、才胜のある孊生、そしお埌に倧孊院生にプログラミングを遞択するこずを瀺唆したこずを瀺したした.50幎代埌半から、IBMはトランゞスタコンピュヌタヌの補造を開始したした。これにより、゚ネルギヌ消費、重量、およびコストが倧幅に削枛されたした。メモリずパフォヌマンスを保持したす。 他の䌁業は即座に撀退し、軍事研究所や科孊研究所のコンピュヌタヌが銀行、補造業、教育機関、病院、公益事業で利甚できるようになりたした。



ダむクストラのアルゎリズム



ダむクストラは、1952幎に圌が提案した「最短経路」アルゎリズムの䜜成者ずしお倚くのプログラマヌに知られおいたす。これは、Mathematical CenterにむンストヌルされたARCMACコンピュヌタヌのパフォヌマンスを評䟡するタスクに関する圌の仕事の結果ずしお登堎したした。 このアルゎリズムにより、2぀のポむント間を移動する最適なパスを芋぀けるこずができたす。



科孊者はこのアルゎリズムを䜿甚しお、ARCMACの開発゚ンゞニアが盎面した「回路のすべおの必須芁玠ぞの電流䌝送の最適経路を芋぀け、銅の消費を最小限に抑える」ずいう問題を解決したした。 圌はこのメ゜ッドを「最短ブランチを持぀ツリヌアルゎリズム」ず呌びたした。



画像

urban-sanjoo.narod.ruからの画像



ダむクストラのアルゎリズムは、今日でも広く䜿甚されおいたすたずえば、自動車や飛行機のルヌトを蚈画するずき、電子ボヌドを配線するずき、ルヌティングプロトコルで。 これは「貪欲な」アルゎリズムを指したす。぀たり、比范的小さなグラフでパスを怜玢するのに十分効果的です。



ALGOL-60



プログラミングのキャリアの初めに、マシンコヌドず、同じアルゎリズムを異なるコンピュヌタヌモデルのためにれロから曞き盎さなければならないずいう事実で決心したため、Edsger Dijkstraは、高レベルのプログラミング蚀語を理解せずにはいられたせんでした。



1950幎代埌半に登堎したFORTRANは、ダむクストラにずっおあたり魅力的ではありたせんでした。FOTRANでは、高レベル蚀語を実装し、バむナリコヌドの「呪い」からプログラマを救うために、倚くの犠牲が䞻な目暙に犠牲になりたした。 FORTRANが今日登堎した堎合、それを保持するチャンスは非垞に疑わしいず思いたす。 しかし、もちろん、FORTRANは倧きな前進でした。 しかし、ダむクストラはずにかくFORTRANが奜きではありたせんでした。この蚀語では、ダむクストラが数孊や論理で芋おいた構造の優矎さず論理が欠けおいたようです。



ALGOL-60蚀語は、調和のずれた非垞に厳栌な衚蚘法いわゆる「バッカスナりア圢匏」によっお蚘述され、その開発は、明快さ、明快さ、および蚌明可胜性ずいう固有の芁件を備えたほずんど孊術環境で行われたした。 基準は厳しく、したがっお蚀語ぱレガントであるこずが刀明したしたPL / 1、PASCAL、ADAなどのプログラミング蚀語がALGOLの圱響の明らかな痕跡を持っおいるこずは偶然ではありたせん。



ためらうこずなく、ダむクストラはコンパむラの実装を開始し、この方向での成功は圌の長幎のアむデアを裏付けたした。人間の心理孊に可胜な限り適応した「通垞の」蚀語でプログラミングする必芁がありたす。 そしおマシンコヌド-それなしではただどこにも行けないので-マシンに任せるこずができたすし、そうすべきです。



圓時のプログラミング蚀語の翻蚳で最も困難なタスクの1぀は、挔算ず括匧の優先順䜍を考慮しお算術匏をコンパむルするタスクでした。 ダむクストラは、1957幎にF. BrauerずK. Zamelzonがこの目的のために2぀のスタックを䜿甚するこずを提案したアルゎリズムを説埗力のある方法で実蚌し、簡玠化したした通垞、歊噚ストアずの類掚で「ストア」ず蚀いたした。 算術匏は、オブゞェクトコヌドの生成に非垞に䟿利な逆たたは「逆」ポヌランド衚蚘法に効果的に倉換されたした。





逆ポヌランド蚘法の䟋



ダむクストラによる過去の最倧の発明



最倧の発明の1぀は、基本的な抜象抂念の1぀を具䜓化するクロヌズドルヌチンであるず圌は信じおいたした。



ダむクストラは、FORTRANの誕生を゜フトりェアにおける2番目の倧きな成果ず呌びたした。 これは非垞に倧胆なプロゞェクトであり、成功するプログラミング手法ずしお評䟡されるべきですが、基本抂念をサポヌトする手段は非垞に限られおいたす。 最近では、この蚀語は時代遅れずみなされおいたす。 FORTRANの悲劇的な運呜は、その広たった認識の結果であり、䜕千ものプログラマヌの考えを過去の過ちに結び付けおきたした。



ダむクストラが蚀及しおいる3番目のプロゞェクトはLISPです。 LISPは、ある意味では、最も掗緎された゜フトりェア補品の倚くに基づいおいたす。 冗談めかしお、LISPは「コンピュヌタヌを悪甚する最もむンテリゞェントな方法」ず蚀われおいたした。 ダむクストラは、そのような特性は解攟の完党さを䌝えるため、倧きな賛蟞であるず信じおいたした。LISPは、倚くの才胜のあるプログラマヌの倚くが、以前は考えられなかったものに぀いお考えるのを助けたす。



4番目のプロゞェクトはALGOL-60でした。 LISPの定矩は、蚀語の意味ず動䜜の奇劙なミシュマッシュのたたですが、有名なALGOL-60アルゎリズム蚀語メッセヌゞは、次のレベルの抜象性に移行し、プログラミング蚀語を定矩する真の努力の結果です実装ずは独立しおいたす。



5人の食事哲孊者



ストレッチモヌドのオペレヌティングシステムずも呌ばれる最初のオペレヌティングシステムの開発者は、バッチモヌドですべおのコンピュヌタヌリ゜ヌスが「完党に」1぀のタスクに属しおいた堎合働いお、前䞖玀の60幎代半ばたでに非垞に重芁になったタスクにほずんど遭遇したせんでした-共有リ゜ヌスぞの耇数のプロセスのアクセスを提䟛し、プロセス間でこれらのリ゜ヌスを共有したす。 これがなければ、最も重芁なタスクである1台のコンピュヌタヌでの耇数のプロセスの同時実行を解決するこずは䞍可胜でした。 これらのアルゎリズムを䜿甚するオペレヌティングシステムでは、互いのプロセスのブロックを避けられたせんでした。



もちろん、メむンプログラムオペレヌティングシステムの動䜜のこのような䞍安定性ず予枬䞍胜性は誰にも適合したせんでした。



ダむクストラは、このテヌマに関する圌の考えを「逐次プロセスの盞互䜜甚」ずいう蚘事で最も完党に衚珟したした。 この問題を解決するために、ダむクストラは「セマフォ」の抂念を提案したした-特別な敎数共通倉数ず2぀のプリミティブ「P操䜜」および「V操䜜」。 ダむクストラ自身がこれらのプリミティブをどのように説明するかを以䞋に瀺したす。

これらの最埌の2぀の操䜜は垞にセマフォで実行され、同時に動䜜するプロセスからセマフォにアクセスする唯䞀の方法を衚したす。 セマフォは本質的に負ではない敎数です。 盞互排陀問題の解決にのみ䜿甚される堎合、それらの倀の範囲は「0」ず「1」のみです。


V操䜜は、匕数セマフォの倀を1増やすこずで構成されたす。このような増加は䞍可分な操䜜でなければなりたせん。 反察に、セマフォに適甚されるP操䜜は、セマフォの倀を1ず぀䞍可分に枛らしたす。定矩䞊、セマフォは負でない数なので、遅かれ早かれP操䜜はその倀を0に枛らしたす。P操䜜を開始したプロセス別のプロセスがこのセマフォの倀を正の領域に「シフト」するたで埅機する必芁がありたす぀たり、実際には遅延実行モヌドになりたす。 セマフォのロックを解陀したす。



これらの抂念ずそれらのさらなる開発たずえば、ミュヌテックスは、珟圚でもオペレヌティングシステムの蚭蚈ず実装に䜿甚されおいたす。



同じ幎に、Edsger Dijkstraは、マルチタスクをサポヌトするTHEオペレヌティングシステムTechnische Hogeschool Eindhovenからの䜜成を䞻導したした。 オペレヌティングシステムは、6レベルの階局で構築されたした。 同時に、より䜎いレベル0から開始がより高いレベル最倧5の基瀎ずなりたした。 初期レベルでは、割り蟌み凊理システム、セマフォ、プロセスコンテキストの切り替え、メモリ管理システム、ディスパッチャが実装されおいたした。 䞭間レベルでは、コン゜ヌル、入力/出力、およびデバむスずの盞互䜜甚が実装されたした。 最高レベルはナヌザヌプログラムを察象ずしおいたす。 その埌、このようなオペレヌティングシステムの組織モデルが広く採甚されたした。



リ゜ヌスの共有/ブロックの問題ずプロセスの盞互䜜甚を説明するために、ダむクストラはシンプルで機知に富んだモデルを提案したした。 埌にこのモデルは「5人の食事哲孊者の問題」ず名付けられたした。 Charles Hoareの声明では、次のように聞こえたす。

叀代、金持ちの慈善家の䞀人が銖郜を寄付しお、5人の有名な哲孊者に避難所を提䟛する寄宿舎を蚭立したした。 各哲孊者は、自分が思考にふけるこずができる自分の郚屋を持っおいたした。 たた、䞞いテヌブルのある共通のダむニングルヌムがあり、その呚りには5脚の怅子があり、それぞれに察象ずなる哲孊者の名前がラベル付けされおいたした...


画像

dic.academic.ruからの画像

哲孊者はほずんどの時間を考えお過ごし、空腹を感じ、食堂に行き、怅子に座っお、巊にフォヌクを取り、食事を始めたず考えられおいたした。 しかし、これはスパゲッティの耇雑な性質であり、2番目のフォヌクの助けがなければ口に持っおこられたせん。 したがっお、哲孊者はプラグを右に持っお行かなければなりたせんでした...別の哲孊者がプラグを必芁ずする堎合、圌はそれが解攟されるたで埅たなければなりたせんでした。


構造プログラミング



産業、ビゞネス、教育のすべおのセクタヌぞのコンピュヌタヌの浞透、およびこの浞透に付随しお開発される゜フトりェアの量の増加は、䞻芁な専門家の間で懞念を匕き起こしたしたプログラムはたすたす耇雑になり、たすたす倚様になりたした。 これらすべおが品質に圱響するこずはありたせんでした-急速に䜎䞋しおいたした。



゚ラヌが絊䞎蚈算プログラムにあった堎合は迷惑ですが、これは最終的に修正可胜なものです。 航空茞送制埡システムで゜フトりェア゚ラヌが怜出された堎合、それは怖いです。 そしお、原子炉の運転を制埡するためのプログラムには絶察に壊滅的な間違いがあったでしょう。



ダむクストラは、プログラムの玛らわしい構造の゚ラヌの原因を芋たした。

プログラムはそれ自䜓で終わりではないず信じおいたす。 プログラムは蚈算を呌び出すこずを目的ずしおおり、蚈算の目的は目的の結果を取埗するこずです...私たちの刀断の容易さず柔軟性は、プログラムず蚈算の間の関係の単玔さに実質的に䟝存するこずを確認したす倧たかに蚀えば、望たしいず考えるこずができたすプログラムの構造が蚈算の構造に反映されるようにしたす。


圌は゜フトりェア業界がより芏埋あるものになるのを助け、go toステヌトメントは有害であるず䞻匵したした。 ぀たり、プログラム内のステヌトメントに行くほど、プログラムの゜ヌスコヌドを理解するこずが難しくなりたした。



瀺された容易さず柔軟性を確保するために、ダむクストラは、構造プログラミングず呌ばれる特定の分野に埓っおプログラムを蚭蚈およびコヌディングするこずを提案しおいたす。 これはベヌム・ダコピニの定理ずしお知られる数孊的な事実です任意のプログラムは、フォロヌ、ブランチ、ルヌプの3぀の構造を䜿甚しお構築できるこずが知られおいたす。



画像

itandlife.ruからの画像



ダむクストラは同時に、 ニクラりスワヌスずは独立しおいたすがプログラムをブロックの階局構造ずしお提瀺するこずを提案したした。各ブロックは、小さいながらも完了したタスクを実行したす。 これは、手順ず機胜のメカニズムによっお実珟されたす。



最初は䞍信に芋舞われた構造プログラミングのアむデアがすぐに認知されたした特にNicklaus WirthがPASCALプログラミング蚀語を䜜成した埌。 さらに、この手法は珟圚でも重芁です䞀般的なプログラミング蚀語C、PASCAL、たたはBASICを思い出しおください。



埌藀の利点ず害に぀いお



「Habr」に関する蚘事の1぀がこの質問に圓おられたした。

に察しお

1. GOTOを䜿甚するず音が悪くなりたす。

2.最悪のトヌンは、マヌク付きで戻りたす。

3. GOTO-冗長挔算子。 サむクルず条件に簡単に眮き換えるこずができたす。

4. WirthずDijkstraは、GOTOは悪いず蚀いたす。

5. GOTOは、制埡構造を最適化するためのコンパむラの倚くのオプションを無効にしたす。これにより、コヌドが遅くなり、ボリュヌムが倧きくなりたす。


のために

1.盞互に排他的な条件のグルヌプ。

2.普遍的な因果関係の原理-どこかにGOTOがあれば、そこに必芁です。

3.耇数のサむクルを同時に終了したす。

4.有限状態マシンコヌド䟋。






蚘憶



ダむクストラは掻発な䜜家であり、倚くの本や蚘事が圌に属しおいたす圌はキヌボヌドよりも䞇幎筆を奜んでいたした。 -構造プログラミングの理論に関する叀兞的な本。



ダむクストラは数孊センタヌで働き続け、70幎代初頭にアメリカのバロヌズコヌポレヌションの研究者ずしお働くようになりたした。 1972幎、ACMはダむクストラチュヌリング賞を受賞したした。



画像 1974幎、AFIPSは圌にハリヌグッドメモリアル賞を授䞎したした。 1980幎代初頭、ダむクストラはテキサス州オヌスティンに移りたした。 1984幎に、圌はテキサス倧孊のコンピュヌタヌサむ゚ンス孊科の孊郚長に任呜されたした。



Edsger Vyb Dijkstraは、アメリカ人文科孊アカデミヌの名誉倖囜人䌚員です。 圌はたた、オランダ王立科孊アカデミヌの䌚員であり、英囜コンピュヌタ協䌚の正䌚員であり、最終的にはクむヌンズ倧孊ベルファストの博士号を取埗しおいたす。

abv24.comからの画像



この䞖界ではない



1957幎に圌は結婚したした。 結婚の登録䞭に蚘入されるこずになっおいるアンケヌトの「職業」の列で、圌は「プログラマヌ」を曞いた-圌はそのような職業が存圚しないず述べお、文曞を曞き換えるこずを䜙儀なくされた。 その結果、ダむクストラは次のように曞いおいたす。「あなたが望むなら-信じるかどうか-しかし、私の結婚蚌明曞の「職業」の欄には「理論物理孊者」ずいう面癜い゚ントリがありたす」



ダむクストラは普通の生掻では良い意味で「゚キセントリック」でした。圌はコンピュヌタヌよりもシンプルなペンを奜み、家にテレビがなく、携垯電話も映画も芋たせんでした。 圌は音楜も愛し、優れたピアニストでした。



圌の同僚が60呚幎蚘念の特別なコレクションを準備し、公開したずき、ダむクストラはそれぞれに手で曞かれた個人的な感謝の手玙で答えたしたこれはちなみに、61人の受信者。 秘曞は自分のレベルず地䜍の科孊者であるはずでしたが、ダむクストラはこの特暩を拒吊し、自分ですべおを行うこずを奜みたした。



2002幎8月、Edsger Weebe Dijkstraはオランダの自宅で亡くなりたした。



All Articles