Objektovo orientované programovanie. Programová hudba

  • 14.06.2019

Čo je možné aplikovať na rôzne typy údajov bez zmeny samotného popisu. Je podporovaný v tej či onej forme rôznymi programovacími jazykmi. Schopnosti generického programovania sa prvýkrát objavili vo forme generík (generických funkcií) v sedemdesiatych rokoch v jazykoch Clu a Ada, potom vo forme parametrického polymorfizmu v a jeho potomkov a potom v mnohých objektovo orientovaných jazykoch, ako je C + +, Java, Object Pascal ..NET jazyky, Eiffel a ďalšie.

Collegiate YouTube

  • 1 / 5

    Na zovšeobecnené programovanie sa nazerá ako na metodológiu programovania založenú na oddelení dátových štruktúr a algoritmov pomocou abstraktných popisov požiadaviek. Abstraktné popisy požiadaviek sú rozšírením konceptu abstraktného dátového typu. Namiesto opisu samostatného typu používa generické programovanie opis rodiny typov, ktoré majú spoločné rozhranie a sémantické správanie. Súbor požiadaviek popisujúcich rozhranie a sémantické správanie sa nazýva koncepcia(angl. koncept). Algoritmus napísaný všeobecným štýlom teda možno použiť na akýkoľvek typ, ktorý vyhovuje jeho konceptom. Táto príležitosť je tzv polymorfizmus.

    Hovoria, že typ simuluje koncepcia (je vzorom koncepcie), ak spĺňa jej požiadavky. Koncept je objasnenie iný koncept, ak dopĺňa druhý. Koncepčné požiadavky obsahujú nasledujúce informácie:

    • Platné výrazy(anglické platné výrazy) - výrazy programovacieho jazyka, ktoré sa musia úspešne skompilovať pre typy, ktoré modelujú koncept.
    • Pridružené typy Pridružené typy sú pomocné typy, ktoré majú niečo spoločné s typom modelovania konceptu.
    • Invarianty(angl. invarianty) - také charakteristiky typov, ktoré musia byť pri vykonávaní neustále správne. Zvyčajne sa vyjadruje ako predbežné a následné podmienky. Nesplnenie predpokladu má za následok nepredvídateľnosť príslušnej operácie a môže viesť k chybám.
    • Komplexnosť zaručuje(Anglické záruky zložitosti) - maximálny čas vykonávania platného výrazu alebo maximálne požiadavky na rôzne zdroje počas vykonávania tohto výrazu.

    Alternatívny prístup k definovaniu generického programovania, ktorý možno tzv programovanie generických dátových typov(eng. datatype generic programming), navrhli Richard Bird a Lambert Meertens. V ňom sú štruktúry dátových typov parametrami generických programov. Na tento účel sa do programovacieho jazyka zavádza nová úroveň abstrakcie, a to parametrizácia s ohľadom na triedy algebier s premennými signatúrami. Hoci teórie oboch prístupov sú nezávislé od programovacieho jazyka, Masserov - Stepanov prístup, ktorý kladie dôraz na analýzu konceptov, urobil z C++ svoju hlavnú platformu, zatiaľ čo generické programovanie dátových typov využíva takmer výlučne Haskell a jeho varianty.

    Všeobecný mechanizmus

    Generické programovacie nástroje sú implementované v programovacích jazykoch vo forme určitých syntaktických nástrojov, ktoré umožňujú popisovať dáta (údajové typy) a algoritmy (procedúry, funkcie, metódy) parametrizované dátovými typmi. Funkcia alebo typ údajov má explicitne opísané parametre formálneho typu. Tento popis je zovšeobecnený a nemožno ho priamo použiť v jeho pôvodnej podobe.

    Na tých miestach v programe, kde sa používa generický typ alebo funkcia, musí programátor explicitne špecifikovať parameter skutočného typu, ktorý tvorí inštanciu popisu. Napríklad všeobecný postup na zámenu dvoch hodnôt môže mať parameter typu, ktorý špecifikuje typ hodnôt, ktoré zamieňa. Keď programátor potrebuje zameniť dve celočíselné hodnoty, zavolá procedúru s parametrom typu „integer“ a dvoma parametrami – celé čísla, keď dva reťazce – s parametrom „reťazec“ a dvoma parametrami – reťazce. V prípade údajov môže programátor napríklad opísať generický typ „zoznam“ s parametrom typu, ktorý určuje typ hodnôt uložených v zozname. Potom pri popise skutočných zoznamov musí programátor špecifikovať generický typ a parameter typu, čím sa získa akýkoľvek požadovaný zoznam s použitím rovnakého popisu.

    Keď kompilátor narazí na volanie generického typu alebo funkcie, vykoná potrebné procedúry na kontrolu statického typu, vyhodnotí možnosť danej inštancie a ak je kladný, vygeneruje kód nahradzujúci parameter skutočného typu namiesto parametra formálneho typu v všeobecný popis. Prirodzene, pre úspešné použitie generických popisov musia skutočné typy parametrov spĺňať určité podmienky. Ak generická funkcia porovnáva hodnoty typu parametra, akýkoľvek konkrétny typ použitý v nej musí podporovať operácie porovnávania; ak priraďuje hodnoty typu parametra k premenným, špecifický typ musí zabezpečiť správne priradenie.

    Zovšeobecnené programovanie v jazykoch

    C++

    V jazyku C ++ je generické programovanie založené na koncepte „šablóna“, ktorý sa označuje kľúčovým slovom šablóna... Je široko používaný v štandardnej knižnici C ++ (pozri STL), ako aj v knižniciach boost tretích strán, Loki. Alexander Stepanov výrazne prispel k vzniku pokročilých generických programovacích nástrojov v C ++.

    Ako príklad uvádzame šablónu (zovšeobecnenie) funkcie, ktorá vracia väčšiu hodnotu z dvoch.

    // Popis šablóny funkciešablóna< typename T >T max (T x, T y) (ak (x< y ) return y ; else return x ; } ... // Použitie funkcie špecifikovanej šablónou int a = max (10, 15); ... dvojité f = max (123,11, 123,12); ...

    Java

    Java poskytuje generické programovacie nástroje syntakticky založené na C++ od J2SE 5.0. Tento jazyk má generiká alebo "kontajnery typu T" sú podmnožinou generického programovania.

    „Šeherezáda“ N. A. Rimského-Korsakova, stretávame sa s obrazmi krutého sultána Šahrijara, zručného rozprávača Šeherezády, s majestátnym obrazom mora a plachetnicou námorníka Sindibáda odplávajúceho do diaľky. Programom tohto nádherného diela sa stali arabské rozprávky „Tisíc a jedna noc“. Rimskij-Korsakov to zhrnul v literárnom predslove. Ale už názov suity upriamuje pozornosť poslucháčov na vnímanie určitého obsahu.

    G. Berlioz.

    K programu (z gréckeho "program" - "oznámenie", "objednávka") sú hudobné diela, ktoré majú špecifický názov alebo literárny predhovor, ktoré vytvoril alebo vybral sám skladateľ. Programová hudba je vzhľadom na špecifický obsah pre poslucháčov prístupnejšia a zrozumiteľnejšia. Jej výrazové prostriedky sú najmä razené a svetlé. Skladatelia vo svojich programových dielach hojne využívajú písanie a vizualizáciu orchestrálneho zvuku a výraznejšie zdôrazňujú kontrast medzi obrazovou tematikou, úsekmi formy atď.

    Paleta obrazov a námetov programovej hudby je bohatá a pestrá. Aj toto je obraz prírody – nežné farby „Úsvitu na rieke Moskve“ v predohre k opere „Khovanshchina“ od poslanca Musorgského; ponurá roklina Darial, Terek a hrad kráľovnej Tamary v symfonickej básni „Tamara“ od M. Balakireva; poetické krajiny v dielach C. Debussyho "More", "Moonlight". V symfonických dielach MI Glinky „Kamarinskaya“ a „Aragonese hota“ sú znovu vytvorené šťavnaté, farebné obrázky ľudových sviatkov.

    Mnohé diela tohto druhu hudby sú spojené s nádhernými dielami svetovej literatúry. Hudobní skladatelia sa na ne snažia odhaliť morálne problémy, nad ktorými básnici a spisovatelia uvažovali. PI Čajkovskij (fantasy Francesca da Rimini), F. Liszt (Symfónia k Danteho Božskej komédii) sa venovali Danteho Božskej komédii. Berlioz a Čajkovského predohra-fantasy, tragédia "Hamlet" - Lisztova symfónia. Jedna z najlepších predohier od R. Schumanna bola od R. k dramatickej básni „Manfred" od JG Byrona. Pátos boja a víťazstva, nesmrteľnosť činu hrdinu, ktorý položil život za slobodu svojej vlasti, vyjadril L. Beethoven v predohre k dráme JV Goethe „Egmont ".

    Programové diela zahŕňajú skladby, ktoré sa zvyčajne nazývajú hudobnými portrétmi. Ide o Debussyho klavírnu predohru „The Girl with Flax Hair“, skladbu pre čembalo „The Egyptian“ od J. F. Rameaua, Schumannove klavírne miniatúry „Paganini“ a „Chopin“.

    Niekedy je hudobno-kompozičný program inšpirovaný dielami výtvarného umenia. Klavírna suita Musorgského Obrazy na výstave odrážala skladateľove dojmy z výstavy obrazov výtvarníka V. A. Hartmana.

    Veľkoplošné, monumentálne diela programovej hudby sú spojené s najvýznamnejšími historickými udalosťami. Takými sú napríklad symfónie D. D. Šostakoviča „1905“, „1917“, venované 1. ruskej revolúcii z rokov 1905-1907. a Októbrová revolúcia.

    Programová hudba oddávna priťahuje mnohých skladateľov. Pôvabné skladby v rokokovom štýle napísali pre čembalo francúzski skladatelia 2. polovice 17. – začiatku 18. storočia. LK Daken ("Kukučka"), F. Couperin ("Zberači hrozna"), Rameau ("Princezná"). Taliansky skladateľ A. Vivaldi zjednotil štyri husľové koncerty pod všeobecným názvom „Ročné obdobia“. Vytvárali jemné hudobné náčrty prírody, pastierske výjavy. Obsah každého koncertu skladateľ načrtol v podrobnom literárnom programe. JS Bach vtipne nazval jeden z dielov pre klavír "Capriccio za odchod svojho milovaného brata." V tvorivom dedičstve J. Haydna je viac ako 100 symfónií. Medzi nimi sú programové: „Ráno“, „Poludnie“, „Večer a búrka“.

    Významné miesto mala programová hudba v dielach romantických skladateľov. V Schumannovej hudbe sa jemne a inšpiratívne odkrývajú portréty, žánrové výjavy, nálady, jemné odtiene ľudských citov (klavírne cykly „Karneval“, „Výjavy z detstva“, „Kreislerian“, „Arabeska“). Lisztov veľký klavírny cyklus „Roky putovania“ sa stal akýmsi hudobným denníkom. Pod dojmom zo svojej cesty do Švajčiarska napísal hry „Kaplnka Williama Tella“, „Zvony v Ženeve“, „Na jazere Wallendstadt“. V Taliansku si skladateľa podmanilo umenie veľkých majstrov renesancie. Akýmsi programom v Lisztovej hudbe sa stala poézia Petrarcu, Raffaelov obraz „Zasnúbenie“, Michelangelova socha „Mysliteľ“.

    Francúzsky symfonik G. Berlioz stelesňuje princíp programovania nie všeobecne, ale dôsledne odhaľuje dej v hudbe. „Fantastická symfónia“ má rozsiahly literárny predhovor, ktorý napísal sám skladateľ. Hrdina symfónie ide na ples, potom na ihrisko, potom ide na popravu a potom sa ocitne na fantastickom čarodejníckom sabate. Pomocou pestrého orchestrálneho písma dosahuje Berlioz takmer vizuálne scény divadelnej akcie.

    Ruskí skladatelia sa často obracali na programovú hudbu. Fantastické, rozprávkové zápletky tvorili základ symfonických filmov: „Noc na Lysej hore“ od Musorgského, „Sadko“ od Rimského-Korsakova, „Baba Yaga“, „Kikimora“, „Čarovné jazero“ od A. K. Lyadova. Tvorivú silu ľudskej vôle a rozumu oslávil A. N. Skriabin v symfonickej básni „Prometheus“ („Báseň ohňa“).

    Programová hudba zaujíma dôležité miesto v tvorbe sovietskych skladateľov. Medzi symfónie N. Ya. Myaskovského patria „Kolkhoznaya“, „Aviation“. S. Prokofiev napísal symfonické dielo „Skýtska suita“, klavírne skladby „Prchavé“, „Sarkazmy“; RK Shchedrin - koncerty pre orchester "Mischievous ditties", "Ringing"; MK Koishibaev - báseň pre orchester kazašských ľudových nástrojov "Sovietsky Kazachstan"; ZM Shahidi - symfonická báseň "Buzruk".

    Všeobecné programovanie Všeobecné programovanie je písanie kódu, ktorý možno opätovne použiť s objektmi mnohých rôznych typov.

    V skorých verziách Java to bolo dosiahnuté prostredníctvom dedenia, ArrayList obsahujúceho pole Object referencií. Vždy, keď bola načítaná hodnota, muselo sa vykonať odliatie.

    Zovšeobecnené programovanie je paradigma programovania, ktorá spočíva v popise údajov a algoritmov, ktoré možno aplikovať na rôzne typy údajov bez zmeny samotného popisu. Je podporovaný v tej či onej forme rôznymi programovacími jazykmi.

    Generiká predstavujú najvýznamnejšiu zmenu v programovacom jazyku Java od verzie 1.0. Generiká boli zavedené v Java 5.0 ako výsledok prvých požiadaviek Java Specification Requests (JSR 14), ktoré boli sformulované v roku 1999. Generiká boli potrebné, pretože vám umožňujú písať bezpečnejší kód, ktorý sa ľahšie číta ako kód preťažený objektovými premennými. odliatky typu. Generiká sú užitočné najmä pre triedy kolekcií, ako je všadeprítomný ArrayList.

    Generiká sú podobné – aspoň povrchne – šablónam v C++. V C ++, rovnako ako v Jave, boli najprv pridané šablóny na podporu kolekcií so silným typom. V priebehu rokov však boli objavené ďalšie aplikácie.

    Všeobecné možnosti programovania sa prvýkrát objavili v 70. rokoch v jazykoch CLU a Ada a potom v mnohých objektovo orientovaných jazykoch, ako sú C++, Java, D a jazyky pre platformu .NET. Všeobecný mechanizmus Generické programovacie nástroje sú implementované vo forme určitých syntaktických nástrojov. Funkcia alebo typ údajov má explicitne opísané parametre formálneho typu. Tento popis je zovšeobecnený a nemožno ho priamo použiť v jeho pôvodnej podobe.

    Na tých miestach v programe, kde sa používa generický typ alebo funkcia, musí programátor explicitne špecifikovať parameter skutočného typu, ktorý tvorí inštanciu popisu. Keď kompilátor narazí na volanie generického typu alebo funkcie, vykoná potrebné procedúry na kontrolu statického typu, vyhodnotí možnosť danej inštancie a ak je kladný, vygeneruje kód nahradzujúci parameter skutočného typu namiesto parametra formálneho typu v všeobecný popis.

    Prirodzene, pre úspešné použitie generických popisov musia skutočné typy parametrov spĺňať určité podmienky. Ak generická funkcia porovnáva hodnoty typu parametra, akýkoľvek konkrétny typ použitý v nej musí podporovať operácie porovnávania; ak priraďuje hodnoty typu parametra k premenným, špecifický typ musí zabezpečiť správne priradenie. Metódy implementácie Existujú dva hlavné spôsoby implementácie podpory všeobecného programovania v kompilátore.

    Generovanie nového kódu pre každú inštanciu. V tomto prípade kompilátor považuje všeobecný popis za textovú šablónu na generovanie inštancií. Keď kompilátor potrebuje novú inštanciu generického typu alebo procedúry, vytvorí novú inštanciu typu alebo procedúry tak, že do nej mechanicky pridá parameter typu. To znamená, že so zovšeobecnenou funkciou na permutáciu prvkov kompilátor, keď narazí na volanie celočíselného typu, vytvorí funkciu na permutáciu celých čísel a nahradí jej volanie do kódu, a potom, keď narazí na volanie pre reťazec typu, vytvorí funkciu pre permutáciu reťazcov, ktorá nemá nič spoločné s prvým. Táto metóda poskytuje maximálny výkon. Jeho nevýhodou je, že pri aktívnom používaní generických typov a funkcií s rôznymi typmi-parametrami môže veľkosť kompilovaného programu veľmi narásť, pretože aj pre tie fragmenty popisu, ktoré sa pre rôzne typy nelíšia, kompilátor stále generuje samostatný kód. . Táto nevýhoda môže byť zakrytá čiastočným generovaním všeobecného kódu (časť zovšeobecneného popisu, ktorá nezávisí od typov-parametrov, je naformátovaná špeciálnym spôsobom a kompilátor generuje jeden kód pre všetky inštancie na jeho základe) . ... Generovanie kódu, ktorý za behu konvertuje skutočné parametre typu na jeden typ, s ktorým skutočne pracuje. V tomto prípade kompilátor vo fáze kompilácie programu skontroluje iba zhodu typov a do príkazového kódu zahrnie konverziu konkrétneho parametra typu na všeobecný typ. Kód, ktorý určuje fungovanie generického typu alebo funkcie, je prítomný v skompilovanom programe v jednej kópii a konverzie a typové kontroly sa vykonávajú dynamicky počas behu programu. V tejto verzii sa spravidla generuje kompaktnejší kód, ale program sa ukazuje byť v priemere pomalší ako v prvej verzii, kvôli potrebe vykonávať ďalšie operácie a menším možnostiam optimalizácie. Okrem toho dynamické informácie o typoch nie sú vždy zahrnuté v skompilovanom kóde pre typy parametrov (v prvej verzii sú tam, ak sú vôbec podporované, pretože inštancie pre každý typ parametra sú odlišné), čo určuje určité obmedzenia na použitie. generických typov a funkcií. V Jave sú podobné obmedzenia.

    Generická trieda je trieda s jednou alebo viacerými typovými premennými. class Pair () Premenná typu sa používa na určenie návratového typu metód a typov polí a lokálnych premenných. Potom môžete vytvoriť objekt všeobecného typu nahradením názvu typu premennej typu. Pár ()

    Niektoré obmedzenia generík 1. Parametre typu nemôžu brať primitívne typy. 2. Polia parametrizovaných typov nie sú povolené. 3. Nemôžete vytvárať inštancie typov premenných. 4. Nie je povolené v statickom kontexte. Účel všeobecného programovania Všeobecné programovanie znamená písanie kódu, ktorý možno opätovne použiť s mnohými rôznymi typmi objektov. Vďaka tomu bude váš kód ľahšie čitateľný. Okamžite pochopíte, že tento konkrétny zoznam polí obsahuje objekty typu String. Kompilátor môže tieto informácie tiež úspešne použiť. Pri volaní get () sa nevyžaduje žiadne prenášanie. Kompilátor vie, že návratový typ tejto metódy je String, nie Object: String filename = files.get (0); Kompilátor tiež vie, že metóda add () na ArrayList má parameter typu String. Je to oveľa bezpečnejšie ako zaoberať sa parametrom typu Object. Kompilátor sa teraz môže uistiť, že ste nevložili objekt nesprávneho typu. Napríklad nasledujúci príkaz nebude skompilovaný: files.add (nový súbor ("...")); // do ArrayList možno pridať iba objekty typu String // Chyba kompilácie je oveľa lepšia ako výnimka pretypovania za behu. Toto je krása parametrov typu: uľahčujú čítanie a zvyšujú bezpečnosť vášho programu. Všeobecné triedy ako ArrayList sa ľahko používajú. A väčšina programátorov Java používa iba typy ako ArrayList - ako keby boli súčasťou jazyka, napríklad polia String. (Samozrejme, polia zoznamov sú lepšie ako jednoduché polia, pretože sa môžu automaticky rozširovať.) Implementácia generickej triedy však nie je jednoduchá. Programátori, ktorí budú používať váš kód, sa pokúsia nahradiť parametre vášho typu všetkými druhmi tried. Očakávajú, že všetko bude fungovať bez otravných obmedzení a mätúcich chybových hlásení. Vašou úlohou ako generického programátora je predvídať všetky možné budúce použitia vašej triedy. Generický kód a virtuálny stroj Virtuálny stroj sa nezaoberá generickými objektmi – všetky objekty patria do generických tried. Vždy, keď je definovaný všeobecný typ, automaticky sa vytvorí zodpovedajúci nespracovaný typ. Názov tohto typu je rovnaký ako názov všeobecného typu s odstránenými parametrami typu. Premenné typu sú odstránené a nahradené typmi obmedzení (alebo typom objektu, ak premenná nie je viazaná). Napríklad nespracovaný typ pre Pair vyzerá takto. public class Pair (public Pair (Object first, Object second) (this.first = first; this.second = second;) public Object getFirst () (návrat prvý;) public Object getSecond () (návrat druhý;) public void setFirst (Object newValue) (first = newValue;) public void setSecond (Object newValue) (second = newValue;) private Object first; private Object second;) Keďže T je neobmedzená premenná typu, jednoducho sa nahradí objektom. Výsledkom je bežná trieda, akú ste mohli implementovať predtým, než boli do programovacieho jazyka Java zavedené generiká. Vaše programy obsahujú rôzne varianty Pair, ako napríklad Pair alebo Pair, ale toto „vyčistenie“ ich zmení na „surový“ typ Pair. „Surový“ typ nahrádza premenné typu prvým obmedzením alebo objektom, ak nie sú poskytnuté žiadne obmedzenia. Napríklad premenná typu v triede Pair nemá žiadne explicitné obmedzenia, a preto nespracovaný typ nahrádza T za Object. Predpokladajme, že je deklarovaný mierne odlišný typ: public class Interval implementuje Serializable (verejný interval (T prvý, T druhý) (if (first.compareTo (second))<= 0) { lower = first; upper = second; } else { lower = second; upper = first; } } ... private T lower; private T upper; } Сырой тип Interval выглядит следующим образом: public class Interval implements Serializable { public Interval(Comparable first, Comparable second) { ... } ... private Comparable lower; private Comparable upper; } Трансляция обобщенных выражений Когда ваша программа вызывает обобщенный метод, компилятор вставляет приведения, когда удаляется возвращаемый тип. Например, рассмотрим следующую последовательность операторов: Pair buddies = ...; Employee buddy = buddies.getFirst(); Подчистка getFirst() приведет к возврату типа Object. Компилятор автоматически вставит приведение к Employee. То есть компилятор транслирует вызов метода в две инструкции виртуальной машины. . Вызов сырого метода Pair.getFirst(). . Приведение возвращенного объекта Object к типу Employee. Приведения также вставляются при обращении к обобщенному полю. Предположим, что поля first и second были бы общедоступными, т.е. public. (Возможно, это нехороший стиль программирования, но вполне допустимый в Java.) Тогда в оператор Employee buddy = buddies.first; в результирующем байт-коде также будут вставлены приведения.

    Potom vo forme parametrického polymorfizmu v a jeho potomkov a potom v mnohých objektovo orientovaných jazykoch, ako sú C++, Java, Object Pascal, Eiffel, jazyky pre platformu .NET a ďalšie.

    Všeobecná metodológia programovania

    Na zovšeobecnené programovanie sa nazerá ako na metodológiu programovania založenú na oddelení dátových štruktúr a algoritmov pomocou abstraktných popisov požiadaviek. Abstraktné popisy požiadaviek sú rozšírením konceptu abstraktného dátového typu. Namiesto opisu samostatného typu používa generické programovanie opis rodiny typov, ktoré majú spoločné rozhranie a sémantické správanie. Súbor požiadaviek popisujúcich rozhranie a sémantické správanie sa nazýva koncepcia(angl. koncept). Algoritmus napísaný všeobecným štýlom teda možno použiť na akýkoľvek typ, ktorý vyhovuje jeho konceptom. Táto príležitosť je tzv polymorfizmus.

    Hovoria, že typ simuluje koncepcia (je vzorom koncepcie), ak spĺňa jej požiadavky. Koncept je objasnenie iný koncept, ak dopĺňa druhý. Koncepčné požiadavky obsahujú nasledujúce informácie:

    • Platné výrazy(anglické platné výrazy) - výrazy programovacieho jazyka, ktoré sa musia úspešne skompilovať pre typy, ktoré modelujú koncept.
    • Pridružené typy Pridružené typy sú pomocné typy, ktoré majú niečo spoločné s typom modelovania konceptu.
    • Invarianty(angl. invarianty) - také charakteristiky typov, ktoré musia byť pri vykonávaní neustále správne. Zvyčajne sa vyjadruje ako predbežné a následné podmienky. Nesplnenie predpokladu má za následok nepredvídateľnosť príslušnej operácie a môže viesť k chybám.
    • Komplexnosť zaručuje(Anglické záruky zložitosti) - maximálny čas vykonávania platného výrazu alebo maximálne požiadavky na rôzne zdroje počas vykonávania tohto výrazu.

    Alternatívny prístup k definovaniu generického programovania, ktorý možno tzv programovanie generických dátových typov(eng. datatype generic programming), navrhli Richard Bird a Lambert Meertens. V ňom sú štruktúry dátových typov parametrami generických programov. Na tento účel sa do programovacieho jazyka zavádza nová úroveň abstrakcie, a to parametrizácia s ohľadom na triedy algebier s premennými signatúrami. Hoci teórie oboch prístupov sú nezávislé od programovacieho jazyka, Masserov - Stepanov prístup, ktorý kladie dôraz na analýzu konceptov, urobil z C++ svoju hlavnú platformu, zatiaľ čo generické programovanie dátových typov využíva takmer výlučne Haskell a jeho varianty.

    Všeobecný mechanizmus

    Generické programovacie nástroje sú implementované v programovacích jazykoch vo forme určitých syntaktických nástrojov, ktoré umožňujú popisovať dáta (údajové typy) a algoritmy (procedúry, funkcie, metódy) parametrizované dátovými typmi. Funkcia alebo typ údajov má explicitne opísané parametre formálneho typu. Tento popis je zovšeobecnený a nemožno ho priamo použiť v jeho pôvodnej podobe.

    Na tých miestach v programe, kde sa používa generický typ alebo funkcia, musí programátor explicitne špecifikovať parameter skutočného typu, ktorý tvorí inštanciu popisu. Napríklad všeobecný postup na zámenu dvoch hodnôt môže mať parameter typu, ktorý špecifikuje typ hodnôt, ktoré zamieňa. Keď programátor potrebuje zameniť dve celočíselné hodnoty, zavolá procedúru s parametrom typu „integer“ a dvoma parametrami – celé čísla, keď dva reťazce – s parametrom „reťazec“ a dvoma parametrami – reťazce. V prípade údajov môže programátor napríklad opísať generický typ „zoznam“ s parametrom typu, ktorý určuje typ hodnôt uložených v zozname. Potom pri popise skutočných zoznamov musí programátor špecifikovať generický typ a parameter typu, čím sa získa akýkoľvek požadovaný zoznam s použitím rovnakého popisu.

    Keď kompilátor narazí na volanie všeobecného typu alebo funkcie, vykoná potrebné procedúry na kontrolu statického typu, vyhodnotí možnosť danej inštanciácie a ak je kladný, vygeneruje kód nahradením parametra skutočného typu namiesto formálneho typu. parameter vo všeobecnom popise. Prirodzene, pre úspešné použitie generických popisov musia skutočné typy parametrov spĺňať určité podmienky. Ak generická funkcia porovnáva hodnoty typu parametra, akýkoľvek konkrétny typ použitý v nej musí podporovať operácie porovnávania; ak priraďuje hodnoty typu parametra k premenným, špecifický typ musí zabezpečiť správne priradenie.

    Zovšeobecnené programovanie v jazykoch

    C++

    V jazyku C ++ je generické programovanie založené na koncepte „šablóna“, ktorý sa označuje kľúčovým slovom šablóna... Je široko používaný v štandardnej knižnici C ++ (pozri STL), ako aj v knižniciach boost tretích strán, Loki. Alexander Stepanov výrazne prispel k vzniku pokročilých generických programovacích nástrojov v C ++.

    Ako príklad uvádzame šablónu (zovšeobecnenie) funkcie, ktorá vracia väčšiu hodnotu z dvoch.

    // Popis šablóny funkciešablóna< typename T >T max (T x, T y) (ak (x< y ) return y ; else return x ; } ... // Použitie funkcie špecifikovanej šablónou int a = max (10, 15); ... dvojité f = max (123,11, 123,12); ...

    alebo šablóna (zovšeobecnenie) triedy prepojeného zoznamu:

    šablóna< class T >class List (/ * ... * / public: void Add (const T & Element); bool Find (const T & Element); / * ... * /);

    Java

    Java poskytuje generické programovacie nástroje syntakticky založené na C++ od J2SE 5.0. Tento jazyk má generiká alebo "kontajnery typu T" sú podmnožinou generického programovania.

    .NET

    // http://digitalmars.com/d/2.0/template.htmlšablóna Foo (T, R ...) // T je typ, R je množina typov(void Foo (T t, R r) (writeln (t); static if (r. length) // ak viac argumentov Foo (r); // urobte zvyšok argumentov)) void main () (Foo (1, "a", 6.8);) / +++++++++++++++ výtlačky: 1 a 6.8 ++++++++++ +++++ /

    nemecký Programmusik, francúzština musique program, ital. musica a program, inž. programová hudba

    Hudobné diela, ktoré majú určitý verbál, sú často poetické. program a odhalenie obsahu v ňom zapuzdreného. Vzhľad múz. programovosť je spojená so špecifickým. vlastnosti hudby, ktoré ju odlišujú od iných umení. V oblasti zobrazovania pocitov, nálad, duševného života človeka má hudba oproti iným tvrdeniam dôležité výhody. Nepriamo, cez pocity a nálady, dokáže hudba mnohé odrážať. javy reality. Nevie však presne určiť, čo presne v človeku vyvoláva ten či onen pocit, nedokáže dosiahnuť objektívnu, konceptuálnu konkrétnosť zobrazenia. Možnosti takejto konkretizácie má rečový jazyk a literatúra. V snahe o námet, konceptuálnu konkretizáciu skladatelia vytvárajú programové múzy. výroba; predchádzajúci op. program, vnucujú prostriedky reči jazyk, umenie. literatúru konať v jednote, v syntéze s vlastnou hudbou. znamená. Jednotu hudby a literatúry napomáha aj skutočnosť, že ide o dočasné nároky, ktoré sú schopné ukázať rast a vývoj obrazu. Rozklad Unity. súdny spor sa ťahá už dlho. V hlbokom staroveku sebestačnosť vôbec neexistovala. druhy umenia - pôsobili spolu, v jednote, umenie bolo synkretické; v rovnakom čase. úzko to súviselo s prácou a rozkladom. druhy rituálov, obradov. V tom čase bol každý z nárokov natoľko obmedzený, že bol viac ako synkretický. jednota zameraná na riešenie aplikovaných problémov nemohla existovať. Následné prideľovanie nárokov bolo determinované nielen zmenou v každodennom živote, ale aj rastom schopností každého z nich, dosahovaných v rámci synkretika. jednota spojená s týmto rastom je estetická. pocity človeka. Zároveň sa jednota umenia nikdy nezastavila, vrátane jednoty hudby so slovom, poéziou - predovšetkým vo všetkých druhoch wokov. a vokálno-dramatické. žánrov. Na začiatku. V 19. storočí, po dlhom období existencie hudby a poézie ako samostatných umení, sa tendencia k ich zjednocovaniu ešte viac zintenzívnila. To už neurčovala ich slabosť, ale skôr ich sila, doháňanie svojich vlastných až na doraz. príležitosti. Ďalšie obohatenie odrazu reality v celej jej rozmanitosti, vo všetkých jej aspektoch bolo možné dosiahnuť len spoločným pôsobením hudby a slova. A programatickosť je jedným z typov jednoty hudby a prostriedkov rečového jazyka, ako aj literatúry, označujúcich alebo reflektujúcich tie stránky jedného objektu reflexie, ktoré hudba nedokáže sprostredkovať vlastnými prostriedkami. Preto je neoddeliteľnou súčasťou programu. manuf. je slovný program vytvorený alebo zvolený samotným skladateľom – či už ide o krátky programový názov naznačujúci fenomén reality, ktorý mal skladateľ na mysli (hra „Ráno“ od E. Griega z hudby k dráme G. Ibsen „Peer-Gynt“) , niekedy „odkazujúci“ poslucháča na určitú lit. manuf. („Macbeth“ od R. Straussa je symfonická báseň „na motívy Shakespearovej drámy“), alebo siahodlhý úryvok z literárneho diela. manuf. (symf. suita (2. symfónia) "Antar" od Rimského-Korsakova podľa rovnomennej rozprávky O. I. Senkovského) alebo mimo kontakt s K.-L. lit. prototyp („Fantastická symfónia“ od Berlioza).

    Nie každý titul, nie každé vysvetlenie hudby možno považovať za jej program. Program môže pochádzať iba od autora hudby. Ak nenahlásil program, potom jeho samotný plán nebol naprogramovaný. Ak by najprv dal svoj op. program a potom ho opustil, čo znamená, že preložil svoj op. v kategórii nesoftvér. Program nie je výkladom hudby, ale dopĺňa ju, odhaľuje niečo, čo v hudbe absentuje, pre stelesnenie múz nedostupné. prostriedky (inak by to bolo nadbytočné). V tom sa zásadne líši od akéhokoľvek rozboru hudby neprogramovaného op., akéhokoľvek opisu jeho hudby – aj tej najpoetickejšej, vr. a z opisu patriacemu autorovi op. a poukazovanie na konkrétne javy, ktoré vo svojej tvorivej práci vyvolal. vedomie určitých múz. snímky. A naopak - naprogramovaný op. - nejde o "preklad" do reči samotnej hudby programu, ale o reflexiu múz. pomocou toho istého objektu, ktorý je označený, sa odráža v programe. Programom nie sú ani názvy uvádzané samotným autorom, ak neoznačujú konkrétne javy reality, ale koncepty emocionálneho plánu, ktorý hudba sprostredkúva oveľa presnejšie (napríklad názvy ako „Smútok“ a pod. ). Stáva sa, že program pripojený k výrobe. samotným autorom, nie je v organickej. jednota s hudbou, to však už určuje umenie. zručnosťou skladateľa, niekedy aj tým, ako kvalitne skomponoval či vybral slovný program. Toto nemá priamu súvislosť s otázkou podstaty fenoménu programovosti.

    Samotné múzy majú isté prostriedky na konkretizáciu. Jazyk. Medzi nimi aj múzy. zobrazenie (pozri. Zvukové písmo) je odrazom rôznych druhov zvukov reality, asociatívne reprezentácie generované múzami. zvuky - ich výška, trvanie, zafarbenie. Dôležitým prostriedkom konkretizácie je aj prilákanie čŕt „aplikovaných“ žánrov – tanec, pochod vo všetkých jeho variáciách atď. Konkretizácia môže slúžiť aj ako národno-charakteristické črty múz. jazyk, hudba. štýl. Všetky tieto konkretizačné prostriedky umožňujú vyjadriť všeobecný koncept op. (napríklad triumf svetlých síl nad temnými atď.). A predsa nedávajú tú objektívnu, pojmovú konkretizáciu, ktorú poskytuje verbálny program. Navyše sa viac používa v múzach. manuf. vlastne múza. prostriedkami konkretizácie, tým potrebnejšie pre plné vnímanie hudby sú slová, program.

    Jedným z typov programovateľnosti je programovateľnosť obrázkov. Zahŕňa diela, ktoré odrážajú jeden obraz alebo komplex obrazov reality, ktoré nepodliehajú tvorom. sa mení v celom jeho vnímaní. Sú to obrázky prírody (krajiny), obrázky doskových postelí. slávnosti, tance, bitky a pod., múzy. obrázky odd. predmety neživej prírody, ako aj portrétne múzy. náčrty.

    Druhá hlavná. druh múz. programovateľnosť - programovateľnosť zápletky. Zdroj pozemkov pre softvérové ​​produkcie. tento druh slúži predovšetkým umeniu. liter. V dejovo-programových múzach. manuf. rozvoj múz. obrazy vo všeobecnosti alebo konkrétne zodpovedá vývoju zápletky. Rozlišujte medzi zovšeobecneným grafom a sekvenčným programovaním grafu. Autor op., Súvisí so zovšeobecneným typom zápletky programovania a je prostredníctvom programu spojený s jedným alebo druhým lit. inscenácia, nemá za cieľ ukázať udalosti v nej načrtnuté v celej ich postupnosti a komplexnosti, ale dáva múzy. charakteristiky hlavného. obrázky rozsvietené. manuf. a všeobecný smer vývoja zápletky, počiatočná a konečná korelácia pôsobiacich síl. Naopak, autor diela, ktoré patrí k sekvenčnému dejovému typu programového, sa snaží reflektovať medzistupne vývoja udalostí, niekedy aj celý sled udalostí. Príťažlivosť k tomuto typu programovosti je diktovaná zápletkami, v ktorých prebiehajú stredné vývojové štádiá, ktoré neprebiehajú priamočiaro, ale sú spojené s predstavovaním nových postáv, so zmenou prostredia akcie, s udalosťami, ktoré sú nie sú priamym dôsledkom predchádzajúcej situácie, nadobúdajú veľký význam. Príťažlivosť sekvenčného programovania zápletiek závisí aj od tvorcu. skladateľove inštalácie. Rôzni skladatelia často interpretujú tie isté témy rôznymi spôsobmi. Napríklad tragédia „Rómeo a Júlia“ od W. Shakespeara inšpirovala P. I. Čajkovského k tvorbe diel. zovšeobecnený dejový typ programovania (fantasy predohra "Romeo a Júlia"), G. Berlioz - vytvárať diela. sekvenčný dejový typ programového (dramatická symfónia „Rómeo a Júlia“, v ktorej autor dokonca prekračuje hranice čistej symfónie a priťahuje vokálny začiatok).

    V oblasti múz. jazyk sa nedá rozlíšiť. P. znaky m. To platí aj vo vzťahu k forme softvérových produktov. V dielach, ktoré reprezentujú obrazový typ programovania, nie sú predpoklady pre vznik špecifickosti. štruktúry. Úlohy, do žita, ktoré si stanovili autori softvérových diel. zovšeobecneného dejového typu sa úspešne predvádzajú s formami rozvinutými v neprogramovanej hudbe, predovšetkým formou sonáty allegro. Autori programu op. sekvenčný typ pozemku musí vytvoriť múzy. forma viac-menej „paralelná“ s dejom. Ale budujú ho kombináciou prvkov rôznych. formy neprogramovanej hudby, priťahujúce určité metódy rozvoja, ktoré sú v nej už široko zastúpené. Medzi nimi je variačná metóda. Umožňuje zobraziť zmeny, ktoré neovplyvňujú podstatu javu, týkajúce sa množného čísla. dôležité vlastnosti, ale v spojení so zachovaním množstva kvalít, vďaka ktorým je možné rozpoznať obraz v akejkoľvek novej podobe. S variačnou metódou úzko súvisí princíp monotematizmu. Použitím tohto princípu figuratívnej transformácie, ktorý F. Liszt vo svojich symfonických básňach a iných dielach tak hojne využíval, získava skladateľ väčšiu slobodu sledovať dej bez nebezpečenstva narušenia múz. bezúhonnosť op. Iný typ monotematizmu, spojený s leitmotívovou charakteristikou postáv (pozri Leitmotív), nachádza uplatnenie v Ch. arr. v sekvenčných dejových produkciách. Charakter leitmotívu sa po vzniku v opere preniesol do oblasti inštrumentu. hudby, kde sa jeden z prvých a najrozšírenejších k nej uchýlil G. Berlioz. Jeho podstata spočíva v tom, že jedna téma v celom op. pôsobí ako charakteristika toho istého hrdinu. Zakaždým sa objavuje v novom kontexte, čo naznačuje nové prostredie obklopujúce hrdinu. Táto téma sa môže meniť sama o sebe, ale zmeny v nej nemenia jej „objektívny“ význam a odrážajú len zmeny stavu toho istého hrdinu, zmenu predstáv o ňom. Technika leitmotívovej charakteristiky je najvhodnejšia v podmienkach cyklickosti, suity a ukazuje sa ako silný prostriedok na kombinovanie kontrastných častí cyklu, odhaľujúc jeden dej. Umožňuje včleniť do hudby sekvenčné dejové myšlienky a zjednotiť znaky sonátového allega a sonátovej symfónie v jednočasťovej forme. cyklus, charakteristický pre žáner symfónie, ktorú vytvoril F. Liszt. básne. dec. fázy akcie sú komunikované pomocou relatívne samostatných. epizód, kontrast medzi nimi zodpovedá kontrastu častí sonáty-symfónie. cyklu, potom sa tieto epizódy v zhustenej repríze „uvedú k jednote“ a v súlade s programom sa vyčlení jedna alebo druhá z nich. Z hľadiska cyklu repríza väčšinou zodpovedá finále, z hľadiska sonátového allegra 1. a 2. epizóda zodpovedá expozícii, 3. („scherzo“ v cykle) - až r. rozvoj. Liszt používa podobné syntetické látky. formy sa často kombinujú s využitím princípu monotematizmu. Všetky tieto techniky umožnili skladateľom vytvárať múzy. formy, ktoré zodpovedajú jednotlivým znakom pozemku a zároveň sú organické a celistvé. Avšak nové syntetické. Formy nemožno považovať len za programovú hudbu. Vznikali nielen v súvislosti s realizáciou programových myšlienok – všeobecné dobové tendencie sa odzrkadlili aj na ich vzhľade. V neprogramovanej hudbe sa neustále používali presne tie isté štruktúry.

    Existujú programové múzy. cit., v to-ryh ako program zahŕňal výrobu. maliarstvo, sochárstvo, dokonca aj architektúru. Takými sú napríklad symf. Lisztova báseň „Bitka Hunov“ podľa fresky V. Kaulbacha I „Od kolísky do hrobu“ podľa kresby M. Zichyho, jeho hra „Kaplnka Viliama Tella“; "Zasnúbenie" (k obrazu od Raphaela), "Mysliteľ" (podľa sochy Michelangela) z fp. cykly „Roky vandroviek“ atď. Možnosti vecnej, pojmovej konkretizácie týchto tvrdení však nie sú vyčerpávajúce. Malebné a sochárske diela nie je náhoda. sú dodávané s konkretizujúcim názvom, strih možno považovať za akýsi ich program. Preto v hudbe. diela napísané na základe určitých výtvorov budú zobrazovať umenie, v podstate nielen hudbu a maľbu, hudbu a sochárstvo, ale hudbu, maľbu a slovo, hudbu, sochárstvo a slovo. A funkcie programu v nich vykonáva Ch. arr. nie manuf. bude zobrazovať umenie, ale slovný program. Predovšetkým to určuje rôznorodosť hudby ako dočasného umenia a maľby a sochárstva ako umenia v statickom, „priestorovom“. Pokiaľ ide o architektonické obrazy, vo všeobecnosti nie sú schopné hudbu konkretizovať z hľadiska námetu a konceptu; autorov múz. diela spojené s architektonickými pamiatkami sa spravidla neinšpirovali ani tak samými, ako skôr históriou, udalosťami, ktoré sa v nich alebo v ich blízkosti odohrali, legendami o nich (hra „Vyšehrad“ zo symfonického cyklu B. Smetanu “ Moja vlasť ", spomínaná fp. Hra" Kaplnka Viliama Tella "od Liszta, strih autora nie náhodou predostrel epigrafu" Jeden za všetkých, všetci za jedného ").

    Programovanie bolo veľkým výdobytkom múz. súdny spor. Viedlo to k obohateniu palety obrazov reality, ktoré sa odrážajú v múzach. manuf., hľadanie nových vyjadrí. prostriedky, nové formy, prispeli k obohateniu a diferenciácii foriem a žánrov. Skladateľova príťažlivosť k P. m. je zvyčajne determinovaná jeho spätosťou so životom, so súčasnosťou, pozornosťou k naliehavým problémom, inokedy sama prispieva k skladateľovmu zblíženiu sa s realitou, k jej hlbšiemu pochopeniu. V niektorých ohľadoch je však hudba nižšia ako nenaprogramovaná hudba. Program zužuje vnímanie hudby, odvádza pozornosť od všeobecnej myšlienky v nej vyjadrenej. Stelesnenie dejových predstáv sa zvyčajne spája s múzami. vlastnosti, ktoré sú viac-menej konvenčné. Odtiaľ pochádza ambivalentný postoj mnohých veľkých skladateľov k programovým hranám, ktoré priťahujú i odpudzujú (výroky PI Čajkovského, G. Mahlera, R. Straussa atď.). P. m. Nie je druh: najvyšší druh hudby, tak ako nie je neprogramovaná hudba. Ide o rovnocenné, rovnako legitímne odrody. Rozdiel medzi nimi nevylučuje ich spojenie; oba rody sú spojené s wok. hudba. Kolískou programovej symfónie bola teda opera a oratórium. Operná predohra bola prototypom programovej symfónie. básne; v opernom umení spočívajú aj premisy leitmotivizmu a monotematizmu, ktoré sú v opernej hudbe tak široko používané. hudba je ovplyvnená wokom. hudba a P. m. Nájdené v P. m. nové bude vyjadrovať. príležitosti sa stávajú vlastníctvom neprogramovanej hudby. Všeobecné tendencie epochy ovplyvňujú vývoj tak hudobnej hudby, ako aj hudby neprogramovanej.

    Jednota hudby a programu v programe op. nie je absolútna, nerozpustná. Stáva sa, že program nie je poslucháčovi oznámený počas predstavenia op., ktorý svieti. inscenácia, do ktorej autor hudby posiela poslucháča, sa mu ukáže ako neznáma. Čím zovšeobecnenejšiu formu skladateľ na realizáciu svojho zámeru zvolí, tým menšie škody na vnímaní spôsobí takéto „oddelenie“ hudby diela od jeho programu. Takéto „odtrhnutie“ je vždy nežiaduce, pokiaľ ide o vykonanie sovr. Tvorba. Môže sa to však ukázať ako prirodzené, pokiaľ ide o výkon prác. skoršej epochy, keďže programové myšlienky môžu časom stratiť svoju bývalú aktuálnosť, význam. V týchto prípadoch múzy. manuf. vo väčšej či menšej miere strácajú vlastnosti programovateľnosti, menia sa na neprogramovateľné. Hranica medzi P. m. a neprogramovanou hudbou je teda z historického hľadiska vo všeobecnosti celkom jasná. aspekt je podmienený.

    P. m. Zásadne sa rozvíjal v celej histórii prof. múzy. súdny spor. Najstaršia zo správ, ktoré našli výskumníci o programových múzach. op. sa datuje do roku 586 pred Kristom. - tento rok na Pythian Games v Delphi (staroveké Grécko) auletista Sakao predviedol hru Timosthenes, zobrazujúcu bitku Apolla s drakom. Veľa naprogramovaných op. vznikla v nasledujúcom období. Medzi nimi klavírne sonáty „Biblické príbehy“ od lipského skladateľa I. Kuhnaua, čembalové miniatúry od F. Couperina a J. F. Rameaua, klavírne sonáty „Capriccio za odchod milovaného brata“ od JS Bacha. Programový prístup je prezentovaný aj v tvorbe viedenských klasikov. Medzi ich diela patrí triáda programových symfónií J. Haydna, charakterizujúca dif. časy dňa (č. 6, „Ráno“; č. 7, „Poludnie“; č. 8, „Večer“), jeho Rozlúčková symfónia; „Pastorálna symfónia“ (č. 6) od Beethovena, všetky časti strihu sú opatrené programovými titulkami a partitúra obsahuje poznámku, ktorá je dôležitá pre pochopenie typu programovej povahy autora op. - "Viac vyjadrenie pocitov ako obraz", jeho hra "Bitka o Vittoriu", pôvodne určená pre mechanikov. múzy. nástroj panharmonicon, ale potom vystupoval v ork. vydanie, a najmä jeho predohru k baletu „Stvorenia Promethea“, k tragédii „Coriolanus“ od Collina, predohru „Leonora“ č. 1-3, predohru k tragédii „Egmont“ od Goetheho. Napísané ako úvody do drám. alebo hudobno-dramatický. výroby, čoskoro získali nezávislosť. Neskôr naprogramovaný op. často vznikali aj ako úvody ku K.-L. lit. produkcia, časom stratová však vstúpi. funkcie. Skutočný rozkvet P. m. Prišiel v ére múz. romantizmu. Romantickí umelci v porovnaní s predstaviteľmi klasicistickej až osvietenskej estetiky hlbšie pochopili špecifiká odlišného. nárokovať si. Videli, že každý z nich odráža život svojím vlastným spôsobom, používa prostriedky, ktoré sú mu vlastné a odráža ten istý predmet, jav z určitej strany, ktorý je mu prístupný, že v dôsledku toho je každý z nich trochu obmedzený a poskytuje neúplný obraz. reality. To viedlo romantických umelcov k myšlienke syntetizovať umenie v záujme úplnejšieho a všestrannejšieho zobrazenia sveta. Los. romantici hlásali heslo obnovy hudby jej spojením s poéziou, ktorá bola preložená do plurálu. múzy. manuf. Programovaná op. zaujímajú významné miesto v tvorbe F. Mendelssohna-Bartholdyho (predohra z hudby k „Snu noci svätojánskej“ od Shakespeara, predohry k „Hebridám“, resp. „Fingalovej jaskyni“, „More pokojné a šťastné plávanie“, „Krásna meluzína “, „Ruy Blaz“ atď. ), R. Schumann (predohry k „Manfredovi“ od Byrona, k scénam z „Fausta“ od Goetheho, mnohé filozofické hry a cykly hier atď.). Mimoriadne veľký význam má P. m. G. Berlioz („Fantastická symfónia“, symfónia „Harold v Taliansku“, dramatická symfónia „Romeo a Júlia“, „Pohrebno-triumfálna symfónia“, predohry „Weaverly“, „Tajní sudcovia“ " , "Kráľ Lear", "Rob Roy" a iné) a F. Liszt (symfónia "Faust" a symfónia k "Božskej komédii" od Danteho, 13 symfonických básní, veľa php. Hry a cykly hier). Následne k rozvoju P. m. významne prispeli B. Smetana (symfonické básne „Richard III.“, „Valdštejnský tábor“, „Gakon Jarl“, cyklus 6 básní „Moja vlasť“), A. Dvořák (symf. básne "Voda", "Zlatý kolovrat", "Lesný holub" a iné, predohry - husita, "Othello" atď.) a R. Strauss (symfonické básne "Don Juan", "Smrť a osvietenie" , „Macbeth“, „Till Ulenspiegel“, „Tak hovoril Zarathustra“, fantastické variácie na rytiersku tému „Don Quijote“, „Domáca symfónia“ atď.). Programovaná op. vytvorili aj K. Debussy (ork. predohra "Faunovo popoludnie", symf. cykly "Nokturná", "More" atď.), M. Reger (4 symf. básne Böcklina), A. Honegger (symf. báseň "Song of Nigamon", symfonické pohyby" Pacific 231 "," Rugby " atď.), P. Hindemith (symfónie" Artist Mathis "," Harmony of the World " atď.).

    Programovateľnosť bola v ruštine značne rozvinutá. hudba. Pre rus. nat. múzy. školy, príťažlivosť k programovaniu bola diktovaná estetikou. postoje jej čelných predstaviteľov, ich túžbu po demokracii, všeobecné chápanie ich diel, ako aj „objektívnosť“ ich tvorby. Z esejí, DOS. na piesňovú tematiku a teda obsahuje prvky syntézy hudby a slova, keďže poslucháč pri ich vnímaní koreluje texty korešpondencie s hudbou. piesne ("Kamarinskaya" od Glinky), rus. skladatelia čoskoro prišli na skutočné P. m. Množstvo vynikajúcich programov op. vytvorili členovia "Mocnej hŕstky" - M. A. Balakirev (symf. báseň "Tamara"), M. P. Musorgskij ("Obrázky na výstave" pre fp.), N. A. Rimskij-Korsakov (symf. obraz "Sadko ", symfónia" Antar "). Značný počet softvérových produktov. patrí PI Čajkovskému (1. symfónia „Zimné sny“, symfónia „Manfred“, fantasy predohra „Rómeo a Júlia“, symf. báseň „Francesca da Rimini“ atď.). Svetlé softvérové ​​produkty. napísali A. K. Glazunov (symfonická báseň „Stenka Razin“), A. K. Lyadov (symf. obrazy „Baba Yaga“, „Magic Lake“ a „Kikimora“), vy. S. Kalinnikov (symf. Obraz "Céder a palma"), S. V. Rachmaninov (symf. Fantázia "Útes", symf. Báseň "Ostrov mŕtvych"), A. N. Scriabin (symf. "Báseň extázy", " Báseň ohňa "("Prometheus"), veľa hudobných skladieb).

    Programovateľnosť je široko zastúpená aj v dielach Sov. skladateľov, vr. S. Prokofiev („Skýtska suita“ pre orchester, symf. Náčrt „Jeseň“, symf. Maľba „Sny“, scénická hra), N. Ja. Mjaskovskij (symf. Básne „Ticho“ a „Alastor“, symfónie č. 10 , 12, 16 atď.), DD Šostakovič (symfónie č. 2, 3 ("Prvý máj"), 11 ("1905"), 12 ("1917") atď.). Programovaná op. vytvárajú aj zástupcovia mladších generácií sov. skladateľov.

    Programovateľnosť je charakteristická nielen pre profesionála, ale aj pre narkotiká. múzy. súdny spor. Medzi národmi, múzami. kultúry to-rykh zahŕňajú rozvinuté inštr. muzicírovaním sa spája nielen s predvádzaním a variovaním piesňových melódií, ale aj s tvorbou skladieb nezávislých od piesňového umenia, b.ch. softvér. Takže, naprogramovaný op. tvoria významnú časť Kazachstanu. (kui) a kirg. (kyu) inštr. hrá. Každý z týchto diel v podaní inštrumentálneho sólistu (u Kazachov - kuishi) na jednej z doskových postelí. nástroje (dombra, kobyz alebo sybyzga u Kazachov, komuz a iné u Kirgizov), má programový názov; pl. z týchto kúskov sa stali tradičnými, ako sú piesne odovzdané iným. možnosti z generácie na generáciu.

    Významne prispeli k objasneniu fenoménu programovosti samotní skladatelia, ktorí v tejto oblasti pôsobili – F. Liszt, G. Berlioz a i., no neskôr, napriek výskumom, ktoré objasnili niektoré konkrétne otázky, už nie. muzikológia nielenže nenapredovala v chápaní fenoménu P. m., ale skôr sa od neho vzďaľovala. Svedčiace je napríklad to, že autori článkov o P. m., Umiestnení v najväčšom západoeurópskom. múzy. encyklopédie a mali by zhrnúť skúsenosti zo štúdia problému, dať fenoménu programatickosti veľmi vágne definície (pozri Grovésov slovník hudby a hudobníkov, v. 6, L.-NY, 1954; Riemann Musiklexikon, Sachteil, Mainz, 1967), niekedy odmietajú K.-L. definície (Die Musik in Geschichte und Gegenwart. Allgemeine Enzyklopädie der Musik, Bd 10, Kassel u. a., 1962).

    V Rusku sa problém programatizmu začal skúmať už v období pôsobenia Rusu. klasický múzy. školy, zástupcovia rezu zanechali dôležité vyhlásenia k tejto otázke. Pozornosť na problém programovateľnosti vzrástla najmä v Sov. čas. V 50. rokoch 20. storočia. na stránkach časopisov. "sovietska hudba" a plyn. "Sovietske umenie" prešlo špeciálnym. diskusia o problematike múz. programové. Z tejto diskusie vyplynuli aj rozpory v chápaní fenoménu P. m. Objavili sa napríklad úvahy o „programovosti v užšom slova zmysle“ a v širšom zmysle slova o programovosti „deklarovanej“ a „ nedeklarovanej, o programovosti „pre seba“ (skladateľa) a pre poslucháčov, o programovosti „vedomej“ a „nevedomej“, o programovosti v neprogramovanej hudbe atď. Podstata všetkých týchto tvrdení spočíva v poznaní možnosti P. m. bez programu pripojeného k op. samotným skladateľom. Takéto hľadisko nevyhnutne vedie k stotožňovaniu programovosti s obsahom, k ohlasovaniu programovosti všetkej hudby, k ospravedlňovaniu „hádania“ nedeklarovaných programov, t.j. svojvoľná interpretácia skladateľových zámerov, proti ktorej sa vždy ostro ohradili aj samotní skladatelia. V 50-60 rokoch. Objavilo sa množstvo prác, ktoré určitým spôsobom prispeli k rozvoju problémov programovateľnosti, najmä v oblasti vymedzenia typov P.M. Spoločné chápanie fenoménu programovateľnosti však ešte nebolo stanovené.

    Literatúra:Čajkovskij P.I., Listy HP von Meckovi zo 17. februára / 1. marca 1878 a 17. decembra 1878 v knihe: P. I. Čajkovskij, Korešpondencia s N. F. von Meckom, zväzok 1, M.-L., 1934, the to isté, Poln. zber cit., VII, M., 1961 s. 124-128,513-514; jeho, O programovej hudbe, M.-L., 1952; Cui Ts. A., ruská romanca. Náčrt jeho vývoja, Petrohrad, 1896, s. 5; Laroche, Niečo o programovej hudbe, Svet umenia, 1900, v. 3, s. 87-98; svoj vlastný, Predslov prekladateľa ku knihe Hanslikovej „O hudobne krásnom“, Sobr. hudobne kritické články, zväzok 1, M., 1913, s. 334-61; ho, Jeden z odporcov Hanslika, tamže, s. 362-85; Stasov V.V., Umenie v XIX storočí, v knihe: XIX storočia, Petrohrad, 1901, to isté, vo svojej knihe: Izbr. cit., 3, M., 1952; Yastrebtsev V.V., Moje spomienky na N.A.Rimského-Korsakova, zv. 1, P., 1917, L., 1959, s. 95; Šostakovič D., O skutočnom a imaginárnom programovom, "CM", 1951, č. 5; Bobrovskij V.P., Sonátová forma v ruskej klasickej programovej hudbe, M., 1953 (abstrakt dizertačnej práce); Sabinina M., Čo je to programová hudba?, "MZh", 1959, č. 7; Aranovský M., Čo je to programová hudba?, M., 1962; Tyulin Yu. N., O programovateľnosti v dielach Chopina, L., 1963, M., 1968; Khokhlov Yu., O hudobnom programovaní, M., 1963; Auerbach L., K problému programovateľnosti, "CM", 1965, č. 11. Pozri tiež lit. s článkami Hudobná estetika, Hudba, Zvukové písanie, Monotematizmus, Symfonická báseň.