Källkod (original) (raw)
Källkod (engelska: source code), även kallad programtext, programkod eller ibland bara program eller kod, utgörs av en samling instruktioner, datadeklarationer och kommentarer skrivna i ett givet programspråk. Källkodens primära syfte är att vara läsbar och förståelig för en mänsklig programmerare, samtidigt som den följer en så pass strikt syntax att en dator entydigt kan tolka och översätta den.[1]
Ett Hello World-exempel i programspråket Java, med prolog i rött, kommentarer i grönt samt själva programkoden i blått.
Det är i form av källkod som programmerare traditionellt designar, skriver, rättar och förändrar datorprogram. Detta arbete utförs numera oftast i en integrerad utvecklingsmiljö (IDE).
För att en dator ska kunna köra programmet måste dess processor utföra de skrivna instruktionerna, en process som inom datalogin kallas för att exekvera koden. Innan direkt exekvering kan ske måste den mänskligt läsbara källkoden oftast omvandlas till maskinläsbar maskinkod (ettor och nollor). Denna översättning sker huvudsakligen genom två metoder:
- Kompilering: Ett separat program, en kompilator, översätter hela programtexten i förväg och skapar en fristående körbar fil (exempelvis en .exe-fil) som processorn kan exekvera direkt.
- Interpretering: En interpretator läser, översätter och exekverar källkoden rad för rad samtidigt som programmet körs. Denna typ av program kallas numera ofta för skript.
Även om källkod oftast skrivs manuellt från grunden av människor, kan den i många fall genereras helt eller delvis automatiskt. Ett etablerat exempel är kodgenerering från grafiska modeller, såsom sekvens- och klassdiagram i UML, där designverktyget bygger upp programmets strukturella källkod på egen hand.
I situationer där man bara har tillgång till ett programs färdiga maskinkod, men vill återskapa dess logik, tillämpas reverse engineering. Genom att använda en dekompilator eller disassemblator kan maskinkoden översättas tillbaka till en form av källkod (så kallad assembler). Resultatet är dock sällan lika tydligt som originalet, eftersom kommentarer och mänskligt läsbara variabelnamn förloras under kompileringen.
Ofta talar man om källkoden till en specifik algoritm eller funktion frikopplat från ett faktiskt programspråk. Då används istället pseudokod, vilket är en formaterad, mindre precis textpassage som blandar vanligt mänskligt språk med grundläggande logiska strukturer (som if-satser och loopar). Syftet med pseudokod är att förklara hur algoritmen fungerar för en läsare, utan att bindas till syntaxen i exempelvis Java eller C++.
Ur ett juridiskt och affärsmässigt perspektiv behandlas källkod som immateriell egendom och skyddas normalt av upphovsrätt. Källkod distribueras i huvudsak under två olika mjukvarufilosofier:
- Sluten källkod: (Closed source). Koden hålls hemlig av företaget som äger den (till exempel Microsoft Windows). Slutanvändaren eller kunden får endast tillgång till det färdigkompilerade programmet, vilket förhindrar obehörig insyn och modifiering.
- Öppen källkod: (Open source). Källkoden görs medvetet tillgänglig för allmänheten. Vem som helst tillåts läsa, granska, modifiera och distribuera koden vidare, ofta reglerat genom specifika licenser som exempelvis GPL eller MIT-licens.[2]
När ett företag köper in ett verksamhetskritiskt, proprietärt system med sluten källkod innebär det en finansiell risk. Utan tillgång till källkoden är det normalt omöjligt att underhålla, vidareutveckla eller rätta allvarliga fel i mjukvaran om leverantören skulle försvinna.
För att lösa detta kan koden deponeras (engelska: source code escrow) hos en oberoende tredje part. Avtalet säkerställer att kunden får full juridisk och teknisk tillgång till källkoden om leverantören inte fullgör sina åtaganden, exempelvis vid en konkurs. Genom regelbunden verifiering och teknisk kontroll hos deponenten säkerställs att den inskickade koden faktiskt är komplett och går att bygga till ett fungerande system.
- ↑ ”Definition of source code” (på engelska). PCMAG. https://www.pcmag.com/encyclopedia/term/source-code. Läst 13 april 2026.
- ↑ Stephanie Susnjara, Ian Smalley (29 juli 2021). ”What Is Open Source Software? | IBM” (på engelska). www.ibm.com. https://www.ibm.com/think/topics/open-source. Läst 13 april 2026.