Programske
Programske paradigme so način združevanja programskih jezikov po tem, kaj počnejo. Jeziki lahko spadajo v več kot eno paradigmo.
Nekatere paradigme obravnavajo način izvajanja kode, na primer dovoljevanje stranskih učinkov ali izvajanje stvari v določenem vrstnem redu. Druge paradigme obravnavajo način združevanja kode, na primer združevanje kode v en ali dva dela (ali pa v več majhnih delov). Nekatere druge paradigme obravnavajo vrstni red in dele, zaradi katerih je program takšen, kot je.
Obstajata dve glavni skupini paradigem, imperativna in deklarativna. Jezik je lahko oboje hkrati.
Vsebina
· 1 Imperativno programiranje
· 2 Deklarativno programiranje
· 3 Druge paradigme
· 4 Pregled
· 5 Težave s paradigmami
· 6 Zgodovina
o 6.1 Strojna koda
o 6.2 Proceduralni jeziki
o 6.3 Objektno usmerjeno programiranje
o 6.4 Deklarativne paradigme
· 7 Sorodne strani
· 8 Reference
· 9 Druge spletne strani
Imperativno programiranje
V imperativnih programih programerji dajo računalniku nabor urejenih korakov, ki jih je treba opraviti, da bi nekaj naredili. Če bi nekdo želel, da računalnik nariše mačji obraz, bi lahko dal navodila, kot so "Tukaj nariši krog, tam nariši dva manjša kroga, na vrhu nariši dva trikotnika" in tako naprej. Imperativni programi imajo včasih veliko stranskih učinkov.
Obstajata dve glavni paradigmi imperativov in velikokrat ima jezik obe:
- Strukturirano - računalnik dobi navodila, ki so vedno v določenem vrstnem redu. Koraki, kot je "vrni se na korak 3" (znani kot stavki goto), niso dovoljeni.
- Proceduralni - Program omogoča programerju, da seznam ukazov poimenuje, kar te ukaze spremeni v "postopek", ki ga lahko uporabi pozneje. Tudi večina strukturiranih jezikov je proceduralnih.
- Objektno usmerjeno - ideje so računalniku razložene s predmeti, deli kode, ki imajo nabor ukazov, ki jih lahko dobijo, in nekaj informacij o njih.
Deklarativno programiranje
V deklarativnih paradigmah programer računalniku pove, kaj naj naredi, namesto da bi mu povedal, kako naj to naredi. Če bi želel, da računalnik nariše mačji obraz, bi lahko dal navodila, kot so "Nariši obraz, nariši dve očesi, dve ušesi in usta".
Najbolj znane deklarativne paradigme so:
- Funkcionalno - Večino dela opravijo funkcije brez stranskih učinkov.
- Logika - Navedena so dejstva, nato pa se postavi eno ali več "vprašanj".
- Dogodki - deli kode so nastavljeni tako, da se zaženejo, ko se zgodijo določene stvari (na primer vklop računalnika).
Druge paradigme
Nekatere paradigme lahko najdemo tako v imperativnih kot v deklarativnih jezikih. Te paradigme se običajno pojavljajo skupaj z eno od zgornjih paradigem in ne samostojno.
Pregled
Programski jeziki so razvrščeni po paradigmah, tako kot so stroji razvrščeni po tem, za kaj se uporabljajo.
Nekaj jezikov spada le v eno glavno paradigmo, na primer:
- Smalltalk (objektno usmerjen)
- sestavljanje (imperativno, vendar ne strukturirano ali objektno usmerjeno)
- Haskell (funkcionalni)
- Prolog (logika)
Večina jezikov ima več kot eno paradigmo. Nekateri izmed njih izstopajo po tem, da imajo več kot le eno paradigmo:
- Scala (objektno orientirana, funkcionalna, vzporedna)
- Visual Basic (dogodkovno voden, objektno usmerjen)
- Common Lisp (proceduralni, funkcionalni, objektno usmerjeni, meta)
- Shema (funkcionalna, proceduralna, meta)
- Perl (funkcionalni, proceduralni, meta, objektno orientirani, dogodkovni)
- Python (funkcionalni, objektno usmerjeni, proceduralni)
- Ruby (funkcionalni, objektno usmerjeni, proceduralni)
- Wolframov jezik (funkcionalni, proceduralni, na splošno deklarativni)
- Oz (logični, funkcionalni, imperativni, objektno usmerjeni)
- F# (funkcionalni, imperativni, objektno usmerjeni, meta)
Več paradigem ni vedno dobro. Manjše število paradigem je lahko koristno, če imamo jezik, ki je samo funkcionalen. Funkcija v takšnem jeziku včasih opravi manj dela (na primer pregleda le dele skupine stvari, ki jih dejansko potrebuje), kot bi ga morda morala, če bi bil jezik tudi proceduralen.
Številne programske paradigme so znane tako po stvareh, ki jih ljudem ne omogočajo, kot po tistih, ki jih omogočajo. To velja tudi za funkcionalne jezike. Kadar je funkcionalni jezik samo ali večinoma funkcionalen, običajno ne dovoljuje stranskih učinkov. Drugi primer, ko to drži, je strukturirano programiranje: od običajnih imperativnih jezikov se razlikuje po tem, da programerjem ne dovoljuje uporabe "goto stavkov" (stavkov, ki programu sporočajo, naj gre na prejšnji korak). Zaradi tega in drugih razlogov ljudje včasih menijo, da nove paradigme ne omogočajo dovolj stvari. Včasih pa je v redu, da računalnik ljudem ne dovoli stvari: ljudem lahko pomaga, da se izognejo težavam s svojo kodo, in računalniku omogoči, da ugane, da lahko kodo požene hitreje, ali celo preveri kodo za težave, preden se ta požene!
Pregled različnih programskih paradigem po Petru Van Royu
Težave s paradigmami
Nekaterim ljudem, ki proučujejo programske jezike, ni všeč, da se paradigme uporabljajo za razvrščanje programskih jezikov, na primer Harperju in Krishnamurthiju. Ti ljudje pravijo, da številnih programskih jezikov ni mogoče preprosto razvrstiti v paradigme, saj si jeziki izposojajo stvari in ideje iz številnih paradigem.
Zgodovina
Sčasoma so bile ustvarjene nove paradigme, na katere so ljudje opozarjali takrat ali ob pogledu nazaj. Ena prvih paradigem, ki je bila prepoznana kot nov način programiranja, je bilo strukturirano programiranje iz šestdesetih let prejšnjega stoletja. Zamisel o "paradigmi programiranja" je iz leta 1978, če ne prej, ko jo je med poučevanjem uporabil Robert W. Floyd. Besedo "paradigma", kot jo je mislil Robert, je prvič uporabil Thomas Kuhn v svoji knjigi The Structure of Scientific Revolutions (1962).
Strojna koda
Najnižja raven (najbližja temu, kako računalnik rad razume stvari) in najstarejša paradigma programiranja je strojna koda, imperativna paradigma. Navodila v strojni kodi so le niz številk v določenem vrstnem redu. Zborni jezik je nekoliko manj nizkonivojski (in nekoliko manj star). V zbirnem jeziku so navodila za računalnik opremljena z mnemoniki (imena, ki si jih je lažje zapomniti), pomnilniški naslovi (navodila za iskanje informacij v računalniku) pa so lahko poimenovani. Te jezike včasih imenujemo jeziki prve in druge generacije.
V šestdesetih letih prejšnjega stoletja so bili jeziki zbirke izboljšani z dodajanjem novih stvari, kot so knjižnica COPY, makri (koščki "posebne" kode, ki se pred začetkom izvajanja programa spremenijo v običajno kodo), postopki za izvajanje (sklopi navodil, ki dobijo ime in so shranjeni za pozneje) in spremenljivke (elementi, ki dobijo imena in so shranjeni za pozneje) zunaj programa. To je omogočilo, da so lahko ljudje uporabljali določeno kodo v več kot enem projektu in jim ni bilo treba skrbeti za težave, ki so specifične za strojno opremo (težave, ki se pojavljajo samo na eni vrsti računalnika), zahvaljujoč ukazom (imena za navodila), kot so READ/WRITE/GET/PUT.
Skupščina se je uporabljala in se včasih še vedno uporablja v sistemih, kjer je pomembno, da je koda hitra, veliko pa se uporablja tudi v vgrajenih sistemih, saj uporabniku omogoča natančen nadzor nad tem, kaj stroj počne.
Proceduralni jeziki
V poznih šestdesetih letih prejšnjega stoletja so ljudje začeli izumljati proceduralne jezike. Ti jeziki tretje generacije (prvih nekaj jezikov, ki jih danes imenujemo jeziki visoke ravni) so imeli besede, povezane s tem, kar so poskušali rešiti. Na primer,
- COBOL (COmmon Business Oriented Language) - uporablja besede, kot so datoteka, premikanje in kopiranje.
- FORmula TRANslation (FORTRAN) - uporablja matematične besede in simbole (oblike, ki se uporabljajo pri pisanju in tipkanju). Razvit je bil predvsem za naravoslovje in tehniko.
- ALGOrithmic Language (ALGOL) - narejen za pisanje algoritmov (nizov korakov, ki računalniku povedo, kaj naj naredi). Uporablja matematične besede in simbole, tako kot FORTRAN.
- Programski jezik ena (PL/I) - naj bi bil uporaben za vsakogar.
- Začetna univerzalna programska koda (BASIC) - narejena za pomoč začetnikom pri programiranju.
- C - programski jezik, ki je namenjen številnim opravilom. Dennis Ritchie ga je med letoma 1969 in 1973 razvijal v laboratoriju AT&T Bell Labs.
Objektno usmerjeno programiranje
Potem ko je veliko ljudi začelo uporabljati proceduralne jezike, so izumili objektno usmerjene programske jezike. V teh jezikih so podatki in njihove "metode" (načini ravnanja s podatki) združeni v en "objekt". Nekateri programerji, na primer Richard Stallman, se ne strinjajo, da so objektno usmerjeni jeziki boljši za razlago idej računalniku kot proceduralni jeziki.
Ker je objektno usmerjeno programiranje paradigma in ne jezik, so ljudje izdelali objektno usmerjene jezike za sestavljanje, kot je HLA (High Level Assembly).
Deklarativne paradigme
Istočasno so nekateri izdelovali deklarativne programske jezike. Jezik, ki je znan po tem, da je deklarativen, je SQL (jezik za dodajanje in odstranjevanje stvari iz tabel).
Sorodne strani
- Miselna naravnanost
- Sistem tipov
- Turingova popolnost
Vprašanja in odgovori
V: Kaj je programska paradigma?
O: Programska paradigma je način združevanja programskih jezikov glede na njihovo delovanje.
V: Kateri sta dve glavni skupini paradigem?
O: Dve glavni skupini paradigem sta imperativna in deklarativna.
V: Kako se razlikujeta imperativna in deklarativna paradigma?
O: Imperativne paradigme obravnavajo način izvajanja kode, na primer dovoljevanje stranskih učinkov ali izvajanje stvari v določenem vrstnem redu, medtem ko deklarativne paradigme obravnavajo način združevanja kode, na primer združevanje kode v en ali dva dela (ali namesto tega v veliko majhnih delov).
V: Ali je lahko jezik hkrati imperativna in deklarativna paradigma?
O: Da, jezik je lahko hkrati imperativna in deklarativna paradigma.
V: Kako programska paradigma združuje jezike?
O: Programske paradigme razvrščajo jezike po tem, kaj počnejo. Upoštevajo, kako se koda izvaja, kako je razvrščena v skupine ter v kakšnem vrstnem redu in kakšni deli sestavljajo program.
V: Ali poleg imperativne in deklarativne obstajajo še druge vrste programskih paradigem?
O: Da, poleg imperativne in deklarativne obstajajo še druge vrste programskih paradigem. Nekatere na primer obravnavajo način izvajanja kode (na primer omogočanje stranskih učinkov), druge pa način razvrščanja kode v skupine (na primer razvrščanje kode v enega ali dva dela).
V: Ali vsak jezik pripada samo eni vrsti paradigme programiranja?
O: Ne, vsak jezik ne pripada samo eni vrsti paradigme programiranja; nekateri jeziki so lahko v več kot eni vrsti paradigme.