Ohjelmisto
Ohjelmisto tai tietokoneohjelmisto (engl. software) on joukko käskyjä tietokoneen ja siihen liittyvän laitteiston eli tietokonejärjestelmän käyttämiseen: ohjelmisto on vastakohta laitteistolle.[1][2][3][4]
Ohjelmisto on immateriaalista (ilman fyysistä olomuotoa) ja nimenomaisesti jotain, mikä ei ole konkreettista (laitteistoa).[4] Ohjelmisto on myös tarpeen yleiskäyttöisen tietokoneen käyttämiseen, jota ilman laitteisto ei ratkaise ongelmaa.[4] Termi "ohjelmisto" viittaa yksittäiseen entiteettiin, mutta mitään yksittäistä ei ole: tietokonejärjestelmä koostuu sipulimaisista kerroksista, jossa on useita ohjelmakerroksia laitteistoytimen päällä.[4] Myös laitteiston sisällä on kerroksia kuten mikro-ohjelma ja firmware.[4]
Ohjelmisto koostuu yhdestä tai useammasta tietokoneohjelmasta, väliohjelmasta, ohjelmistokehyksestä tai ohjelmakomponentista (kuten kirjastoista). Ohjelmistotuotteisiin liittyvät usein myös niiden käyttämät tiedostot ja dokumentaatio. Ohjelmistoja ovat esimerkiksi niin tavalliset toimisto-ohjelmistot ja videopelit kuin kokonaiset käyttöjärjestelmätkin. Usein termejä ohjelma ja ohjelmisto käytetään sekaisin sekä toistensa synonyymeina.
Erityisesti sulautetuissa järjestelmissä, mutta myös yleisesti tietokoneista puhuttaessa, ohjelmistoksi kutsutaan usein kaikesta laitteen sisältämästä ohjelmakoodista muodostuvaa kokonaisuutta. Laitteistoon läheisesti liittyvä ohjelmisto on firmware, joka on erikoisunut ohjelmisto.[5] Suorittimen sisäinen ohjelma on mikro-ohjelma, joka toimii alemmalla tasolla kuin konekielinen ohjelma.[6] Tietokoneen varsinaisen suorittimen lisäksi grafiikkasuoritinta voidaan käyttää ohjelmakoodin suorittamiseen (GPGPU-käyttö).[7][8]
Ohjelmat voidaan jakaa kahteen kategoriaan:[2]
- järjestelmäohjelmat: tietokonejärjestelmän sisäistä toimintaa ohjaava ohjelmisto kuten käyttöjärjestelmä
- sovellusohjelmat: käyttäjän toiminnoista vastaavat ohjelmat kuten taulukkolaskentaohjelmat ja tekstinkäsittelyohjelmat
Epätoivottava ohjelmisto on haittaohjelma kuten tietokonevirus tai mato.
Historia
muokkaa- Pääartikkeli: Ohjelmistojen historia
Manchesterin yliopiston Small-Scale Experimental Machine (SSEM) oli ensimmäinen tietokone, jossa ohjelmaa voitiin vaihtaa ilman fyysisiä muutoksia tietokoneeseen (tallennetun ohjelman tietokone).[9]
Ennen IBM S/360:tä ja monopolioikeudenkäyntiä IBM:ää vastaan ohjelmistot seurasivat ilmaiseksi tietokoneen mukana tai ne olivat erityisesti käyttötarpeeseen kehitettyjä.[10]
Käsite omisteinen ohjelmisto syntyi vasta vuonna 1983 Applen oikeudenkäynnissä Franklin ACE-tietokoneista.[11][12][13]
1950-luvulla julkaistuja varhaisia korkean tason ohjelmointikieliä olivat ALGOL, COBOL, Fortran ja LISP.
Ohjelmien valmistus ja hankinta
muokkaa- Pääartikkelit: Ohjelmistotuotanto ja Ohjelmistoteollisuus
Ohjelmistoja voi ohjelmoida itse, niitä voi saada ilmaisohjelmina (vapaan ja avoimen lähdekoodin ohjelmistot) tai niitä voi hankkia kaupallisina valmisohjelmistoina (omisteinen ohjelmisto).[14] Valmisohjelmistot hinnoitellaan usein vielä lisenssipohjaisesti kuten lisenssi per käyttäjä tai lisenssi per suoritin (palvelinohjelmistot). Eräs ohjelmistotyyppi on pilvipalveluna tarjottava Software as a Service (SaaS) -ohjelmistotyyppi, jossa ohjelmistoa vuokrataan. SaaS-mallissa hinnoittelu perustuu käytön laajuuteen kuten projektinhallintatyökalussa hallittavien projektien määrään.
Ohjelmien välinen toiminta
muokkaaOhjelmistot voidaan toteuttaa edusta- ja taustasovelluksina (frontend ja backend, esimerkiksi verkkoselainsovellukset)[15], apuohjelmien avulla (kuten kaavaeditori Microsoft Officessa[16]), komponenttien ja kirjastojen avulla tai yhtenä suurena ohjelmana.
Muun muassa pelikonsoleille julkaistavat videopelit voivat olla yhtenä suurena binääritiedostona (blob)[17], joka käyttää useita yhteen liitettyjä datatiedostoja.[18][19]
Ohjelmien kääntäminen ja konfigurointi
muokkaaOhjelmointikielellä toteutettu ohjelma käännetään tai tulkataan siihen tehdyllä ohjelmalla. Käännöksen automatisointiin käytetään useita aputyökaluja kuten GNU Autotools.
Valmiit ohjelmat ja ohjelmistot voidaan levittää jakelupaketteina tai myytävinä kokonaisuuksina. Vapaat ja avoimen lähdekoodin ohjelmistot jaetaan usein paketinhallintajärjestelmän avulla.
Asennuksen yhteydessä ohjelma(t) ja sen komponentit konfiguroidaan käyttötapausta ja käyttöympäristöä varten.
Katso myös
muokkaaLähteet
muokkaa- ↑ Software computerhope.com. Viitattu 27.2.2020. (englanniksi)
- ↑ a b Software britannica.com. Viitattu 27.2.2020. (englanniksi)
- ↑ software merriam-webster.com. Viitattu 27.2.2020. (englanniksi)
- ↑ a b c d e Paul E. Ceruzzi: A History of Modern Computing, s. 79-80. (Second edition) MIT Press, 1998. ISBN 0-262-53203-4 (englanniksi)
- ↑ What Is Firmware? lifewire.com. Viitattu 3.2.2020. (englanniksi)
- ↑ Microcode techopedia.com. Viitattu 3.2.2020. (englanniksi)
- ↑ Understanding software approaches for GPGPU reliability dl.acm.org. 8.3.2009. doi:10.1145/1513895.1513907 Viitattu 30.10.2024. (englanniksi)
- ↑ Cabe Atwell: What’s the Difference Between CUDA and ROCm for GPGPU Apps? electronicdesign.com. 2.12.2022. Viitattu 30.10.2024. (englanniksi)
- ↑ The Manchester Small Scale Experimental Machine -- "The Baby" curation.cs.manchester.ac.uk. Viitattu 25.8.2017.
- ↑ Software Becomes a Product Computer History Museum. Viitattu 1.9.2017.
- ↑ Hassett, Rob: Impact of Apple vs. Franklin Decision internetlegal.com. Viitattu 12.8.2017. (englanniksi)
- ↑ 714 F. 2d 1240 - Apple Computer Inc v. Franklin Computer Corporation Open Jurist. Viitattu 12.8.2017.
- ↑ Smith, Ernie: Clone Wars Tedium. Viitattu 12.8.2017.
- ↑ software searchapparchitecture.techtarget.com. Viitattu 3.2.2020. (englanniksi)
- ↑ http://www.mynewsdesk.com/fi/pressreleases/tupas-poistuu-pian-suuri-kipukohta-tuhansissa-vanhoissa-sovelluksissa-2886975 (Arkistoitu – Internet Archive)
- ↑ https://www.bleepingcomputer.com/news/microsoft/microsoft-appears-to-have-lost-the-source-code-of-an-office-component/
- ↑ https://xboxdevwiki.net/Xbe
- ↑ https://www.gamasutra.com/blogs/NiklasGray/20181108/330175/The_Story_behind_The_Truth_Designing_a_Data_Model.php
- ↑ https://www.perforce.com/blog/vcs/single-source-truth-benefits-game-development