Az ismert programozási nyelvek rövid áttekintése. Programozási nyelvek típusai Három szakember és háromféle területi programozás

04.03.2021 Programok

Ha szerkezeteinek képződésének szintaxisát vesszük az osztályozás jelének, akkor feltételesen a következő típusokra oszthatjuk fel:

    eljárási,

    funkcionális,

    logikus,

    objektum orientált.

3.1. Eljárási (algoritmikus) nyelv

Az eljárási programozási nyelv lehetővé teszi a programozó számára, hogy meghatározza a probléma megoldásának minden lépését. Az ilyen programozási nyelvek sajátossága, hogy a feladatokat lépésekre osztják, és lépésről lépésre oldják meg. Egy eljárási nyelv segítségével a programozó nyelvi konstrukciókat definiál az algoritmikus lépések sorozatának végrehajtásához.

Az eljárási nyelveket a következő jellemzők jellemzik:

    az explicit memóriakezelés szükségessége, különösen a változók leírása;

    alacsony alkalmasság szimbolikus számításokra;

    a szigorú matematikai alap hiánya;

    a hagyományos számítógépeken való megvalósítás nagy hatékonysága.

A procedurális nyelv egyik legfontosabb osztályozási jellemzője a szintje. A programozási nyelv szintjét konstrukcióinak szemantikai kapacitása és a programozó felé való orientáció mértéke határozza meg. Minél inkább emberközpontú a nyelv, annál magasabb a szintje.

Az eljárási nyelvek a következők: Assembly nyelv, C, Basic, Pascal.

3.2 Funkcionális (alkalmazó) nyelv

Az első ilyen nyelv a LISP volt.

A funkcionális (alkalmazó) nyelvekben a fő konstrukció szerepét egy kifejezés játssza. A kifejezések közé tartoznak a skaláris állandók, strukturált objektumok, függvények, függvénytestek és függvényhívások.

Az applikatív programozási nyelv a következő elemeket tartalmazza:

    függvényekkel manipulálható állandók osztályai;

    alapvető funkciók készlete, amelyet a programozó előzetes deklaráció és leírás nélkül használhat;

    az alapvető funkciókból új függvények felépítésének szabályai;

    függvényhívásokon alapuló kifejezések kialakításának szabályai.

A felsorolt ​​tulajdonságok nagyon jellemzik az applikatív nyelveket, mint programozási nyelveket magas szint.

3.3 Logikai (relációs) nyelv

A PROLOG nyelvet A. Colmeroe francia tudós alkotta meg 1973-ban. Jelenleg más nyelvek is ismertek, de a Prolog a legfejlettebb és legelterjedtebb logikai programozási nyelv. A logikai programozási nyelveket széles körben használják a mesterséges intelligencia rendszerekben.

A logikai programozási nyelveket a következők jellemzik:

    magas szint;

    szigorú orientáció a szimbolikus számításokhoz;

    az inverz számítások lehetősége, vagyis az eljárásokban a változók nincsenek bemenetre és kimenetre osztva;

    lehetséges logikai hiányosság, mivel gyakran lehetetlen bizonyos logikai összefüggéseket kifejezni a programban, és nem lehet minden helyes következtetést levonni a programból.

A nyelv konstrukciói nem matematikai képleteknek felelnek meg, hanem az objektumok és mennyiségek közötti kapcsolatokat határozzák meg, megadják, hogy a felhasználó milyen eredményt szeretne, anélkül, hogy megjelölné, hogyan kell ezt tenni.

Logikai és funkcionális nyelvek kijelentő nyelvek. Ezekben a nyelvekben nem szerepel az "operátor" ("parancs") fogalma.

3.4 Objektumorientált nyelv

Az objektum-orientált nyelv sok független objektum formájában hoz létre környezetet. Minden objektum külön számítógépként viselkedik, „fekete dobozként” használhatók fel problémák megoldására anélkül, hogy működésük belső mechanizmusaiba belemennénk.

Az objektum-orientált programozási nyelvek a közelmúltban nagyon népszerűek a programozók körében, mivel lehetővé teszik az objektum-orientált megközelítés előnyeinek kihasználását nem csak a szoftverrendszerek tervezésének és felépítésének szakaszában, hanem azok megvalósításának, tesztelésének és karbantartásának szakaszában is.

A modern objektum-orientált (OO) nyelvekben a következő módszereket alkalmazzák: öröklődés, tokozás, polimorfizmus.

Egyes objektum-orientált nyelvekben minden osztálymetódus virtuális.

Sok modern nyelvet kifejezetten az objektum-orientált programozás megkönnyítésére terveztek. Azonban meg kell jegyezni, hogy az OOP technikák alkalmazhatók nem objektum-orientált nyelvekre és fordítva, az objektum-orientált nyelv használata egyáltalán nem jelenti azt, hogy a kód automatikusan objektum-orientálttá válik.

Egyes nyelvek (néha "tisztán objektumnak" nevezik - Java vagy Ruby) teljes mértékben az objektumeszközök köré épülnek - bennük minden adat objektum, bármely kód valamilyen osztály módszere, és lehetetlen olyan programot írni, amely nem használ objektumokat. Más nyelvek ("hibrid") tartalmaznak egy OOP alrendszert egy natív eljárási nyelven. Képesek programozni anélkül, hogy objektumeszközöket használnának. Klasszikus példák a C++ és a Delphi (Object Pascal).

A tankönyv két részből áll: elméleti és gyakorlati részből. A tankönyv elméleti része felvázolja a modern informatika, mint komplex tudományos és műszaki tudományág alapjait, ezen belül az információ szerkezetének, általános tulajdonságainak, ill. információs folyamatok, Általános elvek Bemutatjuk a számítástechnikai eszközök felépítését, az információs és számítógépes hálózatok szervezésének és működésének kérdéseit, a számítógépes biztonságot, az algoritmizálás és programozás kulcsfogalmait, az adatbázisokat és a DBMS-t. A kapott elméleti ismeretek ellenőrzésére önellenőrző kérdéseket és teszteket kínálnak. A gyakorlati rész a szövegszerkesztővel végzett munka fő műveleteinek algoritmusait tartalmazza Microsoft Word, táblázatszerkesztő Microsoft Excel, Microsoft Power Point prezentációs szoftver, archiváló szoftver, és víruskereső programok. Az elvégzett gyakorlati kurzus megszilárdításaként az egyes szakaszok végén önálló munkavégzés javasolt.

Könyv:

Az oldal szakaszai:

8.2. Programozási nyelvek

A programozás típusai

Előrehalad számítógépes technológia meghatározta a rögzítési algoritmusok - programozási nyelvek - új változatos jelrendszereinek megjelenési folyamatát. Egy ilyen nyelv megjelenésének jelentése számítási képletek felszerelt halmaza további információ, amely ezt a halmazt algoritmussá alakítja.

A programozási nyelvek mesterségesen létrehozott nyelvek. A természetesektől korlátozott számú "szóban" és a parancsok (operátorok) írásának nagyon szigorú szabályaiban különböznek. Az ilyen követelmények összessége alkotja a programozási nyelv szintaxisát, az egyes parancsok és más nyelvi konstrukciók jelentése pedig szemantikáját.

A programozási nyelvek a személy és a számítógép közötti kommunikáció formális nyelvei, amelyek egy olyan utasításkészlet leírására szolgálnak, amelyek végrehajtása biztosítja a szükséges feladat helyes megoldását. Fő szerepük az információfeldolgozási tevékenységek tervezése. Bármely programozási nyelv egy fogalomrendszeren alapul, és már a segítségével az ember kifejezheti gondolatait.

Nagyon szoros a kapcsolat a nyelv, amelyen gondolkodunk/programozunk, és a képzeletünkben elképzelhető problémák és megoldások között. Emiatt a nyelv jellemzőinek a programozói hibák elkerülésére való korlátozása a legjobb esetben is veszélyes. A természetes nyelvekhez hasonlóan óriási előnyökkel jár a legalább kétnyelvűség. A nyelv egy sor fogalmi eszközt biztosít a programozó számára, ha azok nem felelnek meg a feladatnak, akkor egyszerűen figyelmen kívül hagyják. Például a pointer koncepció súlyos korlátai arra kényszerítik a programozót, hogy vektorokat és integer aritmetikát alkalmazzon struktúrák, mutatók és hasonlók megvalósításához.A jó tervezést és a hibák hiányát nem lehet pusztán nyelvi eszközökkel garantálni.

Meglepőnek tűnhet, de egy adott számítógép képes futtatni a saját gépi nyelvén írt programokat. Szinte annyi különböző gépi nyelv létezik, mint számítógép, de mindegyik ugyanannak az ötletnek a változata - egyszerű műveletek villámgyorsan előállított bináris számokon.

Gépfüggő programozási nyelvek

A gépfüggő nyelvek olyan nyelvek, amelyek operátorkészletei és vizuális eszközei jelentősen függenek a számítógép jellemzőitől (belső nyelv, memóriastruktúra stb.). Ezeket a nyelveket alacsony szintű programozási nyelveknek nevezzük. Egy adott típusú processzorra összpontosítanak, és figyelembe veszik annak jellemzőit. Egy ilyen nyelv operátorai közel állnak a gépi kódhoz, és konkrét processzorutasításokra koncentrálnak, vagyis ez a nyelv gépfüggő. Az alacsony szintű nyelv az assembly nyelv. Segítségével nagyon hatékony és kompakt programok jönnek létre, mivel a fejlesztő hozzáfér a processzor összes képességéhez. Hasonló nyelveket használnak kis betűk írásához rendszeralkalmazások, eszközillesztőprogramok, könyvtárak. Azokban az esetekben, amikor a RAM és a ROM mennyisége kicsi (több kilobájt körüli), nincs alternatívája az assemblernek. Ezek a programozási nyelvek teszik lehetővé a legrövidebb és leggyorsabb programkód beszerzését.

Gépfüggetlen programozási nyelvek

A gépfüggetlen nyelvek a problémák és a feldolgozandó információk megoldására szolgáló algoritmusok leírásának eszközei. Kényelmesek a felhasználók széles köre számára, és nem igénylik, hogy ismerjék a számítógép és a számítógépes rendszer működésének szervezeti jellemzőit.

Az ilyen nyelveket magas szintű programozási nyelveknek nevezik. Az ilyen nyelveken írt programok a nyelvi mérlegelés szabályai szerint felépített utasítássorozatok (feladatok, szegmensek, blokkok stb.). A nyelvi utasítások leírják azokat a műveleteket, amelyeket a rendszernek végre kell hajtania, miután a programot lefordították gépi nyelvre.

A gépi programokban gyakran használt parancssorokat (eljárásokat, szubrutinokat) magas szintű nyelveken külön operátorok képviselik. A programozó lehetőséget kapott arra, hogy ne gépi utasítások szintjén írja le részletesen a számítási folyamatot, hanem az algoritmus főbb jellemzőire összpontosítson.

A magas szintű programozási nyelvek sokkal közelebb állnak és érthetőbbek az emberek számára. Nem veszik figyelembe az adott számítógép-architektúrák jellemzőit, vagyis ezek a nyelvek gépfüggetlenek. Ez lehetővé teszi egy ilyen nyelven megírt program különböző számítógépeken történő használatát.

Lehetőség van közvetlenül gépi nyelven programokat írni, bár ez nehéz. A számítógépesítés hajnalán (az 1950-es évek elején) a gépi nyelv volt az egyetlen nyelv, addig az ember nem talált fel többet. Hogy megmentsék a programozókat a durva gépi programozási nyelvtől, magas szintű nyelveket (azaz nem gépi nyelveket) hoztak létre, amelyek egyfajta híd lettek az ember és a számítógép gépi nyelve között. A magas szintű nyelvek fordítóprogramokon keresztül működnek, amelyek beírják a "forráskódot" (angol szavak és matematikai kifejezések hibridje, amelyet a gép beolvas), és végül arra készteti a számítógépet, hogy végrehajtsa a megfelelő parancsokat, amelyeket gépi nyelven adnak meg.

A magas szintű programozási nyelvek közé tartoznak a következők: Fortran, Cobol, Algol, Pascal, Basic, C, C++, Java, HTML, Perl és mások.

A programozási nyelv segítségével nem kész program jön létre, hanem csak annak egy korábban kidolgozott algoritmust leíró szövege. Ahhoz, hogy működő programot kapjon, vagy automatikusan le kell fordítania ezt a szöveget gépi kódra, majd külön kell használnia forráskód, vagy azonnal hajtsa végre a programszövegben megadott nyelvi parancsokat. Ehhez fordítóprogramokat használnak.

A fordítóknak két fő típusa van (8.4. ábra): a tolmácsok, amelyek egy lépésben szkennelik és ellenőrzik a forráskódot, és a fordítók, amelyek a forráskód beolvasásával gépi nyelvű programszöveget állítanak elő, amelyet azután külön hajtanak végre.


8.4. ábra. A fordítók típusai

Fordítók használatakor a program teljes forráskódja gépi kódokká alakul, és ezek a kódok kerülnek a mikroprocesszor memóriájába. Tolmács használatakor a program forrásszövege a mikroprocesszor memóriájába kerül, és a fordítás a következő operátor beolvasásakor történik. Természetesen a tolmácsok teljesítménye jóval alacsonyabb a fordítóprogramokhoz képest, mivel egy operátor ciklusban történő használatakor sokszor lefordítják. Magas szintű nyelven történő programozáskor azonban a tárolandó kód mennyisége belső memória, lényegesen kisebb lehet, mint a végrehajtható kód. A tolmácsok használatának másik előnye a programok egyszerű hordozhatósága egyik processzorról a másikra.

Az interpreter implementáció egyik gyakran emlegetett előnye, hogy lehetővé teszi az "azonnali módot". Az azonnali mód lehetővé teszi, hogy feladatot kérjen a számítógéptől, és az ENTER billentyű lenyomása után azonnal visszaküldi a választ. Ezenkívül a tolmácsok speciális attribútumokkal rendelkeznek, amelyek megkönnyítik a hibakeresést. Megszakíthatja például egy értelmező program feldolgozását, megjelenítheti bizonyos változók tartalmát, átlapozhatja a programot, majd folytathatja a végrehajtást. A tolmácsnyelveknek azonban vannak hátrányai. Szükséges például, hogy az értelmező egy példánya mindig a memóriában legyen, miközben az interpretátor számos funkciója, és így jellemzői nem feltétlenül szükségesek egy adott program végrehajtásához. A programutasítások végrehajtásakor az értelmezőnek először minden utasítást át kell vizsgálnia, hogy elolvassa a tartalmát (mit kér tőlem ez a személy?), majd végre kell hajtania a kért műveletet. A ciklusokban lévő utasításokat túl gyakran vizsgálja a rendszer.

A fordítóprogram a szöveget gépi nyelvre fordítja, amely beolvassa a forrásszöveget. Kiértékeli a nyelv szintaktikai felépítése szerint, és lefordítja gépi nyelvre. Más szóval, a fordító nem hajtja végre a programokat, hanem összeállítja azokat. A tolmácsokat nem lehet elválasztani az általuk futtatott programoktól, a fordítók elvégzik a dolgukat és elhagyják a helyszínt. Amikor olyan fordítónyelvvel dolgozik, mint például a Turbo Basic, akkor a programjait életük két fő szakaszában fogja elképzelni: a fordítási időt és a futási időt. A legtöbb program négyszer-tízszer gyorsabban fut, mint a tolmács megfelelői. Ha a javításán dolgozik, 100-szoros teljesítményjavulást érhet el. Az érem másik oldala, hogy azok a programok, amelyek idejük nagy részét a lemezen lévő fájlokkal való babrálással vagy a bemenetre várva töltik, nem képesek lenyűgöző sebességnövekedést felmutatni.

A programkészítés folyamatát programozásnak nevezzük.

Többféle programozás létezik.

Algoritmikus vagy moduláris

Az algoritmikus programozás alapötlete az, hogy egy programot modulok sorozatára bont, amelyek mindegyike egy vagy több műveletet hajt végre. Az egyetlen követelmény a modullal szemben, hogy végrehajtása mindig az első paranccsal kezdődjön, és mindig a legutolsóval fejeződjön be (vagyis, hogy ne lehessen kívülről hozzáférni a modulparancsokhoz, és a modulból a vezérlést átvinni más parancsokra, az utolsó parancsot megkerülve).

Az algoritmus a kiválasztott programozási nyelven az adatok leírására, az értékek kiszámítására és a program végrehajtási sorrendjének vezérlésére szolgáló parancsokkal íródik.

A programszöveg hozzárendelési utasítások, hurok és feltételes utasítások lineáris sorozata. Ily módon nem túl bonyolult problémákat lehet megoldani és több száz sornyi kódot tartalmazó programokat írni. Ezt követően a forrásszöveg érthetősége meredeken csökken, amiatt, hogy az algoritmus általános szerkezete elveszik a túl részletes, elemi műveleteket végrehajtó konkrét nyelvi operátorok mögött. Számos egymásba ágyazott feltételes és ciklusutasítás jelenik meg, a logika teljesen zavaróvá válik, egy-egy hibás állítás korrigálásakor több új hiba is bekerül ennek az utasításnak a működési sajátosságaihoz, amelyek eredményeit a program különböző helyein gyakran figyelembe veszik.

Strukturált programozás

Közepes méretű alkalmazások létrehozásakor (több ezer sor forráskód) strukturált programozást használ, aminek az az ötlete, hogy a program felépítése tükrözze a megoldandó probléma felépítését, hogy a megoldási algoritmus jól látható legyen a forrásszövegből. Ehhez olyan eszközökkel kell rendelkeznie, amelyek segítségével nem csak három segítségével hozhat létre programot egyszerű operátorok, hanem olyan eszközök segítségével is, amelyek pontosabban tükrözik az algoritmus sajátos felépítését. Ebből a célból bevezették a programozásba az alprogram fogalmát - olyan utasításkészletet, amely végrehajtja a kívánt műveletet, és nem függ a forráskód más részeitől. A program sok kis szubrutinra oszlik (legfeljebb 50 utasítást vesz igénybe - ez kritikus küszöb az alprogram céljának gyors megértéséhez), amelyek mindegyike végrehajtja az eredeti feladat által biztosított műveletek valamelyikét. Ezen szubrutinok kombinálásával már nem egyszerű operátorokból, hanem komplett kódblokkokból lehet kialakítani a végső algoritmust, amelyeknek meghatározott szemantikai terhelése van, és az ilyen blokkokra név szerint lehet hivatkozni. Kiderült, hogy az alprogramok új operátorok vagy a programozó által meghatározott nyelvi műveletek.

Az alprogramok használatának képessége a programozási nyelvet eljárási nyelvek közé sorolja.

Az alprogramok lehetővé teszik az alkalmazás tervezését és fejlesztését felülről lefelé, ezt a megközelítést felülről lefelé történő tervezésnek nevezik. Először több szubrutin kerül kiválasztásra, amelyek a legglobálisabb feladatokat oldják meg (például adatinicializálás, fő részés befejezés), akkor ezek a modulok mindegyike alacsonyabb szinten kerül részletezésre, felváltva kis számú egyéb szubrutinra bontva, és így tovább, amíg az egész feladat be nem fejeződik.

Ez a megközelítés kényelmes, mert lehetővé teszi a személy számára, hogy folyamatosan a tárgy szintjén gondolkodjon anélkül, hogy meghatározott operátorokhoz és változókhoz ereszkedne le. Ezenkívül egyesek számára lehetővé válik, hogy ne azonnal implementálják az alprogramokat, hanem átmenetileg elhalasszák, amíg más részek elkészülnek. Például, ha szükség van egy összetett matematikai függvény kiszámítására, akkor egy ilyen számításhoz külön szubrutin kerül kiosztásra, de azt ideiglenesen egy operátor valósítja meg, amely egyszerűen hozzárendel egy előre kiválasztott értéket. Ha az egész alkalmazást megírtuk és hibakeresést végeztünk, akkor megkezdhetjük ennek a funkciónak a megvalósítását.

Fontos, hogy a kis szubrutinokat sokkal könnyebben lehet hibakeresni, ami jelentősen növeli az egész program általános megbízhatóságát.

Nagyon fontos jellemzője alprogramjainak lehetősége van újrafelhasználás. Az integrált programozási rendszerek nagy standard rutinkönyvtárakat tartalmaznak, amelyek lehetővé teszik, hogy nagymértékben növelje a termelékenységet azáltal, hogy valaki más munkáját felhasználja az általánosan használt rutinok létrehozására.

Kétféle szubrutin létezik: eljárások és függvények. Abban különböznek egymástól, hogy az eljárás egyszerűen végrehajt egy utasításcsoportot, és a függvény emellett kiszámít egy értéket, és visszaadja fő program(értéket ad vissza). Ez az érték egy bizonyos típusú (a függvényt ilyen és ilyen típusúnak mondják).

Az alprogramok három fontos feladatot látnak el:

Szüntesse meg a hasonló töredékek ismételt megismétlését a program szövegében;

Javítani kell a program szerkezetét, megkönnyítve annak megértését;

Növelje az ellenállást a programozási hibákkal és a programmódosítások előre nem látható következményeivel szemben.

Objektumorientált programozás

A 80-as évek közepén új irány jelent meg a programozásban, amely az objektum fogalmán alapult. Addig a nagy rendszerek létrehozásának lehetőségét a fő korlátok az adatprogramok és a feldolgozási módszerek széthúzása szabta.

A környező világ valódi tárgyai három alapvető tulajdonsággal rendelkeznek: tulajdonságokkal rendelkeznek, képesek különböző módszerek megváltoztatni ezeket a tulajdonságokat, és reagálni azokra az eseményekre, amelyek mind a környező világban, mind magában az objektumon belül előfordulnak. Ebben a formában a programozási nyelvekben az objektum fogalmát tulajdonságok (az objektumra jellemző adatszerkezetek), feldolgozási módszerek (a tulajdonságok megváltoztatására szolgáló alprogramok) és olyan események halmazaként valósítják meg, amelyekre ez az objektum reagálhat, és amelyek általában az objektum tulajdonságainak megváltozásához vezetnek.

Az objektumok programokban való létrehozásának lehetőségének megjelenése minőségi hatással volt a programozók termelékenységére. A 10 fős programozói csoport által létrehozható alkalmazások maximális mennyisége néhány év alatt több millió kódsorra nőtt, ugyanakkor sikerült elérni magas megbízhatóság programokat, és ami fontos, a korábban létrehozott objektumokat más feladatokban is felhasználja.

Az objektumok szerkezete azonos lehet, és csak a tulajdonságértékekben térhetnek el egymástól. Ilyen esetekben a program egyetlen objektumstruktúra alapján új típust hoz létre. Osztálynak nevezzük, és minden konkrét objektumot, amely ennek az osztálynak a szerkezete, az osztály példányának nevezzük.

Az objektum-orientált programozási nyelvet három fő tulajdonság jellemzi:

1. Encapsulation - adatok kombinálása metódusokkal egy osztályban;

Nem tudom, hogy most hogy állnak a dolgok az oktatásban, de 10-15 évvel ezelőtt sem az iskolában, sem az egyetemen senki nem magyarázta komolyan, hogy a programozásnak megvannak a maga típusai, amelyek mindegyikéhez sajátos gondolkodásmód szükséges. Nem mintha ez bárkinek is bántotta volna a sorsát, de a szoftvertudományok tanulmányozása sokkal gyorsabban haladhatna, ha az alapozás szakaszában különféle nyelveket és megközelítéseket mutatnánk be, és nem zombiként tanulnánk meg a C ++-t a konzolos megnyilvánulásaiban.

Sokan, amikor funkcionális kód írásának szükségességével szembesülnek, gyakran sajnálják, hogy a procedurális gondolkodásmód olyan mélyen beágyazódott az agyba, hogy nem könnyű belőle újjáépíteni. Ezért jobb, ha a programozókhoz vezető utat nem a nyelv, hanem a programozás típusának megválasztásával kezdjük.

A programozás típusai

Rögtön egyezzünk meg: hatféle lesz. Ez egy meglehetősen részletes felosztás. Általában 3-4-et emelnek ki, de mivel azzal a feladattal állunk szemben, hogy kezdőknek válasszunk utat, ez teljesen indokolt.

Az eljárási programozás szintén elengedhetetlen.

Feladatként határozza meg a kód létrehozását a használt gép számára érthető nyelven. A leghíresebb eset a Turing gép, a jól ismert programozási nyelvekből - C / C ++, Ada, Pascal, Go. A feladatokat itt szisztematikusan oldjuk meg: először deklarálunk egy objektumot, majd definiáljuk, majd egy műveletet hajtunk végre vele:

var
S: Húr;

S:= 'Szia!';

Deklaratív programozás.

A procedurális esetben a nyelvi optimalizálási vektort a gépi szintről a felhasználói nyelvre irányítják az OOP alapelvei, osztályai, metódusai stb. segítségével. Itt maga a feladat áll az élen, a végrehajtás módja pedig másodlagos. Kiváló példa erre a HTML jelölőnyelv. Ha el szeretne helyezni egy gombot, akkor formálisan nem kell objektumot létrehoznia és attribútumokat hozzárendelnie:

Funkcionális programozás.

A matematika tantárgyból ismeretes, bármely függvény eredménye táblázatos adatok formájában is bemutatható, a kérdés csak a mintavételi gyakoriság és az értéktartomány. Azaz, függetlenül attól, hogy hányszor hajtják végre a függvényt, bármilyen helye is legyen a feladatban, ugyanazon értékek esetén az eredmény ugyanaz marad. Az imperatív programozásban ez messze nem mindig történik meg, mert a változók értéke a program során változhat, ami az eredményt konkrét feltételektől teszi függővé.

A funkcionális programozásnak nincs meg ez a hátránya: itt függvényekkel – kezdő, növekmény és eredmény – operálunk, de konkrét értékekkel nem. Népszerű képviselői Lisp, Clojure, Haskell. A legtöbb alkalmazás esetében a funkcionális programozás összetettnek és redundánsnak tekinthető. Innen ered az alacsony kereslet a szakemberek iránt, ugyanakkor a magas fizetések és az igazán érdekes munka.

Logikai programozás.

Ahogy a neve is sugallja, egyszerű matematikai logikával működik. Kiemelkedő képviselői a Planner és a Prolog. Egy meglehetősen korlátozott műveletsor valóban hasznos lehet a legegyszerűbb mesterséges intelligencia létrehozásához vagy az agy felmelegítéséhez, de való élet a logikai programozást önmagában ritkán használják.

Dinamikus programozás.

Az az eset, amikor egy összetett összetett feladat megoldásához több egyszerűbbre kell bontani, minimalizálva a végrehajtási ciklusok számát. Ideális esetben minden egyszerű feladatot egyszer kell végrehajtani, de a gyakorlatban ez ritkán fordul elő. A dinamikus programozás inkább minden nyelvre alkalmazható fogalom, így ennek az iránynak nincsenek képviselői. De ugyanígy különleges gondolkodásmódot fog igényelni tőled.

Grafikus programozás, ez is vizuális.

Arra kéri a fejlesztőt, hogy dolgozzon vele grafikus képek, nem szöveg. Ezt különböző módon lehet kifejezni - vannak speciális nyelvek, mint például a Scratch vagy a BluePrint, vannak diagram- vagy diagramnyelvek (LD vagy FBD), egyszerűen vannak programozási részek, amelyek az űrlapokkal és grafikákkal való interakcióhoz kapcsolódnak. Ez utóbbi esetben bármilyen nyelvről van szó, a vizualizációt fejlesztőeszközök (Borland Delphi/C++, vizuális Stúdió, Adobe Dreamweaver stb.). Az ilyen grafikus programozás tiszta formájában rendkívül ritka, a kód nyelvének és szerkezetének megértése nélkül lehetetlen komolyat alkotni.

Pihenés

A programozás sok típusra oszlik, és a kezdők egy része nem is ismeri a következőket: szinkron / aszinkron / eseményvezérelt, soros / párhuzamos, különböző a megoldandó feladatok és az AI és a statisztika bevonása tekintetében.

A kezdő programozási paradigma kiválasztása nem azt jelenti, hogy csak egy utat választunk. Éppen ellenkezőleg, anélkül, hogy konkrét nyelvekhez, szakmákhoz és szoftverkörnyezetek, kezdve a "saját" gondolkodásmóddal, kezdetben beállítja magát helyes megértés lényeg. A sikeres, boldog és gazdag informatikus nem az, aki bekerült a megfelelő áramlatba, hanem az, akinek bármely stream lehetőséget jelent a benne rejlő lehetőségek kiaknázására.

1. Bemutatkozás

A számítógépek bevezetése az emberi tevékenység minden területén megköveteli a különféle profilú szakemberektől, hogy elsajátítsák a számítástechnika használatának készségeit. Emelkedik azoknak az egyetemistáknak a képzési színvonala, akik már az első kurzusoktól kezdve megismerkednek a számítógéphasználattal és a legegyszerűbb numerikus módszerekkel, nem beszélve arról, hogy az egyetemek túlnyomó többségében a számítástechnika használata a kurzusban és az érettségiben is általánossá válik.

A számítástechnikát ma már nemcsak a mérnöki számításokban és a közgazdaságtanban használják, hanem olyan hagyományosan nem matematikai szakterületeken is, mint az orvostudomány, a nyelvészet és a pszichológia. Ezzel kapcsolatban megállapítható, hogy a számítógépek használata széles körben elterjedt. A szakemberek nagy kategóriája jelent meg - számítógép-felhasználók, akiknek ismeretekre van szükségük a számítógépek iparágukban történő használatáról - a meglévő szoftverekkel való munkavégzés készségei, valamint saját szoftverek létrehozása egy adott probléma megoldására. És itt a programozási nyelvek leírása jön a felhasználó segítségére.

2. Mi a programozási nyelv

Programozási nyelv- formális jelrendszer, amely az algoritmusokat az előadó számára kényelmes formában írja le (például számítógép). A programozási nyelv lexikai, szintaktikai és szemantikai szabályokat határoz meg, amelyeket a számítógépes programok összeállításához használnak. Lehetővé teszi a programozó számára, hogy pontosan meghatározza, milyen eseményekre fog reagálni a számítógép, hogyan tárolják és továbbítják az adatokat, és pontosan milyen műveleteket kell végrehajtani ezeken a különböző körülmények között.

Az első programozható gépek megalkotása óta az emberiség több mint két és félezer programozási nyelvvel állt elő. Számuk minden évben újakkal bővül. Egyes nyelveket csak kevés saját fejlesztő használ, másokat emberek milliói ismernek. A professzionális programozók néha több mint egy tucat különböző programozási nyelvet használnak munkájuk során.

A nyelvek alkotói másként értelmezik a fogalmat. programozási nyelv. A legtöbb fejlesztő által felismert gyakori helyek a következők:

· Funkció: a programozási nyelv írásra való számítógépes programok, amelyeket arra használnak, hogy utasításokat továbbítsanak a számítógépnek egy adott számítási folyamat végrehajtásához és az egyes eszközök vezérlésének megszervezéséhez.

· Feladat: A programozási nyelv abban különbözik a természetes nyelvektől, hogy parancsok és adatok átvitelére szolgál egy személyről a számítógépre, míg a természetes nyelveket csak az emberek közötti kommunikációra használják. Elvileg általánosítható a "programozási nyelvek" meghatározása - ez a parancsok, parancsok továbbításának módja, egyértelmű cselekvési útmutató; miközben az emberi nyelvek információcserét is szolgálnak.

· Végrehajtás: A programozási nyelvek speciális konstrukciókat használhatnak az adatstruktúrák meghatározására és manipulálására, valamint a számítási folyamat vezérlésére.

3. A probléma megoldásának szakaszai számítógépen.

A VT leghatékonyabb alkalmazását a tudományos kutatás és a mérnöki számítások munkaigényes számításainak elvégzésében találták. Egy probléma számítógépen történő megoldása során a főszerep továbbra is az emberé. A gép csak a kidolgozott program szerint látja el feladatait. Az ember és a gép szerepe könnyen érthető, ha a problémamegoldási folyamatot az alábbiakban felsorolt ​​lépésekre bontjuk.

A probléma megfogalmazása. Ez a szakasz a probléma értelmes (fizikai) megfogalmazásából és a végső megoldások meghatározásából áll.

Matematikai modell felépítése. A modellnek helyesen (megfelelően) le kell írnia a fizikai folyamat alapvető törvényeit. A matematikai modell megépítéséhez vagy a meglévőkből történő kiválasztásához a probléma mélyreható megértése és a matematika releváns részeinek ismerete szükséges.

Világkupa fejlesztés. Mivel a számítógép csak a legegyszerűbb műveleteket tudja végrehajtani, még matematikai megfogalmazásban sem "érti" a problémafelvetést. Megoldásához olyan numerikus módszert kell találni, amely lehetővé teszi, hogy a feladatot valamilyen számítási algoritmusra redukáljuk. Minden konkrét esetben ki kell választani a megfelelő megoldást a már kidolgozott standard megoldások közül.

Algoritmusfejlesztés. A probléma megoldásának folyamatát (számítási folyamat) elemi aritmetikai és logikai műveletek sorozataként írják le, amely a végeredményhez vezet, és ezt a probléma megoldási algoritmusának nevezik.

Programozás. A feladat megoldására szolgáló algoritmus gépileg érthető nyelven pontosan a formában van megírva bizonyos sorrend műveletek – programok. A folyamatot általában néhány középfokú nyelv, fordítását pedig maga a gép és annak rendszere végzi el.

Program hibakeresés. Az összeállított program különféle hibákat, pontatlanságokat és kihagyásokat tartalmaz. A hibakeresés magában foglalja a programvezérlést, a hibák diagnosztizálását (tartalmának keresését és meghatározását), valamint azok kiküszöbölését. A programot ellenőrzési (teszt) feladatok megoldásán tesztelik, hogy meggyőződjünk az eredmények megbízhatóságáról.

Számítások elvégzése. Ebben a szakaszban elkészítik a számítások kezdeti adatait, és a számítást a hibakereső program szerint hajtják végre. ugyanakkor az eredmények feldolgozása során a kézi munka csökkentése érdekében az eredmények kényelmes kiadási formái szöveges, ill. grafikus információk, ember által olvasható formában.

Az eredmények elemzése. A számítási eredményeket gondosan elemzik, tudományos és műszaki dokumentációt készítenek.

4. Mire valók a programozási nyelvek?

A számítógépes működés folyamata egy program végrehajtásából áll, azaz egy jól meghatározott utasítások halmazából, jól meghatározott sorrendben. A parancs nullákból és egyesekből álló gépi formája jelzi, hogy a központi processzornak milyen műveletet kell végrehajtania. Ez azt jelenti, hogy annak érdekében, hogy a számítógép megmondja a végrehajtandó műveletek sorrendjét, be kell állítania a megfelelő parancsokhoz tartozó bináris kódok sorrendjét. A gépi kódú programok több ezer utasításból állnak. Az ilyen programok írása nehéz és fárasztó feladat. A programozónak emlékeznie kell az egyes programok bináris kódjainak nullák és egyesek kombinációjára, valamint a végrehajtás során használt adatcímek bináris kódjára. Sokkal egyszerűbb valamilyen, a természetes emberi nyelvhez közelebb álló nyelven programot írni, és a számítógépre bízni ennek a programnak a gépi kódokká való fordítását. Így születtek olyan nyelvek, amelyeket kifejezetten programírásra terveztek, programozási nyelvek.

Sok különböző programozási nyelv létezik. Valójában bármelyiket használhatja a legtöbb probléma megoldására. A tapasztalt programozók tudják, melyik nyelvet célszerűbb használni az egyes problémák megoldására, mivel minden nyelvnek megvannak a saját képességei, orientációja bizonyos típusú feladatokhoz, saját módja a problémamegoldás során használt fogalmak és objektumok leírásának.

A programozási nyelvek teljes készlete két csoportra osztható: alacsony szintű nyelvekÉs magas szintű nyelvek.

Az alacsony szintű nyelvek közé tartoznak az assembly nyelvek (az angol toassemble szóból - összeszerelni, összeszerelni). Az összeállítás nyelve szimbólumokat használ a könnyen érthető és könnyen megjegyezhető utasításokhoz. A bináris parancskódok sorozata helyett azok szimbolikus jelöléseit írják, a parancs végrehajtása során használt adatok bináris címei helyett pedig ezen adatoknak a programozó által választott szimbolikus neveit írják. Az összeállítási nyelvet néha mnemokódnak vagy autokódnak is nevezik.

A legtöbb programozó magas szintű nyelveket használ a programok írásához. A hétköznapi emberi nyelvekhez hasonlóan egy ilyen nyelvnek is megvan a maga ábécéje - a nyelvben használt szimbólumkészlet. Ezek a szimbólumok alkotják a nyelv úgynevezett kulcsszavait. A kulcsszavak mindegyike ellátja a funkcióját, ahogyan az általunk megszokott nyelvben, nálunk is vannak az ábécé betűiből álló szavak. adott nyelv, képes ellátni a különböző beszédrészek funkcióit. Kulcsszavak mondatokká kapcsolódnak egymáshoz a nyelv bizonyos szintaktikai szabályai szerint. Minden mondat meghatároz néhány műveletsort, amelyet a számítógépnek végre kell hajtania.

A magas szintű nyelv közvetítőként működik egy személy és a számítógép között, lehetővé téve a személy számára, hogy ismerősebb módon kommunikáljon a számítógéppel. Gyakran ez a nyelv segít a választásban helyes módszer problémamegoldás.

Mielőtt magas szintű nyelven írna programot, a programozónak írnia kell algoritmus problémamegoldás, vagyis lépésről lépésre terv a feladat elvégzéséhez szükséges lépéseket. Ezért gyakran hívják azokat a nyelveket, amelyekhez egy algoritmus előzetes összeállítása szükséges algoritmikus nyelvek.

Procedurális (imperatív) programozás a hagyományos számítógépek architektúráját tükrözi. Egy procedurális programozási nyelv programja operátorok (utasítások) sorozatából áll, amelyek meghatározzák a probléma megoldásának eljárását. A fő a hozzárendelés operátor, amely a memóriaterületek tartalmának megváltoztatására szolgál. A memória, mint értéktár, amelynek tartalma programutasításokkal frissíthető, alapvető fontosságú az imperatív programozásban. Az eljárási programozási nyelv lehetővé teszi a programozó számára, hogy meghatározza a probléma megoldásának minden lépését. Az ilyen programozási nyelvek sajátossága, hogy a feladatokat lépésekre osztják, és lépésről lépésre oldják meg. Az imperatív programozás kis részfeladatok megvalósítására a legalkalmasabb, ahol a végrehajtás sebessége nagyon fontos a modern számítógépeken.

Az eljárási programozási nyelvek közé tartozik: Ada, Basic (változatok a Quick Basic-től a Visual Basic), C, COBOL, Fortran, Modula- 2, Pascal, PL/1, Rapier, REXX.

Strukturált programozás- fejlesztési módszertan szoftver amely a program formában való ábrázolásán alapul hierarchikus struktúra háromféle alapstruktúrából felépülő blokkok: szekvenciális végrehajtás, elágazás és hurok.

Objektumorientált programozás egy programozási módszertan, amely egy program objektumok halmazaként való ábrázolásán alapul, amelyek mindegyike egy bizonyos osztály (speciális adattípus) megvalósítása, és az osztályok az öröklődés elvein alapuló hierarchiát alkotnak.

Az objektumok alatt az adatok és az azokat egyetlen egésszé feldolgozó eljárások kombinációját értjük. Az objektumok üzeneteket válthatnak egymással. Amikor egy objektum üzenetet kap, a megfelelő kezelő, más néven módszer. Egy objektumnak van egy asszociatív tárolója, amely lehetővé teszi a metódus lekérését az üzenetből a feldolgozáshoz. Ezenkívül az objektumnak van egy ősobjektuma. Ha nem található az üzenet kezelésére szolgáló módszer, akkor az üzenetet továbbítja az ősobjektumnak. Ezt a szerkezetet összességében (kezelők + ősök táblázata) hatékonysági okokból külön objektummá különítjük el, ún. osztály ezt a tárgyat. Magának az objektumnak lesz egy hivatkozása az osztályát képviselő objektumra. Az objektumok kizárólag üzenetek küldésével kommunikálnak egymással.

Fontos kiemelni az objektumok következő három fő tulajdonságát.

Tokozás (adatvédelem)- olyan mechanizmus, amely egyesíti az adatokat és az ezeket manipuláló módszereket, és mindkettőt megvédi a külső interferencia ellen.


Öröklés Az a folyamat, amelynek során az egyik objektum örökölheti egy másik objektum tulajdonságait, és hozzáadhatja azokat az egyedi jellemzőkkel. Az osztályokon a "leszármazott-ős" relációt öröklődésnek nevezzük.

Polimorfizmus egy olyan tulajdonság, amely lehetővé teszi egy objektum lecserélését egy másik, hasonló osztályszerkezetű objektumra. Ezért, ha az objektum interakció bármely forgatókönyvében egy tetszőleges objektumot lecserélünk egy másikra, amely képes ugyanazokat az üzeneteket feldolgozni, akkor a forgatókönyv szintén megvalósul.

Deklaratív programozás. A deklaratív programozásban a hangsúly azon van, hogy mit kell csinálni, nem pedig a módján (a kötelező nyelveken). Itt a probléma pontos megfogalmazása a lényeg, és a megoldáshoz szükséges algoritmus kiválasztása és alkalmazása a végrehajtó rendszer, de nem a programozó feladata. Például a weboldalak bekapcsolása HTML nyelv deklaratívak, mert azt írják le, hogy mit kell tartalmaznia az oldalnak, nem pedig azt, hogy az oldal hogyan jelenjen meg a képernyőn. Ez a megközelítés eltér a kötelező programozási nyelvektől, amelyek megkövetelik a programozótól, hogy adjon meg egy végrehajtandó algoritmust.

A deklaratív programozásnak két ága van: a funkcionális, amely egy olyan függvény matematikai koncepcióján alapul, amely nem változtatja meg környezetét, ellentétben a procedurális nyelvek mellékhatásokat lehetővé tévő függvényeivel, és logikai, amelyben a programokat matematikai logika képleteként fejezik ki, és a számítógép megpróbál logikai konzekvenciákat levezetni belőlük a probléma megoldásához.

Logikai programozás matematikai logika alapján. De a leghíresebb logikai programozási nyelv a Prolog. A PROLOGUE program két összetevőből áll: tényekből és szabályokból. A tények azok az adatok, amelyeket a program kezel, és a tények gyűjteménye alkotja a PROLOG adatbázist, amely lényegében egy relációs adatbázis. Az adatokon végrehajtott fő művelet az egyeztetési művelet, más néven egységesítési vagy egyeztetési művelet.

Ami a többi deklaratív nyelvet illeti, a programozó a vele való munka során leírja a helyzetet (szabályokat és tényeket), és megfogalmazza a célt (lekérdezést), lehetővé téve a PROLOG értelmező számára, hogy megoldást találjon a problémára. A PROLOG tolmács egy olyan mechanizmus, amely a PROLOG nyelv használatával oldja meg a problémákat. A PROLOGUE program tények és (esetleg) szabályok összessége. Ha a program csak tényeket tartalmaz, akkor adatbázisnak nevezzük. Ha szabályokat is tartalmaz, akkor gyakran használják a tudásbázis kifejezést.

Ellentétben a procedurális nyelveken írt programokkal, amelyek lépések sorozatát írják elő, amelyeket a számítógépnek végre kell hajtania egy probléma megoldásához, a PROLOG-ban a programozó tényeket, szabályokat, ezek közötti kapcsolatokat és egy probléma lekérdezését írja le. A PROLOG legjellemzőbb alkalmazása a szakértői rendszerekben van.

Kérdések önvizsgálathoz

1. Mi a program? Mit jelent az előadó?

2. Mi az a gépi kód?

3. Mi a fordító? Sorolja fel a fordítók típusait!

4. Hogyan működik a tolmács? Mik az érdemei?

5. Mi az előnye a fordítóprogramoknak?

6. Milyen komponenseket tartalmaz az integrált programozási rendszer?

7. Mit értünk adatstruktúra alatt, mi az adatstruktúra besorolása?

8. Mit értünk adattömbök alatt, és milyen műveleteket lehet végrehajtani velük?

9. Melyek a tömbök rendezésének algoritmusai?

10. Mi a célja az alprogramoknak?

11. Mire való a szubrutinkönyvtár?

12. Melyek a programozás típusai?

Irodalom

1. Stavrovsky A.B., Karnaukh T.A. Első lépések a programozás felé. oktatóanyag. - M.: Williams, 2006. - 400 p.

2. Okulov S. A programozás alapjai Kiadó: Binom. Tudáslaboratórium, 2008. - 383 p.

3. Kantsedal S.A. Az algoritmizálás és programozás alapjai. - M.: Fórum, 2008. - 351 p.

4. httn//www myfreesoft ru/default-windows-nroprams html – szabvány Windows programok

5. httn//khni-iin mink kharkiv edu/lihrary/datastr/hook/nrt01 html#lb11 - adatmodellek és -struktúrák

6. httn://www.intuit.ru/denartment/se/nhmsu/11/3.html#sect5 – modellek és adatstruktúrák

7. http://inf.1sentemher.ru/2007/15/00.htm - Számítástechnika tanárok enciklopédiája

8. http://www.delnhi.int.ru/articles/119/ - szubrutinok.

9. httn//inroc ru/narallel-nroPramminP/lection-5/ - kupac rendezés.