Ohjelmointi
Ohjelmointi tarkoittaa tietokoneelle tai vastaavalle ohjelmoitavalle laitteelle jollakin tavalla, tyypillisesti kirjoittamalla, annettavia toimintaohjeita formaalilla kielellä eli ohjelmointikielellä. Tietokoneet ymmärtävät niille annettavia käskyjä, joista muodostuu tietokoneelle suoritettavaksi annettu toimintaohje eli tietokoneohjelma. Ohjelmoimalla saadaan aikaiseksi tietokoneohjelman konekielinen koodi, symbolista konekieltä oleva koodi tai korkeamman tason käännettävä lähdekoodi. Ohjelmointi kehittyi 1950-luvulta 1970-luvulle matalan tason ohjelmointikielistä käännettävien ohjelmointikielten suuntaan, sillä niiden symbolinen logiikka, loogiset rakenteet ja avainsanat ovat ihmisen helpommin ymmärrettävissä ja ohjelmointivirheet silmämääräisesti korjattavissa. Korkeamman tason kieltä käyttämällä on lähdekoodi käännettävissä useammille kohdesuorittimille, kun taas konekieli ja symbolinen konekieli ovat sidoksissa tiettyyn suoritinarkkitehtuuriin ja siirrettävyys toiselle arkkitehtuurille on siksi heikko. Perusteet
Tietokoneen suoritin ymmärtää suoraan vain ohjelmia, jotka on kirjoitettu konekielellä. Konekieli koostuu yksinkertaisista operaatioista, esimerkiksi "vähennä rekisterin 3 arvosta rekisterin 5 arvo". Ohjelmointi suoraan konekielellä on mahdollista, mutta hyvin hidasta ja virhealtista johtuen laitteiden eroavaisuuksista. Konekielellä ohjelmia kirjoitetaan usein vain poikkeustapauksissa. Useammin käytetään symbolista konekieltä (ks. assembly). On huomattavaa, että myös symbolinen konekieli kääntyy viime kädessä ykkösiksi ja nolliksi, jotka vastaavat prosessorin transistoreiden päälle/pois tilaa. Tavallisesti tietokonetta ohjelmoidaan käyttämällä jotakin ohjelmointikieltä. Ohjelmointikielissä käytetään luettavia symboleja ja sovittuja koodeja. Esimerkiksi Pascal-kielisen ohjelman rivi Ohjelmointiparadigmat ovat ohjelmointikielien taustalla olevia tapoja ajatella ja mallintaa ratkaisu. Eri kielet tukevat eri paradigmoja eri tavoin: osa kielistä on moniparadigmaisia, jolloin niillä voi ohjelmoida useilla eri tavoilla. Eräs merkittävä paradigma on olio-ohjelmointi. Historia
Ennen tallennetun ohjelman tietokonetta muutokset ohjelmassa tarkoittivat muutoksia johdoissa ja kytkimissä (ks. Colossus).[1] Ennen vuotta 1954 lähes kaikki ohjelmointi tehtiin matalan tason ohjelmointikielillä kuten konekielellä tai assemblyllä.[2] Suuri osa ohjelmoijien työstä liittyi tuon ajan tietokoneiden rajoitteisiin.[2] Vuonna 1954 tietokonekeskukseen liittyvien ohjelmoijien kustannukset olivat tavallisesti lähes yhtä suuret kuin itse tietokoneen kustannukset, joka oli yksi motivaatio FORTRANin kehittämiselle.[2] Margaret Hamiltonin työ Apollo Guidance Computerin ohjelmoinnissa ja kehitetyt konseptit olivat edelläkävijänä huippuluotettavien ohjelmistojen suunnittelulle.[3] Nykyisin ohjelmistoja käytetään myös turvakriittisissä järjestelmissä osana koko järjestelmää, jossa henkilöstön turvallisuus (engl. safety, koneturvallisuus) on mukana (erona muunlaisesta turvatekniikasta (engl. security)).[4][5] Laitteistoabstraktion kannalta neljännen sukupolven ohjelmointikielet saavuttivat täyden riippumattomuuden laitteistoalustasta.[6] Neljännen sukupolven kieliä on myös kritisoitu laitteistoresurssien tuhlaavasta käytöstä, etenkin suoritusajan.[6] 1980-luvulla Japanissa aloitettiin projekti viidennen sukupolven tietokonejärjestelmän kehittämiseen, jonka merkittävin vaikutus oli mahdollisesti lukuisien ihmisten kouluttaminen tietotekniikkaan.[7] Ohjelmiston laatuOhjelmoinnissa tuotetun ohjelmakoodin laatua voidaan arvioida useilla eri mittapuilla:[8]
Näihin pyrkiessä voidaan käyttää apuna erilaisia ohjelmointikäytäntöjä.[9] Käytännöt liittyvät muun muassa koodin helppoon luettavuuteen, yhdenmukaisuuteen nimeämisessä ja ymmärrettävyyteen myös pitkän ajan jälkeen.[9] Käytännöillä parannetaan ohjelmoinnin tehokkuutta, vähennetään projektin riskejä ja helpotetaan ylläpitoa.[9]
SuoritustehokkuusSuoritustehokkuus vaikuttaa muun muassa virran käyttöön ja suoritusaikaan: huono suorituskyky aiheuttaa muita haittavaikutuksia.[10][11]
Ohjelmiston testaaminenOsana ohjelmiston laaduvarmistusta on ohjelmiston testaaminen, johon voi kuulua yksikkötestaaminen ja koodin kirjoittaminen testejä varten. Yrityskäyttöön suunnatuissa sovelluksissa riittävän testikattavuuden saamiseksi voi tarvita 1–3 riviä testikoodia jokaista tuotantoon menevää koodiriviä kohden ja suhde voi olla suurempikin.[12] Tietoturvallinen ohjelmointiTietoturvan kannalta merkittävissä järjestelmissä (pankkijärjestelmät, henkilötietojärjestelmät) käytetään periaatteita, joilla pyritään estämään tietoturva-aukkoja. Periaatteina ovat pääsyn valvonnasta huolehtiminen, vahvan salauksen käyttö ja salaisuuksien hallinta. Käytäntöjä ovat muun muassa koodin minimointi, koodin katselmointi ja auditointi.[13] Mahdollisia tulevaisuuden ohjelmointimenetelmiäOhjelmointikielet voivat perustua eri paradigmoihin kuten rinnakkaiseen käsittelyyn (CSP, Occam, LOTOS), logiikkaan (Prolog) ja niin edelleen. Kvanttitietokoneiden ohjelmointiperiaatteet ovat merkittävästi erilaisia aiemmin käytetyistä: kvanttiohjelmoinnissa todennäköisyyksillä on suurempi merkitys.[14] Tekoälyn koulutuksessa käytettävät periaatteet poikkeavat muun muassa järjestelmäohjelmoinnissa käytetyistä. Laitteistokuvauskielet kuten VHDL ja SystemC ovat kehittyneet, jolloin myös ne muistuttavat enemmän ohjelmointikieliä. Muun muassa ASIC ja FPGA kehitys ovat muuttuneet logiikkasynteesin avulla. Katso myösLähteet
Kirjallisuutta
Aiheesta muuallaWikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta Ohjelmointi. |