Alustariippumattomuus
![]() | Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä. Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan. |
Alustariippumattomuudella (engl. cross-platform, multi-platform, platform independent software) tarkoitetaan ohjelmointikieltä tai sovellusohjelmaa, joka ei ole sidoksissa tiettyyn alustaan (tietokonelaitteistoon tai käyttöjärjestelmään).
Toisaalta alustariippumaton ohjelmointikieli tai sovellus ei tarkoita, että siitä olisi olemassa toteutus kaikille mahdollisille käyttöjärjestelmille, vaan sitä, että kielen kääntäjän, tulkin tai sovellusohjelman toteutuksessa ei ole laitteistoalustaan tai käyttöjärjestelmään sidottuja ominaisuuksia, tai ne on toteutettu erikseen kullekin alustalle siten, että niiden toiminta on mahdollisimman samanlaista kaikissa ympäristöissä.
Alustariippuvaisia piirteitä ovat esimerkiksi monitavuisten lukujen tavujärjestys, säikeiden (jos niitä on) ja prosessien toteutus, hakemistoerottimet ja mahdolliset levyasematunnukset, grafiikkakirjastot ja useimmat järjestelmäkutsut, joita ohjelma voi suorittaa. Näin esimerkiksi yksinkertainen tekstinkäsittelyohjelmisto voidaan toteuttaa helpohkosti alustariippumattomasti, kunhan huomioidaan eri käyttöjärjestelmissä olevat rajoitukset hakemisto- ja tiedostonimille sekä levyasematunnuksille (jos sellaisia käytetään).
Esimerkkejä
Ohessa kuvitteellinen esimerkki pseudokoodina alustaan sidostusta ja alustariippumattomasta ohjelmakoodista:
# sidottu alustaan, koska hakemistoa /proc/sys/loadavg ei löydy koskaan Windows- tai Mac-järjestelmistä def get_system_load() info_path = '/proc/sys/loadavg' load_avg0 = get_current_loads(info_path) now = time.time() sys.sleep(1) load_avg1 = get_current_loads(info_path) elapsed = time.time()-now return load_avg1-load_avg0/elapsed
# laitteistoalustariippumaton, käyttää kielen omaa funktiota, joka on # toteutettu erikseen eri käyttöjärjestelmille def get_system_load() load_avg0 = system.loadavg() now = time.time() sys.sleep(1) load_avg1 = system.loadavg() elapsed = time.time()-now return load_avg1-load_avg0/elapsed
Useimmat ohjelmointikielet ovat nykyään alustariippumattomia, kun taas sovellukset toteutetaan tyypillisesti vain yhdelle tai muutamalle suosituimmalle käyttöjärjestelmälle. Toisaalta useimmat Microsoftin suosituimmatkin sovellukset ovat saatavissa vain Windows-järjestelmiin, joka rajoittaa samalla laitteistoalustan PC-koneisiin.
Historiaa
Alustariippumattomuus ei ole verrattain uusi asia. Niin sanottua P-koodia käytettiin vuodesta 1966 - 1980 luvulle ennen kuin IBM PC koneita oli. Tietotekniikan historian alkuvaiheissa kaikki ohjelmat olivat usein paitsi käyttöjärjestelmäriippuvaisia, myös hyvin sidottuja tiettyyn tietokonearkkitehtuuriin tai jopa tietokonemalliin. Myöhemmin käyttöjärjestelmä toimi yhä enenevässä määrin abstraktiokerroksena laitteelle ja salli siten ohjelmoinnin useille erilaisille tietokoneille, kunhan niissä toimi sama käyttöjärjestelmä.
Eräs ehkä merkittävimmistä syistä WWW:n nopeaan laajenemiseen ja suosioon oli juuri sen alustariippumattomuus - yksi Tim Berners Leen motiiveista WWW:n kehittämiseen olikin juuri dokumenttien helppo vaihto eri käyttöjärjestelmien välillä. Sen avulla voidaan tuottaa ja lukea dokumentteja www-selaimen avulla, joita on saatavilla kaikille yleisille käyttöjärjestelmille aina tietokoneista matkapuhelimiin asti.