Historie programovacích jazyků - History of programming languages - Wikipedia
Tento článek je hlavní část může být příliš krátká na to, aby adekvátně shrnout jeho klíčové body. (Února 2018) |
Historie výpočtů |
---|
Hardware |
Software |
Počítačová věda |
Moderní koncepty |
Podle země |
Časová osa výpočtu |
Glosář počítačové vědy |
|
The historie programovacích jazyků zahrnuje dokumentaci starších mechanických počítačů až po moderní nástroje pro vývoj softwaru. Rané programovací jazyky byly vysoce specializované, spoléhaly se na matematický zápis a podobně temnou syntaxi.[1] Po celé 20. století se výzkum v překladač Teorie vedla k vytvoření programovacích jazyků na vysoké úrovni, které pro přístup k instrukcím používají přístupnější syntaxi.
První programovací jazyk na vysoké úrovni byl Plankalkül, vytvořil Konrad Zuse v letech 1942 až 1945.[2] První jazyk na vysoké úrovni, který má přidružený překladač vytvořil (a) Corrado Böhm v roce 1951, pro jeho disertační práce. První komerčně dostupný jazyk byl FORTRAN (FORmula TRANslation), vyvinutý v roce 1956 (první příručka se objevila v roce 1956, ale poprvé vyvinuta v roce 1954) týmem vedeným John Backus na IBM.
Raná historie
V letech 1842–1849 Ada Lovelace přeložil monografii italského matematika Luigi Menabrea o Charles Babbage Nejnovější navrhovaný stroj: Analytický motor; doplnila monografii poznámkami, které podrobně specifikovaly metodu výpočtu Bernoulliho čísla s motorem, který většina historiků považuje za první publikovaný počítačový program na světě.[3]
První počítačové kódy se specializovaly na jejich aplikace: např. Alonzo Church byl schopen vyjádřit lambda kalkul formulovaným způsobem a Turingův stroj byla abstrakce provozu stroje na označování pásky.
Žakárské tkalcovské stavy a Charles Babbage Rozdíl Engine oba měli jednoduché jazyky pro popis akcí, které by tyto stroje měly provádět, proto byli tvůrci prvního programovacího jazyka.
První programovací jazyky
Ve 40. letech 20. století byly vytvořeny první rozpoznatelně moderní počítače s elektrickým pohonem. Omezená rychlost a kapacita paměti donutily programátory psát ručně naladěné montážní jazyk programy. Nakonec došlo k závěru, že programování v montážním jazyce vyžadovalo velké intelektuální úsilí.
Časný návrh na programovací jazyk na vysoké úrovni byl Plankalkül, vyvinutý společností Konrad Zuse pro něj Počítač Z1 mezi lety 1943 a 1945, ale v té době nebyly implementovány.[4]
První fungující programovací jazyky určené ke komunikaci instrukcí do počítače byly napsány na počátku 50. let. John Mauchly je Krátký kód, navržený v roce 1949, byl jedním z prvních jazyků vysoké úrovně, které kdy byly vyvinuty pro elektronický počítač.[5] Na rozdíl od strojový kód „Příkazy krátkého kódu představovaly matematické výrazy ve srozumitelné formě. Program však musel být přeložen do strojový kód pokaždé, když běžel, proces byl mnohem pomalejší než spuštění ekvivalentního strojového kódu.
Na počátku 50. let Alick Glennie rozvinutý Automatický kód, případně první kompilovaný programovací jazyk, na University of Manchester. V roce 1954 byla pro Mark 1 vyvinuta druhá iterace jazyka, známá jako „Autocode Mark 1“, R. A. Brooker. Brooker také vyvinul autocode pro Ferranti Merkur v padesátých letech ve spojení s University of Manchester. Verze pro EDSAC 2 vymyslel Douglas Hartree z Matematická laboratoř University of Cambridge v roce 1961. Známý jako EDSAC 2 Autocode, šlo o přímý vývoj od Mercury Autocode přizpůsobený místním okolnostem a byl známý svou optimalizací objektového kódu a diagnostikou zdrojového jazyka, které byly v té době pokročilé. Moderní, ale samostatná nit vývoje, Atlas Autocode byl vyvinut pro univerzitu v Manchesteru Atlas 1 stroj.
V roce 1954 FORTRAN byl vynalezen v IBM týmem vedeným John Backus; byl to první široce používaný univerzální programovací jazyk na vysoké úrovni mít funkční implementaci, na rozdíl od pouhého designu na papíře.[6][7] Když byl FORTRAN poprvé představen, bylo na něj pohlíženo skepticky kvůli chybám, zpožděním ve vývoji a srovnávací efektivitě „ručně kódovaných“ programů napsaných v sestavě.[8] Na hardwarovém trhu, který se rychle rozvíjel; jazyk nakonec stal se známý pro jeho účinnost. Je to stále populární jazyk pro vysoce výkonné výpočty[9] a používá se pro programy, které srovnávají a hodnotí svět nejrychlejší superpočítače.[10]
Další časný programovací jazyk vymyslel Grace Hopper v USA, tzv FLOW-MATIC. Byl vyvinut pro UNIVAC I na Remington Rand v období od roku 1955 do roku 1959. Hopper zjistil, že zákazníkům se zpracováním obchodních dat matematická notace nelíbí, a na začátku roku 1955 napsala se svým týmem specifikaci Angličtina programovací jazyk a implementoval prototyp.[11] Kompilátor FLOW-MATIC se stal veřejně dostupným počátkem roku 1958 a v roce 1959 byl v podstatě dokončen.[12] Flow-Matic byl hlavní vliv na design COBOL, protože pouze on a jeho přímý potomek AIMACO byly v té době skutečně používány.[13]
Mezi další jazyky, které se dnes ještě používají, patří LISP (1958), vynalezený John McCarthy a COBOL (1959), vytvořený Výborem pro krátký dosah. Dalším milníkem na konci 50. let bylo vydání „nového jazyka pro algoritmy“, vypracovaného výborem amerických a evropských počítačových vědců; the ALGOL 60 Zpráva („ALGOritmický LTato zpráva spojila mnoho myšlenek, které v té době kolovaly, a představovala tři klíčové jazykové inovace:
- vnořená bloková struktura: sekvence kódu a související deklarace lze seskupit do bloky aniž by bylo nutné je proměnit v samostatné, výslovně pojmenované postupy;
- lexikální obor: blok může mít své vlastní soukromé proměnné, postupy a funkce, neviditelné pro kód mimo tento blok, to znamená, skrývání informací.
Další inovace, která s tím souvisela, byla v tom, jak byl jazyk popsán:
- matematicky přesný zápis, Backus – Naurova forma (BNF), byl použit k popisu syntaxe jazyka. Téměř všechny následující programovací jazyky používaly k popisu varianty BNF bez kontextu část jejich syntaxe.
Algol 60 byl zvláště vlivný v designu pozdějších jazyků, z nichž některé se brzy staly populárnějšími. The Burroughs velké systémy byly navrženy tak, aby byly programovány v rozšířené podskupině Algol.
Algolovy klíčové myšlenky pokračovaly a produkovaly ALGOL 68:
- syntax a sémantika se staly ještě více ortogonálními, s anonymními rutinami, rekurzivním typovacím systémem s funkcemi vyššího řádu atd .;
- formálně byla definována nejen plná část bez kontextu, ale i úplná jazyková syntax a sémantika Van Wijngaarden gramatika, formalismus navržený speciálně pro tento účel.
Mnoho málo používaných jazykových funkcí Algolu 68 (například souběžných a paralelních bloků) a jeho složitý systém syntaktických zkratek a automatických nátlaků způsobil, že se u implementátorů stal nepopulárním a získal si reputaci obtížný. Niklaus Wirth ve skutečnosti vyšel z návrhové komise, aby vytvořil jednodušší Pascal Jazyk.
Některé pozoruhodné jazyky, které byly vyvinuty v tomto období, zahrnují:
|
Stanovení základních paradigmat
Období od konce 60. do konce 70. let přineslo hlavní rozkvět programovacích jazyků. Většina hlavních jazykových paradigmat, která se nyní používají, byla vynalezena v tomto období:[původní výzkum? ]
- Speakeasy, vyvinutý v roce 1964 v Argonne National Laboratory (ANL) od Stanley Cohen, je OOPS (objektově orientované programování systému, podobně jako později MATLAB, IDL a Mathematica ) číselný balíček. Speakeasy má jasno Fortran syntaxe nadace. Nejprve se zabýval interním výpočtem efektivní fyziky na ANL, byl upraven pro výzkumné použití (jako „Modeleasy“) pro Rada federálních rezerv na začátku 70. let a poté byl komerčně dostupný; Speakeasy a Modeleasy se v současné době stále používají.
- Simula, vynalezl na konci 60. let 20. století Nygaard a Dahl jako nadmnožina Algolu 60 byl prvním jazykem navrženým na podporu objektově orientované programování.
- C, brzy programování systémů jazyk, byl vyvinut Dennis Ritchie a Ken Thompson na Bell Labs v letech 1969 až 1973.
- Pokec (polovina sedmdesátých let) poskytla kompletní základ objektově orientovaného jazyka.
- Prolog, navržený v roce 1972 autorem Colmerauer, Roussel, a Kowalski, byl první logické programování Jazyk.
- ML postavil systém polymorfního typu (vynalezl Robin Milner v roce 1973) na vrcholu Lisp,[14] průkopnický staticky napsané Funkcionální programování jazyky.
Každý z těchto jazyků vytvořil celou rodinu potomků a většina moderních jazyků počítá s alespoň jedním z nich ve svých předcích.
V šedesátých a sedmdesátých letech došlo také k značné debatě ostrukturované programování „, což v podstatě znamenalo programování bez použití“jít do Významná část programátorů věřila, že i v jazycích poskytujících „goto“ je to špatné styl programování používat jej s výjimkou výjimečných okolností. Tato debata úzce souvisela s jazykovým designem: některé jazyky vůbec neobsahovaly „goto“, které si vynucovalo strukturované programování programátora.
Některé jazyky byly strukturovány tak, aby poskytovaly ještě rychlejší časy kompilacejednoprůchodové kompilátory "které očekávají, že budou nejprve definovány podřízené rutiny, jako u Pascal, kde hlavní rutina nebo funkce ovladače je poslední částí seznamu programů.
Některé pozoruhodné jazyky, které byly vyvinuty v tomto období, zahrnují:
80. léta: konsolidace, moduly, výkon
Osmdesátá léta byla v roce 2006 relativní konsolidací imperativní jazyky. Spíše než vymýšlet nová paradigmata, všechna tato hnutí rozpracovala myšlenky vynalezené v předchozím desetiletí. C ++ kombinované objektově orientované a systémové programování. Vláda Spojených států standardizovala Ada, programovací jazyk systémů určený k použití dodavateli obrany. V Japonsku a jinde byly obrovské částky vynaloženy na vyšetřování tzv programovací jazyky páté generace které obsahovaly konstrukce logického programování. Komunita funkčních jazyků přešla na standardizaci ML a Lisp. Výzkum v Mirando, funkční jazyk s líné hodnocení, se začal v tomto desetiletí uchopovat.
Jedním z důležitých nových trendů v jazykovém designu bylo zvýšené zaměření na programování pro rozsáhlé systémy pomocí modulynebo rozsáhlé organizační jednotky kódu. Modula „Ada a ML vyvinuli v 80. letech pozoruhodné modulové systémy. Modulové systémy byly často součástí generické programování konstrukty --- generika jsou v podstatě parametrizované moduly[Citace je zapotřebí ] (viz také polymorfismus v objektově orientovaném programování ).
Ačkoli se nová zásadní paradigmata pro imperativní programovací jazyky neobjevila, mnoho vědců rozšířilo myšlenky dřívějších jazyků a přizpůsobilo je novým kontextům. Například jazyky Argus a Smaragd systémy přizpůsobené objektově orientovanému programování distribuované systémy.
Osmdesátá léta také přinesla pokrok v implementaci programovacího jazyka. The RISC pohyb dovnitř počítačová architektura předpokládal, že hardware by měl být navržen pro překladače spíše než pro programátory lidské montáže. S pomocí procesor zlepšení rychlosti, které umožnilo stále agresivnější techniky kompilace, vyvolalo hnutí RISC větší zájem o technologii kompilace pro jazyky na vysoké úrovni.
Jazyková technologie v tomto duchu pokračovala až do 90. let.
Některé pozoruhodné jazyky, které byly vyvinuty v tomto období, zahrnují:
|
|
90. léta: internetový věk
Rychlý růst internetu v polovině 90. let byl další významnou historickou událostí v programovacích jazycích. Otevřením radikálně nové platformy pro počítačové systémy vytvořil internet příležitost k přijetí nových jazyků. Zejména JavaScript programovací jazyk si získal popularitu díky své rané integraci s webovým prohlížečem Netscape Navigator. Různé další skriptovací jazyky dosáhly širokého použití při vývoji přizpůsobených aplikací pro webové servery, jako je PHP. Devadesátá léta v roce neviděla žádnou zásadní novinku imperativní jazyky, ale hodně rekombinace a zrání starých myšlenek. Tato éra začala šířit funkční jazyky. Velkou filozofií řízení byla produktivita programátora. Objevilo se mnoho jazyků „rapid application development“ (RAD), které obvykle přicházely s IDE, odvoz odpadu, a byli potomky starších jazyků. Všechny takové jazyky byly objektově orientovaný. Mezi ně patří Objekt Pascal, Visual Basic, a Jáva. Velká pozornost byla věnována zejména Javě.
Radikálnější a inovativnější než jazyky RAD byly nové skriptovací jazyky. Ty přímo nepocházejí z jiných jazyků a představovaly nové syntaxe a liberálnější začlenění funkcí. Mnoho z nich považuje tyto skriptovací jazyky za produktivnější než dokonce jazyky RAD, ale často kvůli volbám, které zjednodušují malé programy, ale velké programy je obtížnější psát a udržovat.[Citace je zapotřebí ] Přesto se skriptovací jazyky staly nejvýznamnějšími jazyky používanými v souvislosti s webem.
Některé pozoruhodné jazyky, které byly vyvinuty v tomto období, zahrnují:
|
|
Nynější trendy
Vývoj programovacího jazyka pokračuje v průmyslu i výzkumu. Některé z posledních trendů zahrnují:
- Zvyšování podpory pro Funkcionální programování v běžných jazycích používaných komerčně, včetně čisté funkční programování pro snazší uvažování a snazší paralelizaci kódu (na mikro- i makroúrovni)
- Konstruuje na podporu souběžně a distribuováno programování.
- Mechanismy pro zvýšení bezpečnosti a spolehlivosti ověření do jazyka: rozšířená statická kontrola, závislé psaní, řízení toku informací, statické bezpečnost nití.
- Alternativní mechanismy pro skladatelnost a modularitu: mixiny, rysy, typové třídy, delegáti, aspekty.
- Vývoj softwaru zaměřeného na komponenty.
- Metaprogramování, odraz nebo přístup k abstraktní syntaxový strom
- AOP nebo Aspektově orientované programování umožnění vývojářům vložit kód do jiného modulu nebo třídy na „spojovací body“
- Jazyky specifické pro doménu a generování kódu
- Zvýšený zájem o distribuci a mobilitu.
- Integrace s databázemi, včetně XML a relační databáze.
- Otevřený zdroj jako vývojová filozofie pro jazyky, včetně GNU Compiler Collection a jazyků jako Krajta, Rubín, a Scala.
- Větší zájem o vizuální programovací jazyky jako Poškrábat, LabVIEW a PWCT
- Masivně paralelní jazyky pro kódování grafických procesorových jednotek 2 000 procesorů GPU a superpočítačových polí včetně OpenCL
- Včasný výzkum (dosud neproveditelný) kvantové výpočty programovací jazyky
- Včasný výzkum přihlášek Umělá inteligence techniky generování kódu, jako je použití GPT-3[15]
Některé pozoruhodné jazyky vyvinuté během tohoto období zahrnují: [16][17]
|
Mezi další nové programovací jazyky patří Červené, Krystal, Jilm, Zaseknout, Haxe, Zig, Důvod a Balerína.
Prominentní lidé
Několik klíčových lidí, kteří pomohli vyvinout programovací jazyky:
- Alan Cooper, vývojář Visual Basic.
- Alan Kay, průkopnická práce na objektově orientovaném programování a původce Pokec.
- Anders Hejlsberg, vývojář Turbo Pascal, Delphi, C#, a Strojopis.
- Arthur Whitney, vývojář A +, k, a q.
- Bertrand Meyer, vynálezce Eiffelova.
- Bjarne Stroustrup, vývojář C ++.
- Brian Kernighan, spoluautor první knihy o C programovací jazyk s Dennis Ritchie, spoluautor AWK a AMPL programovací jazyky.
- Chris Lattner, tvůrce Rychlý a LLVM.
- Cleve Moler, tvůrce MATLAB.
- Dennis Ritchie, vynálezce C. Operační systém Unix, operační systém Plan 9.
- Douglas McIlroy, ovlivňoval a navrhoval takové jazyky jako SNOBOL, TRAC, PL / I., ALTRAN, TMG a C ++.
- Grace Hopper, nejprve použít termín překladač a vývojář FLOW-MATIC, ovlivnil vývoj COBOL. Popularizované strojově nezávislé programovací jazyky a termín „ladění ".
- Guido van Rossum, tvůrce Krajta.
- James Gosling, vedoucí vývojář Jáva a jeho předchůdce, Dub.
- Jean Ichbiah, hlavní designér společnosti Ada, Ada 83.
- Jean-Yves Girard, spoluautor vynálezu polymorfní lambda kalkul (Systém F).
- Jeff Bezanson, hlavní designér a jeden z hlavních vývojářů Julie.
- Jeffrey Snover, vynálezce PowerShell.
- Joe Armstrong, tvůrce Erlang.
- John Backus, vynálezce Fortran a spolupracoval na návrhu ALGOL 58 a ALGOL 60.
- John C. Reynolds, spoluautor polymorfního lambda kalkulu (systém F).
- John McCarthy, vynálezce LISP.
- John von Neumann, původce operační systém pojem.
- Graydon Hoare, vynálezce Rez.
- Ken Thompson, vynálezce B, Jít, Inferno (operační systém) a Unix Spoluautor operačního systému.
- Kenneth E. Iverson, vývojář APL a spolutvůrcem společnosti J spolu s Roger Hui.
- Konrad Zuse, navrhl první programovací jazyk na vysoké úrovni, Plankalkül (který ovlivnil ALGOL 58[18]).
- Kristen Nygaard, spoluautorem průkopnického objektově orientovaného programování Simula.
- Larry Wall, tvůrce programovacího jazyka Perl (viz Perl a Raku ).
- Martin Oderský, tvůrce Scala, a dříve přispěvatel do designu Jáva.
- Martin Richards vyvinul BCPL programovací jazyk, předchůdce B a C jazyky.
- Nathaniel Rochester, vynálezce prvního assembler (IBM 701).
- Niklaus Wirth, vynálezce Pascal, Modula a Oberon.
- Ole-Johan Dahl, spoluautorem průkopnického objektově orientovaného programování Simula.
- Rasmus Lerdorf, tvůrce PHP.
- Rich Hickey, tvůrce Clojure.
- Robert Gentleman, spolutvůrce R.
- Robert Griesemer, spolutvůrce Jít.
- Robin Milner, vynálezce ML a sdílení kreditu pro Hindley – Milner polymorfní odvození typu.
- Rob Pike, spolutvůrce Jít, Inferno (operační systém) a Plán 9 (operační systém) Spoluautor operačního systému.
- Ross Ihaka, spolutvůrce R.
- Stanley Cohen, vynálezce Speakeasy, který byl vytvořen pomocí objektově orientovaného programovacího systému OOPS první instance v roce 1964.
- Stephen Wolfram, tvůrce Mathematica.
- Tom Love a Brad Cox, tvůrce Cíl-C.
- Walter Bright, tvůrce D.
- Yukihiro Matsumoto, tvůrce Rubín.
Viz také
Reference
- ^ Hopper (1978), str. 16.
- ^ Knuth, Donald E .; Pardo, Luis Trabb. "Časný vývoj programovacích jazyků". Encyclopedia of Computer Science and Technology. Marcel Dekker. 7: 419–493.
- ^ J. Fuegi a J. Francis (říjen – prosinec 2003), „Lovelace & Babbage a tvorba not z roku 1843“'", Annals of the History of Computing, 25 (4): 16–26, doi:10.1109 / MAHC.2003.1253887
- ^ V letech 1998 a 2000 byly pro jazyk vytvořeny překladače jako historické cvičení. Rojas, Raúl, et al. (2000). „Plankalkül: První programovací jazyk na vysoké úrovni a jeho implementace“. Institut frame Informatik, Freie Universität Berlin, technická zpráva B-3/2000. (celý text)
- ^ Sebesta, W.S. (2006). Koncepty programovacích jazyků. str. 44. ISBN 978-0-321-33025-3.
- ^ „Fortranský tvůrce John Backus umírá - technologie a gadgety - zprávy NBC“. Zprávy NBC. 2007-03-20. Citováno 2010-04-25.
- ^ „CSC-302 99S: Class 02: A Struf History of Programming Languages“. Math.grin.edu. Archivovány od originál dne 15. 7. 2010. Citováno 2010-04-25.
- ^ Padova, David (únor 2000). „Překladač FORTRAN I“ (PDF). Výpočetní technika ve vědě a inženýrství. 2 (1): 70–75. doi:10.1109/5992.814661. Citováno 7. listopadu 2019.
- ^ Eugene Loh (18. června 2010). „Ideální programovací jazyk HPC“. Fronta. Asociace výpočetních strojů. 8 (6).
- ^ „HPL - přenosná implementace vysoce výkonného standardu Linpack pro počítače s distribuovanou pamětí“. Citováno 2015-02-21.
- ^ Hopper (1978), str. 16.
- ^ Sammet (1969), str. 316
- ^ Sammet (1978), str. 204.
- ^ Gordon, Michael J. C. (1996). „Od LCF k HOL: krátká historie“ (PDF). str. 3. Citováno 2015-05-04.
V Lispu byla implementována Edinburgh LCF, včetně tlumočníka ML.
- ^ Manjoo, Farhad (29. července 2020). „Jak to víš, že to napsal člověk?“. The New York Times. ISSN 0362-4331. Citováno 4. srpna 2020.
- ^ TIOBE (25. května 2018). „TIOBE Index, 100 nejlepších programovacích jazyků podle TIOBE Index“. www.tiobe.com. TIOBE_index.
- ^ „GitHub's Octoverse 2018“. Archivovány od originál dne 22.03.2019.
- ^ Rojas, Raúl; Hashagen, Ulf (2002). První počítače: historie a architektury. MIT Stiskněte. str. 292. ISBN 978-0262681377. Citováno 25. října 2013.
Další čtení
- Rosen, Saule, (editor), Programovací systémy a jazyky, McGraw-Hill, 1967.
- Sammet, Jean E., Programovací jazyky: Historie a základy, Prentice-Hall, 1969.
- Sammet, Jean E. (červenec 1972). "Programovací jazyky: historie a budoucnost". Komunikace ACM. 15 (7): 601–610. doi:10.1145/361454.361485. S2CID 2003242.
- Richard L. Wexelblat (vyd.): Historie programovacích jazyků, Akademický tisk 1981.
- Thomas J. Bergin a Richard G. Gibson (eds.): Historie programovacích jazyků, Addison Wesley, 1996.