Počítačové programovacie jazyky: typy, popis, aplikácia a recenzie. Ako počítač pracuje s informáciami? Akému jazyku počítač rozumie?

1. Ako počítač spracováva informácie? 2. Jazyk, v ktorom počítač „myslí“ – čo to je? 3. Čo si myslíte: existuje povolanie, ktoré nepoužíva počítač? 4. Kto sa dnes nezaobíde bez počítača? 5. Ako počítač prenáša a prijíma informácie? 6. Aké počítačové zariadenie spracováva informácie?




Program je postupnosť príkazov, ktoré PC vykonáva v procese spracovania informácií. Ľudská činnosť pri vytváraní programov sa nazýva programovanie a ľudia sa nazývajú programátori. Softvér (softvér) – celý rad programov používaných v modernom počítači.




Systémový softvér Aplikačný softvér Prístrojové programovanie Je hlavným softvérom, neoddeliteľnou súčasťou PC. Riadi komplexnú prácu všetkých prvkov počítačového systému na hardvérovej aj softvérovej úrovni Navrhnutý na vykonávanie špecifických úloh používateľa bez použitia programovania (textový editor, grafický editor, tabuľkový procesor atď.) Ide o nástroj určený na vytváranie softvéru. , t.j. rovnaký systémový a aplikačný softvér. Skladá sa z rôznych jazykov a programovacích prostredí (Pascal, C, C++ atď.) Tabuľka


Rezidentné programy sú programy, ktoré sú umiestnené v jeho RAM počas celej prevádzky počítača. Pretože Tieto programy sledujú jeho stav počas celej doby zapnutia počítačového systému (napríklad operačného systému, antivírusového programu). Nerezidentné programy sú programy, ktoré sa po dokončení svojej práce úplne alebo čiastočne uvoľnia z pamäte RAM (napríklad aplikačné programy).


1. PC pracuje s informáciami podľa algoritmu, ktorý je špecifikovaný programom, a program je zase napísaný v jazyku zrozumiteľnom pre počítač. 2. Aby mohol PC pracovať s informáciami, je potrebný nielen hardvér – zariadenia počítačového systému, ale aj softvér, ktorý dáva PC myšlienky a inteligenciu. 3. Softvér sa delí na: systémové, aplikačné a inštrumentálne programovanie. 4. Softvér je systematizovaný podľa trvania jeho prítomnosti v RAM počítača na rezidentné programy a nerezidentné programy


Doplňte chýbajúce slová do viet: 1. Počítač bez ………………. - to je zbytočný odpad, kopa železa. A len ……………….. urobiť z neho nášho asistenta, priateľa, poradcu. 2. Programovanie je ľudská činnosť na …………………. programy. 3. Na spracovanie informácií v počítači musíte mať …………………………………………. - zariadenia počítačového systému („hardvér“), ale aj …………………………………. („softvér“), ktorý dáva počítaču myšlienky a inteligenciu. 4. …………………… Softvér – určený na vykonávanie špecifických úloh používateľa. 5. Užívateľsky najprívetivejší……………………….. softvér. programy tvorba programov nielen hardvérové ​​softvérové ​​aplikačné systémy



1. Úplne prvé programy boli vyvinuté priamo v objektovo orientovanom jazyku a mohli ich vyvíjať všetci ľudia, nielen profesionálni programátori. 2. Program je postupnosť príkazov, ktoré PC vykonáva v procese ukladania informácií. 3. Všetky programy používané v počítači sa nazývajú hardvér. 4. Aplikačný softvér riadi koordinovaný chod všetkých prvkov počítačového systému na úrovni hardvéru aj softvéru. 5. Systémové programy sú nástroje určené na vytváranie softvéru. Nájdite a opravte chyby vo vetách:


Nielen strojový jazyk 1. Úplne prvé programy boli vyvinuté priamo v strojovom jazyku a nedokázali ich vyvinúť všetci ľudia, iba profesionálni programátori. spracovanie 2. Program je postupnosť príkazov, ktoré PC vykonáva v procese spracovania informácií. softvér 3. Všetky programy používané v počítači sa nazývajú softvér. Systémový softvér 4. Systémový softvér riadi koordinovanú prevádzku všetkých prvkov počítačového systému na hardvérovej aj softvérovej úrovni. Nástrojový softvér 5. Nástrojový softvér sú nástroje určené na vytváranie softvéru. Nájdite a opravte chyby vo vetách:






1. Organizácia koordinovaného vykonávania všetkých procesov v počítači. 2. Zabezpečenie ukladania informácií do externej pamäte a výmeny so vstupno/výstupnými zariadeniami, t.j. Za správny vstup informácií zo vstupného zariadenia a ich výstup na monitor, tlačiareň a pod., ako aj za správnu distribúciu informácií na externých pamäťových diskoch zodpovedá OS. 3. Reakcia na chyby a núdzové situácie. 4. Vedenie dialógu a komunikácie s používateľom.




Fázy načítania OS Počítač dostane svoj prvý príkaz z ROM. ROM obsahuje programy na testovanie BIOSu počítača. Činnosť systému BIOS sa na obrazovke zobrazuje bielymi plíživými čiarami. V tomto momente PC kontroluje svoje zariadenia - RAM, - pevný disk - mechaniky iných diskov, - prítomnosť klávesnice - iné zariadenia. Ak niečo nefunguje, BIOS hlási poruchu, inak svoju prácu dokončí a dá príkaz na načítanie špeciálneho programu s názvom Master Boot (nakladač OS) z pevného disku do pamäte RAM. Ak v počítači nie sú žiadne systémové disky, na obrazovke monitora sa zobrazí hlásenie Bez systémového disku a načítavanie OS sa zastaví, počítač zostane nefunkčný. Ak je všetko v poriadku, bootloader načíta OS z disku do RAM. Po dokončení načítania sa riadiaci OS prenesie do príkazového procesora a na obrazovke sa zobrazí grafické rozhranie.


1. Naučte sa základné definície a pojmy. 2. Učebnica § 2.4 - § 2.5, ústne odpovedajte na otázky na zamyslenie. 3. Pomocou nových pojmov a konceptov z predchádzajúcich a dnešných lekcií vytvorte krížovku. Nakreslite ho na samostatný list v niekoľkých kópiách. (možné v elektronickej verzii)

Ešte včera bola informatika v Sovietskom zväze považovaná za pseudovedu. A dnes sa vlády niektorých krajín sťažujú na útoky ruských hackerov.

A hoci sa v súčasnosti v Rusku vyrába málo high-tech zariadení, máme aj dosť šikovných programátorov.

Dnes si povieme niečo o počítačových jazykoch, ich klasifikácii, podstate, schopnostiach a perspektívach využitia v budúcnosti.

Začnime sa na tému pozerať teóriou. Po prvé, poďme pochopiť koncept.

Čo sú počítačové jazyky?

Ide o systém znakov a symbolov, ktorý bol vytvorený na „komunikáciu“ medzi osobou a počítačom. Nemôžeme predsa len ísť k počítaču a začať mu niečo vysvetľovať. Na tento účel existujú špeciálne kódové slová a slovná zásoba, ktoré tvoria počítačové jazyky. A už sú dodávané do počítača vo forme, ktorej rozumie.

V súčasnosti existuje viac ako 8 000 rôznych jazykov na komunikáciu medzi človekom a počítačom. Samozrejme, nie je možné ich všetky poznať. Niektorí ľudia vytvárajú jazyk pre seba, zatiaľ čo iní to robia na komerčnej báze.

Ale dobrý programátor musí vedieť aspoň pár základných dokonale.

Aké sú najobľúbenejšie programovacie jazyky?

Svet výpočtovej techniky sa neustále zlepšuje: objavujú sa novinky a tie predchádzajúce sa zlepšujú. Spolu s tým sa objavujú alebo sú zjednodušené počítačové programovacie jazyky. Medzi najobľúbenejšie z nich, ktoré sa používajú celosvetovo, patria:

Samozrejme, jazykov je v skutočnosti ešte viac, no my sme vybrali tie najzákladnejšie, v ktorých je napísaných viac ako 90 % všetkých počítačových aplikácií. Ďalej sa pozrime na každú z nich podrobnejšie.

Procedurálne C/C++

Jazyky C a C++ možno nazvať dvoma bratmi. Existujú tvrdenia, že ide o dva úplne odlišné programovacie jazyky, čo nie je pravda. C++ je určitým vylepšením predchádzajúceho jazyka, čo uľahčuje písanie programov a zachováva rovnakú syntax.

C sa vyvíja od sedemdesiatych rokov minulého storočia a v osemdesiatych rokoch začali vytvárať C++. Dnes možno ten druhý nazvať jedným z najpopulárnejších. Je tak všestranný, že ho môžete použiť na vytvorenie operačného systému, ovládačov zariadení, hier a mnoho ďalšieho.

Keď hovoríme o výhodách a nevýhodách tohto jazyka, nemožno vyvodiť jasné závery. Sú jeho priaznivci a sú aj nemilosrdní kritici. Základom kontroverzie je, že na tomto programovacom jazyku nie je nič jedinečné.

Jeho tvorcovia takpovediac spojili funkcie a možnosti niekoľkých programovacích jazykov do jedného. Výsledkom je komplexný a rozsiahly programovací nástroj. Ale ak to analyzujete podľa jednotlivých funkcií, potom je to horšie ako vysoko špecializované jazyky.

Nezávislá a bezpečná Java

Tento anglický počítačový jazyk vyvinula spoločnosť Sun Microsystems. Vďaka tomu, že napísaný program je preložený do špeciálneho bajtkódu, je schopný pracovať bez ohľadu na typ operačného systému alebo architektúru počítača.

To urobilo z Java najpopulárnejší jazyk. Nachádza sa úplne vo všetkých domácich spotrebičoch, bankomatoch, mestských strojoch a takmer vo všetkom, čo súvisí s výpočtovou technikou. Najpopulárnejšie aplikácie pre smartfóny a telefóny sú napísané v jazyku Java.

Tento programovací jazyk má tiež pomerne vysokú úroveň bezpečnosti. Vykonávanie akcií v rámci svojich právomocí riadi program, ktorý vysiela príkazy do zariadení. Preto, keď sa pokúsite vykonať akúkoľvek inú úlohu, program okamžite prestane pracovať.

Ak hovoríme o jednoduchosti jazyka, za zmienku stoja štúdie, ktoré ukázali, že zápis podobných operácií trvá 1,2-2 krát dlhšie ako v C++. Na vykonanie príkazov je tiež potrebných niekoľkonásobne viac zdrojov. Tím výrobcu však neustále vydáva veľa aktualizácií, ktoré minimalizujú všetky nedostatky tohto programovacieho jazyka.

PHP, ktoré dobylo internet

Chcete si vytvoriť vlastnú webovú stránku alebo sa pustiť do programovania webu? Pomôže vám v tom výborný jazyk PHP, ktorý je schopný vytvárať dynamické stránky. Je snáď najpopulárnejší pri tvorbe webových stránok a písaní webových aplikácií.

Vďaka tomu, že tento programovací jazyk vytvorili vývojári open source, bol dovedený k dokonalosti a získal si divokú popularitu. PHP jednoducho spolupracuje so širokou škálou databáz – od MySQL po Access.

Najpopulárnejšie internetové stránky ako Facebook alebo Wikipedia sú písané v tomto jazyku.

Písanie na ňom je celkom jednoduché. Existujú dokonca štatistiky, že viac ako 60 % svetových programátorov, ktorí pracujú na kóde PHP, má dosť obmedzené znalosti (na základnej úrovni) angličtiny. Počítačová gramotnosť sa v tomto prípade obmedzuje len na znalosť potrebných funkcií a postupov.

Nemôžeme ignorovať kritiku jazyka. Napriek tomu, že PHP obsadilo 6. miesto v rebríčku najpopulárnejších jazykov roku 2015, často sa s ním prejavuje nespokojnosť.

V prvom rade tento jazyk nevytvorila jedna skupina programátorov, ale viacero. Z tohto dôvodu nie je syntax jazyka jednotná a nemá jednotnú architektúru. Existujú rôzne postupy, ktoré je potrebné opísať osobitným spôsobom a nie podľa štandardizovanej šablóny.

Jedným z hlavných problémov je tiež nedostatočná kompatibilita medzi rôznymi verziami jazykov. Staršie verzie absolútne odmietajú pracovať s aktualizáciami, čo často spôsobuje problémy pri presúvaní kódu z jednej verzie do druhej.

Relevantnosť znalosti a porozumenia programovacích jazykov

Téma schopnosti „rozprávať sa“ s počítačom naberá v poslednom desaťročí čoraz viac na sile.

A nie je to prekvapujúce, pretože informačné technológie sa neúnavne zavádzajú do našich životov a ani zubná kefka sa nezaobíde bez „mozgov“. Špecialista musí naprogramovať kód a opraviť zariadenia. Preto je vždy dopyt po kompetentných programátoroch.

Ďalším dôvodom, prečo veľa ľudí študuje počítačové jazyky, je pokles ekonomiky krajiny. Človek, ktorý vie profesionálne písať v Jave, môže pracovať na diaľku pre zahraničnú spoločnosť tvoriacu aplikácie a za mesiac zarobiť také peniaze, ktoré by si musel desiatky rokov šetriť vo vlastnej krajine.

Ale ak o tom premýšľate, je dosť ťažké začať úspešne programovať a písať počítačové programy. Angličtina je hlavnou prekážkou pre začiatočníkov. Koniec koncov, väčšina programov a jazykov je napísaná s prihliadnutím na slovnú zásobu tohto medzinárodného jazyka.

Môžete sa učiť jazyky online

Takže sa budete musieť naučiť cudzí jazyk aspoň na základnej úrovni, kým nebude vynájdený ruský počítačový jazyk.

Ale nebojte sa, svet nestojí. Dnes môžete študovať bez toho, aby ste opustili svoj domov. Hlavná vec je mať počítač a internet. Existuje mnoho webových stránok, ktoré poskytujú počítačové jazykové vzdelávanie. Najpopulárnejšie sú Codecademy, Code School a Udacity.

Teraz si už jednoducho nevieme predstaviť náš život. Databázy, počítačové hry, operačné systémy, sociálne siete a mnoho iného.

Toto všetko by sme nemali, keby ľudia nevyvinuli špeciálne programovacie jazyky, pomocou ktorých sa dnes vytvára široká škála počítačového softvéru.

Programovacie jazyky sa už nepočítajú na desiatky, ale na stovky. Existujú jazyky špeciálne na vývoj webových stránok, hier a animácií.

Aké jazyky sa používajú na vytváranie bežných aplikačných programov (teda programov napísaných priamo pre používateľov)? Je ich nespočetne veľa, najpopulárnejšie z nich sú C++ a Delphi. Poskytujú najväčší počet príležitostí na rozvoj programov pre všetky príležitosti. Toto používajú profesionálni programátori.

C++ aj Delphi však boli vytvorené na základe jednoduchších jazykov. Pre C++ je to jazyk C (nazývaný „C“). Predchodcom Delphi je Pascal. Veľa ľudí sa ich učí na hodinách informatiky v škole. Jazyk Pascal bol vytvorený špeciálne pre výučbu programovania, keďže je veľmi jednoduchý a zrozumiteľný. Teraz sa používa takmer vo všetkých školách, vysokých školách, univerzitách a inštitútoch.

Po zvládnutí Pascalu ide učenie Delphi, ako sa hovorí, s hrou. Táto postupnosť osvojovania jazyka, t.j. najskôr Pascal a potom Delphi alebo C, C++, je veľmi žiadúce. Odpoveď na otázku „Ktorý programovací jazyk je lepší“ je, že Pascal je najlepší na učenie pre začiatočníkov.

Na vývoj karikatúr a animácií bol vytvorený špeciálny program - Adobe (Macromedia) Flash. Flash sa používa aj pri vývoji webových stránok a pri tvorbe počítačových hier. Jazyk používaný vo Flashi je ActionScript. V súčasnosti si získal obrovskú popularitu, pretože sa používa vo všetkých moderných internetových projektoch.

HTML je skratka pre angličtinu. HyperText Markup Language a prekladá sa ako „hypertextový značkovací jazyk“. Používa sa na vytváranie väčšiny webových stránok. Znalosť HTML výrazne zjednodušuje prácu s vaším blogom alebo webovou stránkou, nie je však povinná.

Pokročilejšie a funkčnejšie (ale zložitejšie) jazyky ako HTML sú PHP, Ajax, SQL.

Na vývoj hier a programov pre telefóny sa používajú hlavne dva jazyky - Java a C++. O C++ sme už hovorili a Java je programovací jazyk vytvorený na základe C++.

Python sa používa na vytváranie 3D hier a filmov. Poskytuje obrovské množstvo možností pre správu 3D grafiky.

Jazyk Fortran bol vyvinutý pre zložité matematické výpočty, vytvorený v rokoch 1954-1957. Slovo Fortran pochádza z prvých písmen: FORmula TRANslator, teda prekladač vzorcov. Vykonáva matematické, inžinierske a rôzne vedecké úlohy a používa sa vo veľmi výkonných počítačoch.

Ako vidíme, programátori vyvinuli programovacie jazyky pre všetky príležitosti. Mnoho programátorov je fanúšikmi konkrétneho programovacieho jazyka, ale to závisí od osobných preferencií. Nové jazyky sa vytvárajú a staré sa vylepšujú. Budúcnosť výpočtovej techniky závisí od funkčnosti programovacích jazykov.

P.S.Článok sa skončil, ale stále môžete čítať.

Takmer každý deň používame počítačové technológie v našom každodennom živote. Aj keď nepoužívate internet alebo mobilné vychytávky, všade vás obklopujú rôzne počítačové programy – pri pokladni v obchode, na križovatke so semaformi, v bankomatoch a pri mnohých iných každodenných činnostiach, o ktorých sa nám ani nezdá to. Moderné technológie sa tak celkom nepozorovane stali súčasťou našich životov. A ak často používate počítač alebo vlastníte smartfón, tak o to lepšie viete, že všade sa používajú rôzne programy či aplikácie pre úplne iné potreby moderného človeka.

Možno vás nikdy nenapadlo, že aj tieto programy tvoria ľudia – programátori a sú napísané v špeciálnom jazyku. Okrem toho je dôležité poznamenať, že dnes existuje veľké množstvo programovacích jazykov. Je to to isté, keďže v každej krajine sa hovorí vlastným jazykom a vo výpočtovej technike sa na rôznych miestach používa vlastný jazyk – pre mobilné aplikácie pre Android je jeden jazyk a pre iPhone iný, na vytváranie webových stránok existuje tretí jazyk, ale pre počítačové hry štvrtý a tak ďalej.

"Na čo sú potrebné?" - pýtaš sa. Všetko je veľmi jednoduché. Programovacie jazyky obsahujú príkazy zadané počítaču, aby vykonával určité funkcie. Vidíte, aj počítače majú svoj špeciálny jazyk, alebo inak povedané kód, v ktorom s nimi musíte komunikovať. Ak chcete počítač požiadať, aby niečo urobil, musí napísať príslušný príkaz, po ktorom ho spracuje a vytvorí výsledok. Takto je všetko jednoduché a zložité zároveň.

Jeden z najzákladnejších jazykov sa nazýva C++; jeho história siaha až do 80-tych rokov. Na úsvite počítačov si každý vývojár vytvoril svoj vlastný operačný systém a programovací jazyk. S rastom rôznych spoločností a ich vývojom sa ukázalo, že je čas zaviesť niektoré spoločné štandardy, pretože... Problémy s kompatibilitou hardvéru a softvéru sa začali objavovať čoraz viac. Unix sa tak stal prvým všeobecným operačným systémom a prvým programovacím jazykom bol C++.

Odvtedy prešlo veľa času, nové jazyky sa objavili a zanikli (nie všetky boli široko používané) a Java sa stala ďalším populárnym jazykom, ktorý má niektoré spoločné črty s C++, ale je v podstate úplne odlišný. Jazyk Java (alebo Java) sa dnes používa najmä pri vývoji širokej škály webových aplikácií, od jednoduchých funkcií webových stránok až po zložité webové rozhrania. Napriek tomu, že v posledných rokoch sa objavilo obrovské množstvo príručiek, ako sa naučiť programovať, odborníci stále odporúčajú absolvovať špecializované univerzity. Alebo aspoň navštevovať špecializované kurzy.

Ale „staršie“ programovacie jazyky sú čoraz viac kritizované za ich zložitosť a ťažkopádnosť. Skúsenosti z posledného desaťročia a boom nových zariadení ukázali, že počítačové príkazy môžu byť oveľa jednoduchšie a kratšie. Preto sa proces vývoja nových jazykov nezastaví. V posledných rokoch sa objavili programovacie jazyky ako Scratch a Python, v ktorých sa dokonca aj deti učia „kódovať“. Napríklad Scratch na zahraničných školách sa začína študovať už na základnej škole. A Python umožňuje študentom stredných škôl samostatne vytvárať rôzne nové funkcie pre slávnu hru Mine Craft. Jednoduchosť nových jazykov a vzrušujúci formát prezentácie priťahujú čoraz viac školákov k tak komplexnej vede, akou je programovanie.

Na internete sa čoraz častejšie objavujú návody na učenie sa rôznych počítačových jazykov, takže každý si môže nájsť niečo vlastné a začať si skúšať vytváranie jednoduchých aplikácií alebo hier. Len nezabudnite, že pred spustením nového programu ho musíte otestovať. Na tieto účely existujú špeciálne vyškolení ľudia nazývaní testeri. Kontrolujú funkčnosť všetkých funkcií aplikácie a identifikujú existujúce chyby, ktoré sa nevyhnutne objavia v prvých krokoch vývojára.

Po overení môžete bezpečne uverejňovať svoje programy na internete. Navyše, ako na bezplatné sťahovanie, tak aj na generovanie príjmu. Aj keď v počiatočnej fáze by ste, samozrejme, nemali snívať o veľkých ziskoch, ale časom vám nahromadené skúsenosti umožnia vytvárať skutočne veľké, jedinečné softvérové ​​produkty, ktoré budú žiadané a kupované zainteresovanými ľuďmi. Ale stále je hlavnou vecou programátorov nadšenie. Veď práve vďaka nemu sa rodia nevšedné nápady, ktoré nachádzajú nový život vo virtuálnom svete a ovplyvňujú ten skutočný. Preto by programovanie mali robiť len tí ľudia, ktorí skutočne radi tvoria a snívajú o tom, ako urobiť svet budúcnosti lepším a zaujímavejším.

časť 4)

Človek má potrebu evidovať svoje vedomosti v prísnejšej forme, sú tam všelijaké matematické vzorce, technológie a to najťažšie - návody na ovládanie rôznych strojov vr. výpočtový. Preto vznikli rôzne spôsoby formálneho zaznamenávania ľudských vedomostí a práce s takto zaznamenanými znalosťami. Postupom času sa objavovali pokusy preniesť tieto spôsoby záznamu a prevádzkových znalostí do rôznych zariadení na spracovanie bez ľudského zásahu, dokonca až k pokusom o reprodukciu ľudskej inteligencie. Ďalej sa pozrieme na programovacie jazyky (modely), ich dve hlavné odrody – procedurálny a predikátový, ako fungujú na počítačoch a čo im chýba na vytvorenie umelej inteligencie.

Procedurálny model

Najjednoduchšie na počítači a iných automatických zariadeniach sú procedurálne programovacie jazyky. Majú jasnú postupnosť krokov, z ktorých každý má svoje vlastné číslo, a vykonávanie prebieha presne v poradí. Existujú logické a aritmetické operácie, ktorých výsledky je možné použiť na prechod nie na ďalší krok, ale na iný s daným číslom. Takto sa algoritmus vetví v rôznych podmienkach a cykloch.

Príkladom takéhoto algoritmu je prechod cez cestu:

  • 1. kým sa nedostaneme na cestu: vpred 1 krok
      (presnejšie:
    • 1a. dostal si sa na cestu? áno – prejdite na krok 2, nie – prejdite na krok 1b
    • 1b. kráčať vpred po ceste 1 krok
    • 1. storočie prejdite na krok 1a)
  • 2. kým sú autá, počkajte 1 sekundu
  • 3. prejsť cez cestu

Na tejto forme záznamu a spracovania je skvelé to, že umožňuje naprogramovať veľmi jednoduché zariadenia alebo dať pokyny aj tomu najhlúpejšiemu človeku. Čo je zlé na tejto forme záznamu, je to, že napísanie podrobného algoritmu si vyžaduje veľa práce, najmenšia chyba, v ktorej bude viesť k zlyhaniu celého procesu. Ale to je prekonateľná nevýhoda. Horšie je, ak dôjde k situácii, ktorú algoritmus nepredvída, napríklad cesta k prejazdu bude kľukatá alebo sa vyskytnú nejaké iné prekvapenia, ktoré spôsobia, že algoritmus upadne do strnulosti. Každé takéto prekvapenie musí byť naprogramované a programovanie sa mení na nekonečnú nočnú moru bez nádeje na osvietenie.

Tento model mal niekoľko vylepšení, ako napríklad štruktúrované programovanie a objektovo orientovaný model (OOP). Aby v programe nešlo o neporiadok dát a prechodov, kúsky kódu a dát boli rozdelené do hierarchie a prístup priamo na akékoľvek miesto nie je možný, iba podľa pravidiel tejto hierarchie. Napríklad k procedúre sa pristupuje iba cez jeden vstupný bod, pričom sa jej odovzdáva množstvo výstupných a výstupných údajov, ale nič vo vnútri procedúry sa nemôže dotknúť a samotná procedúra sa nedotýka ničoho mimo seba. OOP robí niečo podobné – každý objekt má časti kódu a údaje, ktoré slúžia tomuto objektu, a rozhranie – procedúry, prostredníctvom ktorých môžete interagovať s objektom, ale nemôžete priamo pristupovať ku kódu a údajom objektu. Vylepšenia sú veľmi užitočné, ale sami o sebe neriešia problém žiadnych prekvapení.

Predikátový model

Predikátový model je bližší ľudskej forme zaznamenávania a spracovania vedomostí. S jeho pomocou sa spočiatku zapisovali matematické vzorce a logické konštrukcie. Jeho podstatou je, že existuje súbor pravidiel, ktoré nie sú navzájom nijako spojené poradím vykonávania. Ale! Každé pravidlo má podmienku aktivácie, stav (napríklad stav výpočtového prostredia), v ktorom sa môže pravidlo vykonať, a vykonaním tohto pravidla sa stav zmení. Nejaký externý vykonávateľ skontroluje všetky pravidlá zo sady a aplikuje pravidlo, ktoré zodpovedá aktuálnemu stavu. Pre zmenený stav sa opäť hľadá vhodné pravidlo atď. Samozrejme, v rámci samotného pravidla môže existovať aj postupné zaznamenávanie vykonávacích pokynov, ale je to pre pohodlie a nie je to dôležité. Môžu existovať aj signálne stavy, t.j. stavy, ktoré sa nevyskytujú vo vonkajšom prostredí, ale ktoré sú produkované samotnými pravidlami ako medziľahlé, na aktiváciu iných pravidiel, keď chceme zložité pravidlo rozložiť na množinu jednoduchých.

Napríklad pri prechádzaní cez cestu by súbor pravidiel bol takýto (formát - vstupná podmienka: akcia):

  • - (v blízkosti cesty sú autá): počkajte 1 sekundu
  • - (nie v blízkosti cesty): 1 krok vpred
  • - (v blízkosti cesty, žiadne autá): prejdite cez cestu

Samotný interpret nasadí súbor pravidiel do požadovaného sledu akcií v závislosti od situácie, napríklad:

  • - (pri ceste: nie, žiadne autá: neznáme): vpred 1 krok
  • - (pri ceste: nie, žiadne autá: neznáme): vpred 1 krok
  • - (pri ceste: áno, nie autá: nie) : počkajte 1 sekundu
  • - (pri ceste: áno, nie autá: nie) : počkajte 1 sekundu
  • - (v blízkosti cesty: áno, nie autá: áno): prejdite cez cestu

Už je jasné, prečo je takáto nahrávka zlá – potrebujeme komplexnejšieho/výkonnejšieho interpreta (výpočtové zariadenie, chápavého človeka), ktorý by na základe zmenenej situácie samostatne našiel požadovanú akciu. A pre každé pravidlo sa súbor podmienok môže ukázať ako veľmi, veľmi rozsiahly, čo si bude vyžadovať ešte viac pamäte a rýchlosti. (Tu, samozrejme, existuje možnosť zrútenia množiny stavov do jedného väčšieho stavu, analogicky so štruktúrovaným programovaním, keď existujú pravidlá prerozdeľovania, ktoré na základe stavov nižšej úrovne vytvárajú jeden stav vysokej úrovne a naopak. Pravidlá vyššej úrovne už pracujú s štátmi na vysokej úrovni. A toto je samostatná téma, o tom neskôr.)

Napríklad pre kľukatú cestu môžeme pridať pravidlo, ktoré sa aktivuje, keď sa zistí odbočka na ceste a zarovná náš smer so smerom, ktorý vedie k ceste:

  • - (nie v blízkosti cesty, na ceste je odbočka): odbočte na stranu vedúcu k ceste

    A potom, keď je zistená odbočka, účinkujúci vyvolá toto pravidlo a pokračuje v pohybe vpred. Trochu upravené toto pravidlo bude fungovať pri odbočkách pri pohybe k ľubovoľnému cieľu, a preto, ak píšeme navigátora pre nejakého robota, v ideálnom prípade môžeme pridaním odbočovacieho pravidla úplne zabudnúť na odbočky, namiesto toho, aby sme kontrolovali prítomnosť závitov v každej vetve procedurálneho algoritmu.

    Ale výhody takejto nahrávky sú značné. Ak by sa v procedurálnom zázname objavili nové prekvapenia, museli by sme prejsť celý algoritmus a opraviť všetky miesta, kde by sa toto prekvapenie mohlo vyskytnúť. V predikátovom zápise (pozor!) ideálne stačí pridať nové pravidlo, ktoré by nečakaný stav zmenilo na niektorý z už známych stavov. (Samozrejme, nie je tu všetko také jednoduché, ale o tom neskôr.) Takúto nahrávku možno nazvať aj situačnou, ktorá bude presne odrážať jej podstatu - akciu podľa situácie, a nie podľa rigidného algoritmu. Niektoré úlohy, ktoré je ťažké naprogramovať v procedurálnej forme, sú formulované úžasne jednoducho v predikátovej forme, čím sa celé bremeno výberu reťazcov pravidiel presúva na vykonávateľa.

    Takto sa odvodzujú napríklad matematické vzorce a vety. Existuje množstvo axióm a prechodných viet, z ktorých každá má svoje vlastné podmienky použiteľnosti. Interpret z nich zbiera rôzne reťaze v nádeji, že získa (alebo vyvráti) želaný výsledok. Takéto systémy boli dokonca vyrobené na počítači a dokonca dosiahli zaujímavé výsledky. Takýto systém však nepriniesol nič radikálne nové. prečo? Pozri nižšie a v nasledujúcich častiach.

    Rovnakým spôsobom dochádza k vyvodzovaniu pravidiel v expertnom systéme (napríklad k lekárskej diagnóze na základe symptómov) alebo k vykonávaniu programu v predikátových programoch, napríklad v jazyku Prolog. Navyše, najskôr expertný systém nemusí poznať celý stav systému, ale vyjasní ho, keď sa aktivujú nové pravidlá, napríklad ak prvotnou sťažnosťou bola teplota a nie rany, potom systém nebude potrebovať povahu poškodenie rany, ale potom to objasní príznaky teploty, napríklad či je tam vyrážka alebo strata chuti do jedla.

    Príroda má tiež túto formu kódovania (ale prirodzene sa odkláňa od rigidného formalizmu) a poskytuje výkonné a stabilné kódovanie a spracovanie informácií, ale tu už účinkujú prírodné zákony. Napríklad molekuly DNA sú zakódované a replikované, „kotúľajú sa“ pozdĺž molekulárnych reťazcov, integrujú sa na miesto, ktoré potrebujú (nebudú sa môcť pripojiť k nepotrebnému - parametre molekulárnych väzieb nie sú rovnaké), opravte chyby, vynechané alebo naopak duplicitné kusy. Existujú podobnosti v práci celého organizmu, interakcii jednotlivcov a konštrukcii inteligencie.

    Dobrým príkladom bol šach od Penrosa. Situácia na palubovke bola taká, že jedna zo strán dokázala udržať rovnováhu síl s minimom akcií a dosiahnuť remízu. Počítačové programy, ktoré hľadali možnosti, začali narúšať túto rovnováhu a dosahovali krátkodobú výhodu, ktorá sa z dlhodobého hľadiska zmenila na úplnú porážku. (Penrose z toho však vyvodil nesprávny záver – ľudský mozog môže údajne v konečnom čase plne otestovať „večné“ možnosti „ťahaním“ neznámych fyzikálnych procesov.)

    A tu sa objavuje hlavné obmedzenie algoritmu. Napokon, procedurálna aj predikátová notácia môžu byť vzájomne vyjadrené jedna cez druhú a obe sú spôsobmi zápisu/prevádzky algoritmu (alebo formálneho systému a výstupu na tomto fs). A na počítačoch sú všetky nízkoúrovňové predikátové modely napísané pomocou procedurálneho modelu. A obmedzením je, že (prísne podľa prísneho formalizmu) sa môžete ponoriť medzi tieto pravidlá navždy bez toho, aby ste dostali potvrdenie alebo vyvrátenie pôvodnej myšlienky.

    V prípade prechodu cez cestu by to bolo napríklad stretnutie s rozdvojkou. Program musí nájsť správnu cestu medzi všetkými vidlicami. Pre bežné cesty existuje jednoduchý a jednoznačný algoritmus, program tu nebude večne blúdiť a žrať obrovské zdroje. Na odvodenie matematických teorémov a podobných prípadov sa „cestovná mapa“ bude meniť v závislosti od toho, kam ideme, s každým krokom vpred uvidíme okolo seba nový kúsok mapy, ale nebudeme sa môcť do nej pozrieť; vzdialenosť alebo smerom k paralelnej ceste. A iba ak budeme nasledovať jednu z ciest vpred, budeme schopní vidieť, čo tam je. A aby sme videli, čo sa stane na paralelnej ceste, musíme sa vrátiť na rozdvojku a nasledovať práve túto cestu. Nemôžete však mať celú mapu naraz - jej veľkosť je viac než nekonečná, a to platí pre mnohé menšie časti mapy! (cm.)

    Možným riešením je postaviť niekoľko reťazcov paralelne, pretože niektoré z nich môžu viesť k úspechu skôr ako iné. A namiesto toho, aby ste prenasledovali jeden neúspešný reťazec až do konca (a možno aj navždy!), a potom prevzali ďalší, je lepšie viesť niekoľko reťazcov paralelne. Aj tu však narážame na problém – explózia reťazových variantov môže ľahko spotrebovať výpočtové zdroje. Moderné inferenčné systémy využívajú rôzne heuristiky (triky) na zvládnutie takýchto situácií. Použitie heuristiky má však svoju zvláštnosť – niektoré možnosti môžeme úplne preskočiť a nepreskúmať ich, takže takýto záver stráca formálnu prísnosť. Je to dobré alebo zlé? Na jednej strane strácame niektoré možnosti a formálnu náročnosť, na druhej strane sa program stáva funkčným bez toho, aby sa navždy zasekol.

    A najzaujímavejším problémom je, že takýto inferenčný systém musí byť schopný zvládnuť neistotu, fuzziness a podobné situácie. Nestačí totiž napísať jasné pravidlo, musí sa nejako šikovne popasovať so situáciou, keď sú niektoré údaje nejasné, niektoré sú podobné, ale nie úplne rovnaké a vhodnejšie pravidlo neexistuje. A to aj napriek tomu, že (nezabudnite!) každé pravidlo môže mať veľmi širokú podmienku aktivácie.

    Samozrejme, existuje niečo také, čo sa nazýva fuzzy pravidlá a odvodzovanie z nich. Robí to tak, že namiesto zvyčajných boolovských hodnôt 0/1 používa celý rozsah od 0 do 1 a výpočet sa nevykonáva s boolovskou hodnotou, ale so skutočnými operáciami, a preto je výsledkom reálne číslo, ktorého blízkosť k nule alebo jednotke určuje blízkosť k nepravdivosti alebo pravdivosti vypočítaných výrazov. Toto je bližšie k tomu, čo je potrebné pre inteligenciu, ale nie všetko. Pretože na výstupe je len jedna výsledná hodnota. Fuzzy pravidlá dobre zvládajú neostrosť vstupných parametrov, nie však neostrosť/neistotu situácie ako celku. Pretože pre neistú situáciu nebude existovať jedna možnosť, ale veľa. A pri vyvodzovaní záverov s neistotou bude musieť systém viac ako raz prejsť explóziou možností kvôli neistote a odrezaním neperspektívnych možností. (Fuzzy pravidlá nie sú mojou témou, ale pokiaľ viem, nerobia to.) A nielen spustiť alternatívne reťazce a zistiť, ktorý z nich povedie k výsledku rýchlejšie, ale umožniť ich interakciu, v dôsledku čoho môžu sa zrodiť nové reťazce a tie staré zaniknú, no pri pohľade dopredu sa tak stane v ďalších častiach.

    Ako vidíte, situačný/predikátový model je veľmi silná vec a je lákavé použiť ho na budovanie umelej inteligencie - poznajte sami, zapíšte si pravidlá a pridajte ich do rámčeka pravidiel a počítač sám vytvorí správne logické reťazce. Japonci to chceli urobiť, dokonca navrhli počítač piatej generácie na procesoroch Prolog. A ako už asi tušíte, tento nápad zlyhal. Dôvody sú rovnaké: explózia možností, potreba zvládnuť neistoty, nejasnosti a podobné situácie. To všetko navyše znásobené tým, že človek sám operuje s gigantickým objemom takýchto pravidiel, v ktorých (pamätáte?) veľmi rozsiahlych aktivačných podmienok a dostať ich z hlavy a formalizovať je veľmi náročná úloha. Veď to, čo si človek zapíše ako formálne pravidlo, má ďaleko od toho, čo sa mu odohráva v hlave a nemusí to zapísať správne. Tu je potrebný samostatný systém, ktorý by sa zaoberal extrakciou vedomostí v správnej forme, v celom ich obrovskom objeme a širokej škále aktivačných podmienok.

    Moderné softvérové ​​modely

    A hoci predikátový model vo svojej čistej forme nie je použiteľný pre budovanie inteligencie, pomohol tak pri tvorbe inteligentných systémov (pozri vyššie), ako aj pri konštrukcii zložitých softvérových systémov. Softvérové ​​systémy si predsa musia nejako poradiť so zložitým vonkajším prostredím a zároveň oba preberajú mnohé princípy z predikátového/situačného modelu a odchyľujú sa od princípov striktného algoritmu (pozri).

    Prvým zaujímavým vynálezom je slučka udalostí. Program sa nespúšťa od začiatku do konca, ale točí sa v slučke spracovania udalostí, pozerá sa na to, aké udalosti prichádzajú, a na každú udalosť reaguje vlastnou akciou, ktorá ako odpoveď môže generovať ďalšie udalosti. Udalosťou môže byť čokoľvek – vstup používateľa, udalosti operačného systému, signály z iných programov, súbor podmienok. Udalosti sú zvyčajne sprevádzané údajmi, ktoré ich popisujú. Pokročilá možnosť - program neinteraguje so samotným počítačom, ale prijíma udalosti z operačného systému a veľa programov môže pracovať súčasne a samotný operačný systém vie, ktoré udalosti komu distribuovať. To isté je možné na úrovni počítačovej siete. Okrem toho samotný program aj procedúry obsluhy udalostí zostávajú napísané pomocou procedurálneho modelu.

    Podobným vynálezom sú služby a modely komponentov. Na rozdiel od objektu v OOP komponenty a služby nežijú vo vnútri programu, ale vo vnútri operačného systému. Majú svoje vlastné rozhranie, cez ktoré (a iba cez ktoré) s nimi môžu interagovať iné programy, a môžu mať aj vlastnú slučku spracovania udalostí.

    Situačné prístupy možno uplatniť aj v rámci konvenčných programov. Z vlastnej skúsenosti poviem, že napríklad uviesť program do požadovaného počiatočného stavu, inicializovať hromadu všemožných premenných a nájsť potrebné údaje pre prácu, to môže byť netriviálna úloha. Aby ste to mohli urobiť priamo, musíte zaviesť kopu všemožných duplikácií, slučiek a kontrol a toto všetko musíte mať v hlave, pamätať si, čo je s čím spojené, aby ďalšia zmena kódu smerovala tam, kam a nezničí všetko. Ako by bolo jednoduchšie spustiť všetko na jednu kopu, ktorá by si sama vybrala, čo jej chýba, kým sa úplne neinicializuje. Podobné veci sa používajú na to, aby umožnili programu zotaviť sa z chýb a vyskúšať alternatívne spôsoby na dosiahnutie cieľa a dokonca analyzovať, ktorý z nich je lepší. Vo všeobecnosti s tým počítajte – ak vám z komplexnosti programu behá po hlave, alebo si riešenie môže vyžadovať viacero možností s možnými chybami – má zmysel zamyslieť sa nad predikátovým/situačným modelom.

    Spodná čiara

    Teraz chápeme, ako sa programujú počítače a čo v tomto programovaní chýba, aby sme získali inteligenciu. Predikátový/situačný model je silná vec a ak dokáže prekonať problémy spojené s explóziou opcií, zvládaním neistoty a nejasností, potom bude dobrým základom pre vytváranie inteligencie. Je pravda, že sa zároveň vzdiali od jasnosti formalizmu a navyše získa množstvo „vlastností“ prirodzenej inteligencie, ale to je už iný rozhovor.