Lähdekoodi

Lähdekoodilla tarkoitetaan ohjelmoinnissa tietokoneohjelman tekstimuotoista ohjelmointikielistä kuvausta.

Lähdekoodina ohjelma on ohjelmoijien kirjoittamassa ja ylläpitämässä muodossa.
Lähdekoodia säilytetään yleensä versionhallintajärjestelmässä, jolloin kaikista muutoksista jää lokimerkintä ja eri versioihin on myöhemmin mahdollista palata muun muassa osana virheenjäljitystä ja laadunvarmistusta.
Jos lähdekoodi on kaikkien nähtävissä ja vapaasti jatkohyödynnettävissä, puhutaan avoimesta lähdekoodista tai vapaasta ohjelmistosta.
Koska tietokoneen prosessori suorittaa vain konekieltä, ohjelman ajaminen vaatii lähdekoodin kääntämisen tai tulkkaamisen.

Määritelmiä 
Richard Stallmanin määritelmä, joka muotoiltiin hänen vuoden 1989 merkittävässä lisenssissä, ehdotti lähdekoodia millaiseksi muodoksi tahansa, jossa ohjelmistoa muokataan: "Teoksen 'lähdekoodi' tarkoittaa teoksen valittua muotoa, johon muutoksia tehdään."Jotkut klassiset lähteet määrittelevät lähdekoodin ohjelmointikielten tekstimuotona, esimerkiksi:Lähdekoodi on ohjelmiston versio siinä muodossa kuin se on alun perin kirjoitettu (Esim. syötetty tietokoneelle) ihmisen toimesta pelkkänä tekstinä (Esim. luettavina aakkos-numeerisina merkkeinä).Määritelmä vastaa tosiasiaa, kun ohjelmien kääntäminen ilmestyi ensimmäisen kerran, silloiset ohjelmistotuotannon työkalut olivat tekstipohjaisia ohjelmointikieliä. Näin ollen lähdekoodi tarkoitti tekstikoodia, kun taas konekoodi oli kohdekoodi. Kuitenkin, kun ohjelmointiputket alkoivat sisällyttää enemmän väliasteen muotoja, osa kielistä, kuten JavaScript, voitiin kääntää joko lähde- tai kohdekoodiksi. Tämä johti siihen, että tekstikoodi ei enää vastannut lähdekoodin synonyymiä. 

Näin ollen Stallmanin määritelmä ottaa huomioon JavaScriptin ja HTML:n lähde-kohde-epäselvyyden sekä mahdolliset tulevaisuuden ohjelmistotuotannon muodot, kuten visuaaliset ohjelmointikielet tai koneoppimisessa käytetyt tietokannat.

Toiset laajemmat tulkinnat puolestaan katsovat lähdekoodin sisältävän konekoodin yhdessä kaikkien korkean tason kielten kanssa, jotka sitä tuottavat. Tämä määritelmä kumoaa alkuperäisen kone-teksti-erottelun pitämällä ohjelman kääntämisen jokaista vaihetta lähdekoodina.Selkeyden vuoksi "lähdekoodilla" tarkoitetaan mitä tahansa täysin suoritettavaa kuvausta ohjelmistojärjestelmästä. Näin ollen sen tulkitaan sisältävän konekoodin, erittäin korkean tason kielet sekä suoritettavat graafiset esitykset järjestelmistä. SCAM Working Conference Arkistoitu 29. Syyskuuta 2017, Wayback Machine, 2001–2010.Tämä lähestymistapa mahdollistaa joustavamman tavan järjestelmän analysointiin, eikä vaadi suunnittelijaa julkaisemaan helppoa ymmärtämisen ja muokkaamisen muotoa. Sitä voidaan soveltaa myös tilanteisiin, joissa suunnittelijaa ei tarvita, kuten DNA:n tapauksessa. Kuitenkin tämä analyysin muoto ei ota huomioon kalliimpaa koneiden välistä koodianalyysiä verrattuna ihmisen ja koneen koodianalyysiin.

Kääntäminen 
Useimmilla ohjelmointikielillä työskennellessä ohjelman lähdekoodi on käännettävä kääntäjäksi kutsutulla tietokoneohjelmalla ensin suoritettavaan muotoon ennen kuin se voidaan ajaa. Ennen varsinaista suorituskelpoista ohjelmaa lähdekoodi käännetään objektimuotoiseksi ohjelmaksi. Tähän objektimuotoiseen ohjelmaan linkitetään valmiit kirjastomoduulit ja tuloksena syntyy suorituskelpoinen ohjelma.

Tulkkaaminen 
Lähdekoodia voidaan suorittaa myös tulkkausperiaatteella. Tulkkauksessa lähdekoodia luetaan ja suoritetaan yksi lauseke kerrallaan. Tämä tapa on huomattavasti hitaampi suorituksessa, mutta etuna on aikaavievän käännöksen poisjäänti. Tulkkaavaa suoritusta voidaan käyttää ohjelman kehitystyössä ja protoilussa, jossa tärkeintä on valmiin toimivan prototyypin nopea kokeilutestaus kehityksen lomassa.

Esimerkkejä

C-kieli
Tyyppiesimerkki C-kielisestä ohjelmasta:

 
 #include <stdio.h>
 int main(void)
 {
    puts("Huomenta maailma!");
 }

Java
Alla esimerkki lyhyestä Java-kielisestä lähdekoodista:

 
 public class HeiMaailma {
    public static void main(String[] args) {
        System.out.println("Hei Maailma!"); 
    } 
 }

PHP
PHP-lähdekoodin tarkasteleminen ei onnistu kuin muokatessa tiedostoa, koska PHP on kieli joka suoritetaan palvelimen puolella, joten lähdekoodia ei missään vaiheessa lähetetä käyttäjälle. PHP tulostuu lähdekoodiin HTML-kielenä.

Esimerkki PHP-kielisestä lähdekoodista:

<?php
echo ('Moikka Wikipedia!'); 
?>

Lähdekoodin muokkaus
Lähdekoodia muokataan yksinkertaisella editoriksi kutsutulla tekstitoimittimella. Editorin tärkeimpiä ominaisuuksia on, että se ei lisää tavallisen tekstinkäsittelyohjelman ohjauskoodeja tekstin sekaan (joita kääntäjä ei osaa käsitellä).

Ohjelmakoodia kirjoitetaan myös ohjelmankehitysympäristöissä. Niissä on monia ohjelmointia helpottavia ja nopeuttavia automatisoituja rutiineja. Tällaisia ovat esimerkiksi virheiden paikallistaminen, kirjastomoduulien ennakoiva kirjoitus, debuggaus, versionhallinta ja suoritusnopeuden profilointi.

Katso myös
Välikieli

Lähteet

Aiheesta muualla 

Ohjelmointi
Seulonnan keskeiset artikkelit