Lähdekoodi
Lähdekoodilla tarkoitetaan ohjelmoinnissa tietokoneohjelman tekstimuotoista ohjelmointikielistä kuvausta.
Lähdekoodina ohjelma on ohjelmoijien kirjoittamassa ja ylläpitämässä muodossa.[1] 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 suoritin suorittaa vain konekieltä, ohjelman ajaminen vaatii lähdekoodin kääntämisen tai tulkkaamisen.
Määritelmiä
[muokkaa | muokkaa wikitekstiä]Richard Stallmanin määritelmä, joka muotoiltiin 1989 GPL-lisenssissä, ehdotti lähdekoodia millaiseksi muodoksi tahansa, jossa ohjelmistoa muokataan:
»"Teoksen 'lähdekoodi' tarkoittaa teoksen valittua muotoa, johon muutoksia tehdään."[2]»
Jotkut klassiset lähteet määrittelevät lähdekoodin ohjelmointikielten tekstimuotona, esimerkiksi:
»Lähdekoodi on ohjelmiston versio siinä muodossa kuin sen on ihminen alun perin kirjoittanut (esim. syöttänyt tietokoneelle) pelkkänä tekstinä (esimerkiksi luettavina aakkos-numeerisina merkkeinä).[3]»
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. Siitä seurasi, 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.[4][5]
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ä.[6][7]»
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
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]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ä
[muokkaa | muokkaa wikitekstiä]C-kieli
[muokkaa | muokkaa wikitekstiä]Tyyppiesimerkki C-kielisestä ohjelmasta:
#include <stdio.h>
int main(void)
{
puts("Huomenta maailma!");
}
Java
[muokkaa | muokkaa wikitekstiä]Alla esimerkki lyhyestä Java-kielisestä lähdekoodista:
public class HeiMaailma {
public static void main(String[] args) {
System.out.println("Hei Maailma!");
}
}
PHP
[muokkaa | muokkaa wikitekstiä]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
[muokkaa | muokkaa wikitekstiä]Lähdekoodia muokataan yksinkertaisella editoriksi kutsutulla tekstitoimittimella. Editorin tärkeimpiä ominaisuuksia on, että se ei lisää tekstin sekaan tavallisen tekstinkäsittelyohjelman ohjauskoodeja (joita kääntäjä ei osaa käsitellä).
Ohjelmakoodia kirjoitetaan myös ohjelmointiympä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
[muokkaa | muokkaa wikitekstiä]Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ lähdekoodi Tietotekniikan termitalkoot. 5.12.2014. Sanastokeskus TSK ry. ”ohjelma ohjelmoijien kirjoittamassa ja ylläpitokelpoisessa muodossa” Viitattu 30.6.2020.
- ↑ Richard Stallman, Licences Announced through the GNU Bulletin and published with GNU software 1989
- ↑ The Linux Information Project. "Source Code Definition"Arkistoitu 3.10.2017, Wayback Machine
- ↑ "gnu.org". www.gnu.org. Arkistoitu alkuperäisestä teoksesta 3.7.2017.
- ↑ Stallman, Richard (15.11.2017). "The JavaScript Trap - GNU Project - Free Software Foundation". Gnu.org.
- ↑ Why Source Code Analysis and Manipulation Will Always Be Important by Mark Harman, 10th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2010). Timișoara, Romania, 12.–13.9.2010.
- ↑ SCAM Working Conference Arkistoitu 29.9.2017, Wayback Machine, 2001–2010.
Aiheesta muualla
[muokkaa | muokkaa wikitekstiä]- Kuvia tai muita tiedostoja aiheesta Lähdekoodi Wikimedia Commonsissa