Ero sivun ”Tietokoneohjelma” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
Loputkin vanhoista kohdista pois, poistin "parannettava"-tekstin
Ei muokkausyhteenvetoa
Rivi 9:
# Ajossa olevaa ohjelmaa. Jos käytössä on [[käyttöjärjestelmä]], kuten aivan pienimpiä [[sulautettu järjestelmä|sulautettuja järjestelmiä]] lukuun ottamatta on, tästä voidaan käyttää myös nimitystä [[prosessi]].
 
Käytännön sovelluksissa tietokoneohjelma tarvitsee aina ulkoisen rajapinnan, jonka kautta se voi kommunikoida ympäristönsä kanssa tai jonka kautta ohjelman ympäristö ohjaa itse ohjelmaa.
 
==Yleistä==
Rivi 25 ⟶ 26:
 
[[Immateriaalioikeus|Immateriaalioikeuden]] kannalta ohjelmat kuuluvat [[tekijänoikeus|tekijänoikeuksien]] piiriin. Immateriaalioikeuksien kannalta mielenkiintoisia ovat laajalle levinneet [[vapaa ohjelmisto|vapaat ohjelmistot]].
 
==Ulkoiset rajapinnat==
 
Tietokoneohjelmalla ei olisi paljoakaan merkitystä, mikäli se ei pystyisi kommunikoimaan millään tavalla ympäristönsä kanssa. Tämän vuoksi jokaiseen tietokoneohjelmaan liittyy yksi tai useampi ulkoinen rajapinta, jonka avulla ohjelmalle voidaan antaa syötteita ja jonka avulla ohjelma voi kommunikoida ympäristönsä kanssa. Tietokoneohjelman ohjaama ympäristö voi olla fyysinen tai virtuaalinen ympäristö - se voi siis koostua fyysisistä laitteistoista tai mahdollisesti toisista tietokoneohjelmista.
 
Fyysisten laitteiden ohjaamista varten tietokoneiden prosessoreissa on määriteltynä yksi tai useampia ulkoisia rajapintoja, joiden avulla ohjelma voi kirjoittaa tai lukea tietoa mikroprosessorin suorittimen ulkopuolelta. Yleensä nämä ovat prosessoriin liitettyjä portteja tai I/O -muistialueita, joiden kautta tietokoneohjelmat pystyvät oikein toimiessaan ohjaamaan fyysisiä tai virtuaalisia kokonaisuuksia sekä lukemaan näiden kokonaisuuksien syöttämää tietoa. Nykyisissä ohjelmissa tietokoneohjelma ei tyypillisesti ohjaa ulkoisia laitteita suoraan, vaan käyttää käyttöjärjestelmän tai jonkun toisen tietokoneohjelman tarjoamia palveluita. Tietokoneohjelmien sovelluskehityksessä nämä palvelut abstraktoidaan käyttöjärjestelmän, laiteajureiden tai sovelluskirjastojen (API) avulla siten että ohjelman kirjoittajan ei tarvitse opiskella tai ymmärtää ulkoisten palveluiden tai laitteistojen sisäistä toimintaa.
 
Tietokoneohjelmille ulkoisia rajapintoja tarjoavat mm.
 
* mikroprosessoriarkkitehtuuri (esim. I/O -portit, muistiavaruudet, väylät, konekieli)
* käyttöjärjestelmä (esim. ohjelmien käynnistäminen, muistin varaaminen, prosessit)
* laitteistoajurit (esim. näytölle piirtäminen, videokaappaus, tulostaminen)
* sovelluskehitysympäristö (esim. ohjelmointikirjastot, poikkeustilanteiden hallinta)
* sovelluskirjastot ja komponentit (monipuolisia palveluita lähes mihin tahansa tarkoitukseen)
 
Ohjelma käyttää tarvitsemiaan palveluita ajoympäristöstä ja sen abstraktiotasosta riippuen. Käyttöjärjestelmä, laitteistoajurit, sovelluskehitysympäristö ja sovelluskirjastot ovat nekin itsenäisiä tietokoneohjelmia, jotka tukeutuvat osittain toistensa tarjoamiin palveluihin. Korkean abstraktiotason ohjelmien toteuttaminen on yleisesti ottaen helpompaa ja ohjelmista tulee tällöin lähdekoodiltaan lyhempiä kuin matalan tason konekielisestä ohjelmasta. Korkean abstraktiotason ohjelmien suorituskyky on kuitenkin usein heikompi ja ohjelmakirjastojen vaatima yhteiskoko ovat kuitenkin yleensä suurempi kuin mihin matalan tason ympäristöissä pystyttäisiin.
 
 
==Ohjelmien siirrettävyys==