Studio      23. 11. 2023

Paradigma strukturního programování. "Zapomenutá" programovací paradigmata. Jazyky podporující toto paradigma

REKURZIVNÍ VÝPOČET V RŮZNÝCH PROGRAMOVACÍCH PARADIGTECH.

G.V. Vanykina, A.V. Jakušin

Státní pedagogická univerzita v Tule pojmenovaná po. L. N. Tolstoj

[e-mail chráněný]

1. Paradigmata moderního programování.

K historicky prvním technologickým technikám v oblasti programování patří dekompozice obecné struktury řešeného problému na takové komponenty, které jsou v tomto kontextu elementární. Následně byl pro tento přístup vyvinut seriózní teoretický základ a řada doporučených technologických technik, které dohromady tvoří moderní programování. V závislosti na volbě „základny prvků“ můžete získat různé sady metodických technik, pravidel, vztahů, závislostí atd. k řešení daného problému, které dohromady tvoří programovací paradigma.

Je třeba poznamenat, že slovo „paradigma“ vstoupilo do programování z vlivné knihy „The Structure of Scientific Revolutions“, kterou napsal historik vědy Thomas Kuhn v roce 1970. Kuhn tento termín použil k popisu souboru teorií, standardů a metod, které dohromady tvoří způsob organizace vědeckého poznání – jinými slovy způsob vidění světa. Kuhnovým hlavním bodem je, že k revolucím ve vědě dochází, když je staré paradigma revidováno, odmítnuto a nahrazeno novým.

V podobném smyslu, jako model nebo příklad a obecně jako organizační přístup, je toto slovo použito v přednášce „Programming Paradigms“ Roberta Floyda, vítěze Turingovy ceny z roku 1979.

Programovací paradigma je základním konceptem teorie programování na vysoké úrovni, a proto jej nelze striktně definovat. Paradigmatem v programování rozumíme vnitřně konzistentní soubor programových prvků, které mají společné základní rysy, logické i algoritmické, a základní pojmy spojené s těmito prvky. Podobně lze o paradigmatu v programování říci, že je to způsob konceptualizace toho, jak provádět výpočty a jak by měla být strukturována a organizována práce vykonávaná počítačem.

Programovací paradigmata zaujímají důležité místo v technologii vývoje softwaru. Právě kolem nich se začínají budovat a rozvíjet metodické koncepty. Tato role je dána tím, že vznikající nové nápady pro tvorbu programů jsou zpočátku implementovány do jednoduchých nástrojů podporujících výzkum a experimentální ověřování navrženého stylu, kterými jsou nejčastěji programovací jazyky. Po zobecnění prvotních zkušeností přichází pochopení výhod a nevýhod, což nám umožňuje přejít k formování metodik zajišťujících využití paradigmatu při vývoji velkých softwarových systémů. Pokud rozvinuté paradigma není schopno sloužit jako základ průmyslové metodologie, je odmítnuto nebo aplikováno v omezeném měřítku. Můžeme říci, že programovací paradigma je implementováno prostřednictvím programovacích metodik, které jsou uzavřeny v souboru dohod a dohod o základních jazykových nástrojích a jejich kombinacích, které jsou pro dané paradigma přijatelné a nepřijatelné.

V závislosti na metodě rozkladu lze rozlišit následující hlavní programovací paradigmata uvedená v tabulce 1.

Tabulka 1. Základní programovací paradigmata

Název paradigmatu

Metoda rozkladu

Příklad programovacích jazyků

Rozkazovací způsob

(synonyma: direktivní, procedurální)

Podprogramy, abstraktní datové typy

Fortran, C, Pascal, Basic

Deklarativní

(komponenty: logické a funkční)

Cíle vyjádřené pomocí predikátového počtu. Pravidla „když-pak“.

Lisp, Scheme, Prolog, ML, Haskell

Objektově orientovaný

Třídy a objekty

Java, C++, Ruby

Programování s omezením

Invariantní vztahy, systém omezení

jazyky ​​CLP(X), SETL, Prolog III

Scénář

Základní scénář zpracování nebo řízení

Perl, PHP, Python, ASP

Je třeba poznamenat, že dodržování určitého paradigmatu výrazně ovlivňuje technologický přístup k řešení problémů a používání různých druhů charakteristických heuristických struktur v programátorské praxi. Obecně lze říci, že volba a používání jednoho paradigmatu po dlouhou dobu zanechává určitý otisk v myšlení programátora (zejména začátečníka) a může být velmi obtížné prolomit začarovaný kruh zavedených „klišé“, kdy je nutné řešit nestandardní problémy. Pro uživatele jakékoli úrovně, jakmile je učiněn, volba určitého paradigmatu v podstatě určuje jak jeho postoj k počítačovým technologiím, tak efektivitu jejich využití.

Profesionální znalost výpočetní techniky a vysoká úroveň informační kultury jsou v současnosti nemožné bez jasného pochopení nejen principů fungování počítače, ale ve větší míře i jeho potenciálních možností. Tento trend nemůže neovlivňovat strukturu studia informatiky jak na univerzitě, tak především ve škole, neboť právě školní vzdělání je základním základem, který určuje a podporuje další rozvoj budoucího odborníka.

Problém rozvoje algoritmické kultury školáků jako základní složky informační kultury je řešen z pohledu různých programovacích paradigmat závislých na řadě faktorů: osnov pro výuku kurzů informatiky, hardwaru a softwaru i osobní a profesní kvality učitele. Sekce „Programování“ v rámci všeobecného stupně vzdělání školáků zahrnuje studium základů imperativu ( Basic, Pascal, C , školní algoritmický jazyk) nebo objektově orientovaný ( Delphi, C++, Java ) paradigmata. V rámci výše uvedených paradigmat je zpravidla realizována i profilová příprava studentů středních škol v přírodních vědách. Je však třeba poznamenat, že výuka programování v konkrétním jazyce není hlavním úkolem při implementaci algoritmického tréninku pro školáky. Mnohem vyšší prioritou je nácvik algoritmického přístupu k řešení problémů, schopnost vyhodnotit efektivitu vyvinutého algoritmu z hlediska řešeného problému a volba technologie pro jeho implementaci - tedy mluvíme o seznámení s metodami tvorby algoritmických modelů, jejichž implementace je možná v rámci jakéhokoli paradigmatu.

Vývoj různých programovacích paradigmat probíhal vzájemně paralelně. Dlouhou dobu dominoval imperativní přístup, v 70. a 80. letech se důraz přesunul ke studiu neklasických paradigmat, 90. léta byla ve znamení rychlého rozvoje objektově orientovaného paradigmatu a zavádění jeho prvků do ostatní. Vývoj programovacích jazyků z pohledu různých paradigmat je znázorněn na obr. 1

Fortran

Algol, C

Pascal

Modula

Oberon

Směrnice

Základní

LISP

ML, Schéma

Haskell

Deklarativní

Prolog

CProlog

VB, C++, Object Pascal

Java, C#

Objektově orientovaný

Pokec

Rubín

SETL

Programování v omezeních

Prolog III

CPL (X)

Perl

Krajta

Scénář

PHP, ASP

Obr. 1. Vývoj programovacích jazyků a paradigmat

Abychom mohli studovat alternativní metodu v programování, můžeme navrhnout technologii použití rekurzivních symbolůproblémy při studiu informatiky, protože rekurze jako základní matematický koncept je implementována velmi podobně v kontextu různých programovacích paradigmat. Rekurzivní konstrukce obecně nejsou pro většinu programovacích jazyků přirozené a jejich implementace vyžaduje určitou úroveň abstrakce od zvolené metodologie tvorby programů. Zároveň je třeba věnovat pozornost možné neefektivitě a značné složitosti rekurzivních algoritmů v některých případech, proto je vhodné vyvíjet rekurzivní algoritmy s následným posouzením jejich složitosti.

Podívejme se na koncepční schopnosti různých paradigmat používaných k implementaci rekurze.

2. Imperativní paradigma.

Imperativní programování – jeden z nejpřirozenějších přístupů k psaní programů pro rozšířenou von Neumannovu architekturu. Program se v tomto případě skládá z operátorů přiřazení a klauzulí, které řídí pořadí jejich provádění. Direktivní programování je založeno na automatovém modelu počítače, který odděluje abstrakce stavu a chování. V tomto případě je program považován za proces změny stavu prováděním jednotlivých příkazů. Imperativnost je zde chápána jako indikace pro kalkulačku, že Jak vyřešit problém. Rekurze v direktivních jazycích je implementována vytvořením speciálního druhu podprogramů, které umožňují rekurzivní volání a použití speciální technologie pro překlad rekurzivních programů do strojových kódů. V direktivních jazycích existuje možnost alternativy mezi iterací a rekurzí, ale právě použití druhé zmíněné umožňuje vytvářet nejen efektivní, ale také snadno čitelné algoritmy.

3.1. Logické programování se objevil jako výsledek výzkumu skupiny francouzských vědců vedených Colmerierem v oblasti analýzy přirozeného jazyka. Následně bylo zjištěno, že logické programování je stejně efektivní i při realizaci dalších úloh umělé inteligence, pro které se v současnosti převážně používá. Logické programování se také ukazuje jako vhodné pro implementaci dalších složitých úloh.

Logické programování je založeno na predikátové logice. Predikátová logika je odvětví formální logiky, které se vyvinulo ve 20. století. V logickém programování je důraz kladen na popis struktury aplikačního problému spíše než na instruování počítače, co by měl dělat. V logickém programování představuje program nějakou teorii (popsanou v poměrně omezeném jazyce) a tvrzení, které je třeba dokázat. Důkaz tohoto prohlášení bude sestávat z provedení programu.

Práce programu v logickém jazyce se uskutečňuje hledáním důkazu navrhovaného tvrzení v existující bázi znalostí, což je soubor určitých faktů a pravidel. Rekurze v jazycích tohoto paradigmatu je implementována jak v procesu hledání důkazů, tak ke specifikaci mechanismu takového hledání. Stanovení pravdivostní hodnoty výroku má rekurzivní povahu, a proto je zde rekurze implementována poměrně přirozeným způsobem.

3.2. Funkcionální programování se opírá o teorii rekurzivních funkcí a Churchův lambda kalkul. Důraz je kladen na závislost mezi funkcemi na datech. Funkční program se skládá z kolekce definic funkcí, které zase představují volání jiných funkcí a příkazů, které řídí sekvenci volání. Ve funkcionálních jazycích je rekurze implementována přirozeně, protože je základním základem pro konstrukci sémantiky jazyka. Obecně platí, že funkční program neobsahuje operátor přiřazení, výpočet jakékoli funkce nevede k jiným vedlejším efektům, než je skutečný výpočet její hodnoty. Větvení výpočtů je založeno na mechanismu zpracování argumentů podmíněné věty a cyklické výpočty jsou realizovány pomocí rekurze.

4. Objektově orientované paradigma.

Objektově orientované programování (OOP) je přirozeným vývojem dřívějších metodologií programování. Výsledkem dekompozice objektů je množina objektů, které jsou následně implementovány jako proměnné některých speciálně vyvinutých typů (tříd), což jsou množina datových polí a metod, které s těmito poli pracují. Dá se říci, že OOP – je modelování objektů prostřednictvím hierarchicky souvisejících tříd. Zároveň jsou nám skryty nepodstatné detaily předmětu, a pokud nějakému předmětu dáme příkaz, tak on „ví“, jak jej provést. Zásadním pojmem v OOP je pojem odpovědnosti resp odpovědnost za provedení akce.

Všechny objekty jsou reprezentativní, popř kopie, třídy. Metoda, kterou objekt vyvolá v reakci na zprávu, je určena třídou, do které příjemce zprávy patří. Všechny objekty stejné třídy používají stejné metody jako odpověď na stejné zprávy. Třídy jsou reprezentovány jako hierarchická stromová struktura, ve které jsou třídy s obecnějšími rysy umístěny v kořeni stromu a specializované třídy a nakonec jednotlivci jsou umístěny ve větvích. Již samotná dekompozice objektů obsahuje prvky rekurzivních konstrukcí, jelikož hierarchie takto získaných objektů má prvky sebepodobnosti. Jak víte, objektově orientované programování je založeno na třech hlavních konceptech: zapouzdření (skrytí dat ve třídě nebo metodě); dědictví; polymorfismus. Zapouzdření lze považovat za ochranný obal kolem kódu dat, se kterými tento kód pracuje. Shell definuje chování a chrání kód před libovolným přístupem zvenčí. dědictví - je proces, při kterém jeden typ dědí vlastnosti jiného typu. Polymorfismus je koncept, který vám umožňuje mít různé implementace pro stejnou metodu, která bude vybrána v závislosti na typu objektu předávaného metodě při volání.

Objektově orientované paradigma zaujímá zvláštní postavení mezi všemi existujícími, protože většina moderních jazyků různých stylů je objektově orientovaná, ale obecně se objektově orientovaná implementace jazyka výrazně liší od standardní.

Rekurze je v tomto paradigmatu implementována jak v procesu dekompozice objektu, tak přímou cestou. Obecně je vývoj objektově orientovaných programů o několik řádů obtížnější než tradiční, ale budování rekurzivní hierarchie objektů je nejen docela proveditelné, ale také životně důležitý úkol pro školáky.

5. Programování v omezeních.

Programování s omezeními je poměrně nový směr v deklarativním programování. Objevil se v 80. letech dvacátého století jako výsledek rozvoje symbolických výpočetních systémů, umělé inteligence a operačního výzkumu. Základní myšlenkou programování s omezeními je definovat sadu proměnných a nastavit omezení, která musí splňovat, a systém najde vhodné hodnoty.

Programování s omezením úzce souvisí s tradičním logickým programováním. Většina systémů s omezeným programováním je jazykový interpret Prolog s vestavěným mechanismem pro řešení určité třídy problémů uspokojení omezení. Programování v takových systémech se nazývá Constraint Logic Programming (CLP) a většina jazyků nebo knihoven se nazývá CLP(X), kde X označuje třídu problémů, které se řeší.

Například CLP(B) znamená schopnost řešit rovnice s booleovskými proměnnými. CLP(Q) jsou rovnice v racionálních číslech a CLP(R) jsou v reálných číslech. Nejoblíbenějšími řešiteli problémů na konečných množinách celých čísel jsou CLP(FD).

Příkaz problému je konečná množina proměnných X = ( x 1, ..., x n ), odpovídající konečné (vyčíslitelné) množiny hodnot D X = ( dx 1, ..., dx n ) a soubor omezení C = (c1,..., cm ). Systém omezení může zahrnovat rovnice, nerovnice, logické funkce a také jakékoli přípustné formální konstrukce spojující proměnné z množiny X . Řešením problému je sestrojit sadu proměnných, která splňuje všechna omezení c i , kde i = 1,.., m.

Sémanticky se programování s omezujícími podmínkami liší od tradičního logického programování především v tom, že provádění programu není považováno za dokazování prohlášení, ale za hledání hodnot proměnných. V tomto případě nezáleží na vnitřním pořadí řešení pro provádění jednotlivých omezení a systém programování omezení se zpravidla snaží optimalizovat pořadí důkazu příkazů, aby se minimalizoval návrat v případě selhání. Dochází tak k použití schématu zpětné rekurze. Rekurzivní konstrukce jsou obecně implementovány stejným způsobem jako v logickém programování.

6. Paradigma scénáře.

Skriptovací jazyky. Skriptovací jazyky udělaly v posledních letech obrovský pokrok. Před deseti lety jim byla přidělena role pomocných prostředků, ale skepsi vůči nim nyní vystřídal zájem a uznání.

Skriptovací jazyky mají poměrně dlouhou historii vývoje. Koncept skriptovaného programování se objevil jako přirozený vývoj jazyka LISP . První skriptovací jazyky obsahují vestavěné ovládací prvky příkazového shellu pro operační systém. Dávkový soubor v jazyce operačního systému je řídicí skript, který provádí danou sekvenci akcí. Můžeme říci, že skript „slepuje“ různé části operačního systému a interaguje s nimi.

V současné době je popularita skriptovacích jazyků spojena s vývojem Internet -technika. Skriptovací jazyky se používají k vytváření dynamických, interaktivních web -stránky, jejichž obsah se upravuje v závislosti na akcích uživatele a stavu dalších stránek a dat.

Charakteristickým rysem skriptovacích jazyků je vytvoření programu v nějakém externím jazyce v důsledku provádění skriptu. Skriptovací jazyk se v malé míře opírá o vytvoření konečného produktu od nuly a ve větší míře o využití možností operačního systému, grafického prostředí, aplikačního servisního enginu a dalších podobných komponent, jejichž interakce se provádí pomocí skripty.

Paradigma scénáře zahrnuje rozdělení úkolu do samostatných částí, z nichž každá je řešena specializovaným softwarem; scénář funguje jako „dispečer“ zodpovědný za organizaci jejich interakce.

Skriptovací jazyky pro web -vývoje vznikaly především v 90. letech XX století a zahrnují prvky různých programovacích paradigmat od imperativních po objektově orientované. Mezi nejvýkonnější a nejoblíbenější skriptovací systémy patří následující: Perl, Python, PHP, ASP . Syntaxe a sémantika různých skriptovacích jazyků jsou velmi podobné. To je způsobeno výrazným vlivem jazyků C a C++ na programátorskou komunitu. Podpora rekurze ve skriptovacích jazycích je implementována podobně jako imperativní a objektově orientovaná paradigmata.

Moderní metodologická a technická literatura poměrně často poskytuje příklady implementace rekurzivních programů v různých programovacích paradigmatech. Velká pozornost věnovaná rekurzi je potvrzením skutečnosti, že rekurzivní metodologie umožňuje soustředit se na samotnou logiku řešení problému, nikoli na detaily jeho implementace. Můžeme tedy konstatovat, že rekurze není pouze jednou z alternativních metod v programování, ale také určitým stylem abstraktního algoritmického myšlení.

Dnes pochopíme, co jsou programovací paradigmata a charakteristické rysy každého z nich.

Definice paradigmatu obvykle zní takto:

Paradigmata jsou souborem principů myšlenek a konceptů, které určují styl psaní počítačového programu.

Je třeba také poznamenat, že paradigmata existují nejen v programování, ale také ve filozofii atd.

Na základě definice můžeme říci, že programovací paradigma je specifický soubor principů pro psaní počítačového softwaru.

Typy programovacích paradigmat

Náhodou se stalo, že mnoho programátorů navrhlo své principy, způsoby psaní programu a v důsledku toho vzniklo velké množství paradigmat.

Uvádíme nejoblíbenější z nich:

  • Imperativní programování
  • Strukturované programování
  • Deklarativní programování
  • Objektově orientované programování

Ve skutečnosti existuje mnohem více paradigmat, která jsme v seznamu neuvedli, pokrýváme pouze ta nejznámější z nich.

Podívejme se krátce na každou z nich

Imperativní programování

Úplně první paradigma, které se zformovalo bezprostředně po nástupu počítačů.

z angličtiny rozkazovací způsob- objednat

Charakteristické rysy imperativního programování:

Ve zdrojovém kódu jsou zapsány příkazy „objednávky“, nikoli třídy, jak je tomu například v objektově orientovaném programování.

Všechny instrukce musí být provedeny postupně, jedna po druhé (například nemůžeme přeskakovat z jedné části kódu do druhé)

Po provedení instrukcí lze data zapisovat do paměti a číst z paměti.

Jazyky reprezentující paradigma: strojové (binární) kódy, Assembly, fortran, algol, cobol

Strukturované programování

Tuto metodu navrhl holandský vědec

Edsger Dijkstra 1930-2002

Ale hlavní koncept ve strukturovaném programování je koncept bloky a hierarchická struktura a která používá tři hlavní řídicí struktury:

  • subsekvence
  • větvení

Strukturované programování má také 7 principů popsaných Dijkstrou:

  1. úplné odmítnutí použití operátoru goto; *
  2. každý program je postaven na třech řídicích strukturách: sekvence, cyklus a větvení;
  3. základní řídicí struktury lze libovolně vnořovat do sebe;
  4. Opakující se komponenty by měly být navrženy jako podprogramy;
  5. Každá logická struktura by měla být formátována jako blok;
  6. všechny struktury musí mít jeden vstup a jeden výstup a ne více;
  7. vývoj programu by měl probíhat krok za krokem pomocí „žebříkové“ metody (metoda shora dolů)

* —
goto je bezpodmínečný skokový operátor, který byl široce používán v 70. letech 20. století

Deklarativní programování

představuje specifikaci řešení problému a popisuje, o jaký problém se jedná a očekávaný výsledek práce.

Je v kontrastu s imperativním programováním, protože deklarativní programování popisuje Co udělat a v jiném Jak dělat.

Objektově orientované programování (OOP)

je nejpopulárnější a běžně používané paradigma akceptované po celém světě téměř všemi programátory. Na tom je postaveno veškeré průmyslové programování. Hlavní myšlenkou je reprezentovat program jako objekty, které zase představují instanci třídy, a třídy zase tvoří hierarchii dědičnosti.

Základní pojmy OOP

Abstrakce dat— zvýraznění významných informací a jejich oddělení od nepodstatných informací.

Zapouzdření- to je vlastnost, která umožňuje kombinovat data a metody ve třídě

Dědictví— vlastnost, která vám umožňuje vytvořit novou třídu založenou na staré třídě (zdědit všechny její vlastnosti)

Polymorfismus- a tato vlastnost vám umožňuje používat objekty se stejným rozhraním

(ZÁKLADY ALGORITMIZACE A PROGRAMOVÁNÍ)
  • Programovací paradigmata a technologie
    Cíle kapitoly 1. Prostudujte si pojmy „paradigma programování“, „technologie programování“. 2. Získejte obecný přehled o moderních technologiích vývoje softwaru. 3. Prostudujte si fáze tvorby strukturálního programu. 4. Seznamte se s modely životního cyklu vývoje softwaru...
  • Programovací paradigmata SE
    SWEBOK zahrnuje řadu programovacích paradigmat Viz: Lavrishcheva E. M. Paradigmata programování typu Assembly v softwarovém inženýrství // UKRProg-2014. č. 2-3. s. 121-133. . Jeho programovací bootcampy zahrnují následující: procedurální programování(kurz CS1011 „Základy programování“)...
    (SOFTWAROVÉ INŽENÝRSTVÍ A TECHNOLOGIE PRO PROGRAMOVÁNÍ KOMPLEXNÍCH SYSTÉMŮ)
  • PROGRAMOVACÍ PARADIGMA
    MODULÁRNÍ PROGRAMOVÁNÍ. ZÁKLADNÍ POJMY Jedním z klíčových problémů moderního programování je opětovné použití modulů a komponent (KPI). Mohou to být programy, podprogramy, algoritmy, specifikace atd., vhodné pro použití při vývoji nového, složitějšího softwaru....
    (SOFTWAROVÉ INŽENÝRSTVÍ. PARADIGMA, TECHNOLOGIE A NÁSTROJE CASE)
  • Procesní paradigma
    Procesní paradigma bylo chronologicky první a dlouho převládalo. V současnosti postupně ustupuje objektově orientovanému paradigmatu, i když stále zaujímá zhruba polovinu trhu vývoje softwaru. Aplikuje se na všech úrovních vývoje softwaru...
    (ALGORITMIZACE A PROGRAMOVÁNÍ)
  • Deklarativní a procedurální paměť
    Dalším nezávislým způsobem funkční organizace paměti, nezávislým na ostatních, je její rozdělení na deklarativní A procesní. Tyto dva způsoby organizace paměti mají zcela pochopitelný funkční základ. Forma deklarativní paměti je navržena tak, aby podporovala duševní...
    (Psychologie a pedagogika)
  • Programovací paradigma je soubor myšlenek a konceptů, které určují styl psaní programů.

    Imperativní paradigma popisuje proces výpočtu ve formě instrukcí, které mění stav programu. Imperativní program je velmi podobný imperativním příkazům v přirozených jazycích, to znamená, že jde o sekvenci příkazů, které musí počítač provést. Založeno na Turing-Post modelu konečného automatu.

    Prvními imperativními jazyky byly strojové kódy - nativní programovací jazyk počítače. V těchto jazycích byly instrukce extrémně jednoduché, což snížilo zátěž počítačů, ale znesnadnilo psaní velkých programů. V roce 1954 se objevil první „lidský“ programovací jazyk - FORTRAN, poté ALGOL, COBOL, BASIC, Pascal, C.

    Jedním z charakteristických rysů imperativního programování je přítomnost proměnných s operací „destruktivní přiřazení“. To znamená, že existovala proměnná A, měla hodnotu X. Algoritmus nařizuje v dalším kroku přiřadit hodnotu Y proměnné A. Hodnota, kterou měla A, bude „navždy zapomenuta“.

    Imperativní programování je nejvhodnější pro implementaci malých dílčích úloh, kde je rychlost provádění na moderních počítačích velmi důležitá. Kromě toho je práce s externími zařízeními obvykle popisována z hlediska sekvenčního provádění operací („otevři kohoutek, načerpej vodu“), což z takových úkolů dělá ideální kandidáty pro nezbytnou implementaci.

    Zdá se, že volba rámce imperativního paradigmatu pro výuku základů programování je nepochybná. Důvodů je několik:

    · imperativní paradigma je nejbližší lidské přirozenosti a intuitivnímu pojetí algoritmu v raných fázích vývoje myšlení (pozitivní zkušenost vývojového vzdělávání s prvky algoritmizace je již na základní škole);

    · programování v rámci imperativního paradigmatu je efektivní pro širokou třídu úloh, z nichž mnohé spadají do pásma proximálního rozvoje žáků vyšších ročníků základní školy;

    · imperativní paradigma je nejblíže povaze počítače, základním principům jeho fungování, neboť přes veškerou složitost moderního počítače jej lze na hardwarové úrovni stále považovat za jakýsi automat (procesor + paměť + ...) s konečnou množinou stavů (obsahu) paměti);

    · podíl softwarových produktů vytvořených výhradně v rámci paradigmatu deklarativního programování je malý; Zpravidla se při řešení problémů používá kombinace paradigmat, z nichž jedno je imperativní;

    · velký výběr programovacích systémů ve formě samostatného softwaru a ve formě subsystémů integrovaných do jiných systémů, umožňujících vývoj softwarových produktů s využitím imperativního paradigmatu;


    · rozsáhlé spektrum vzdělávacích, referenčních a dalších publikací o příslušných programovacích systémech v papírové i elektronické podobě na různých médiích a na celosvětové síti.

    Nevýhoda: ve své čisté podobě umožňuje řešit pouze velmi jednoduché problémy.

    Událostí řízené programování je programování, ve kterém jsou specifikovány reakce programu na různé události (uživatelské akce). PMS lze považovat za „potomka“ imperativního paradigmatu. SUP má 2 podtřídy:

    1.Paralelní programování představuje program jako soubor komunikujících procesů, které lze provádět paralelně. Takové programy mohou být prováděny buď na jednom procesoru (střídavě provádění kroků každého procesu) nebo na několika.

    V paralelním procesním systému každý jednotlivý proces zpracovává události. Události mohou být buď obecné pro celý systém, nebo jednotlivé pro jeden nebo několik procesů. V takových pojmech je docela vhodné popsat například prvky grafického uživatelského rozhraní nebo modelování jakýchkoli reálných procesů (například řízení dopravy) - protože koncept události je pro takové úkoly přirozený.

    2.Objektově orientované programování je programovací technologie, ve které je program nahlížen jako soubor objektů a jejich interakcí. Každý programový objekt je instancí nějaké třídy; - třídy mohou zdědit atributy a metody svých nadřazených tříd a přitom přidávat své vlastní. Hierarchie tříd umožňuje modelovat podstatu řešeného problému na několika úrovních podrobností a poté použít třídu, která odpovídá úrovni podrobnosti potřebné k řešení konkrétního dílčího úkolu.

    Je důležité zdůraznit následující základní vlastnosti objektů:

    1.) Vzhledem k tomu, že jeden objekt může ovlivňovat druhý pouze tím, že mu posílá zprávy, nemůže žádným způsobem přímo pracovat s vlastními daty „partnera“, a tudíž nemůže narušit jejich vnitřní konzistenci. Tato vlastnost (skrytí dat) se běžně nazývá zapouzdření.

    2.) Vzhledem k tomu, že objekty interagují výhradně prostřednictvím výměny zpráv, objekty partnera nemusí vědět nic o implementaci manipulátorů zpráv ve svém protějšku. K interakci dochází výhradně ve smyslu zpráv/událostí, které lze poměrně snadno svázat s doménou. Tato vlastnost (popis interakce pouze z hlediska domény) se nazývá abstrakce.

    3.) Objekty interagují výhradně vzájemným zasíláním zpráv. Pokud tedy v jakémkoli scénáři interakce s objektem nahradíte libovolný objekt jiným, který je schopen zpracovat stejné zprávy, bude scénář také realizovatelný. Tato vlastnost (schopnost nahradit objekt jiným objektem s podobnou strukturou třídy) se nazývá polymorfismus.

    Mnoho moderních jazyků podporuje OOP, i když v různé míře: Čistě objektově orientované jazyky, jako Smalltalk a Ruby, jsou navrženy tak, aby podporovaly a dokonce prosazovaly objektově orientovaný vývojový styl a nepodporují jiné programovací styly; - převážně objektově orientované jazyky, jako je Java, C++ a Python, jsou navrženy primárně pro podporu OOP, ale umožňují použití prvků procedurálního programování; - Historicky byly procedurální jazyky, například Perl a Fortran 2002, vylepšovány a byla přidána podpora některých prvků OOP.

    Deklarativní programovací paradigma definuje proces výpočtu tím, že popisuje logiku samotného výpočtu, spíše než řídicí logiku programu.

    Deklarativní programování je opakem imperativního programování; první popisuje, co je třeba udělat, a druhý přesně popisuje, jak to udělat.

    Nejdůležitějšími typy deklarativního programování jsou funkční a logické (nebo relační) programování.

    1.Funkční programování je jednou z alternativ k imperativnímu přístupu. Je založen na Churchově lambda kalkulu. V imperativním programování jsou algoritmy popisy sekvenčně prováděných operací. Existuje koncept „aktuálního prováděcího kroku“ (tj. času) a „aktuálního stavu“, který se v průběhu této doby mění.

    Ve funkcionálním programování neexistuje pojem času. Programy jsou výrazy; provádění programu spočívá ve vyhodnocení těchto výrazů.

    Protože nezáleží na pořadí, ve kterém jsou podvýrazy vyhodnocovány, lze funkcionální programování přirozeně implementovat na platformách, které podporují paralelismus.

    Funkcionální programování, stejně jako jiné „neimperativní“ programovací modely, se obvykle používá k řešení problémů, které je obtížné formulovat z hlediska sekvenčních operací. Do této kategorie spadají téměř všechny úkoly související s umělou inteligencí. Mezi nimi stojí za zmínku úlohy rozpoznávání obrazu, komunikace s uživatelem v přirozeném jazyce, implementace expertních systémů, automatizované dokazování teorémů a symbolické výpočty. Tyto úlohy mají daleko k tradičnímu programování aplikací, takže se jim v učebních osnovách informatiky nevěnuje příliš velká pozornost.

    Logické programování

    Ve funkcionálním programování jsou programy výrazy a jejich provádění spočívá ve výpočtu jejich hodnoty. V logickém programování je program teorií (popsanou v poměrně omezeném jazyce) a tvrzením, které je třeba dokázat. Důkaz tohoto prohlášení bude sestávat z provedení programu.

    Logické programování a jazyk Prolog vznikly z výzkumu v oblasti analýzy přirozeného jazyka. Následně bylo zjištěno, že logické programování je stejně efektivní i při realizaci dalších úkolů umělé inteligence.

    Logické programování umožňuje přirozenou paralelní implementaci.

    Přednáška č. Programovací paradigmata. Imperativní programování.

      Koncept programovacího paradigmatu.

      Klasifikace programovacích paradigmat.

      Imperativní programování.

    1. Koncept programovacího paradigmatu.

    Programovací paradigma je soubor přístupů, metod, strategií, nápadů a konceptů, které určují styl psaní programů.

    Programovací paradigma v moderním programovacím průmyslu je velmi často určováno sadou nástrojů programátora (programovacím jazykem a operačním systémem).

    Programovací paradigma představuje (a definuje), jak programátor nahlíží na provádění programu. Například v objektově orientovaném programování programátor nahlíží na program jako na sadu vzájemně se ovlivňujících objektů, zatímco ve funkcionálním programování je program reprezentován jako řetězec vyhodnocování funkcí.

    Oddanost určité osoby určitému paradigmatu je někdy tak silná, že debaty o výhodách a nevýhodách různých paradigmat jsou v počítačových kruzích klasifikovány jako takzvané „náboženské“ války.

    Historie termínu

    Pojem „paradigma“ zjevně vděčí za svůj moderní význam ve vědecké a technické oblasti Thomasi Kuhnovi a jeho knize „Struktura vědeckých revolucí“ (viz paradigma). Kuhn nazval paradigmaty zavedené systémy vědeckých názorů, v rámci kterých se provádí výzkum. Podle Kuhna může být v procesu rozvoje vědecké disciplíny jedno paradigma nahrazeno jiným (jako např. geocentrická nebeská mechanika Ptolemaia byla nahrazena heliocentrickým systémem Koperníka), zatímco staré paradigma nadále existuje po určitou dobu a dokonce se vyvíjejí díky tomu, že se mnozí z jeho příznivců z toho či onoho důvodu nedokážou přizpůsobit práci v jiném paradigmatu.

    Termín „paradigma programování“ poprvé použil Robert Floyd ve své přednášce pro vítěze Turingovy ceny.

    Floyd poznamenává, že při programování lze pozorovat fenomén podobný Kuhnovým paradigmatům, ale na rozdíl od nich se programovací paradigmata vzájemně nevylučují:

    Jestliže pokrok umění programování jako celku vyžaduje neustálé vymýšlení a zdokonalování paradigmat, pak zdokonalování umění jednotlivého programátora vyžaduje, aby rozšiřoval svůj repertoár paradigmat.

    Podle Roberta Floyda tedy na rozdíl od paradigmat ve vědeckém světě popsaných Kuhnem lze programovací paradigmata kombinovat a obohatit tak nástroje programátora.

    2. Klasifikace programovacích paradigmat.

    Přední paradigma aplikovaného programování založené na imperativním řízení a procedurálně-operátorském stylu výstavby programů si získalo oblibu před více než padesáti lety v oblasti vysoce odborných činností specialistů na organizaci výpočetních a informačních procesů. Poslední dekáda prudce rozšířila geografii informatiky, rozšířila ji do sféry masové komunikace a volného času. Tím se mění kritéria hodnocení informačních systémů a preference při výběru nástrojů a metod zpracování informací.

    Obecná programovací paradigmata, která se objevila na samém počátku éry počítačového programování – mimo jiné paradigmata aplikovaného, ​​teoretického a funkcionálního programování – jsou nejstabilnější.

    Aplikované programování podléhá problémové orientaci, odrážející informatizaci informací a výpočetní procesy numerického zpracování, studované dlouho před nástupem počítačů. Právě zde se rychle objevil jasný praktický výsledek. Přirozeně se v takových oblastech programování jen málo liší od kódování, k tomu zpravidla stačí operátorský styl reprezentace akcí. V praxi aplikovaného programování je zvykem důvěřovat osvědčeným šablonám a knihovnám postupů a vyhýbat se riskantním experimentům. Cení se přesnost a stabilita vědeckých výpočtů. Jazyk Fortran je veteránem aplikačního programování. Teprve v posledním desetiletí se v této oblasti stal poněkud horší než Pascal-C a na superpočítačích paralelní programovací jazyky, jako je Sisal. [, , , ]

    Teoretické programování se drží publikační orientace zaměřené na srovnatelnost výsledků vědeckých experimentů v oblasti programování a informatiky. Programování se snaží vyjádřit své formální modely, ukázat jejich význam a základní podstatu. Tyto modely zdědily hlavní rysy souvisejících matematických konceptů a etablovaly se jako algoritmický přístup v informatice. Touha po evidenci konstrukcí a posouzení jejich efektivity, věrohodnosti, správnosti, správnosti a dalších formalizovaných vztahů ve schématech a programových textech posloužila jako základ pro strukturované programování [, ] a další metody pro dosažení spolehlivosti procesu vývoje programu, např. , kompetentní programování. Standardní podmnožiny Algol a Pascal, které sloužily jako pracovní materiál pro teorii programování, byly nahrazeny pohodlnějšími aplikačními jazyky pro experimentování, jako jsou ML, Miranda, Scheme a další dialekty Lisp. Nyní jsou spojeny podmnožinami C a Java.

    Funkcionální programování vzniklo jako pocta matematické orientaci ve výzkumu a vývoji umělé inteligence a rozvoji nových obzorů v informatice. Abstraktní přístup k prezentaci informací, lakonický, univerzální styl konstruování funkcí, přehlednost exekučního prostředí pro různé kategorie funkcí, svoboda rekurzivních konstrukcí, důvěra v intuici matematika a výzkumníka, vyhýbání se zátěži předčasného řešení bezzásadových problémů alokace paměti, odmítnutí nepřiměřených omezení rozsahu definic - to vše spojuje John McCarthy s myšlenkou jazyka Lisp. Promyšlenost a metodologická platnost prvních implementací Lisp umožnila rychle nashromáždit zkušenosti s řešením nových problémů a připravit je pro aplikované i teoretické programování. V současné době existují stovky funkčních programovacích jazyků zaměřených na různé třídy úloh a typy technických prostředků. [,,,,,,]

    Základní programovací nástroje a metody se vyvíjely s tím, jak se zvyšovala složitost řešených problémů. Došlo ke stratifikaci programovacích paradigmat v závislosti na hloubce a obecnosti propracování technických detailů organizace procesů zpracování počítačových informací. Objevily se různé styly programování, z nichž nejvyspělejší jsou nízkoúrovňové (strojově orientované), systémové, deklarativně-logické, optimalizační-transformační a vysoce výkonné/paralelní programování.

    Nízkoúrovňové programování je charakterizováno hardwarovým přístupem k organizaci provozu počítače, zaměřeným na přístup k jakýmkoli hardwarovým schopnostem. Důraz je kladen na konfiguraci hardwaru, stav paměti, příkazy, řídicí přenosy, posloupnost událostí, výjimky a překvapení, doby odezvy zařízení a úspěšnost odezvy. Jazyk symbolických instrukcí byl na nějakou dobu zastíněn jako vizuální médium, které si Pascal a C zvolili, a to i v mikroprogramování, ale vylepšení uživatelského rozhraní mohou znovu získat jeho pozici. [,,,]

    Systémové programování se vyvíjelo dlouhou dobu pod tlakem servisní a zakázkové práce. Výrobní přístup, který je takové práci vlastní, se opírá o preferenci reprodukovatelných procesů a stabilních programů určených pro opakované použití. U takových programů je opodstatněné schéma zpracování kompilace, statická analýza vlastností, automatizovaná optimalizace a řízení. Této oblasti dominuje imperativně-procedurální styl programování, který je přímým zobecněním operátorského stylu programování aplikací. Umožňuje určitou standardizaci a modulární programování, ale získává poměrně složité struktury, specifikace, testovací metody, nástroje integrace programů atd. Přísné požadavky na efektivitu a spolehlivost jsou splněny vývojem profesionálních nástrojů, které využívají komplexní asociativní sémantickou heuristiku spolu s metodami syntakticky řízeného návrhu a generování programů. Nepopiratelný potenciál takových nástrojů v praxi je limitován složitostí vývoje - vzniká kvalifikační požadavek.

    Vysoce výkonné programování je zaměřeno na dosažení maximálního možného výkonu při řešení zvláště důležitých problémů. Přirozenou rezervou výkonu počítače jsou paralelní procesy. Jejich organizace vyžaduje podrobné zvážení časových vztahů a neimperativní styl řízení akcí. Superpočítače podporující vysoce výkonné výpočty vyžadovaly speciální systémové programovací techniky. Síťový přístup k reprezentaci systémů a procesů pro paralelní architektury byl vyjádřen ve specializovaných paralelních programovacích jazycích a superkompilátorech přizpůsobených k mapování abstraktní hierarchie procesů na úrovni úloh na konkrétní prostorovou strukturu procesorů skutečného zařízení [,,] .

    Deklarativní (logické) programování vzniklo jako zjednodušení funkcionálního programování pro matematiky a lingvisty řešící problémy se symbolickým zpracováním. Obzvláště atraktivní je možnost využití nedeterminismu jako konceptuálního základu, který nás zbavuje předčasného řazení při programování zpracování vzorců. Produkční styl generování procesů s návratností je dostatečně přirozený pro lingvistický přístup k objasňování formalizovaných znalostí odborníky a snižuje startovací bariéru implementace informačních systémů.

    Transformační programování metodicky kombinovalo techniky programové optimalizace, makrogenerace a parciálních výpočtů. Ústředním pojmem v této oblasti je informační ekvivalence. Projevuje se v definování transformací programů a procesů, v hledání kritérií použitelnosti transformací, ve volbě strategie jejich použití. Smíšené výpočty, odložené akce, líné programování, zpožděné procesy atd. se používají jako metody pro zvýšení efektivity zpracování informací za určitých dodatečně identifikovaných podmínek. [,]

    Další vývoj programovacích paradigmat odráží změnu okruhu zájemců o využívání informačních systémů. Vytváření rozsáhlých přístupů k programování je přirozenou reakcí na radikální zlepšení výkonnostních charakteristik zařízení a počítačových sítí. Dochází k přechodu výpočetních nástrojů z třídy technických nástrojů do třídy domácích spotřebičů. Objevila se půda pro aktualizaci přístupů k programování, stejně jako možnost rehabilitace starých myšlenek, které byly špatně vyvinuty kvůli nízké technologii a výkonu počítačů. Je v zájmu rozvíjet výzkumné, evoluční, kognitivní a adaptační přístupy k programování, které vytvářejí perspektivu racionálního rozvoje skutečných informačních zdrojů a počítačového potenciálu. [,]

    Výzkumný přístup s výchovně-herním stylem profesionálního, vzdělávacího a amatérského programování může dát impuls k vynalézavosti při zlepšování programovací technologie, která si na předchozí elementární základně nedokázala poradit s krizovými jevy. [,]

    Evoluční přístup s mobilním stylem dolaďování programů je zcela jasně patrný v konceptu objektově orientovaného programování, které se postupně rozvíjí v předmětově orientované až ego-orientované programování. Opětovné použití definic a dědění vlastností objektů může prodloužit životní cyklus odladěných informačních prostředí, zvýšit spolehlivost jejich provozu a snadnost použití. Kognitivní přístup s interoperabilním stylem vývoje vizuálního rozhraní otevřených systémů a používání nových audio-video nástrojů a nestandardních zařízení otevírají cesty ke zlepšení vnímání komplexních informací a zjednodušení jejich adekvátního zpracování. [,]

    Adaptační přístup s ergonomickým stylem individualizovaného návrhu personalizovaných informačních systémů poskytuje informatikům možnost kvalifikovaně programovat, organizovat a podporovat technologické procesy v reálném čase, které jsou citlivé na lidský faktor a systémový přenos [,].

    Dominance jedné architektonické linie, standardní rozhraní, standardní programovací technologie atd., která se dnes stabilizuje. je zatížena ztrátou agility při aktualizaci informačních technologií. Lidé, kteří jsou zvyklí vše jednou provždy pevně asimilovat, jsou v tomto ohledu obzvláště zranitelní. Při výuce programovacích jazyků se takovým problémům předchází výukou různých programovacích jazyků současně nebo předprezentací základů, které nastavují gramatickou strukturu pro zobecňující pojmy, jejichž variabilita je na zjednodušených výukových příkladech obtížně uchopitelná. Toto je přesně základ, který poskytuje studium funkcionálního programování v tom, že je zaměřeno na představení a analýzu paradigmat, která se vyvinula v praxi programování v různých oblastech činnosti s různou úrovní odborné kvalifikace, což může být užitečné jako konceptuální základ pro studium nových jevů v informatice.

    Programovací paradigma je nástrojem pro formování profesionálního chování. Informatika přešla od profesionálního programování vysoce kvalifikované elity technických specialistů a vědců k volné zábavě aktivní části civilizované společnosti. Zvládnutí informačních systémů porozuměním za účelem kompetentního jednání a odpovědného používání technologií bylo nahrazeno intuitivními dovednostmi chaotického ovlivňování informačního prostředí se skromnou nadějí na štěstí, bez nároků na znalosti. Údržba center sdíleného použití, profesionální podpora integrity informací a příprava dat téměř zcela ustoupila samoobsluze osobních počítačů, nezávislému fungování sítí a heterogenních serverů s interakcí různých komunikací.

    Postavení vyvíjených programů, zpracovávaných dat a správy úloh vedle sebe ustupuje myšlence rozhraní navržených tak, aby se účastnila informačních toků, jako je navigace. Dřívější kritéria kvality: rychlost, úspora paměti a spolehlivost zpracování informací jsou stále více zastiňována herní přitažlivostí a šíří přístupu ke světovým informačním zdrojům. Uzavřené softwarové systémy se známými zárukami kvality a spolehlivosti jsou vytlačovány otevřenými informačními systémy s nepředvídatelným vývojem skladby, způsobů ukládání a zpracování informací.

    Mnoho důležitých pojmů pro programátorskou praxi, jako jsou události, výjimky a chyby, potenciál, hierarchie a ortogonalita konstrukcí, extrapolace a body růstu programu, měření kvality atd. nedosáhla dostatečné úrovně abstrakce a formalizace. To vám umožní předvídat vývoj programovacích paradigmat a vybrat výukový materiál pro budoucnost komponentového programování (COM/DCOM, Corba, UML atd.). Pokud by tradiční prostředky a metody pro výběr opakovaně použitelných komponent podléhaly kritériu modularity, chápané jako optimální volba minimální vazby s maximální funkčností, pak moderní základna prvků umožňuje provoz vícekontaktních jednotek, které provádějí jednoduché operace. [,,,,,]

    Tyto symptomy aktualizace programovacího paradigmatu určují směr změn probíhajících v systému základních pojmů, v pojetí informace a informatiky. Trend používání interpreterů (přesněji neúplné kompilace) místo kompilátorů, avizovaný v pojetí Javy ve srovnání s C, a pokušení objektově orientovaného programování na pozadí obecně přijímaného imperativně-procedurálního stylu programování může být vnímáno jako implicitní pohyb směrem k funkčnímu stylu. Modelovací síla funkčních vzorců je dostatečná pro plnohodnotnou reprezentaci různých paradigmat, což umožňuje na jejich základě extrapolovat získání praktických dovedností v organizaci informačních procesů pro budoucnost.

    V polovině minulého (20.) století pojem „programování“ neimplikoval spojení s počítačem. Dalo by se vidět název knihy "Počítačové programování". Nyní se pod tímto pojmem standardně rozumí organizace procesů na počítačích a počítačových sítích.

    Programování jako věda se v hodnocení výsledků výrazně liší od matematiky a fyziky. Úroveň dosažených výsledků fyziků a matematiků obvykle posuzují odborníci s podobnou nebo vyšší kvalifikací. Při posuzování výsledků programování hraje důležitou roli posouzení uživatele, který nepředstírá znalosti programování. Na rozdíl od konvenčních věd proto specialisté na programování částečně plní funkci převodu svých odborných termínů do uživatelských konceptů.

    Programování má svou vlastní specifickou metodu stanovení spolehlivosti výsledků – jedná se o počítačový experiment. Pokud se spolehlivost v matematice sníží na demonstrativní konstrukce, které jsou srozumitelné pouze odborníkům, a ve fyzice - na reprodukovatelný laboratorní experiment, který vyžaduje speciální vybavení, pak může být počítačový experiment dostupný široké veřejnosti.

    Další rys programování vyplývá z jeho závislosti na rychle se rozvíjející elektronické technologii. Z tohoto důvodu jsou znalosti programování kombinací klasiky a módy. Specifické znalosti módních novinek jsou zastaralé, takže k rychlé aktualizaci znalostí a dovedností potřebujete klasický základ, jehož přímý účel není uživatelům a začátečníkům zcela zřejmý. [,,]

    Programování využívá jako konceptuální základ matematický aparát (teorie množin, teorie čísel, algebra, logika, teorie algoritmů a rekurzivních funkcí, teorie grafů atd.)

    Kritéria kvality programu jsou velmi různorodá. Jejich význam v podstatě závisí na třídě úloh a podmínkách aplikace programů:

    účinnost

    spolehlivost

    udržitelnost

    automatizace

    efektivní využití zdrojů (čas, paměť, zařízení, informace, lidé)

    snadnost vývoje a použití

    viditelnost textu programu

    sledovatelnost procesu programu

    diagnostiku toho, co se děje

    Řazení kritérií často prochází změnami s tím, jak se vyvíjí oblast použití programu, zvyšuje se kvalifikace uživatelů, modernizace zařízení, informační technologie a softwarové inženýrství. Výsledný neustálý vývoj prostoru, ve kterém je problém řešen, přináší další požadavky na styl programování informačních systémů:

    flexibilita

    modifikovatelnost

    vylepšitelnost

    Programování jako věda, umění a technika zkoumá a tvořivě rozvíjí proces tvorby a používání programů, určuje prostředky a metody konstruování programů, s jejichž rozmanitostí se seznámíme v dalších přednáškách věnovaných rozboru řady zákl. programovací paradigmata.

    Existují zjevné potíže s klasifikací programovacích jazyků a určením, zda patří do konkrétního programovacího paradigmatu. V tomto kurzu je programovací paradigma charakterizováno interakcí základních sémantických systémů, jako je zpracování dat, ukládání dat a řízení zpracování dat. S tímto přístupem lze rozlišit tři kategorie paradigmat:

    nízkoúrovňové programování;

    programování v jazycích vyšší úrovně;

    příprava programů založených na ultra-vysokých jazycích.

    Nízkoúrovňové programování se zabývá datovými strukturami diktovanými architekturou a hardwarem. Při ukládání dat a programů se využívá globální paměť a model řízení automatického zpracování dat. [,,,,,,,,,]

    Programování ve vyšších jazycích je přizpůsobeno specifikaci datových struktur, které odrážejí povahu řešených problémů. Používá se hierarchie oblastí viditelnosti datových struktur a procedur pro jejich zpracování, podřízená strukturně-logickému modelu řízení, který umožňuje konvergenci procesu ladění programu. [,,,,,,]