Imperativní programování - Imperative programming

Ve vědě o počítačích , naléhavý programovací je programovací paradigma , která využívá prohlášení , že změna programu je stát . Téměř stejným způsobem, jakým rozkazovací nálada v přirozených jazycích vyjadřuje příkazy, se rozkazovací program skládá z příkazů, kterépočítač provádět. Imperativní programování se zaměřuje na popis fungování programu.

Termín je často používán na rozdíl od deklarativního programování , které se zaměřuje na to, co by měl program dosáhnout, aniž by specifikoval, jak by měl program dosáhnout výsledku.

Imperativní a procedurální programování

Procedurální programování je druh imperativního programování, ve kterém je program postaven z jedné nebo více procedur (také nazývaných podprogramy nebo funkce). Termíny jsou často používány jako synonyma, ale použití procedur má dramatický vliv na to, jak se imperativní programy objevují a jak jsou konstruovány. Silně procedurální programování, ve kterém jsou změny stavu lokalizovány do procedur nebo omezeny na explicitní argumenty a návraty z procedur, je formou strukturovaného programování . Od 60. let 20. století bylo strukturované programování a obecně modulární programování propagováno jako techniky zlepšující udržovatelnost a celkovou kvalitu imperativních programů. Koncepty objektově orientovaného programování se pokoušejí tento přístup rozšířit.

Procedurální programování by mohlo být považováno za krok směrem k deklarativnímu programování. Programátor může často říct, pouhým pohledem na názvy, argumenty a návratové typy procedur (a související komentáře), co má konkrétní procedura dělat, aniž by se nutně musel dívat na detaily, jak dosáhne svého výsledku. Současně je stále nezbytný kompletní program, protože do značné míry opravuje příkazy, které mají být provedeny, a jejich pořadí provedení.

Odůvodnění a základy imperativního programování

Hardwarová implementace téměř všech počítačů je nezbytná. Téměř veškerý počítačový hardware je určen ke spouštění strojového kódu , který je nativní v počítači a je napsán v imperativním stylu. Z tohoto pohledu nízké úrovně je stav programu definován obsahem paměti a příkazy jsou instrukce v nativním strojovém jazyce počítače. Imperativní jazyky vyšší úrovně používají proměnné a složitější příkazy, ale stále se řídí stejným paradigmatem. Recepty a kontrolní seznamy procesů , i když nejsou počítačovými programy , jsou také známé pojmy, které jsou svým stylem podobné imperativnímu programování; každý krok je instrukce a fyzický svět drží stav. Protože základní myšlenky imperativního programování jsou koncepčně známé a přímo ztělesněné v hardwaru, je většina počítačových jazyků v imperativním stylu.

Přiřazovací příkazy v imperativním paradigmatu provádějí operaci s informacemi umístěnými v paměti a ukládají výsledky do paměti pro pozdější použití. Imperativní jazyky na vysoké úrovni navíc umožňují vyhodnocování složitých výrazů , které mohou sestávat z kombinace aritmetických operací a vyhodnocení funkcí , a přiřazení výsledné hodnoty do paměti. Smyčkové příkazy (jako smyčky while , do while a smyčky ) umožňují sekvenci příkazů provést několikrát. Smyčky mohou buď spustit příkazy, které obsahují předem definovaný počet opakování, nebo je mohou provádět opakovaně, dokud se nezmění některé podmínky. Podmíněné větvící příkazy umožňují provést sekvenci příkazů, pouze pokud je splněna nějaká podmínka. V opačném případě jsou příkazy přeskočeny a sekvence provádění pokračuje z příkazu, který je následuje. Bezpodmínečné větvení umožňuje přenos prováděcí sekvence do jiné části programu. Patří sem skok ( v mnoha jazycích nazývaný goto ), přepínač a podprogram, podprogram nebo volání procedury (které se obvykle po volání vrátí k dalšímu příkazu).

Na počátku vývoje programovacích jazyků na vysoké úrovni zavedení bloku umožnilo konstrukci programů, ve kterých by bylo možné se skupinou prohlášení a prohlášení zacházet jako s jedním příkazem. To vedle zavedení podprogramů umožnilo vyjádření složitých struktur hierarchickým rozkladem na jednodušší procedurální struktury.

Mnoho naléhavých programovacích jazyků (například Fortran , BASIC a C ) jsou abstrakce z assembleru .

Historie imperativních a objektově orientovaných jazyků

Nejčasnějšími naléhavými jazyky byly strojové jazyky původních počítačů. V těchto jazycích byly pokyny velmi jednoduché, což usnadňovalo implementaci hardwaru, ale bránilo vytváření složitých programů. FORTRAN , vyvinutý Johnem Backusem v International Business Machines (IBM) počínaje rokem 1954, byl prvním velkým programovacím jazykem, který odstranil překážky, které strojový kód představuje při vytváření komplexních programů. FORTRAN byl kompilovaný jazyk, který umožňoval pojmenované proměnné, složité výrazy, podprogramy a mnoho dalších funkcí, které jsou nyní v imperativních jazycích běžné. V příštích dvou desetiletích došlo k rozvoji mnoha dalších hlavních programovacích jazyků na vysoké úrovni. Na konci padesátých a šedesátých let byl ALGOL vyvinut s cílem umožnit snadnější vyjádření matematických algoritmů a v některých počítačích dokonce sloužil jako cílový jazyk operačního systému . MUMPS (1966) přenesli imperativní paradigma do logického extrému tím, že neměli vůbec žádná prohlášení, spoléhali se čistě na příkazy, a to dokonce do té míry, aby byly příkazy IF a ELSE navzájem nezávislé, propojené pouze vnitřní proměnnou pojmenovanou $ TEST. COBOL (1960) a BASIC (1964) byly pokusy o to, aby syntaxe programování vypadala spíše jako angličtina. V 70. letech vyvinul Pascal Niklaus Wirth a C vytvořil Dennis Ritchie, když pracoval v Bell Laboratories . Wirth pokračoval v návrhu Modula-2 a Oberon . Pro potřeby amerického ministerstva obrany , Jean Ichbiah a tým Honeywell začala navrhovat Adu v roce 1978, poté, co projekt 4-leté definovat požadavky na jazyk. Specifikace byla poprvé publikována v roce 1983, s revizemi v letech 1995, 2005 a 2012.

Osmdesátá léta zaznamenala rychlý růst zájmu o objektově orientované programování . Tyto jazyky byly ve stylu imperativní, ale přidávaly funkce pro podporu objektů . V posledních dvou desetiletích 20. století došlo k rozvoji mnoha takových jazyků. Smalltalk -80, původně koncipovaný Alanem Kayem v roce 1969, byl vydán v roce 1980 výzkumným centrem Xerox Palo Alto Research Center ( PARC ). Kresba z konceptů v jiném objektově orientovaném jazyku Simula (který je považován za světově první objektově orientovaný programovací jazyk , který byl vytvořen v roce 1960) - Bjarne Stroustrup navrženy C ++ , objektově orientovaný jazyk založený na C . Design C ++ začal v roce 1979 a první implementace byla dokončena v roce 1983. Na konci 80. a 90. let 20. století byly pozoruhodnými imperativními jazyky čerpajícími z objektově orientovaných konceptů Perl , vydaný Larry Wallem v roce 1987; Python , vydaný Guidem van Rossumem v roce 1990; Visual Basic a Visual C ++ (který zahrnoval knihovnu Microsoft Foundation Class Library (MFC) 2.0) vydanou společností Microsoft v letech 1991 a 1993; PHP , vydané Rasmusem Lerdorfem v roce 1994; Java od Jamese Goslinga ( Sun Microsystems ) v roce 1995, JavaScript od Brendana Eicha ( Netscape ) a Ruby od Yukihira „Matz“ Matsumota, obě vydané v roce 1995. Microsoft .NET Framework (2002) je ve svém jádru nezbytný, protože jsou jeho hlavní cílové jazyky, VB.NET a C#, které na něm běží; nicméně Microsoft F# , funkční jazyk, také běží na něm.


Viz také

Poznámky

Reference

  • Pratt, Terrence W. a Marvin V. Zelkowitz. Programming Languages: Design and Implementation , 3rd ed. Englewood Cliffs, New Jersey: Prentice Hall, 1996.
  • Sebesta, Robert W. Koncepty programovacích jazyků , 3. vyd. Reading, Mass .: Addison-Wesley Publishing Company, 1996.
Původně vychází z článku „Imperativní programování“ od Stan Seibert z Nupedia , licencovaný pod licencí GNU Free Documentation License .