Programski jezik: definicija, vrste in primeri (Python, C#, Haskell)

Vsebina

·         1 Vrste programskih jezikov

o    1.1 Visoka in nizka raven

o    1.2 Deklarativno in imperativno programiranje

o    1.3 Funkcionalno in postopkovno

o    1.4 Na podlagi sklada

o    1.5 Objektno usmerjeni

o    1,6 usmerjenost v pretok

·         2 Pravila

·         3 Objektno usmerjeno programiranje

·         4 Primeri

o    4.1 Primer Visual Basica

o    4.2 Primer Pythona

o    4.3 Primer C#

o    4.4 Primer Haskella

·         5 Sorodne strani

Programski jezik je vrsta pisnega jezika, ki računalniku pove, kaj naj naredi, da bo deloval. Programski jeziki se uporabljajo za izdelavo vseh računalniških programov in računalniške programske opreme. Programski jezik je kot niz navodil, ki jih računalnik upošteva, da nekaj naredi.

Programer piše izvorno kodo v programskem jeziku za ustvarjanje programov. Običajno programski jezik za nekatere ukaze uporablja prave besede, tako da ga človek lažje prebere. Številni programski jeziki uporabljajo ločila tako kot običajni jeziki. Številni programi so zdaj "sestavljeni". To pomeni, da računalnik prevede izvorno kodo v drug jezik (na primer skupinski ali strojni jezik), ki je za računalnik veliko hitrejši in lažje berljiv, za človeka pa veliko težje berljiv.

Računalniški programi morajo biti napisani zelo skrbno. Če se programer zmoti ali poskuša narediti nekaj, česar ni načrtoval, se lahko program "sesuje" ali preneha delovati. Kadar ima program težave zaradi načina pisanja kode, se to imenuje "napaka". Zelo majhna napaka lahko povzroči zelo veliko težavo.

Vrste programskih jezikov

Programski jeziki se razlikujejo po namenu, paradigmi in ravni abstrakcije. Pomembne kategorije so:

  • Po ravni abstrakcije: visoka raven (Python, Java, C#) in nizka raven (C, zbirni jezik, strojni jezik).
  • Po programskem slogu (paradigmi): imperativni, deklarativni, funkcionalni, postopkovni, objektno usmerjeni, logični, reaktivni itd.
  • Po izvajanju: interpretirani (npr. Python), prevedeni (npr. C, C# v .NET) ali hibridni (npr. Java, ki je prevedena v bytecode in interpretirana/optimizirana z VM).
  • Po tipu sistemov: splošni jeziki (general-purpose) in domensko specifični jeziki (DSL), ki so namenjeni ozkim področjem (npr. SQL za podatkovne poizvedbe).

Visoka in nizka raven

Jeziki visoke ravni nudijo veliko abstrakcije: avtomatsko upravljanje s pomnilnikom, bogate knjižnice in bolj berljivo sintakso. Olajšajo hitro razvijanje in vzdrževanje. Jeziki nizke ravni (npr. zbirni jezik) omogočajo neposreden nadzor nad strojno opremo, kar je pomembno za vgrajene sisteme ali visoko optimizirane dele programa.

Deklarativno in imperativno programiranje

Imperativni jeziki (npr. C, Python) opisujejo korake, kako naj računalnik nekaj naredi — spreminjanje stanj s serijo ukazov. Deklarativni jeziki (npr. SQL, nekatere lastnosti Haskella) opisujejo, kaj želimo doseči, ne pa natančnih korakov za dosego.

Funkcionalno in postopkovno

Funkcionalno programiranje poudarja funkcije kot osnovne gradnike, pogosto brez stranskih učinkov (pure functions) — primer Haskell. Prednosti so jasnejša logika, lažje preverjanje in paralelizacija. Postopkovno (proceduralno) programiranje razbija nalogo na postopke ali funkcije, ki spreminjajo stanje programa — primer tradicionalnega C-ja ali Pythona pri proceduralnem slogu.

Jeziki na podlagi sklada (stack-based languages)

Nekateri jeziki (npr. Forth, PostScript, nekateri zbirni jeziki) uporabljajo sklad kot glavni mehanizem za prenos argumentov in rezultatov. Ukazi manipulirajo s podatki na skladu (push, pop), kar lahko vodi v zelo jedrnat in učinkovit zapis, vendar manj berljiv za začetnike.

Objektno usmerjeni jeziki

Objektno usmerjeni jeziki (OOP) organizirajo kodo okoli objektov, ki vsebujejo podatke (atribute) in operacije (metode). Temeljni koncepti so razredi, instanca, zapiranje (encapsulation), dedovanje in polimorfizem. Jezik C# je klasičen primer moderne OOP platforme, medtem ko Python podpira OOP, a je bolj večparadigmen.

Pravila: sintaksa in semantika

Vsak jezik ima dve glavni skupini pravil:

  • Sintaksa določa pravilno obliko programskih stavkov (npr. kako zapisati zanko ali pogoj).
  • Semantika določa pomen teh stavkov — kaj program dejansko naredi, ko se stavek izvrši.

Poleg tega je pomembno razlikovati tipne sisteme (statika tipkanja vs. dinamična tipkanja), upravljanje pomnilnika (ročno ali samodejno s smetiščem) in model izvajanja (enonitno, večnitno, asinhrono). Ta pravila vplivajo na varnost, zmogljivost in berljivost kode.

Objektno usmerjeno programiranje — ključne prakse

Pri OOP se pogosto uporabljajo naslednje prakse za boljši dizajn in vzdrževanje:

  • Ločevanje odgovornosti (Single Responsibility Principle).
  • Sledenje načelom SOLID.
  • Uporaba vmesnikov in abstrakcij za lažje testiranje in razširljivost.
  • Enota testiranje in avtomatizirano testiranje za zgodnje odkrivanje napak.

Primeri

Spodaj so prikazani kratki in razumljivi primeri za nekaj jezikov. Namenjeni so ilustraciji sintakse in sloga, ne popolnim programom.

Primer Visual Basica (VB.NET)

Module Module1     Sub Main()         Console.WriteLine("Pozdravljen, svet iz Visual Basica!")         Dim n As Integer = 5         Console.WriteLine("Fakulteta " & n & " = " & Factorial(n))     End Sub      Function Factorial(ByVal x As Integer) As Integer         If x <= 1 Then             Return 1         Else             Return x * Factorial(x - 1)         End If     End Function End Module

Primer Pythona

def factorial(n):     return 1 if n <= 1 else n * factorial(n - 1)  if __name__ == "__main__":     print("Pozdravljen, svet iz Pythona!")     print("Fakulteta 5 =", factorial(5))

Python je interpretiran, dinamično tipkan in zelo priljubljen za hitro prototipiranje, skripting in znanstveno računanje.

Primer C#

using System;  class Program {     static void Main()     {         Console.WriteLine("Pozdravljen, svet iz C#!");         Console.WriteLine("Fakulteta 5 = " + Factorial(5));     }      static int Factorial(int n)     {         return (n <= 1) ? 1 : n * Factorial(n - 1);     } }

C# je močno tipkan, preveden v intermediate language za .NET in podpira OOP, asinhrono programiranje ter bogat ekosistem knjižnic.

Primer Haskella

-- Haskell primer factorial :: Integer -> Integer factorial 0 = 1 factorial n = n * factorial (n - 1)  main :: IO () main = do   putStrLn "Pozdravljen, svet iz Haskella!"   print (factorial 5)

Haskell je čisti funkcionalni jezik z močno tipno varnostjo in latento oceno vrednosti (lazy evaluation).

Kdaj izbrati kateri jezik?

Izbira jezika je odvisna od več dejavnikov: namen projekta (spletne aplikacije, sistemska programska oprema, vgrajeni sistemi), zahteve po zmogljivosti, ekosistem knjižnic ter osebne ali ekipne izkušnje. Za hitri razvoj aplikacij so priljubljeni Python in C#, za visoko zmogljivost C in C++, za funkcionalni pristop Haskell ali Scala.

Zaključek

Programski jezik je orodje, s katerim ljudi in stroji komunicirajo. Razumevanje razlik med jeziki, njihovimi paradigmi in pravili pomaga izbrati pravo orodje za nalogo in pisati bolj zanesljivo ter učinkovito programsko opremo.

Sorodne strani

Za nadaljnje učenje si oglejte vire o specifičnih jezikih, primerih uporabe in učenju programiranja. Povezave do sorodnih vsebin in lekcij lahko pomagajo poglobiti znanje o paradigmi, prevajanju in orodjih za razvoj.

Vrste programskih jezikov

Obstaja veliko vrst programskih jezikov. Večina programskih jezikov ne sledi samo eni vrsti, zato je težko določiti vrsto za vsak jezik posebej. Primeri posameznih vrst so navedeni v vsakem spodnjem razdelku, ker so to najbolj znani primeri te vrste.

Visoka in nizka raven

[icon]

V tem razdelku je treba navesti več informacij. (avgust 2018)

V primerjavi z nizkonivojskimi programskimi jeziki zahtevajo manj znanja o strojni opremi. Za pretvorbo izvorne kode v nizkonivojske programske jezike je potreben prevajalnik.

Deklarativno in imperativno programiranje

Deklarativni programski jeziki opisujejo "problem", vendar običajno ne povedo, kako naj se problem reši. Pri opisu problema se uporablja logika, "reševanje" problema pa je pogosto videti kot samodejno dokazovanje sistema logičnih aksiomov. Primeri takih programskih jezikov so Prolog, XSLT, LISP in SQL.

Imperativni programski jeziki opisujejo sistem sprememb stanja. Na začetku je program v določenem stanju, računalniku pa so dani koraki, ki jim mora slediti, da bi izvedel neko dejanje. Zaradi izvajanja korakov program "spremeni stanje".

Na splošno so deklarativni programski jeziki varnejši in krajši. Imperativni programski jeziki so pogostejši, ker jih je lažje uporabljati.

Funkcionalni in postopkovni

Funkcionalno programiranje obravnava programiranje kot funkcijo v matematiki. Program prejme vhodne podatke skupaj z nekaterimi informacijami in jih uporabi za ustvarjanje izhodnih podatkov. Vmes ne bo imel vmesnega stanja in tudi ne bo spreminjal stvari, ki niso povezane z izračunom.

Proceduralni programi določajo ali opisujejo sklope korakov ali sprememb stanja.

Na podlagi kupa

Jeziki, ki temeljijo na skladovnici, na del pomnilnika programa gledajo kot na skladovnico kart. S kupom je mogoče narediti zelo malo stvari. Podatkovni element je mogoče postaviti na vrh sklada. Ta operacija se na splošno imenuje "push" (potisni). Podatkovni element se lahko odstrani z vrha sklada. To se imenuje "pop". Element na vrhu sklada si lahko ogledate, ne da bi ga odstranili. To se imenuje "pogled".

Če je program napisan kot "push 5; push 3; add; pop;", bo na vrh sklada postavil 5, na vrh 5 postavil 3, seštel zgornji dve vrednosti (3 + 5 = 8), 3 in 5 zamenjal z 8 ter izpisal vrh (8). Primera programskih jezikov, ki temeljijo na skladih, sta jezika Postscript in Forth.

Objektno usmerjeni

V objektno usmerjenih programskih jezikih so podatki in funkcije, ki spreminjajo podatke, združeni v eno enoto. Ta enota se imenuje "objekt". Objekti lahko medsebojno komunicirajo in spreminjajo podatke drugega objekta. To se običajno imenuje enkapsulacija ali skrivanje informacij. Večina sodobnih programskih jezikov je objektno usmerjenih ali pa vsaj omogočajo ta slog programiranja. Primeri tega so Java, Python, Ruby, C++, C# in drugi jeziki C.

V pretočnost usmerjen

V tok usmerjeno programiranje vidi programiranje kot povezovanje različnih komponent. Te komponente pošiljajo sporočila naprej in nazaj. Posamezna komponenta je lahko del različnih "programov", ne da bi jo bilo treba notranje spreminjati.

Pravila

Vsak programski jezik ima pravila o tem, kaj lahko počne in česa ne. Ta pravila vključujejo:

  • Pravilna števila (vrste števil in kako velika ali majhna so lahko števila)
  • Besede (rezervirane besede, občutljivost na velike in male črke)
  • Omejitve programskega jezika

Večina jezikov ima uradne standarde, ki določajo pravila za pisanje izvorne kode. Nekateri programski jeziki imajo dva ali več standardov. To se lahko zgodi, ko nov standard nadomesti starega. Standard Perl 5 je na primer leta 1993 nadomestil Perl 4. To se lahko zgodi, ker sta dve osebi hkrati oblikovali dva standarda. Za programski jezik APL na primer obstaja več standardov.

Objektno usmerjeno programiranje

Objektno usmerjeno programiranje (včasih skrajšano na OOP) je oblika programiranja, pri kateri so vsi deli programa objekti. Objekti so deli pomnilnika z enako strukturo, ki jih lahko vedno znova uporabljamo. Bančni račun, bitna slika ali junak iz videoigre so lahko objekti v programu. Objekti so sestavljeni iz lastnosti (informacij, ki jih objekt hrani) in metod, ki so stvari, ki jih objekt lahko naredi. Predmet pes ima lahko lastnosti, kot sta višina in barva dlake. Njegove metode so lahko lajanje() in mahanje z repom().

Vsi predmeti so ustvarjeni iz predlog, imenovanih razredi. Razred si lahko predstavljate kot kalup, iz katerega se izdelajo predmeti. Razred določa vse lastnosti in metode, ki jih bodo imeli njegovi predmeti. Objekti, ustvarjeni iz razreda, se imenujejo primerki razreda. Razred lahko razširi drug razred, kar pomeni, da prevzame vse lastnosti in metode razreda, vendar lahko doda svoje.

Tukaj je primer, kako je lahko videti razred v programskem jeziku:

class Dog extends Mammal{ //Tole so lastnosti:   String breed = "Collie" String type = "Herding Dog" //Tole so metode void wagTail(){ //Do some wagging } void bark(){ //Do the barking here }  }

Opazite, da razred Dog razširja razred Mammal, zato bodo imeli vsi psi lastnosti sesalcev, kot je dolžina dlake, in metode, kot sta eat() ali sleep().

Objektno usmerjeno programiranje se uporablja v številnih danes najbolj priljubljenih programskih jezikih, kot so Java, C#, Objective-C, C++, Python, Ruby, Javascript in ActionScript.

Primeri

Primer Visual Basic

Tukaj je preprost program, napisan v Visual Basicu:

  1 Dim Input 2 Input = InputBox("Koliko ste stari?? - Koda") 3 If Not IsNumeric(Input) Then 4 MsgBox & Input & "To ni številka!"  5 ElseIf Input < 0 Then 6 MsgBox "Ne morete biti mlajši od te starosti!"  7 ElseIf Input > 100 Then 8 MsgBox "To je staro!"  9 Else 10 MsgBox "Star si " & Input & " let." 11 End If

Ta program vpraša uporabnika o njegovi starosti in se odzove na podlagi tega, kar je uporabnik vnesel. Če je uporabnik vnesel nekaj, kar ni številka, program to sporoči. Če je uporabnik vnesel število, manjše od nič, program to tudi pove. Če uporabnik napiše, da je starejši od 100 let, program reče: "To je staro!" Če je uporabnik vnesel pravilno starost, program uporabniku odgovori, koliko je star.

Primer Pythona

Tukaj je program, ki počne isto kot zgornji program, vendar v jeziku Python:

 poskusite: age = int(raw_input("Koliko ste stari? ")) except ValueError: print ("To ni število!") else: if age < 0: print ("Ne morete biti manjši od nič!") elif age > 100: print ("To je staro!") else: print("Star si %s let." % age)

Primer C#

Enako kot zgornji program, vendar v jeziku C#:

using System; public class Hello { public static void Main() { Console. WriteLine("Kakšna je vaša starost?"); int age; if (! int. TryParse(Console. ReadLine(), out age)) Console. WriteLine("To ni številka!"); else if (age < 0) Console. WriteLine("Ne more biti manj kot nič!"); else if (age > 100) Console. WriteLine("To je staro!"); drugače Console. WriteLine("Star si {0} let.", age); } }

Primer Haskella

Spet isto, vendar v jeziku Haskell:

uvoz Text.Read main = do putStrLn "Kakšna je tvoja starost?" input <- fmap readMaybe getLine putStrLn $ case input of Just age | age < 0 -> "Ne moreš biti manjši od nič!"              | starost > 100 -> "To je staro!"              | drugače -> "Star si " ++ prikaži starost ++ " let."     nič -> "To ni številka!"

Sorodne strani

  • Seznam programskih jezikov
  • Programer
  • Prevajalnik
  • Računalniško programiranje

Vprašanja in odgovori

V: Kaj je programski jezik?


O: Programski jezik je vrsta pisnega jezika, ki računalnikom pove, kaj naj naredijo. Je kot niz navodil, ki jih računalnik upošteva, da nekaj naredi, za nekatere ukaze pa običajno uporablja prave besede, tako da jih ljudje lažje razumejo.

V: Kateri so primeri programskih jezikov?


O: Primeri programskih jezikov so Python, Ruby, Java, JavaScript, C, C++ in C#.

V: Kako so programi napisani v programskem jeziku?


O: Programi se pišejo tako, da se besedilo zapiše v izvorno kodo programskega jezika. Običajno se uporabljajo tudi ločila.

V: Kaj se zgodi, ko so programi napisani v programskem jeziku?


O: Ko so programi napisani v programskem jeziku, jih je treba sestaviti, kar pomeni, da računalnik spremeni ali prevede izvorno kodo v drug jezik (na primer sestavljeni ali strojni jezik), ki ga lahko berejo računalniki, vendar ga ljudje veliko težje berejo.

V: Kaj se lahko zgodi, če pri pisanju programov pride do napak?


O: Če pri pisanju programov pride do napak ali če program poskuša narediti nekaj, za kar ni bil zasnovan, lahko preneha delovati, kar se imenuje "sesutje". Kadar se to zgodi zaradi načina pisanja kode, se to imenuje "napaka". Tudi majhne napake lahko povzročijo velike težave.

V: Zakaj morajo biti računalniški programi skrbno napisani?


O: Računalniški programi morajo biti skrbno napisani, ker lahko že majhne napake povzročijo velike težave in vodijo v sesutje ali hrošče.

AlegsaOnline.com - 2020 / 2025 - License CC3