プログラミング蚀語の歎史Algol-利益盞反の犠牲者

画像



IT業界に察するアルゎルの圱響



1958幎に最初のバヌゞョンが登堎したAlgolALGOrithmic Languageずいう名前は、アルゎリズムを蚘録するように蚭蚈されおいるずいう事実を匷調しおいたす。 その明確な論理構造のおかげで、アルゎルは科孊技術文献でアルゎリズムを蚘述する暙準的な手段になりたした。 ただし、Fortran蚀語ず完党に競合するこずは決しおできたせんでした。たた、Algolのいく぀かの重芁な機胜同じワヌドプロセッシング、入力/出力フォヌマットなどがないため、COBOLず比范するこずは困難でした。



「出産」アルゎルは非垞に苊劎したした。 䞀郚のクリ゚むタヌにずっおは、率盎に蚀っお、苊痛に苊しんでいたす。 科孊者ず業界の専門家は、倚くの問題に぀いおコンセンサスを埗るこずができたせんでした。



その結果、新しい蚀語は消費者を匕き付けるのではなく、関心を呌び起こしたした。 グレヌス・ホッパヌは次のように説明しおいたす。「倧きな詩のように芋えたす。数孊の芳点からは単玔明快ですが、実甚的ではありたせん。」



背景



1950幎代半ばに、機械コヌドでのプログラミングの圹割は衰退し始めたした。 䞊䜍レベルの蚀語-Fortran、Algol、COBOLなどが登堎したした。



それらの最初で最も䞀般的なものの1぀は、1954幎にIBMのプログラマヌグルヌプによっお開発されたFortranFORmula TRANslator-匏倉換プログラム最初のバヌゞョンです。 この蚀語は、数孊的性質の科孊的および技術的蚈算に向けられおいたした。



画像

グレヌス・ホッパヌは、アメリカの科孊者であり、アメリカ海軍の提督です。 ハヌバヌド倧孊のコンピュヌタヌプログラマヌMarkI。



1954幎、グレヌスホッパヌが率いるグルヌプは、プログラミング蚀語ずコンパむラを含むシステムを開発し、埌にMath-Maticずしお知られるようになりたした。 Math-Maticの䜜成が正垞に完了した埌、Hopperず圌女のグルヌプは、ナヌザヌが通垞の英語に䌌た蚀語でプログラミングできる新しい蚀語ずコンパむラヌの開発に着手したした。 1958幎、Flow-Maticコンパむラが登堎したした。 Flow-Maticコンパむラは、商甚デヌタを凊理するための最初の蚀語でした。



この方向での開発により、COBOLCommon Business Oriented Languageが䜜成されたした。 1960幎に䜜成されたした。 この蚀語では、数孊的ツヌルはあたり開発されおいたせんでしたが、テキスト凊理ツヌルず必芁なドキュメントの圢匏でのデヌタ出力の線成は十分に開発されたした。 管理およびビゞネスの分野での倧量デヌタ凊理の䞻芁蚀語ずしお考えられおいたした。



最高は善の敵



20䞖玀の50幎代、科孊の䞖界党䜓が、科孊プログラミングのための単䞀蚀語を決定する問題の解決を埅っおいたした。 米囜の独自のバヌゞョンを提䟛する最初の。 1957幎、Fortranは積極的に広たり始めたした。 しかし、ペヌロッパのコミュニティは、IBMFortranが䜜成された堎所や他の攻撃的なアメリカ䌁業の芇暩を恐れたした。 したがっお、圌らはペヌロッパ垂堎で新しい「スタヌ」が確実に䞊昇しなければならないず決定したした。



1958幎、チュヌリッヒで、連邊工科倧孊に基づいお特別委員䌚が蚭立されたした。 最初の䌚議は5月27日に開催され、コンピュヌタヌの分野で最も尊敬されおいる8぀の圓局ペヌロッパから4人、米囜から4人が集たりたした。 この䌚議には、Fortranの䜜成者であるJohn BackusずJoseph Wagstenが出垭し、その埌、COBOLに関する短期委員䌚の委員長になりたした。



画像

連邊工科倧孊。 チュヌリッヒ



「最高は善の敵である」ずいうモットヌの䞋での䌚議は、実際にはこの声明に察応しおいたせんでした。 このこずから、䜜業はゆっくりず進みたした。 アメリカ人は、すでにコンピュヌタヌで䜿甚されおいる蚀語に近い蚀語を䞻匵したした。 ペヌロッパ人は、耇雑な数孊的問題を解決する際の蚀語の力ほどコンピュヌタに関心がありたせんでした。 2日目には、感情の嵐を匕き起こした小さなながらも小数点以䞋の点が原因で、ほずんど議論が行き詰たりたした。



ペヌロッパ人の䞀人は、拳でテヌブルにぶ぀かり、こう蚀った。 しかし、アメリカ人は、小数点で小数点を䜿甚するペヌロッパの習慣を吊定したした。 その埌、ゞョセフ・ワグステンは平和維持の圹割を匕き受け、「小嵐」を鎮めようずしたした。



Wagstenによっお提案された問題の最終的な解決策は、新しい蚀語に最も泚目すべき特性の1぀を提䟛したした。 圌は、説明、出版物、および実装のレベルずいう3぀のレベルの蚀語モデルを提案したした。

ポむントずコンマたたは䜿甚するアルファベットの遞択などの小さな質問は第2レベルたたは第3レベルに持ち蟌たれ、それにより基本的な問題を比范的迅速に解決するこずができたした。 埌で合意された出版レベルでは、囜別キヌワヌドずデヌタ衚瀺暙準小数点を含むの䜿甚が蚱可され、実装レベルにより蚀語が非垞に厳密に決定されたした-それに応じお、翻蚳者を䜜成する必芁がありたす。
さらなる議論は、第1レベルのみで行われたため、现かい郚分にずらわれずに進むこずができたした。



プレハブ



チュヌリッヒでの䌚議で䜜成された蚀語は、Fortranから倚くを継承したしたが、アルゎルでは、基本的な抂念はより論理的な、぀たり゚レガントな構造で収集されたした。 しかし、時間の䞍足ず劥協の必芁性のために、倚くの芋萜ずしがなされたした。 それらの1぀は、デヌタの入力および出力手順の欠劂でした。 䌚議の参加者は、蚀語コンパむラの開発者が入力および出力手順を䜜成する必芁があるず考えお、コンピュヌタヌの皮類に倧きく䟝存するこの領域には意図的に觊れたせんでした。



しかし、委員䌚の党䌚䞀臎は絶察的ではありたせんでした。䞀郚の参加者は、䜜業が最も粗い近䌌で行われたず信じお䌚議を去り、他の郚分は、アルゎルを「スタヌ」および新しい囜際暙準にするのに十分であるず信じおいたした。



画像



そのような楜芳䞻矩者の䞀人はゞョン・バッカスだった。 1959幎2月、圌は圱響力のあるSHARE組織IBMコンピュヌタヌナヌザヌを含むに新しいプログラミング蚀語に賭けるように説埗したした。 その埌、組織はIBMにAlgolを実装するこずを匷く掚奚したした。



぀たり、同瀟は顧客に䌚いに行きたしたが、実際には、この方向の䜜業はほずんど行われおいたせんでした。 圓時、IBMはコンピュヌタヌ垂堎の䞖界的リヌダヌであり、Fortranを積極的に実装しおいたした。 実際、SHAREメンバヌにも明確な立堎はありたせんでした。 圌らの熱意が薄れたずき、圌らは䜕も起こらなかったかのようにFortranをサポヌトし続けたした。



しかし、バッカスは倱敗にもかかわらず、アルゎルを積極的に宣䌝し続けたした。



チュヌリッヒに戻っお、圌は文法、぀たり蚀語の単語ず蚘号の正しい配眮に興味を持ちたした。 Backusは、論理的な方法で各蚀語構造を定矩するための厳密で正確なシステムを開発したした。 たずえば、芁玠「digit」を定矩しお、「<number>= 0 | 1 | 2 | ... | 9 |」ず曞きたした。



すぐに、プログラマは構文の蚘述に察するこのアプロヌチをBackusの通垞の圢匏、たたはBNFず呌び始めたした。 デンマヌクの倩文孊者ピヌタヌ・ナりアによるこの研究のその埌の改良は、このアプロヌチがしばしば「バッカス・ナりア圢匏」ず呌ばれるずいう事実をもたらしたした略語は同じたた-BPF。BPFは、特にプログラミング蚀語の開発に倧きな圱響を䞎えたしたアルゎヌルの開発の第2段階。



䞀方、Algol-58は成功したせんでした。深刻な修正が必芁でした。



アルゎヌル-60



1960幎1月、最埌のチュヌリッヒグルヌプの7人を含むペヌロッパずアメリカの囜の代衚13人がパリで䌚い、最初のバヌゞョンに残った「穎を埋める」。 新しく到着した人の1人は、BNFの助けを借りお録音された修正アルゎル蚀語のバリアントを提案したナりルです。



画像

構文図ず解析ツリヌ



8日間の困難な亀枉の埌、䌚議の参加者はパリを去り、合意に達したず信じおおり、アルゎルの最も熱烈な批評家でさえ黙っおいるべきだず信じおいたした。



画像

Algol-60開発委員䌚は、1960幎にパリで開催された䌚議で撮圱されたこのグルヌプ写真に「賛成」したす。 参加者の䞭には、アメリカのコンピュヌタヌスペシャリストであるJohn Backus右偎のカメラに最も近いずデンマヌクの倩文孊者Peter Naur巊偎の4番目がいたす。その埌、プログラミング蚀語を蚘述するシステムは「Backus-Naur圢匏」ず呌ばれたす。 LISPの䜜成者、ゞョン・マッカヌシヌが撮圱した写真



しかし、アメリカの䌚議参加者が飛行機を降りるずすぐに、アルゎル-60は倖郚から厳しい批刀を受けたした。 さらに、䌚議参加者の小さなグルヌプは、蚀語に残っおいる曖昧さを指摘し、それらを「宣䌝」したした。 他の批評家は、I / Oは蚀語に含たれおいないず匷調したした。



アメリカでは、Algol-60が冷酷に出䌚った。 さらに、圌がコンパむラを曞くのは非垞に困難であるこずが刀明したした。圓時の最先端のコンピュヌタヌでさえ、蚘述蚀語で芋぀かった116文字のセットを認識できたせんでした。



ペヌロッパでは、圌らは異なった議論をしたした。新しい蚀語は、囜境や蚀語の障壁に関係なく、興味深く耇雑なアむデアを亀換するこずを可胜にしたした。 さらに重芁なこずは、ペヌロッパのコンピュヌタヌ産業がアメリカのテクノロゞヌから独立するこずを可胜にしたした。



アルゎル68



1962幎、囜際情報凊理協䌚IFIPの埌揎の䞋、アルゎルをさらに改善するこずを目的ずした新しい委員䌚が蚭立されたした。 新しい委員䌚には、䞖界的に有名な倚くの科孊者、特に゚ドガヌ・ダむクストラ 、 ニクラりス・ワヌス 、トニヌ・ホアが含たれたした。



以前のバヌゞョンの欠点の1぀は、入力/出力の䞍足ずしお䟝然ずしお認識されおいたした。 この瞬間の軜芖は、蚀語の孊術的指向によっお説明されたした。科孊者にずっお、アルゎリズム自䜓が第䞀の関心事であり、出力デヌタがどのような圢で提瀺されるかは二次的な問題です。 産業䞊のニヌズには、このアプロヌチは適切ではありたせんでした。



2番目の重倧な欠点は、䜎速でした。 したがっお、重芁なタスクは、プログラム実行段階での䜜業効率を高めるこずでした。



䜕らかの理由で、蚀語開発グルヌプのリヌダヌは、アムステルダムの数孊センタヌのディレクタヌであるA.ノァンりェむンガヌドでした。 圌は玔粋な数孊者であり、圌の暩限を䜿甚しお、プログラマヌず実践者が同意しなかった決定を䞋し、結果ずしお生じる蚀語に悪圱響を及がしたした。



残念ながら、ノァンりェむンガヌドの暩嚁䞻矩的なリヌダヌシップのスタむルは、しばしばチヌム内の意芋の盞違に぀ながり、Hoar and Wirthがチヌムを去るこずさえしたした。 チヌムにずっおこの損倱がどれほど難しかったかは、次の事実によっお刀断できたす。Wirthの提案は、委員䌚では受け入れられず、Pascal蚀語の基瀎を圢成したした。



Algol 68は、いく぀かの興味深いアむデアたずえば、蚀語拡匵メカニズム、および䞊列コンピュヌティングのツヌルを実装したしたが、䜿甚は限られおいたす。



画像



ロシアでは、仕事でそれを積極的に䜿甚した愛奜家がいたした。そしお、アルゎル68に基づいた蚀語は、か぀お囜内のElbrusコンピュヌタヌをプログラミングするための基瀎になりたした。



蚀語機胜



他のほずんどのプログラミング蚀語ず同様に、Algolプログラムはメむンプログラムず䞀連のルヌチンで構成されおいたす。



begin procedure SUM(V,N); valueN; realarray V; integer N; begin integer I; real TEMP; TEMP:=0; for I:=1 step1 until N do TEMP:=TEMP+V[I]; SUM:=TEMP end; integer K; START: inreal(1,K); if K>0 then begin realarray A[1:K]; inarray(1,A); outreal(2,SUM(A,K)); gotoSTART end end
      
      







ブロック内で䜜成されたデヌタ構造は、ブロック内でロヌカルであり、ブロックを終了するず砎棄されたす。 したがっお、デヌタの有効期間ずその識別子のスコヌプを制埡できたす。 ブロック内の倉数の動的メモリ割り圓おにより、再垰を効率的に䜿甚できたす。



ブロックはネストされた構造を圢成できたす。぀たり、ブロックはブロック内にネストでき、ブロックはその䞭の別のブロックなどにネストできたす。 この蚀語の重芁な特城は、ブロックが挔算子の䞀皮である-耇合挔算子であり、通垞の挔算子が受け入れられるずころならどこでも䜿甚できるこずです。



Algolは、論理型、敎数型、実数型、およびデヌタ構造の同皮の配列のみを実装したす。 確かに、配列は動的であるため、メモリの配分を効果的に管理できたす。 残念ながら、蚀語のデヌタのタむプず構造はそれほど倚様ではありたせん。 おそらくこれが、䞻に科孊蚈算に䜿甚された蚀語のさらなる運呜を決定したのでしょう。



蚀語の機胜には、サブプログラムにパラメヌタを枡すためのメカニズムも含たれたす。 それらの2぀がありたす䟡倀によるよく知られた䌝達ず名前によるかなり゚キゟチックな䌝達。

プロシヌゞャに枡される匏は毎回評䟡されたす。たるで仮パラメヌタの代わりに、呌び出し元プログラムのコンテキストで蚈算された倀が代入されたかのように評䟡されたす。 実際、マクロ眮換ずサブルヌチン呌び出しの亀差点です。



 Begin procedure p (a,b); name a, b; integer a, b; begin for a:=1 step1 until 10 do b := 0 end p; integer i; integer array s [1:10]; p (i, s[i]) end
      
      







サむクルの各ステップでpプロシヌゞャが実行されるず、iがaに眮き換えられ、s [i]がbに眮き換えられ、このプロシヌゞャは配列sを単玔にれロにしたす。 パラメヌタヌを枡すこの方法には倚くの問題があるため、名前でパラメヌタヌを枡すこずは、アルゎルの特暩です。 しかし、パラメヌタを枡すこの方法は、プログラミング蚀語のさらなる開発に圱響を䞎えたした。



歎史䞊の圹割



米囜囜防総省がCOBOL蚀語を積極的にサポヌトしたように、ドむツおよび西ペヌロッパ諞囜の他の政府機関の独立した研究評議䌚は、アルゎルをサポヌトしたした。



これにより、蚀語はむギリスから゜ビ゚ト連邊に広がりたした。 ほずんどのコンパむラヌは成功し、すぐにアルゎルはペヌロッパのプログラマヌの囜際蚀語ずしお認められたした。



アルゎルは、そのような地䜍がアメリカの利益を深刻に傷぀けるので、䞀郚の人が望んでいたように、普遍的な囜際暙準になりたせんでした。 圌は米囜でほずんど人気を獲埗したせんでしたが、Fortranの圱に氞遠に留たりたした。



ただし、埌に登堎した蚀語の倚くは少なくずも郚分的にAlgolに基づいおおり、その開発ぞの貢献はいく぀かの基本的なアむデアに関連しおいたす。



最も重芁なものの1぀はブロック構造です。これにより、プログラムを独立しお開発されるクロヌズドナニットに分割できたす。 別のアむデアは再垰です。 3番目のアむデアは、構文の正匏な定矩であるBPFです。



これらおよびその他の基本的なアむデアは、他の蚀語の開発者に継承されたした。



All Articles