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.