title: Näppäimistö

text: Perusnäppäimistöosan yläpuolella vasemmassa kulmassa on "esc"-näppäin (, ’pako, poispääsy’) eli poistumisnäppäin, jolla toisinaan voi keskeyttää tietokoneen suorittaman toiminnon, mutta joissain ohjelmissa sillä saattaa olla muita erityistehtäviä. "Esc"-näppäimen oikealla puolella on rivistö funktio- eli toimintonäppäimiä (F1–F12), joihin voi liittyä lisää ohjelmakohtaisia erityiskomentoja: esimerkiksi F1-näppäin tuo tyypillisesti esiin käytettävän ohjelman ohjeistusta. Ensimmäisissä PC-koneiden näppäimistöissä (PC/XT) toimintonäppäimiä oli vain kymmenen, ja ne olivat näppäimistön vasemmassa reunassa parijonossa. Toimintonäppäinrivin oikeassa reunassa on yleensä vielä muutama erikoisnäppäin: "print screen"- (joka Windowsissa kopioi näytöstä kuvan leikepöydälle), "scroll lock"- ja "pause/break"-näppäimet.


title: Näppäimistö

text: Perusnäppäimistöosan oikealla puolella on tavallisesti kohdistimen ohjausnäppäimiä: neljä erillistä nuolinäppäintä ("arrow keys") ja niiden yläpuolella näppäimet "home" (jolla kohdistin siirtyy rivin alkuun), "end" (rivin loppuun), "page up" (edelliselle sivulle) ja "page down" (seuraavalle sivulle). Samaan näppäinryhmään kuuluva "insert"-näppäin asettaa tekstinsyötön niin sanottuun päällekirjoitustilaan, jolloin jokainen vanhan tekstin lomaan lisättävä merkki korvaa sen alle jäävän vanhan merkin, sen sijaan että uudet merkit työntäisivät vanhaa tekstiä edellään, kuten tavallisesti. "Delete"-näppäin puolestaan poistaa kohdistinta seuraavan merkin kirjoittamatta mitään tilalle.


title: Näppäimistö

text: Samat kohdistimen ja tekstinsyötön ohjausnäppäimet sisältyvät myös näppäimistön oikeassa laidassa olevaan erilliseen numeronäppäimistöön, vaikka niiden asettelu on erilainen. Numeronäppäimistön vasemmassa ylänurkassa on lisäksi "num lock" -näppäin, joka toimii samaan tapaan kuin kirjainnäppäimiin vaikuttava "caps lock": sen avulla numeronäppäimistön voi lukita laskinmaiseksi näppäimistöksi, jolla voi yksikätisesti syöttää lukuja ja laskea yksinkertaisia aritmeettisia perusyhtälöitä (yhteen-, vähennys-, kerto- ja jakolaskuja).


title: Näppäimistö

text: Kannettavien tietokoneiden näppäimistössä on yleensä hieman vähemmän näppäimiä ja erilainen näppäinjärjestys. Esimerkiksi erillinen numeronäppäimistö puuttuu yleensä tilansäästön vuoksi kokonaan. Niin sanotuissa multimedianäppäimistössä on lisäksi joitakin ohjelmoitavia erikoisnäppäimiä esimerkiksi äänenvoimakkuuden säätöön sekä selaimen ja yleisimpien apuohjelmien käynnistykseen ja sammuttamiseen.


title: Näppäimistö

text: "The Handbook of Human-Computer Interaction" suosittelee, että näppäinten liikkeen tulisi olla 1,3–6,4 mm ja painallukseen käytettävän voiman 28–142 g. Tutkimusten mukaan käyttäjät eivät ole tarkkoja näiden suhteen vaan sopeutuvat kulloiseenkin tilanteeseen.


title: Näppäimistö

text: Tavallisimpien näppäimistöjen kytkimet perustuvat kalvoon. Tässä rakenteessa näppäinhatut on sijoitettu kumisten kupujen päälle. Kupujen alla on kerroksittainen muovikalvo. Näppäinhatun painuessa alas kupu painuu alas ja painaa ensimmäisen kalvon läpi eristekalvosta yhteen alimman kalvon kanssa, minkä kone tulkitsee merkin annoksi. Painalluksen hellittäessä kumikupu palauttaa näppäinhatun alkuasentoonsa. Tässä mallissa näppäinhattu liikkuu täydet 2,5–4,0 mm.


title: Näppäimistö

text: Tämä rakenne on halpa valmistaa, mutta muihin verrattuna se ei ole kovin kestävä: näille malleille on luvattu iäksi ainoastaan 1–10 miljoonaa painallusta. Ajan myötä kumi voi kovettua ja tuntuma muuttuu kovemmaksi tai pehmeämmäksi.


title: Näppäimistö

text:
Joissakin kalvokytkimissä on yksinkertaisempi rakenne, jossa kolmen muovikalvon asemasta käytetään sähköä johtavaa kumia.
Joistakin malleista hattu ja kupu puuttuvat kokonaan.


title: Näppäimistö

text:
Kalvokytkimen alalaji on saksikytkin. Tätä tyyppiä käytetään kannettavien tietokoneiden näppäimistöissä.
Saksimekanismin vaikutuksesta näppäinhattu liikkuu vain 2 mm. Liike tuntuu kalvomallia vakaammalta, ja näppäimet palautuvat voimakkaammin.


title: Näppäimistö

text: Tämä malli on hieman kalvomallista kalliimpi. Sen käyttöikä on 1–20 miljoonaa painallusta.


title: Näppäimistö

text: Mekaaniseen kytkimiin perustuva näppäimistö naksahtelee kuuluvasti kirjoitettaessa. Se on kalvomallista mutkikkaampi ja laadukkaampi. Siinä jokaisen näppäimen alla on itsenäinen kytkin, joka voidaan ainakin periaatteessa irrottaa ja vaihtaa sen vikaannuttua.


title: Näppäimistö

text: Mekaanista näppäintä ei tarvitse painaa pohjaan saakka. Useissa tapauksissa näppäinhattu kulkee 4 mm matkan pohjaan, mutta signaali painalluksesta lähtee koneelle jo 2 mm:n kohdalla. Signaalin lähdettyä näppäinmekanismi alkaa vastustaa liikettä aiempaa voimakkaammin. Näin mekanismi ilmaisee kirjoittajalle, että sormen voi siirtää seuraavalle näppäimelle jo ennen törmäystä pohjaan. Tämän ansiosta nopean kirjoittamisen pitäisi olla miellyttävämpää.


title: Näppäimistö

text: Hyvin suunniteltu kytkin ei palaudu off-asentoon samassa kohdassa kuin signaali lähtee, vaan vasta myöhemmin, koska tämä estää useiden signaalien lähtemisen samalla painalluksella.


title: Näppäimistö

text: Mekaaniset näppäimistöt ovat usein kaikkein kalleimpia malleja. Niissä on selvin tuntuma ja niiden näppäimet palautuvat nopeimmin.


title: Näppäimistö

text: Mekaanisten kytkimien toiminta ei heikkene ajan myötä. Samalla ne ovat kaikkein kestävimpiä: niille luvataan 20–50 miljoonaa painallusta.


title: Näppäimistö

text: Lineaarinen mekaaninen kytkin ei ilmaise erikseen, missä vaiheessa signaali on lähtenyt. Vaadittava painalluksen voima pysyy samana koko matkan. "Esimerkkejä:" Deck; Cherryn mustakantaisilla kytkimillä varustetut näppäimistöt.


title: Näppäimistö

text: Nämä mallit antavat kosketuspalautetta ja naksuvat, mutta erehdyttävän vaisusti. "Esimerkki:" Cherryn ruskeakantaisilla kytkimillä varustetut näppäimistöt. Ruskea kanta näkyy mm. I-Rocks Technologyn mallissa KR-6230.


title: Näppäimistö

text: Näissä malleissa on tuntuva palaute ja selvä naksu. "Esimerkkejä:" SteelKeys 6G, Cherryn sinikantaisilla kytkimillä varustetut näppäimistöt.


title: Näppäimistö

text: Ääni on kovempi, mutta yleensä suurempaa voimaa ei tarvita niillä kirjoittamiseen. "Esimerkki:" Strongman-kytkimillä varustetut mallit, kuten Cherry SMK85.


title: Näppäimistö

text: Tämäntyyppisten näppäimistöjen tuntuma muistuttaa IBM Selectric -kirjoituskonetta.


title: Näppäimistö

text:
Nämä mallit ovat harvinaisia nykyään, mutta ne olivat suosittuja tietokoneiden alkuaikoina.
Monet vannovat näiden mallien nimiin edelleen. Vastaavan hyödyn voi kuitenkin saada uudemmista, kosketustuntumalla varustetuista mekaanisista näppäimistöistä.


title: Näppäimistö

text: "Esimerkki:" Käyristyvään jouseen perustuva IBM:n alkuperäinen malli "M" painaa yli kaksi kiloa. Nykyään samoja näppäimistöjä valmistaa Unicomp.


title: Näppäimistö

text: Näppäimistön kytkimet on tyypillisesti kytketty matriisiin. Näppämistön kaikkien näppäinten kytkeminen suoraan näppäimistöä ohjaavan mikrokontrollerin tai vastaavan pinneihin on mahdotonta. Tämän vuoksi näppäimistön kytkimet on järjestelty matriisiin, jonka linjoja skannataan millisekuntien välein.


title: Näppäimistö

text: Tekniikasta aiheutuu eräitä ongelmia, kuten "ghosting", jossa näppäimenpainalliksia katoaa kun useita näppäimiä painetaan pohjaan.


title: Näppäimistö

text: Erillisen näppäimistön liitäntöjä on lukuisia erilaisia. PC-koneissa liitin on aluksi ollut iso ja pyöreä DIN5-liitin, IBM PS/2-koneiden myötä pienempi pyöreä PS/2-liitin ja nykyisin usein USB-liitin. Applen tietokoneet ovat aiemmin käyttäneet ADB-liitintä, Sunin työasemat sarjaliitäntään perustuvia DB15 (Sun3-koneet) ja MiniDIN8-liittimiä (Type 5 -näppäimistöt). Nykyisin yleisimmät käytössä olevat liitännät ovat USB sekä PS/2.


title: Näppäimistö

text: Liitäntä voi olla myös johdoton infrapuna- tai radioyhteydellä (esim. Bluetooth) varustettu näppäimistö. Enemmistö langattomista näppäimistöistä perustuu kuitenkin langan päässä sijaitsevaan vastaanottimeen.


title: Näppäimistö

text: Näppäimistön muoto vaikuttaa kirjoitustehoon ja virheiden määrään. Tutkimusten mukaan paras muoto on sivulta katsottuna kaareva; toiseksi paras profiili on porrastettu. Tasainen profiili on kaikkein huonoin.


title: Näppäimistö

text: Tutkimuksissa kaikki käyttäjät pitävät jonkin verran kallistetusta näppäimistöstä. Puolelle tutkimuksiin osallistuneista sopivin kulma on 15–25°. Sopiva kulma riippuu istuimen korkeudesta ja käyttäjän omasta pituudesta.


title: Näppäimistö

text: Useimmissa näppäimistöissä näppäimen muoto on kaareva tai kovera. On olemassa myös litteitä näppäimistöjä.


title: Näppäimistö

text: Näppäinten keskikohtien tulisi olla vähintään 19 mm:n päässä toisistaan, sillä tiheämpi asettelu hidastaa kirjoittamista. ANSI-standardi suosittelee, että näppäimen koko on 12 × 12 mm.


title: Ohjelmointi

text: Ohjelmointi tarkoittaa tietokoneelle tai vastaavalle laitteelle jollakin tavalla, tyypillisesti kirjoittamalla, annettavia toimintaohjeita formaalilla kielellä.


title: Ohjelmointi

text: 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 prosessorien 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.


title: Ohjelmointi

text: Tavallisesti tietokonetta ohjelmoidaan käyttämällä jotakin ohjelmointikieltä. Ohjelmointikielissä käytetään luettavia symboleja ja sovittuja koodeja. Esimerkiksi Pascal-kielisen ohjelman rivi codice_1 voisi kääntyä edellä mainituksi konekielen operaatioksi. Ohjelmointikielellä kirjoitettu lähdekoodi joko käännetään konekielelle tai tulkataan kieltä suorittavalla ohjelmalla. Käännettäessä koko ohjelma muutetaan kerralla konekieleksi, minkä jälkeen siihen liitetään tarvittavat kirjastoaliohjelmat. Tämän tuloksena saatu ohjelma voidaan suorittaa ilman kääntäjää. Tulkattaessa käännetään pieni osa kerrallaan (eikä yleensä edes konekielelle asti), suoritetaan se ja käännetään seuraava osa ja niin edelleen. Ohjelman suoritus vaatii siis joka kerta tulkin.


title: Ohjelmointi

text: Ensimmäinen moderni ohjelmointikieli oli vuonna 1957 julkaistu FORTRAN "(FORmula TRANslator, suom. "kaavakääntäjä")", joka keskittyi matemaattisten lausekkeiden kääntämiseen konekielelle. Vuonna 1958 julkaistiin ALGOL ("ALGOrithmic Language") ja LISP ("LISt Processor, suom. "listakäsittelijä""), joka pionerisoi useita ohjelmointikielien ominaisuuksia, mm. ehtolausekkeet, rekursion ja dynaamisen tyypityksen. Vuosikymmenen lopulla kaupallis-hallinnolliset sovellukset yleistyivät ja tietojenkäsittely alkoi siirtyä akatemiasta liike-elämään. Tämän kehityksen seurauksena vuonna 1959 julkaistiin COBOL ("COmmon Business-Oriented Language," "suom. "yhteinen liiketoiminta-suuntautunut kieli"").


title: Ohjelmointi

text: Historiallisesti yleisin tulkattava ohjelmointikieli on ensimmäisen kerran vuonna 1964 esitelty BASIC-ohjelmointikieli ja sen monet versiot. BASIC-kielessä ei ole kehittyneitä rakenteita, mutta vaivattoman käyttönsä ja helposti tehtävän tulkkinsa vuoksi se saavutti suosiota alkuperäisen opetustarkoituksensa ulkopuoleltakin.


title: Ohjelmointi

text: Tietojenkäsittelytiede kehittyi vähitellen kypsäksi tieteenalaksi. 1960-luvun alkupuolella ALGOL jäi hallitsevaksi ohjelmointikielityypiksi ongelmien ratkaisuun pyrkivään algoritmiseen eli proseduraaliseen ohjelmointiin. Algol-perinnettä ylläpitivät siitä kehitetyt kielet kuten Pascal ja C. Tämäntyyppistä ohjelmointia leimaavat hyppyjen korvaaminen toistorakenteilla, nimetyt ja parametrisoidut ohjelmanosat eli aliohjelmat muuttujien vaikutusalueen rajoittaminen ja peittäminen sekä muuttujien staattinen tyypitys (käännöksessä esimerkiksi tarkastetaan, ettei tuotetulla ohjelmalla voi sijoittaa kokonaisluvuksi määriteltyyn muuttujaan merkkijonoa). Tärkeää on myös kielen kääntämisen yksinkertaistaminen tekemällä kieli soveltuvaksi erilliseen selaus- ja jäsentämisvaiheeseen.


title: Ohjelmointi

text: Myöhemmissä 1980-luvun proseduraalisissa kielissä kehitettiin keinoja modularisoida ohjelmia lisää, abstrakteja tietotyyppejä ja moduulien välisiä sopimuksia (ohjelmointikielet Modula-2, Modula-3, Oberon, Clu ja Eiffel).


title: Ohjelmointi

text: Algol-tyyppisissä ohjelmointikielissä on hyvin tärkeää, että ohjelma kääntyy tehokkaasti konekieleksi. Nämä ohjelmointikielet soveltuvat suuren ohjelmoijajoukon yhteistyössä tekemien ohjelmointiprojektien tekemiseen. Tämä traditio huipentui jossain määrin Yhdysvaltain puolustusministeriön vuonna 1980 määrittelemässä Ada-ohjelmointikielessä, eikä sen jälkeen ole vakavasti määritelty tai otettu käyttöön puhtaasti proseduraalisia Algol-tyyppisiä ohjelmointikieliä.


title: Ohjelmointi

text: Japanissa aloitettiin vuonna 1982 Viidennen sukupolven tietokonejärjestelmän ("第五世代コンピュータ", "Daigosedai konpyuta") kehittäminen, joka olisi kauttaaltaan hajautettu sekä logiikkaohjelmoitu paradigmamuutos. Osittain vastauksena siihen, Yhdysvallat aloitti omalla tahollaan voimakkaan panostamisen älykkäisiin järjestelmiin. Voimakas panostaminen tekoälyn tutkimiseen ei kuitenkaan johtanut niin suuriin läpimurtoihin kuin oli odotettu. Japani lopetti Viidennen sukupolven tietokonejärjestelmän kehittämisen, ja vastaavasti Yhdysvallat lopetti monien projektien rahoittamisen. Sen seurauksena vuosikymmenen lopun rahoituksen tyrehtymisestä käytettiin ilmaisua tekoälytalvi (AI Winter).


title: Ohjelmointi

text: Proseduraalisen ohjelmoinnin seuraaja 1980-luvun loppupuolelta asti on ollut olio-ohjelmointi. Ensimmäinen olio-ohjelmointikieli on vuodelta 1968 oleva Simula. Varsinaisen olio-ohjelmointi-ilmiön aloittanut ohjelmointikieli oli kuitenkin Smalltalk ja valta-asemaan olio-ohjelmoinnin nosti C++-ohjelmointikieli. Olio-ohjelmoinnissa maailma mallitetaan itsenäisiksi olioiksi, jotka voivat periä ominaisuuksilta muilta olioluokilta. Oliot voivat kommunikoida vain viesteillä, "metodeilla", niiden tilaa ei voi muuten kysellä. Olio-ohjelmoinnissa tärkeää on koodin uudelleenkäytettävyys eri tarkoituksiin, ei enää ohjelman kääntyminen tehokkaaksi konekieleksi.


title: Ohjelmointi

text: 1990-luvulla myös käyttöliittymien tekeminen yksinkertaistui ja standardoitui niin, ettei käyttöliittymän osuus ollut enää suurin osa tyypillisen sovelluksen tekemiseen kuluvasta työpanoksesta.


title: Ohjelmointi

text: Henkilökohtaisten tietokoneiden myötä henkilökohtaisten hyötyohjelmien käyttö lisääntyi. Näissä käyttäjät pääsevät itse ohjelmoimaan esimerkiksi komentosarjakielten avulla. Komentosarjakielet ovat usein tulkattavia tai "esikäännettyjä" (missä yhdistyy tulkkauksen vaivattomuus ja kääntämisen tehokkuus), eikä tärkeintä ole enää ehdottoman nopea suoritus. Uusimmissa komentosarjakielissä käytetään myös abstraktioita, joiden toteuttaminen kääntämällä ei olisi mielekästä tai edes mahdollista (esimerkiksi koodin dynaaminen evaluointi). Merkittävimmät edistysaskeleet ohjelmointikielissä 1995-2004 ovat tapahtuneet komentosarjakielten alueella. Merkittäviä uusia tulkattavia kieliä ovat Perl, Python, Ruby ja Gambas.


title: Ohjelmointi

text: Välivaiheen tavukoodiksi kääntämistä tukevia kieliä ovat muun muassa Java ja C#.


title: Ohjelmointi

text: Ohjelmointikielet voivat perustua myös nykyisestä täysin poikkeaviin malleihin ohjelmoinnista. Esimerkiksi ohjelmointi voi perustua rinnakkaiseen käsittelyyn (CSP, Occam, LOTOS), logiikkaan (Prolog), relaatiomalliin (vrt. relaatiotietokanta), kaksisuuntaisiin rajoitteisiin (TeX Metafont), tiedon monenkertaiseen uudelleenkirjoittamiseen tai tiedon luokitteluun. Tietotekniikassa on odotettavissa rinnakkaisen käsittelyn huima yleistyminen, jolloin todennäköisesti ohjelmointikielten seuraavat edistysaskeleet liittyvät rinnakkaisuuden käyttöön.


title: Ohjelmointi

text: Tulevaisuudessa myös ohjelman ja laitteiston raja hämärtyy ohjelmointikielien ja laitteistokuvauskielten lähestyessä toisiaan, jolloin on mahdollista, että osa tuotetusta ohjelmasta kääntyy konekielelle, osa suorittimen mikrokoodiksi, osa porttilogiikaksi ja osa mikropiireiksi (esimerkiksi ASIC tai FPGA). Esimerkiksi VHDL ja SystemC ovat kieliä, joilla kirjoitettu koodi on muunnettavissa laitteistoksi ja jälkimmäinen vastaa ominaisuuksiltaan C++-ohjelmointikieltä.


title: Ohjelmointikieli

text: Ohjelmointikielet ovat formaaleja kieliä, joita ohjelmoijat käyttävät tietokoneen ohjelmointiin. Ohjelmointikielellä tehdystä lähdekoodista tuotetaan tietokoneen ymmärtämää konekielistä "binääriä" kääntäjäohjelmalla tai tulkilla. Tietokoneen ymmärtämä binääri voidaan tehdä mahdollisen välikielen kautta.


title: Ohjelmointikieli

text: Ada Lovelace kirjoitti 1800-luvulla Charles Babbagen analyyttiselle koneelle askeleellisen sarjan käskyjä ja Lovelacea pidetään ensimmäisenä tietokoneohjelmoijana.


title: Ohjelmointikieli

text: Ensimmäisenä ylemmän tason ohjelmointikielenä pidetään Konrad Zusen 1940-luvulla kehittämää Plankalkülia. Kielen kuvaus julkaistiin kuitenkin vasta 1972, eikä sitä toteutettu hänen elinaikanaan oikeassa tietokoneessa.


title: Ohjelmointikieli

text: Small-Scale Experimental Machine oli ensimmäinen tietokone, jossa ohjelma voitiin tallettaa tietokoneen muistiin. Myöhempien tietokoneiden ominaisuudet lisäsivät tarvetta käsitellä ohjelmointia ylemmällä tasolla ja kehitettiin symboliset konekielet (ks. assembly). Tarve ylemmän tason ohjelmointikielille johti muun muassa ALGOLin, COBOLin ja FORTRANin kehittämiseen.


title: Ohjelmointikieli

text: Ohjelmointikielet ovat monin tavoin luonnollisten kielten kaltaisia. Niillä on oma sanastonsa ja kielioppisäännöstönsä; näistä kahdesta muodostuu kielen syntaksi eli lauseoppi. Niillä on myös looginen merkitys, jota kutsutaan semantiikaksi. Esimerkiksi lause "Koira puri luuta" on sekä syntaktisesti (lauseopillisesti) oikein että semanttisesti (merkitykseltään) mielekäs. Sen sijaan lause "Luu puri koiraa" on syntaktisesti oikein mutta semanttisesti epämielekäs. Vastaavasti ohjelmakoodin syntaktinen oikeellisuus, eli se, että kääntäjä kykenee kääntämään lähdekoodin konekieliseksi ei vielä tarkoita, että ohjelma toimii aiotulla tavalla.


title: Ohjelmointikieli

text:
Ohjelmointikielten kielentutkimus eli lingvistiikka on hyvin samankaltaista kuin luonnollistenkin kielten tutkimus. Toisaalta ohjelmointikielet ovat luonnollista kieltä huomattavasti yksinkertaisempia, muun muassa varattujen sanojen hyvin pienen lukumäärän vuoksi: tyypillisesti ohjelmointikielten sanasto on alle sata sanaa.
Ohjelmointikielten kielioppisäännöt ovat paljon yksinkertaisempia kuin luonnollisten kielten, säännöt ovat yksikäsitteisiä, ja mielekkäitä vaihtoehtoisia ilmaisutapoja on rajallinen määrä. Esimerkiksi luonnollisen kielen ilmaisut kuten "pienennä saldoa kymmenellä", "vähennä 10 saldosta", "ota kymmenen pois saldosta", "aseta saldoksi kymmenen vähemmän" jne tarkoittavat kaikki samaa ja ovat mielekkäitä, kun taas useimmilla ohjelmointikielillä asian voi ilmaista vain yhdellä tai kahdella tavalla, esim. "codice_1", tai "codice_2".


title: Ohjelmointikieli

text:
C-kielessä vaihtoehtoja on runsaasti, sillä kokonaislukumuuttujan arvoon voi lisätä yhden neljällä eri tavalla:
Erillisinä lauseina näiden merkitys on aivan sama eli muuttujan arvon kasvattaminen yhdellä, mutta lausekkeen osana viimeisen rivin merkitys poikkeaa aiemmista. Kolme ylintä palauttaa lausekkeen osana ollessaan muuttujan uuden arvon, kun alin palauttaa vanhan, vaikka kasvattaakin itse muuttujan arvoa.


title: Ohjelmointikieli

text: Jos kielessä on monia vaihtoehtoisia toimintoja, kaikki ohjelmoijat eivät välttämättä tunne niistä kaikkia harvinaisempia ja voivat jättää käyttämättä tilanteeseen parhaiten sopivaa piirrettä.


title: Ohjelmointikieli

text: Ohjelmointikieliä on suunniteltu lukuisiin eri tarkoituksiin ja niitä voi arvioida eri tavoilla. Tärkeitä tavoitteita ohjelmointikielen suunnittelussa ovat muun muassa luettavuus, kirjoitettavuus ja yleinen yksinkertaisuus - eli kuinka hyvin kerran kirjoitetusta ohjelmasta saa selvää joku muukin kuin alkuperäinen ohjelmoija. Toisissa kielissä painotetaan lähdekoodin selkeyttä (Java) ja toisissa ilmaisuvoimaa (Perl), jälkimmäisessä selkeyden kustannuksella. Tietokoneiden alkuaikoina ohjelmointikielten ja kääntäjien kehityksessä pääpaino oli tukea mahdollisimman tehokkaasti laiteresursseja hyödyntävän konekielen tuottamista (C), mutta noin 1970-luvulta alkaen ohjelmiston elinkaareen alettiin kiinnittää enemmän huomiota kun toimitettujen ohjelmien ylläpito alkoi nousta merkittäväksi kustannustekijäksi ja liiketoiminnaksi. Samalla kääntäjät kehittyivät niin tehokkaiksi, että lähdekoodin manuaalisen optimoinnin merkitys vähentyi, lukuun ottamatta nopeuskriittisiä reaaliaikasovelluksia, digitaalista signaalinkäsittelyä, laiteajureita ja usein ajettavia algoritmeja.


title: Ohjelmointikieli

text: Eri kielten ominaisuudet eroavat toisistaan muun muassa kontrollirakenteiden, tietotyyppien, ilmaisuvoiman, abstraktiotason ja turvallisuuden suhteen. Turvallisuuteen kuuluvat muun muassa tyyppitarkistukset ja virhetilanteiden hallinta.


title: Ohjelmointikieli

text:
Ohjelmointikielet voidaan jaotella eri ryhmiin kielen paradigman ja toisaalta ohjelmointimallin mukaan:
Ohjelmointikielet voivat toteuttaa useaa paradigmaa eli ovat "moniparadigmaisia". Esimerkiksi C++ on moniparadigmainen kieli.


title: Ohjelmointikieli

text: Alla olevassa listassa on joukko tunnetuimpia ohjelmointikieliä. Todellisuudessa niitä on satoja tai jopa tuhansia, mutta erityisesti teollisuudessa käytetään vain muutamaa kymmentä (jos johdannaisia ei lasketa mukaan).


title: Tietokoneohjelma

text: Tietokoneohjelma (usein lyhyesti vain ohjelma) on joukko ennalta laadittuja käskyjä, joita seuraten tietokone suorittaa sille valmistellun tehtävän. Useasta ohjelmasta koostuvaa yhtenäistä kokonaisuutta voidaan kutsua myös "ohjelmistoksi". Tietokoneohjelman tekemistä kutsutaan ohjelmoinniksi.


title: Tietokoneohjelma

text: Tietokoneohjelmalla voidaan käytännössä tarkoittaa seuraavia asioita:Ohjelmien koot vaihtelevat suuresti. Yleinen tapa verrata ohjelmien kokoa on laskea lähdekoodin rivien lukumäärä. Lyhin mielekäs ohjelma voi olla yhden rivin mittainen, kun taas suurimmat ohjelmistot ovat miljoonia rivejä pitkiä.


title: Tietokoneohjelma

text: Tavallisesti ohjelmat käsittelevät niille syötettyä tietoja ja tuottavat siitä halutun lopputuloksen. Harvinaisempaa on, että lähtötietoja ei anneta, mutta tämäkin on mahdollista esimerkiksi laskettaessa piille likiarvoa.


title: Tietokoneohjelma

text: Varhaiset ohjelmat olivat pitkälti muotoa lue syöte, tee laskenta, tulosta tulokset. Tämäntyyppiset ohjelmat sopivat hyvin eräajotyyppiseen käsittelyyn, jossa etukäteen valmistellaan syöttötiedot ja itse ohjelman ajo tehdään myöhemmin. Nykyohjelmista vain harvat ovat tätä tyyppiä. Useimmat pöytätietokoneiden ohjelmat ovat interaktiivisia, jolloin ohjelma vastaa käyttäjän tekemiin syötteisiin saman tien. Koska seuraava syöte voi riippua ohjelman antamasta vastauksesta, ero perinteiseen ohjelmaan on suuri.


title: Tietokoneohjelma

text: Varsinaisten tietokoneiden lisäksi ohjelmia on myös monissa laitteissa, kuten matkapuhelimissa, viihde-elektroniikan laitteissa ja kodinkoneissa. Tällaisia laitteita kutsutaan sulautetuiksi järjestelmiksi, koska ohjelma ja laitteisto muodostavat käyttäjän kannalta kiinteän kokonaisuuden. Sulautetuissa järjestelmissä ohjelmat ovat usein "reaktiivisia", mikä ohjelman rakenteen kannalta vastaa interaktiivisuutta, mutta laskentaan tulevat tiedot voivat olla lähtöisin käyttäjän lisäksi myös oheislaitteilta, antureilta tai toisista ohjelmista. Esimerkki ohjelmistosta, joka on sekä interaktiivinen että reaktiivinen, on vaikkapa tulospalveluohjelmisto, jolla käyttäjä voi kysyä eri sarjojen tai kilpailijoiden tilannetta (interaktiivisuus), ja jossa tilanne päivittyy muualta kuten väliaikapisteiltä tai maaliviivalta tulevien tietojen mukaan (reaktiivisuus).


title: Tietokoneohjelma

text: Immateriaalioikeuden kannalta ohjelmat kuuluvat tekijänoikeuksien piiriin. Immateriaalioikeuksien kannalta mielenkiintoisia ovat laajalle levinneet vapaat ohjelmistot.


title: Tietokoneohjelma

text: Tietokoneohjelmalla ei olisi juurikaan käyttöä, mikäli se ei pystyisi kommunikoimaan millään tavalla ympäristönsä kanssa. Tämän vuoksi jokaiseen tietokoneohjelmaan liittyy ulkoisia rajapintoja, joiden avulla ohjelma voi kommunikoida ympäristönsä kanssa. Esimerkiksi lämpömittariin liitetty anturi voi lähettää väyläsignaalin, jonka antaman arvon perusteella tietokoneohjelma voi ohjata rakennuksen lämpötilaa.


title: Tietokoneohjelma

text: Tietokoneohjelman ohjaama tai tietokoneohjelmaa ohjaava ympäristö voi koostua oheislaitteista tai muista tietokoneohjelmista. Koska erilaisia ympäristöjä voi olla teoriassa rajaton määrä, ohjelmien tarvitsemia ulkoisia rajapintoja on pyritty standardoimaan. Mitä vakiintuneempi ulkoinen rajapinta on, sitä useampi tietokoneohjelma sitä pystyy käyttämään ja sitä kestävämpi hyöty rajapinnasta saavutetaan. Tietotekniikan suurimmat kehitysaskeleet ovatkin usein olleet ulkoisten rajapintojen onnistuneita vakiintumisia, esimerkiksi mikroprosessorien käskykannan vakiintuminen tai käyttöjärjestelmien toimintaperiaatteiden yhtenäistyminen.


title: Tietokoneohjelma

text: Tietokoneohjelman kommunikointi ympäristön kanssa voi tapahtua synkronisesti tai asynkronisesti. Lisäksi ohjelma voi sallia tietyn ulkoisen tapahtuman keskeyttää itsensä. Vaihtoehtoisesti ohjelma voi aika-ajoin tarkkailla ulkoista maailmaa lukemalla ulkoisen rajapinnan kautta tilatietoa.


title: Tietokoneohjelma

text: Fyysisten laitteiden ohjaamista varten tietokoneiden prosessoreissa on määriteltynä mekanismeja, joiden avulla ohjelma voi kirjoittaa tai lukea tietoa mikroprosessorin suorittimen ulkopuolelta. Konekielen tasolla 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. Tietokoneohjelmien rakentamista helpotetaan siten, että nämä palvelut abstraktoidaan käyttöjärjestelmän, laiteajureiden tai sovelluskirjastojen (API) avulla siten että ohjelman kirjoittajan ei tarvitse ymmärtää ulkoisten palveluiden tai laitteistojen sisäistä toimintaa.


title: Tietokoneohjelma

text: Tietokoneohjelmille ulkoisia rajapintoja tarjoavat muun muassaKäyttöjärjestelmä, laitteistoajurit, sovelluskehitysympäristöt, sovelluskirjastot ja komponentit ovat yleisnimiä tiettyihin tarkoituksiin erikoistuneista tietokoneohjelmista. Ohjelma käyttää tarvitsemiaan palveluita ajoympäristöstä ja sen abstraktiotasosta riippuen. Alimmalla tasolla oleva mikroprosessori tarjoaa tietokoneohjelmille palveluita, joiden avulla ne voivat aikaansaada fyysisiä muutoksia ympäristössään, esimerkiksi vaihtaa väylän signaalin tason toiseksi.


title: Tietokoneohjelma

text: Kukin rajapinnan toteuttava ohjelma tai laitteisto voi rajoittaa oikeuksia ulkoisten palveluiden käyttöön. Tietotekniikassa monet turvallisuuskysymykset liittyvät ulkoisten rajapintojen oikeuksien hallintaan.


title: Tietokoneohjelma

text: Koska eri suorittimien konekielet ovat erilaisia, ei konekielimuodossa olevaa ohjelmaa voi ajaa kaikissa tietokoneissa. Joskus myös samasta suorittimesta on hieman eri versioita, ja tällöin yleensä on pyritty siihen, että uudempi versio pystyy ajamaan vanhemman suorittimien konekieltä, mutta ei toisin päin. Käännettyjen ohjelmien siirrettävyyttä rajoittaa siis suorittimen ymmärtämä konekieli. Tosin tämä ei ole ainoa rajoittava tekijä. Kohdesuorittimen lisäksi kääntäjä tietää käytössä olevan käyttöjärjestelmän tarjoamat palvelut ja käytännöt. Koska nämä eroavat eri käyttöjärjestelmissä, toiselle käyttöjärjestelmälle tehtyä konekielistä ohjelmaa ei voi ajaa tietokoneessa, vaikka suoritin olisikin sama.


title: Tietokoneohjelma

text:
Tilanne muuttuu, jos käytetään tulkkeja. Tällöin tarvitaan kyseiselle konekielelle ja käyttöjärjestelmälle toteutettu ohjelmointikielen tulkki, mutta sitten tämä tulkki pystyykin suorittamaan lähdekielimuodossa ohjelmaa riippumatta siitä, mihin ympäristöön se on alun perin tehty. Tosin
tulkkikin voi tarjota käyttöjärjestelmästä riippuvia palveluita, mutta jos ohjelmoija on osannut
välttää näitä, ei siirrettävyysongelmaa pitäisi tulla.


title: Tietokoneohjelma

text: Ohjelmointikielellä kirjoitettu ohjelma voidaan myös kääntää uudelleen eri suoritintyypeille ja käyttöjärjestelmille. Periaatteessa ohjelmien pitäisi olla helposti siirrettäviä tällä tasolla, mutta käytännössä ohjelmoija voi tehdä moniakin sellaisia ratkaisuja, jotka rajoittavat siirrettävyyttä. Näitä ovat muun muassa oletukset kokonaislukujen arvoalueesta tai liukulukujen tarkkuudesta. Ohjelmoija voi myös käyttää käyttöjärjestelmäkohtaisia operaatioita.


title: Tietokoneohjelma

text: Edellä olevien kahden vaihtoehdon ongelmien eli tulkkaamisen hitauden ja käännetyn ohjelman huonon siirrettävyyden takia käytetään joissain tilanteissa niin sanottua välikoodia. Tällöin ohjelma on jo käännetty, mutta ei konekielelle, vaan eräänlaiseen välimuotoon, jota kohdekoneessa oleva välikoodin tulkki tulkitsee. Tätä tekniikkaa voidaan käyttää esimerkiksi verkkosovelluksia ohjelmoitaessa, jossa käyttäjän koneen ominaisuuksia ei voida tietää etukäteen (katso myös Java-kieli).


title: Tietokoneohjelma

text: Ohjelmien siirrettävyyttä voivat rajoittaa myös sen tarvitsemat resurssit kuten muistin määrä, suorittimen nopeus tai jokin erityinen oheislaite. Esimerkiksi DVD:lle tallentava ohjelma on käyttökelvoton ilman laitetta, joka osaa tehdä varsinaisen DVD-levylle kirjoittamisen.


title: Tietokoneohjelma

text: Hankkiessaan ohjelmaa käyttäjän on tiedettävä käyttökoneen suoritinarkkitehtuuri ja käyttöjärjestelmä. Monet vapaat tai valmiiksi käännetyt ohjelmat löytyvät arkistokoneilta näiden tietojen mukaan lajiteltuina.


title: Tietokoneohjelma

text: Oikein toimivan ohjelman ohjelmointitavalla ei ole merkitystä käyttäjälle. Valitettavasti ohjelmien täydellinen testaaminen on käytännössä (ja joissain tapauksessa jo teoriassakin) mahdotonta, joten aivan yksinkertaisimpia ohjelmia lukuun ottamatta ohjelmissa on oletusarvoisesti jokin havaitsematon virhe. Siitä huolimatta ohjelma voi olla hyvinkin käyttökelpoinen, sillä virhe voi esiintyä hyvin harvoin tai niin pieni, että siitä ei ole käytännön haittaa.


title: Tietokoneohjelma

text: Eri käyttötarkoitukseen tehtyjen ohjelmien luotettavuusvaatimukset ovat hyvin erilaisia. Interaktiivinen julkaisuohjelma voi olla harmillinen toimiessaan väärin, mutta virheestä ei silti seuraa välittömästi vaaratilanteita tai vastaavaa. Sen sijaan vaikkapa lentokoneen ohjausohjelmiston virhe voisi pudottaa koneen taivaalta.


title: Tietokoneohjelma

text: Osassa ohjelmia on oikean toiminnan lisäksi tärkeää ohjelman oikea ajoitus. Jos ohjelma toimii väärään aikaan, siis joko liian aikaisin tai liian myöhään, seurauksena voi olla järjestelmän täysi toimimattomuus. Esimerkiksi matkapuhelinliikenteessä yksikin väärään aikaan lähettävä puhelin voi pimentää koko tukiaseman alueen liikenteen. Ohjelmia, joissa aikatekijä on osa ohjelman oikeellisuutta, kutsutaan reaaliaikaohjelmiksi.


title: Tietokoneohjelma

text: Yksi ohjelmien toimimattomuusongelma liittyy siihen, että niiden ajoympäristöä vaihdetaan. Syynä voi olla esimerkiksi käyttöjärjestelmän tai dynaamisen ohjelmakirjaston päivittäminen uuteen versioon.


title: Tietokoneohjelma

text:
Ohjelmien sovittamisella tarkoitetaan sitä, että ohjelman toimintaa voidaan muuttaa käyttöpaikan tarpeiden mukaan. Sovittaminen voi olla tehty käännösvaiheessa, mutta parhaimmillaan sama ohjelma toimii eri tavalla eri käyttöpaikoissa. Tiedot asetuksista on tällöin talletettu joko ohjelma- tai käyttäjäkohtaiseen
alustustiedostoon.


title: Tietokoneohjelma

text:
Mikäli sovittaminen ylittää kulttuuri- ja kielirajoja, puhutaan lokalisoinnista. Lokalisoinnilla voidaan vaihtaa ohjelman käyttöliittymän kieli toiseksi,
vaihtaa kellonajan tai päivämäärän esitystapaa, päättää onko käytössä desimaalipiste ja -pilkku, muuttaa käytössä olevia värejä ja niin edelleen.


title: Orion

text: Orion voi tarkoittaa ainakin seuraavia asioita:


title: Ohjelmistotuotanto

text: Ohjelmistotuotanto on yhteisnimitys niille työnteon ja työnjohdon menetelmille, joita käytetään, kun tuotetaan tietokoneohjelmia sekä monista tietokoneohjelmista koostuvia tietokoneohjelmistoja. Laajasti ymmärrettynä ohjelmistotuotanto kattaa kaiken tietokoneohjelmistojen valmistukseen liittyvän prosessinhallinnan sekä kaikki erilaiset tietokoneohjelmien valmistamisen menetelmät. Ohjelmistotuotantoon kuuluu siis periaatteessa mikä tahansa toiminta, joka tähtää tietokoneohjelmien tai -ohjelmistojen valmistukseen. Tarve valmistukseen tulee asiakkaalta tai ohjelman tuottaja tekee markkinointitutkimuksen ja päättelee tarpeen ohjelmistolle.


title: Ohjelmistotuotanto

text: Jotta ohjelmistojen valmistusta voitaisiin käsitellä järjestelmällisesti, ohjelmistotuotannossa on pyritty mallintamaan ohjelmistojen valmistusprosessia niin sanotun elinkaarimallin mukaisesti. Elinkaarimallissa ohjelmiston valmistus pyritään näkemään mahdollisimman laajana, aikaan sidottuna prosessina, jossa ohjelmiston varsinainen tekninen valmistus on vain pieni – joskin äärimmäisen tärkeä osa – kokonaisketjua.


title: Ohjelmistotuotanto

text: Ohjelmistotuotannossa tieteenhaarana tutkitaan myös ohjelmien rakenteellisia ominaisuuksia kuten dokumentointia, versionhallintaa, sekä jäljitettävyyttä. Tutkimuksen kohteena ovat myös erilaiset ohjelmistojen tukiprosessit, kuten määrittelyprosessi, ylläpitoprosessi ja projektinhallinta. Myös erilaisia toteutus- ja suunnittelumenetelmiä, joilla itse tuotannon laatua voidaan tehostaa, tutkitaan.


title: Ohjelmistotuotanto

text: Ohjelmistotuotantoon kuuluvat myös erilaiset laatujärjestelmät, joita käytetään erityisesti yrityksissä dokumentoimaan yrityksen toimintatapoja. Laatujärjestelmän tavoitteena on dokumentoida ja ottaa käyttöön hyväksi havaitut toimintatavat, jotka parantavat yrityksen toimintaprosessin laatua.


title: Ohjelmistotuotanto

text: Kaupallista ohjelmistokehitystä tehdään yleensä projektityönä. Toisaalta useiden ohjelmistojen kehitys ja ylläpito jatkuvat koko niiden elinkaaren ajan ilman ennakoitavaa päätepistettä. Ylläpitotyökin voidaan jakaa määrämittaisiksi toisiaan seuraaviksi projekteiksi. Projektin toteuttamista ohjaavat ohjelmistoprosessit, jotka kuvaavat toistuvan tavan toteuttaa ohjelmistoprojekteja. Prosessit vaihtelevat suuresti laajuudeltaan ja sen suhteen, millaisia menettelytapaohjeita ne antavat. Noudatettava prosessimalli voi olla kevyt, jos kehityshankkeet ovat pieniä ja niiltä odotetaan suurta kustannustehokkuutta. Raskaita prosesseja käytetään toimialoilla, joissa ohjelmistoilta odotetaan poikkeuksellisen suurta luotettavuutta.


title: Ohjelmistotuotanto

text: Ensimmäiset digitaaliset tietokoneet tulivat käyttöön 1940-luvulla. Näiden koneiden suorittamat tehtävät määriteltiin muuttamalla koneiden sähköisiä kytkentöjä. Von Neumannin arkkitehtuurin mukaiset ohjelmoitavat tietokoneet kehitettiin 40-luvun lopulla, jolloin myös ensimmäiset tietojärjestelmä- ja ohjelmistokehityshankkeet käynnistettiin. Ennen ensimmäisten ohjelmointikielten saapumista 1950-luvun puolivälissä ohjelmat kehitettiin konekielellä ja ne olivat sidottuja laitteisiin, joille ne oli kehitetty.


title: Ohjelmistotuotanto

text: Ohjelmistotuotanto on kohdannut 1960-luvun loppupuolella niin sanotun "ohjelmistokriisin". Sillä tarkoitettiin tilannetta, jossa pula ohjelmoijista ja selkeiden systeemityömenetelmien puuttuminen johti heikkoon tuottavuuteen, paljon ohjelmointivirheitä sisältäviin ohjelmiin ja kustannusten karkaamiseen käsistä. 1900-luvun loppupuolella alkanut tietokoneohjelmien merkityksen ja lukumäärän kasvu ovat tuoneet julkisuuteen lukuisia tietokoneiden aiheuttamia virheitä, jotka ovat lähes aina olleet seurausta inhimillisistä erehdyksistä: tietokoneohjelmien lähdekoodeissa on ollut virheitä tai ohjelmien käytettävyys on ollut huono. Ohjelmistotuotanto tutkimusalueena on kehitetty vastaamaan kysymykseen, miten ohjelmistoja tulisi valmistaa niin, että niiden laatu olisi mahdollisimman korkea. Ohjelmiston laatu pitää tässä yhteydessä käsittää ohjelmiston tavoiteltavana toimintana, mikä ei ole sama asia kuin lähdekoodin tai käyttöliittymän täydellinen virheettömyys.


title: Ohjelmistotuotanto

text: Ohjelmiston tai ohjelman tuottaminen on laaja ja monimutkainen tehtävä. Onnistuneen tuotannon varmistamiseksi kehitystyö jaetaan osiin. Seuraavaan osaan ei voida edetä, ennen kuin edellinen osa on tarpeellisin osin saatu valmiiksi. Tätä ositusta ohjelmien suunnittelussa sanotaan vaihejakomalliksi.


title: Ohjelmistotuotanto

text: Tässä perinteisessä prosessissa vaiheet soljuvat eteenpäin kuin vesiputous tasolta toiselle (vain yhteen suuntaan), ja siksi tätä prosessia kutsutaankin "vesiputousmalliksi". Ajatuksena on, että kukin vaiheista tuottaa "dokumentin" tai joukon dokumentteja, jotka toimivat syötteenä seuraavalle vaiheelle. Esimerkiksi vaatimusanalyysi määrää ja asettaa vähimmäisvaatimukset ja rajat toiminnalliselle määrittelylle, jotta määrittelyn lopussa voidaan tarkastaa, vastaako määritelty ohjelmisto vaatimusanalyysin mukaista järjestelmää. Toisaalta taas toteutusvaiheessa (koodaus) teknisen määrittelyn pitäisi kattaa ne tarvittavat tiedot, joiden perusteella ohjelmisto voidaan kirjoittaa.


title: Ohjelmistotuotanto

text:
Vesiputousmallissa suurin vaikeus on suunnitella koko tuote kerralla toteutuskuntoon.
Käytännössä tuotantoprosessi on usein "iteratiivinen", eli suunnittelua ja toteutusta tehdään pienimmissä osissa ja prosessia toistetaan. Näin ohjelmisto kehittyy "inkrementaalisesti" eli koko ajan kasvaen kohti lopullista muotoaan. Tästä käytännön sanelemasta tarpeesta ovat syntyneet useat iteratiiviset prosessimallit, kuten Rational Unified Process, spiraalimalli tai niin sanottu ketterä kehitys.


title: Ohjelmistotuotanto

text: Kun vesiputousmalliin yhdistetään joka vaihetta vastaava testaus (esimerkiksi vaatimusmäärittelystä hyväksymistestaus) aikajanalle syntyy niin kutsuttu "V-malli", jonka vasen sakara kuvastaa prosessin vaiheita ja oikea kunkin testausta. Prosessia, joka toistaa alemman tason suunnittelua ja toteutusta, kutsutaankin "W-malliksi", jossa keskisakara kuvastaa iteraatiota.


title: Ohjelmistotuotanto

text: Vesiputousmalli kuvastaa ohjelmistotuotantoa teoreettisella tasolla hyvin, mutta sen soveltuvuudesta käytännön ohjelmistotuotantoon ollaan erimielisiä. Vesiputousmallin tärkein ansio onkin antaa puitteet, joita myös iteratiiviset prosessit noudattavat, vaikkakin huomattavasti tiheämmissä sykleissä ja kevyemmillä menetelmillä. Voidaankin sanoa, että kaikki ohjelmistotuotantohankkeet noudattavat jollain tasolla vesiputousmallia, mutta eivät välttämättä toteuta kaikkia sen vaiheita dokumentoiduilla menetelmillä.


title: Ohjelmistotuotanto

text: Prototyyppimenetelmässä ohjelman kehittäminen etenee spiraalimaisesti. Prototyyppimallissa ulkoasu (käyttöliittymä) rakennetaan ensin ja vasta sitten spiraalimaisesti laajenevin kehin tuotteen liiketoiminnallinen kerros (bisneslogiikka) sekä tietokantakerros. Menetelmän etuna asiakas saa nopeasti nähtäväksi tuotteen lopullisen ulkoasun. Asiakas voi jo tässä vaiheessa kertoa, jos kehittelijät ovat toteuttaneet jotain toisin kuin hän on halunnut. Mahdolliset muutokset on vielä helppo ja kustannuksiltaan edullista ja työmäärältään vähäistä tehdä tässä vaiheessa. Prototyyppimenetelmä on hyvä myös silloin kun (asiakkaan) vaatimukset muuttuvat usein.


title: Ohjelmistotuotanto

text: Kun asiakas on hyväksynyt kehityskierroksen esitetyn prototyypin, kehittelyä jatketaan spiraalin laajenevalla kehällä. Syvennetään ja laajennetaan suunnittelua. Kun kehitysprosessi on kiertänyt kokonaisen ympyrän, seuraavaa prototyyppiä esitellään asiakkaalle. Näin jatketaan iteratiivisesti, kunnes päädytään tuotteen lopulliseen kehitysversioon. Kun asiakas on hyväksynyt tuotteen, se on valmis.


title: Ohjelmistotuotanto

text: RUP ("Rational Unified Process") perustuu peräkkäisiin iteraatioihin, joista jokainen iteraatio suunnitellaan vesiputousmallin mukaisesti. Kehittäminen jakautuu neljään vaiheeseen: aloitus, tarkennus, rakennus ja käyttöönotto.


title: Ohjelmistotuotanto

text: Nopeasti muuttuvassa ympäristössä ennalta suunnittelun vaikeus on noussut suurimmaksi esteeksi perinteiselle vesiputousmallille. Iteratiivinen prosessi antaa mahdollisuuden muuttaa projektin kulkua ja suuntaa hallitusti kesken prosessin. Ohjelmisto ei useinkaan tule kerralla valmiiksi, ja monet ohjelmistotuotteet jatkavat kehitystään julkaisun jälkeenkin. Nopeimmin kehittyvillä ohjelmistotuotannon aloilla ja etenkin pienemmissä ohjelmistoprojekteissa on omaksuttu niin kutsuttuja ketteriä ohjelmistoprosesseja, jotka korostavat muutosten hallintaa ja nopeita iteraatiosyklejä. Periaate on suunnata ja korjata kehittelyä mahdollisimman aikaisessa vaiheessa. Virheellistä kehitystyötä on tehty silloin vasta mahdollisimman vähän ja kehittelyn resurssien (muun muassa aika- ja kustannusresurssit) hukkaaminen on mahdollisimman vähäistä.


title: Ohjelmistotuotanto

text: Yksi uusimpia ketteriä menetelmiä on Scrum.


title: Ohjelmistotuotanto

text: Muita ohjelmankehitysmenetelmiä on muun muassa Suihkulähdemalli. Menetelmässä ohjelma koodataan suoraan ja sen jälkeen luodaan dokumentointi. Varsinaista mallinnusta ja suunnittelua ei tässä menetelmässä ole. Suunnittelu tapahtuu koodaajan mielessä. Suihkulähdemalli soveltuu pienien (apu)ohjelmien tekoon. Laajempien ohjelmistojen suunnittelun hallinta ei onnistu suihkulähdemenetelmällä.


title: Ohjelmistotuotanto

text: EVO-mallissa rakennetaan ensin ydinjärjestelmä, jota kehitellään edelleen seuraavissa projektin iteraatioissa.


title: Ohjelmistotuotanto

text: Vaikka yllä kuvatut vaiheet ovat enemmän tai vähemmän osana kaikkea ohjelmistotuotantoa, niin niitä voidaan soveltaa eri tavoin. Usein esitetty (ideaali)malli on nk. "vesiputousmalli", missä kukin vaihe tehdään loppuun ja hyväksytetään ennen seuraavaan siirtymistä. Mallin heikkoutena on sen "utopistisuus" ainakin jossain määrin, ja lisäksi vesiputousmallissa syntyvä lopputuote tulee asiakkaan nähtäväksi vasta projektin loppuvaiheessa. Lisäksi havaitun virheen korjaaminen voidaan joutua tekemään iteratiivisesti edellisiin vaiheisiin. Se on aikaavievä ja kallis prosessi.


title: Ohjelmistotuotanto

text: "Prototyyppimalli" perustuu siihen ajatukseen, että suuri osa projektiin liittyvistä kysymyksistä ja ongelmista selviää vasta, kun tuote on ensimmäisen kerran tehty. Mallissa tehdäänkin alussa hyvin karkea ja erittäin paljonkin yksinkertaistettu malli nopeasti valmiiksi, johon myös asiakas voi tutustua. Prototyypin kautta asiakas osaa esittää tarkemmin vaatimuksiaan havaitessaan konkreettisesti, minkä tyyppinen myöhemmin syntyvä lopullinen tuote olisi. Toisaalta myös kehittäjät oppivat erinäisistä prototyypin valmistusvaiheessa esiintyneistä ongelmista ja rajoitteista, ja kykenevät siten kehittämään esimerkiksi paremman arkkitehtuurin lopulliseen versioon, joka tuotettaisiin esimerkiksi vesiputousmallin mukaisesti.


title: Ohjelmistotuotanto

text: Prototyyppimallissa suuri kiusaus voi olla käyttää jo toteutettuja ohjelmistokomponentteja lopputuotteessa. Näin ei kuitenkaan tule tehdä, koska silloin menetetään prototyyppimallin perusidea.


title: Ohjelmistotuotanto

text: Myös muita yleisiä malleja on kehitetty, kuten "inkrementaalinen malli", jossa ohjelmisto rakennetaan vesiputousmallin mukaisesti siten, että 1. versio on hyvin yksinkertainen toiminnoiltaan. Ensimmäiseen versioon on siis toteutettu vain kaikkein kriittisimmät tai eniten toivotuimmat toiminnot. Seuraavat sukupolvet lisäävät aina uusia ominaisuuksia. Jos jokainen sukupolvi sisältää vaiheet aina vesiputousmallin alusta asti, on kyseessä "iteratiivinen malli". Tällöin sukupolvea kutsutaan iteraatioksi. Niin sanotussa "ketterässä ohjelmistokehityksessä" uusia versioita tuotetaan usein, ja uusien ominaisuuksien tärkeysjärjestys arvioidaan uudestaan kunkin kierroksen jälkeen.


title: Ohjelmistotuotanto

text: Ohjelmien suunnittelu voidaan ajatella spesifikaatioiden (määritysten) luomisena. Suunnittelussa edellinen vaihe luo spesifikaation, joka on syötteenä seuraavalle vaiheelle. Spesifikaatiot voidaan jaotella formaaleiksi ja informaaleiksi spesifikaatioiksi. Formaalit menetelmät ovat jäykkiä, mutta niiden käsittely on helppoa ja käsittely voidaan koneellistaa. Informaalien menetelmien ilmaisuvoima on hyvä, mutta käsittely monimutkaisempaa.


title: Ohjelmistotuotanto

text: Formaalit menetelmät käyttävät matemaattisen eksakteja määritelmiä luotaessa, ja niiden tavoitteena on tuotettavan ohjelmiston oikeellisuus, esimerkiksi todistamalla jokin ohjelma tai sen käyttämä algoritmi oikein toimivaksi. Niissä ongelmana on kuitenkin niiden toteuttamisessa vaadittava matemaattinen pätevyys, sekä asiakkaiden suhteen helposti vaikeaselkoisuus. Toisaalta voidaan myös ajatella, että ongelma ohjelmien käsitettävyydestä vain siirtyy matematiikan puolelle – vaikka ohjelma olisikin todistettu oikeaksi, niin ei ole mitenkään itsestään selvää, että todistamisvaiheessa ei olisi virhettä, ja pitkästä matemaattisesta todistuksesta virheen etsiminen voi olla aivan yhtä vaikeaa (tai vaikeampaa) kuin sen itse ohjelmakoodista etsiminen.


title: Ohjelmistotuotanto

text: Ohjelmiston elinkaari jakautuu kahteen pääluokkaan: kehitys ja ylläpito. Ohjelman kehittelyyn kuuluvat vaatimusmäärittely, toiminnallinen määrittely, arkkitehtuurisuunnittelu, toteutus, testaus, julkistus ja käyttöönotto.


title: Ohjelmistotuotanto

text: Ennenaikainen-Alpha on teknologianäyte ohjelmiston yhdestä tai kahdesta ydintoiminnosta. Vaihe koostuu ennen kaikkea toimintojen suunnittelusta. Alpha on ohjelmiston kehityksen ensimmäinen vaihe, jonka aikana ohjelmisto suunnitellaan pääpiirteissään ja jonka aikana ohjelmiston toiminnot luodaan. Beta on vaihe, jonka aikana ohjelmiston toiminnallisuus on suunniteltu loppuun. Vaiheen aikana on tarkoitus viimeistellä toiminnot ja tuottaa ohjelmisto tilaan, jossa se kykenee toimimaan käytännön tilanteessa omillaan.


title: Ohjelmistotuotanto

text: Tämän vaiheen tarkoituksena on selvittää ne ohjelmistotuotteelle asetetut tavoitteet, mitkä valmiin järjestelmän tulisi täyttää. Vaatimusanalyysin tarkoituksena ei ole ottaa millään tavoin kantaa siihen, "miten" nämä tavoitteet saavutetaan. Näin toimitaan siksi, että on edullisinta siirtää toteutusmenetelmiin liittyvät päätökset mahdollisimman myöhäiseen vaiheeseen. Tyypillisesti ohjelmiston tekninen toiminta muuttuu sen elinkaaren myötä monistakin syistä, ja muutosten tekeminen on sitä kalliimpaa taloudellisesti, mitä aikaisempaan vaiheeseen ne joudutaan kohdistamaan.


title: Ohjelmistotuotanto

text: Toisinaan vaatimuksiin voi toki kuulua "rajoituksia", jotka esimerkiksi sitovat toteutuksen tiettyyn ohjelmointikieleen esimerkiksi asiakkaan erityistarpeiden vuoksi.


title: Ohjelmistotuotanto

text: Esimerkiksi ohjelmistotuotteelle asetettuja vaatimuksia voisivat olla seuraavat: ohjelmiston pitää kyetä numeeriseen sekä symboliseen laskentaan ja lukemaan käyttäjältä tarvittavat syötteet. Nyt huomattavaa on, että tässä vaatimuksessa ei ole kuvattu esimerkiksi sitä, millaisessa muodossa syöte tulee antaa, onko järjestelmä graafinen vai ei, pitääkö tiloja kyetä tallentamaan jne. Yksi suurimpia vaikeuksia vaatimusanalyysissä (kuin myös muissa vaiheissa) onkin huomata se, onko saatujen tietojen määrä riittävä, jotta seuraavaan vaiheeseen voidaan edetä. Sen vuoksi kukin vaiheista yleensä hyväksytetäänkin loppuvaiheessa, yleensä vähintäänkin ensimmäiset vaiheet myös asiakkaan kesken.


title: Ohjelmistotuotanto

text: Vaatimusanalyysi tulee tehdä tiiviissä yhteistyössä ohjelmiston asiakkaan kanssa. Analyysi ei juurikaan muutu, vaikka asiakas olisi kuvitteellinen (esimerkiksi siksi, että tuotteella ei ole etukäteen tiedossa asiakasta). Analyysissä on tärkeää osata sivuuttaa turhat toteutustekniset vaatimukset – esimerkiksi asiakas saattaa toivoa laitteeseen kymmentä eri painonappia, vaikka parempi olisi nappien toiminnallisuudet toteuttava valikko.


title: Ohjelmistotuotanto

text: Vaatimusanalyysi tuottaa lopputuloksenaan dokumentin "asiakasvaatimukset".


title: Ohjelmistotuotanto

text: Järjestelmäsuunnittelussa tarkastellaan järjestelmien välistä työnjakoa ja integrointia sekä laitteiston ja ohjelmiston välistä työnjakoa. Järjestelmäsuunnittelussa voidaan päättää hajauttaa eri ohjelmistoja eri laitteille tai asentaa samaa ohjelmistoa usealle laitteelle.


title: Ohjelmistotuotanto

text: Järjestelmäsuunnittelua voidaan tehdä esimerkiksi kahdella tasolla:


title: Ohjelmistotuotanto

text: Järjestelmäsuunnittelu on tavallinen vaihe räätälöityjen ohjelmistojen tuotannossa. Valmisohjelmien tuotannossa sitä ei yleensä tarvita.


title: Ohjelmistotuotanto

text: Ohjelmistosuunnittelu koostuu kahdesta vaiheesta. Näistä ensimmäinen on toiminnallinen määrittely. Siinä kuvataan kaikki järjestelmän toteuttamat toiminnot ja liitännät järjestelmän ulkopuolelle. Vaiheen tuotoksena syntyvä "määrittelydokumentti" kuvaa siis mitä kaikkea järjestelmällä voi tehdä sekä miten "käyttäjä" voi ne tehdä. Järjestelmä ei kuvaa sitä, miten toiminnot tulee "toteuttaa". Näin määrittelydokumentti kuvaa esimerkiksi tekstinkäsittelyohjelman eri näytöt, valikot ja niissä olevat asetukset ja kaikki käyttöliittymäkontrollit. Mikäli järjestelmä tuottaa tulosteita, niin määrittelydokumentin tulisi sisältää sekä visuaaliset että riittävät tekstuaaliset kuvaukset kaikista järjestelmän eri näytöistä.


title: Ohjelmistotuotanto

text: Ideaalinen määrittelydokumentti on niin kattava, että teknisessä suunnittelussa tai sitä seuraavissa vaiheissa ei ole enää missään vaiheessa epäselvää, että miten ohjelman tulee toimia kussakin tilanteessa, miten tulosteet ja syöte on muotoiltu jne. Vaikka tähän on käytännössä mahdotonta päästä, niin on kuitenkin havaittu, että siihen tulee pyrkiä.


title: Ohjelmistotuotanto

text: Toisaalta on myös tutkittu, että hyvä määrittelydokumentti ei saa olla liian vuolassanainen. 500 A4-sivua pitkä kaiken kattava määrittelydokumentti ohjelmasta, joka piirtää ainoastaan 2D-kuvaajia polynomifunktioista näytölle, on todennäköisesti aivan liian pitkä. Kuitenkin 100-sivuinen määrittelydokumentti mistään kunnollisesta tekstinkäsittelyohjelmasta on varmasti aivan liian lyhyt.


title: Ohjelmistotuotanto

text: Tyypillinen ohjelmistoalan ongelma on se, että määrittelydokumentteja ei jakseta kirjoittaa. Jonkinlainen vaatimusanalyysi (yleensä hyvin epämuodollinen) saatetaan tehdä, mutta sen jälkeen aletaankin heti koodata ohjelmaa. Ajatellaan, että määrittelydokumentin kirjoittamiseen menevä aika ei ole verrannollinen siitä saatavaan hyötyyn. Kuitenkin asia on juuri päinvastoin, koska asioita on paljon helpompi muuttaa luonnollisella kielellä kirjoitetusta dokumentista kuin ohjelmakoodista, ja suoraan koodia kirjoittavat huomaavat hyvin pian tekevänsä määrittelyä samaan aikaan kuin kirjoittavat ohjelmaa. Näin ohjelma muodostuu ad hoc -ratkaisujen varaan, ja isoista ohjelmista muodostuu rakenteellisesti hyvin vaikeaselkoisia ja sitä kautta erittäin virhealttiita rakennelmia.


title: Ohjelmistotuotanto

text: Laajojen ohjelmistojen suunnittelun hallinta helpottuu, jos ohjelmisto jaetaan erilaisiin kerroksiin. Yksi tunnettu malli on MVC-malli, jossa käyttöliittymä erotetaan muista osista. Etuna on se, että esimerkiksi käyttöliittymän muuttaminen on helpompaa kun muutokset tulevat vain siihen osaan ohjelmansuunnittelussa. Toinen tunnettu kerrosmalli on kolmitasomalli, jossa tasoina ovat käyttöliittymä, liiketoimintakerros (businesslogiikka) ja tietokantakerros (tiedon tallennus).


title: Ohjelmistotuotanto

text: Toiminnalliselle määrittelylle vastakohta on "tekninen määrittely". Tekninen määrittely eli arkkitehtuurisuunnittelu seuraa toiminnallisen määrittelyn jälkeen, ja siinä ei enää tehdä valintoja tai päätöksiä siitä, millaisia ominaisuuksia laitteessa on – sen tarkoituksena on kuvata ohjelmiston tai ohjelman tekninen arkkitehtuuri tarkasti, joskaan ei vielä ohjelmakoodina. Syötteenä sille toimii toiminnallinen määrittely, ja se kuvaa ne ohjelmistokomponentit, jotka toteuttavat määrittelyn vaatimat toiminnot.


title: Ohjelmistotuotanto

text: Tekniseen määrittelyyn sisältyy esimerkiksi käytetty ohjelmointikieli/kielet, ohjelmistokomponentit kuten kirjastot, ohjelmistokomponenttien rakenne ja keskinäinen hierarkia, käytetyt tietorakenteet ja niiden väliset sovellusrajapinnat jne.


title: Ohjelmistotuotanto

text: Arkkitehtuurisuunnittelussa voidaan käyttää hyväksi suunnittelumalleja (design patterns) . jotka ovat valmiita ratkaisuja suunnitteluongelmiin (tehtäviin). Niiden etuna on tehokkuus ja toimintavarmuus.


title: Ohjelmistotuotanto

text: Huomattavaa on, että ohjelmiston koosta ja monimutkaisuudesta riippuen dokumentti koostuu usean eri kerroksen kuvauksista. Esimerkiksi kompleksissa ohjelmistossa ensimmäisellä tasolla voi näkyä eri moduulit, mistä järjestelmä koostuu: palvelinprosessi, asiakasohjelmaclient-prosessit, tietovarastot sekä niiden liitynnät ympäristöön. Toisella tasolla kukin näistä komponenteista on pilkottu pienempiin osiin kuten luokkiin, ja niistä näkyy tarkemmin, mitä ulkoiset liitännät ovat (käytetty protokolla jne). Kolmannella tasolla on kuvattu luokkien metodit ja luokkamuuttujat, käytettyjen tietorakenteiden tyypit (merkkijono, kokonaisluku, liukuluku...) jne.


title: Ohjelmistotuotanto

text: Määrittelydokumentin valmistuttua toteutus voi alkaa. Toteutus käsittää lähinnä varsinaisen koodaamisen valitulla ohjelmointikielellä sekä tarvittavien oheiskomponenttien tuottamisen (käytetyt kuvat, äänet jne). Mikäli edelliset vaiheet on toteutettu kunnolla, niin toteutukseen menevä aika on noin 10–20 % koko ohjelmistoprojektiin käytetystä ajasta. Tämän vaiheen tuotoksena on siis ajettava ohjelmisto, mutta siinä on kuitenkin yleensä suhteellisen paljon toiminnallisia virheitä.


title: Ohjelmistotuotanto

text: Ohjelmankehitysympäristöissä toteutusvaihe voi olla puoliautomaattinen. Kehitysympäristö osaa kehittää luoduista suunnitelmista ohjelmakoodin rungon, jossa luokkakaaviosta on johdettu valmiit koodit luokille, luokan tietojäsenille sekä metodirungot parametreineen. Se nopeuttaa huomattavasti koodaajan työtä kun hänen pitää lisätä vain metodien toiminnallinen sisältö koodeihin.


title: Ohjelmistotuotanto

text: Alpha-testaus on ohjelmistokehityksen vaihe, jonka aikana tutkitaan luotujen toimintojen kykyä toimia oikein käytännön tilanteessa. Vaiheen aikana on tarkoitus kartoittaa myös ohjelmiston sisäinen koodi dokumentoituun muotoon. Beta-testausvaiheen aikana ohjelmistosta etsitään ja korjataan pois mahdolliset ohjelmointivirheet eli bugit, joita on saattanut aiheutua mahdollisista Beta-vaiheen aikana tehdyistä muutoksista. Beta-testaus on ohjelmistonkehityksessä eräs eniten aikaa vaativista vaiheista.


title: Ohjelmistotuotanto

text: Virheitä löytyy toteutuksen huolellisuudesta riippumatta käytännössä kaikista ohjelmistoista. Esimerkiksi yritykselle on erittäin tärkeää löytää virheet (ja korjata ne) itse sen sijaan, että asiakas löytää ne ja kertoo sitten huonoista kokemuksistaan muille.


title: Ohjelmistotuotanto

text: Vaikka testaus onkin osana kaikkea ohjelmistokehitystä, niin sen harteille ei pidä sälyttää vastuuta lopputuotteen hyvästä laadusta. Laatuajattelun on oltava mukana aivan ensimmäisestä vaiheesta alkaen, sillä tutkitusti testattaessa ei löydetä kuitenkaan käytännössä koskaan kaikkia virheitä, ja myös virheiden korjaaminen aiheuttaa usein uusia virheitä.


title: Ohjelmistotuotanto

text:
Testaukseen kuuluu muun muassa testausmenetelmien suunnittelu, erilaisten testidokumenttien sekä testipenkkien laatiminen.
Testitulosten mukaan ohjelmistoon tehdään tarvittavat muutokset – jos muutoksia pitää tehdä ylemmille tasoille kuten toiminnalliseen määrittelyyn, niin se on yleensä merkki koko projektin yli ulottuvasta heikosta laadusta.


title: Ohjelmistotuotanto

text: Siinä missä toteutuksessa on tarkoituksena tehdä mahdollisimman virheetön ohjelmisto, testauksessa on tarkoitus löytää mahdollisimman paljon virheitä. Testaus vaatii siis testaajalta destruktiivisen eli hajottavan asenteen. Monet virheet vaativat korjaamista, joten hyvin suoritettu testaus aiheuttaa lisätöitä ohjelmiston toteuttajille. Tämän vuoksi on usein järkevää, että organisaatiossa testauksesta huolehtii eri yksikkö kuin toteutuksesta. Pienissä organisaatioissa tämä ei välttämättä onnistu, mutta mahdollisuuksien mukaan ohjelmoijat voivat kuitenkin testata toistensa valmistamat ohjelmistot tai niiden osat.


title: Ohjelmistotuotanto

text: Ohjelmiston testaus voidaan jaotella myös muun muassa seuraaviin:


title: Ohjelmistotuotanto

text: Julkaisuehdokkuudesta puhutaan kun ohjelmisto on saavuttanut tietyntoiminnallisen tilan, jossa kaikki ohjelmiston ominaisuudet toimivat lähes virheettömästi ja ohjelmisto on valmis julkaistavaksi. Useimmissa tapauksissa julkaisua ei kuitenkaan voi tapahtua, ennen kuin kaikki ohjelmistoa kehittävät tahot ovat siihen tyytyväisiä. Joskus ohjelmiston valmistuminen ajallaan on tärkeämpää kuin riittävä testaus, jolloin Julkaisuehdokkuus kyseenalaisesti ohitetaan.


title: Ohjelmistotuotanto

text: Julkisesti saataville tarkoitetun ohjelmatuotteen valmistuttua se yleensä julkaistaan. Julkaistaessa kerätään ohjelman osat ja dokumentointi yhdeksi paketiksi sekä tiedotetaan uuden ohjelman tai ohjelmaversion saatavuudesta, lisenssiehdoista sekä ominaisuuksista. Näitä toimenpiteitä varten on olemassa työkaluja ja hallintajärjestelmiä.


title: Ohjelmistotuotanto

text: Tuotantoon julkaisemista kutsutaan myös nimellä "kultaaminen", joka tulee siitä, että alkuperäinen ohjelmiston Master-levy viedään monistettavaksi ja paketoitavaksi tehtaalle tai se valmistellaan internet-pohjaista levitystä varten. Ohjelmisto saatetaan kääntää eri kielille, lisäksi sen ohjekirjat kirjoitetaan ja tulostetaan. Myös markkinoinnin suunnittelu kuuluu osaksi tätä vaihetta.


title: Ohjelmistotuotanto

text: Lisenssiehdot määräävät kaupalliset ja juridiset ehdot ohjelman jakelulle, asentamiselle ja käyttämiselle. Kaupallisen (ks. omisteinen ohjelmisto) jakelun lisäksi tavallisia ehtoja ovat esimerkiksi freeware tai GNU GPL.


title: Ohjelmistotuotanto

text: Jos ohjelmisto on rakennettu tietylle asiakkaalle, julkaisun sijaan tehdään käyttöönotto. Käyttöönotossa ohjelmistosta valmistellaan asennettava kokonaisuus, joka sitten suunnitellusti asennetaan määrätyille laitteille. Käyttöönottoon liittyy usein myös muun muassa laitteiston asennus ja valmistelu, tietoyhteyksien valmistelu, vanhojen tietojen konvertointi ja käyttäjien valmentaminen.


title: Ohjelmistotuotanto

text: Ohjelmien ja ohjelmistojen ylläpito ei kuulu enää ohjelmistotuotantoon eikä ohjelmien kehittelyyn vaiheena. Ylläpidon tarkoitus on pitää ohjelmisto toimintakuntoisena ja raportoida virheistä tuotannolle. Ylläpitoon kuuluu ohjelmien uusien versioiden päivitys vanhojen tilalle ja päivityksestä aiheutuvat muutostoimet. Ylläpito käsittää ne toimenpiteet, mitä asiakkaat tarvitsevat ollakseen tyytyväisiä ohjelmistotuotteeseen. Tyypillisesti ohjelmistojen katsotaan vanhenevan ennen pitkää, ja tarpeet myös muuttuvat; lisäksi laadukkaastakin ohjelmistotuotteesta löytyy yleensä vähintäänkin pieniä ohjelmistovirheitä, joten käyttäjät odottavat uusia versioita täyttämään muuttuvat tarpeet ja esiintyneet ongelmat.


title: Ohjelmistotuotanto

text: Ohjelma ei ”kuole” koskaan. Ohjelma voi tulla tarpeettomaksi kun


title: Ohjelmistotuotanto

text: Prosessia helpottamaan on kehitetty erilaisia työkaluja. Perustyökaluja ohjelmistotuotannossa ovat mallit, joiden avulla prosessin vaiheita voi hallita. Esim. vesiputousmallissa vaiheet suoritetaan yksi kerrallaan loppuun asti – testausvaiheesta ei voi palata analyysiin.


title: Ohjelmistotuotanto

text: Muita ohjelmistotuotannon työkaluja ovat UML ja CASE. UML ("Unified Modeling Language", yhtenäistetty mallinnuskieli) auttaa visualisoimaan suunnitelmia. UML on kokoelma yksinkertaisia graafisia merkintöjä, kuten laatikoita ja nuolia, joilla on määrätty merkitys. UML on kehitetty olio-ohjelmointiin. UML-mallinnuksia voi tehdä esimerkiksi ohjelmilla MS Visio, Argo UML, Eclipseen asennettavalla liitännäisohjelmalla, NetBeans, yms.


title: Ohjelmistotuotanto

text: CASE (Computer Aided Software Engineering, tietokoneavusteinen ohjelmistotuotanto) on ollut käytössä 1970-luvulta alkaen. CASE-työkalut ovat ohjelmia, joiden avulla voi organisoida ja visualisoida ohjelmistotuotannon prosesseja. Eri ohjelmointikielille ja -ympäristöille on omat CASE-työkalunsa.


title: Ohjelmistotuotanto

text: Tunnettu ohjelmankehitysympäristö on Eclipse.


title: Oraakkeliluukirjoitukset

text: Oraakkeliluukirjoitukset eli kilpikonnanluukirjoitukset (kiinaksi 甲骨文 jiǎgǔwén, kirjaimellisesti "kuori-luu-kirjoitus"; tai bǔcí, perint.卜辭, yksinkert.卜辞, kirjaimellisesti "halkeaman sanoma") ovat vanhimmat löytyneet kiinankieliset kirjoitukset. Ne esiintyvät kilpikonnan vatsaluissa ja uhrieläinten lapaluissa, joita käytettiin ennustamiseen, mistä nimi oraakkeliluu tulee. Kiinasta on löytynyt yli 100 000 oraakkeliluukirjoitusta, suurin osa näistä Shang-dynastian viimeisen pääkaupungin Yinin (Yinxu) seudulta, joka löytöpaikka sijaitsee nykyisen Anyangin kaupungin alueella Henanin maakunnassa. Myös Läntisen Zhou-dynastian ajoilta on löydetty luukirjoituksia. Yli 50 000 kirjoituksista on sittemmin julkaistu ja tutkittu.


title: Oraakkeliluukirjoitukset

text: Tekstit on kirjoitettu kilpikonnan vatsaluihin tai uhrieläinten lapaluihin. Hoviennustaja kirjoitti luuhun ennustuksen päivämäärän ja kysymyksen, minkä jälkeen luuta kuumennettiin. Ennustaja tulkitsi kuumennettaessa syntyneet halkeamat. Luuhun kirjoitettiin muistiin ennustuksen kielteiset ja myönteiset tulkinnat sekä usein asian saama käänne eli kommentti siitä, kuinka hyvin ennustus piti paikkansa.


title: Oraakkeliluukirjoitukset

text: Tekstien aiheet koskevat kaikkia hallitsijan toimia: esi-isien ja jumalien palvontaa, sotaretkiä, virkanimityksiä, oikeuskäsittelyjä, kaupunkien rakentamista, maatalouskampanjoita, säätä, sairauksia, matkoja, unia, syntymiä ja tulevien päivien suotuisuutta.


title: Oraakkeliluukirjoitukset

text: Teksteissä kuvataan myös entisille kuninkaille tehtyjä uhrauksia. Näiden perusteella on voitu selvittää kaikki Shang-dynastian kuninkaat. Täten aikaansaatu kuninkaiden lista vastaa varsin hyvin Han-dynastian aikaisen historioitsija Sima Qianin luettelemia Shang-dynastian kuninkaita.


title: Oraakkeliluukirjoitukset

text: Tekstit ovat varsin kehittyneitä. Niissä esiintyy noin 5 000 erilaista merkkiä, mistä voi päätellä, että kiinan kirjoituksella oli jo tuohon aikaan pitkä historia.


title: Oraakkeliluukirjoitukset

text: Kirjoituksista on muodostettu tekstikorpuksia, joissa on yhteensä satoja tuhansia kiinan merkkejä (luukirjoitusmuodossa). Nämä merkit toimivat logogrammeina eli sanamerkkeinä, kukin merkki vastaa jotakin tietyllä tavalla lausuttua sanaa. Vajaa puolet kirjoituksissa esiintyvistä merkeistä on yhä tunnistamatta, mutta useammin esiintyvät on tunnistettu ja tekstejä voidaan varsin hyvin lukea, sillä käytetty kielioppi on lähellä klassista kiinaa. Monet merkit ovat hyvin samantapaisia kuin nykyiset kiinalaiset merkit.


title: Oraakkeliluukirjoitukset

text: Kirjoituksessa käytetty kieli on päätelty osin sanajärjestyksen perusteella, osin rebus-prinsiipin (vrt. kuva-arvoitus) mukaisesti. Kirjoituksissa esiintyy (varhaisemmassa muodossaan) esimerkiksi merkki 來 (lái, eli "tulla") erään ruohokasvin merkkinä, joka ääntyy kiinaksi samalla tavalla kuin verbi "tulla". (Vrt. suomen sana "kuusi", joka numeromerkityksessäänkin sana-arvoituksiin piirretään puuna.)


title: Oraakkeliluukirjoitukset

text: Teksteissä esiintyy kiinalaisen laskujärjestelmän idea: yksinkertaiset merkit yhdestä kymmeneen ja merkki sadalle. Lisäksi niissä käytetään kahta sarjaa ajanlaskumerkkejä, joista toisessa on kymmenen merkkiä (taivaalliset rungot), joita oli alun perin käytetty päivien laskemiseen, ja toisessa kaksitoista merkkiä (maalliset oksat), joita oli käytetty tuntien, kuukausien ja vuosien sykleinä. Shang-dynastian oraakkeliluissa nämä merkit on jo yhdistetty toisiinsa 60 yhdistelmän kierroksi, jiazi-kalenteriksi.


title: Oraakkeliluukirjoitukset

text: Zhou-dynastian ajoilta on peräisin vielä laajempia kiinankielisiä kirjoituksia ja pidempiä tekstejä, katso jinshi-kirjoitus.


title: Oraakkeliluukirjoitukset

text: Kirjallisuudentutkija Wang Yirong (王懿榮 1845–1919) sairastui ja kävi apteekissa ystävänsä Liu En (Liú È 刘鶚 1857–1909) kanssa. Odotellessaan lääkkeen valmistumista hän ehti huomata lääkkeen ainesosaksi jauhettavan ”lohikäärmeenluun” (lónggǔ 龍骨) olevan kirjoitusmerkkien kirjailema. Ystävykset tutkivat lohikäärmeenluita ja he tunnistivat kirjoitukset Shang-dynastian aikaisiksi. Liu E julkaisi kirjoissaan lukuisia näistä kirjoituksista.


title: Olusegun Obasanjo

text: Olusegun Obasanjo (joruban kielellä Oluṣẹgun Matthew Okikiọla Arẹmu Ọbasanjọ, s. 5. maaliskuuta 1937 Abeokuta, Brittiläinen Nigeria) oli Nigerian presidentti sotilashallitsijana vuosina 1976–1979 ja vapailla vaaleilla valittuna vuosina 1999–2007.


title: Olusegun Obasanjo

text: Obasanjo kuuluu Nigerian suurimpaan kansaan joruboihin ja on kristitty. Obasanjo sai sotilaskoulutuksen Englannissa Aldershotin koulutuskeskuksessa. Vuonna 1975 kenraali Murtala Ramat Mohammedin johti verettömän sotilasvallankaappauksen, jossa syrjäytettiin kenraali Yakubu Gowon. Pääesikunnan esikuntapäällikkönä Obasanjo oli Murtala Muhammadin varamies ja hänellä oli armeijan tuki. Mohammadin tultua murhatuksi vuonna 1976 Obasanjo nousi Nigerian johtoon. Hän komensi divisioonaa, joka valloitti Owerrin ja toi sisällissodan tehokkaasti päätökseen. Sotilasvalta hyötyi tehokkaasti öljyn hinnan noususta.


title: Olusegun Obasanjo

text: Lokakuussa 1976 maassa julkistettiin uuden perustuslain teksti, mikä edelsi perustuslaillista kokousta 1977. Vuonna 1979 vahvistettu perustuslaki perustui Yhdysvaltain perustuslakiin. Maassa pidetyt paikallis- ja kongressivaalit merkitsivät paluuta demokratiaan. Obasanjo luovutti presidentinviran 1. lokakuuta 1979 Shehu Shagarille ja siirtyi viettämään hiljaiseloa perustamalleen maatilalle.


title: Olusegun Obasanjo

text: Vuonna 1983 armeija kaappasi jälleen vallan. Kenraali Sani Abachan valtakaudella 1993–1998 Obasanjo joutui vankilaan. Obasanjo ei kuitenkaan jäänyt toimettomaksi vankilassakaan, vaan kirjoitti kolme kristinuskoa käsittelevää kirjaa ja organisoi vankilan jättömaalle tehokkaan maatilan. Kenraali Abachan kuoleman jälkeen hänet vapautettiin.


title: Olusegun Obasanjo

text: Vuoden 1999 vaaleissa Obasanjo valittiin kansan demokraattisen puolueen ehdokkaana vapailla vaaleilla Nigerian presidentiksi 62,6 % prosentin ääniosuudella. Hänet valittiin uudelleen 2003.


title: Olusegun Obasanjo

text:
Afrikan ulkopuolella Obasanjoa pidetään afrikkalaisena valtiomiehenä. Seitsemän valtavuotensa aikana hän päätti sisällissodan Liberiassa ja esti vallankaappausyrityksen Togossa. Hän varmisti, ettei Afrikan unioni menettänyt uskottavuuttaan asettamalla Sudanin presidenttiä Omar Hasan Ahmad al-Bashiria johtoonsa (ks. Darfur). Obasanjon valtakaudella Nigeria on kuitenkin ollut hajoamassa kappaleiksi. Uskonnollinen, etninen ja poliittinen väkivalta on kasvanut nopeasti ja maassa on vuosina 1999–2003 tapettu yli 15 000. Väkivalta leimahti jälleen alkuvuodesta 2006 pohjoisessa ja idän kaupungeissa sekä hyökkäyksin öljyteollisuutta vastaan Nigerin deltassa. Yli 100 ihmistä kuoli Muhammad-pilapiirrosjupakan jälkeisissä väkivaltaisuuksissa. Obasanjon korruption vastainen kampanja on suuntautunut lähinnä hänen poliittisia vastustajiaan kohtaan. Hän pyrki muuttamaan perustuslakia voidakseen jatkaa presidenttinä vielä kolmannen kauden.
Tämän epäonnistuttua hän järjesti presidentiksi ennestään tuntemattoman Katsinan osavaltion kuvernöörin Umaru Yar’Aduan kyseenalaisesti järjestetyissä vaaleissa.


title: Ohjelmointikielen kääntäjä

text: Ohjelmointikielen kääntäjä on tietokoneohjelma, joka luo tietokoneohjelman ohjelmointikielisen lähdekoodin perusteella konekielisen ajettavan binääritiedoston (eli kääntää ohjelman). Kääntäminen on siis muunnos, jossa ihmiselle helpossa muodossa oleva lähdekoodi muutetaan tietokoneen ymmärtämään muotoon.


title: Ohjelmointikielen kääntäjä

text: Proseduraalisen tietokoneohjelman käännös sisältää vaiheet: 1) selaus, 2) jäsennys ja 3) koodin luonti. Selauksessa lähdekielisestä ohjelmatekstistä selataan ns. tokeneita. Jäsennyksessä luodaan löydetyille tokeneille semanttinen merkitys. Tässä yhteydessä tulee esille ohjelmointikielen kielioppi. Koodin luonnissa luodaan konekielinen ohjelma sekä varataan muuttujille ja ympäristöasetuksille muistialueet. Selausvaiheessa löydettyjä tietokoneohjelman virheitä sanotaan syntaktisiksi virheiksi. Jäsennysvaiheessa löydettyjä virheitä sanotaan semanttisiksi virheiksi.


title: Ohjelmointikielen kääntäjä

text: Tietokoneen suoritin suorittaa konekieltä, joka koostuu erittäin yksinkertaisista ohjeista mallia "Laita muistipaikkaan 10 muistipaikan 14 sisältö miinus muistipaikan 12 sisältö. Jos muistipaikan 10 sisältö on alle 5000, hyppää kohtaan...". Tietokonetta ohjelmoidaan kielellä, joka voi näyttää esimerkiksi tältä:


title: Ohjelmointikielen kääntäjä

text: Kääntäjä lukee jollakin ohjelmointikielellä kirjoitetun lähdekoodin kerralla kokonaan muistiin ja tekee siitä konekielisen version. Tulkki sen sijaan lukee lähdekoodia komennon kerrallaan, suorittaa sen ja siirtyy sitten seuraavalle riville. Analogia luonnollisen kielen kääntäjään ja tulkkiin on ilmeinen. "Just-in-Time" (JIT) kääntäjällä pyritään yhdistämään käännetyn kielen ja tulkittavan ohjelmakoodin väliset hyödyt vähentämällä tulkkauksen aiheuttamaa viivettä.


title: Ohjelmointikielen kääntäjä

text: Joskus ohjelmat käännetään ensin kääntäjällä tavukoodiksi, jonka sitten suorittaa yksinkertainen tulkki. Näin saavutetaan sekä kääntäjän että tulkin etuja. Tyypillisesti tällä tavalla suoritettavia ohjelmointikieliä ovat Java, Python, Ruby ja PHP.


title: Ohjelmointikielen kääntäjä

text: Tavukoodia käytetään myös välivaiheen käännöksenä, jotta eri kielistä saadaan kohdennettua eri laitteille käännettävää alustakohtaista ohjelmakoodia. Vastaavia ovat muun muassa LLVM kääntäjäympäristössä sekä useissa GPGPU-ohjelmointiin suunnatuissa menetelmissä (esim. SPIR-V).


title: Ohjelmointikielen kääntäjä

text:
Kääntäjän etuosa jaetaan usein selaajaan () ja jäsentimeen (). Selaaja tunnistaa ohjelmointikielestä alkionimet () esimerkiksi säännöllisten lausekkeiden avulla. Jäsennin (myös "jäsentäjä") tunnistaa kielen rakenteen vaikkapa
sisäkkäisiä rakenteita tunnistavan LR-jäsennystä "(left-right, eli läpikäynti vasemmalta oikealle, ymmärtäminen oikealta vasemmalle)" käyttäen. Myös LL-jäsennystä käytetään sen yksinkertaisuuden vuoksi, mutta sellaisen avulla ei voida jäsentää kieltä, missä esiintyy nk. vasen rekursio. Esimerkiksi kielioppisääntöön
ei voida soveltaa LL-jäsentäjää, koska se joutuisi ikuiseen rekursiosilmukkaan - aliohjelmakutsut menisivät seuraavaan tapaan:


title: Ohjelmointikielen kääntäjä

text: Unix-maailmassa perinteinen työkalu selaajien tekemiseen on Lex ja jäsentimien tekemiseen Yacc.


title: Ohjelmointikielen kääntäjä

text: Kolmas käännösvaihe on "semanttinen" (eli merkityksen) "analyysi". Tässä vaiheessa tutkitaan mm. muuttujien ja metodien nimet, tyypit ja niiden käytön oikeellisuus.


title: Ohjelmointikielen kääntäjä

text: Standardifunktiot () ovat kääntäjän itsensä tarjoamia tai tunnistamia funktioita, jotka sisältävät korkealle optimoidut toteutuksen tietyille yleisille algoritmeille. Esimerkiksi sini- ja kosinifunktiot ovat usein käytettyjä.


title: Ohjelmointikielen kääntäjä

text: Kääntäjässä voi olla toteutuksia alustakohtaisille toiminnoille tietyillä käskykantalaajennuksilla toteutettuna, joita voidaan käyttää ohjelmissa assembly-kielellä tehtyjen rutiinien asemesta kuten SSE-käskykannan hyödyntämisessä. Esimerkiksi Microsoftin ja Intelin C/C++ kääntäjät sekä GCC toteuttavat standardifunktiot, jotka vastaavat suoraan x86-käskykannan SIMD laajennuksia.


title: Ohjelmointikielen tulkki

text: Ohjelmointikielen tulkki on tietokoneohjelma, joka suorittaa ohjelmointikielisiä lauseita yksi kerrallaan. Tämä poikkeaa ohjelmointikielen kääntäjästä, joka kääntää koko lähdekoodin konekieliseksi ohjelmaksi sen myöhempää suorittamista varten.


title: Ohjelmointikielen tulkki

text: Periaatteessa sama lähdekoodi on mahdollista joko tulkata tai kääntää. Lähdekoodin tulkkaaminen on hitaampaa kuin samasta koodista käännetyn konekielisen ohjelman ajaminen. Ero johtuu siitä, että tulkin on ensin analysoitava lähdekoodi ja sitten vielä suoritettava se, kun jo käännetyssä konekielisessä ohjelmassa riittää pelkkä suorittaminen. Toisaalta kääntäminen ja ohjelman suorittaminen yhteensä on hitaampaa kuin ohjelmakoodin tulkkaaminen kerran.


title: Ohjelmointikielen tulkki

text: Eräät ohjelmointikielet, kuten Java ja Emacs Lisp, käännetään tyypillisesti tavukoodiksi, joka suoritetaan virtuaalikoneella. Tämä tavukoodi on laitteistoriippumatonta ja kompaktia, joskin hieman hitaampaa kuin konekielinen ohjelma.


title: Ohjelmointikielen tulkki

text: Eräitä tulkattavia ohjelmointikieliä ovat:


title: Ooppera

text: Ooppera (, monikko sanasta "opus" ’työ, teos’) on näyttämötaidemuoto, jossa yhdistyvät musiikki ja näytelmä. Oopperassa on usein täysimittainen sinfoniaorkesteri. Pääosassa ovat kuitenkin laulajat. Oopperan tekstiä, jota kutsutaan nimellä "libretto", lauletaan oopperan aikana tavallisesti kahdella laulutyylillä. "Resitatiivi" on puhemaista laulua, joka kuljettaa juonta eteenpäin. Resitatiivien välillä olevia lauluja kutsutaan "aarioiksi". Lisäksi oopperateoksiin kuuluu usein duettoja, kolmen laulajan esittämiä tertsettoja ja neljän laulajan kvartetteja, kuorokohtauksia ja orkesterin esittämiä alku-, väli- ja loppusoittoja.


title: Ooppera

text: Oopperan sanoituksen eli libreton kirjoittaa "libretisti". Joskus libreton kirjoittaa oopperan säveltäjä itse. Libretisti päättää, mitä kussakin kohtauksessa tapahtuu, ja hän kirjoittaa laulajien laulamat ja puhumat sanat. Libreton tarina on joskus peräisin tunnetusta lähteestä kuten sadusta, myytistä, Raamatusta, romaanista, näytelmästä tai elämäkerrasta. Monessa oopperatalossa katsoja voi lukea librettoa esityksen aikana omalla kielellään esimerkiksi näyttämön yläpuolella tai istuimen selkänojassa olevasta näytöstä.


title: Ooppera

text: Oopperan säveltäjä tekee oopperan musiikin ja antaa toiminnalle ja tunteelle musiikillisen muodon. Hän määrittelee myös orkesterin koon, mitä soittimia ja äänialoja esityksessä käytetään, ja kuinka monta laulajaa esitykseen osallistuu.


title: Ooppera

text: Oopperatalon johtaja suunnittelee jokaisen esityskauden ohjelmiston. Hän valitsee esitettävät oopperat ja varaa niihin laulajat.


title: Ooppera

text: Laulajat sijoitetaan rooleihin äänialansa mukaan. Oopperalaulajien äänialoja ovat miehillä basso, baritoni, tenori ja kontratenori, ja naisilla kontra-altto, altto, mezzosopraano ja sopraano. Oopperat esitetään nykyisin yleensä alkukielellä, joten laulajat joutuvat laulamaan useilla eri kielillä. Joissain oopperoissa on laulukuoro, ja joissain esiintyy balettitanssijoita. Lavalla on usein myös statisteja, jotka eivät puhu tai laula.


title: Ooppera

text: Kapellimestari, "maestro", johtaa esityksessä orkesteria ja päättää esimerkiksi musiikin tempon ja voimakkuuden. Hän osoittaa laulajille ja soittajille milloin on heidän vuoronsa olla äänessä. Orkesteri istuu orkesterimontussa näyttämön ja yleisön välissä. Näyttämön edessä on yleisöltä piilotettu kuiskaajan koppi, josta hän muistuttaa laulajaa sanoituksista.


title: Ooppera

text: Näyttämöohjaaja vastaa siitä, mitä näyttämöllä tapahtuu, ja hän ohjaa laulajien liikkeitä. Lavastaja suunnittelee lavasteet ja sen, miltä esitys näyttää. Hän työskentelee yhteistyössä etenkin ohjaajan ja valaistussuunnittelijan kanssa, joka suunnittelee esityksen valaistuksen. Puvustaja tekee esittäjien esiintymisasut, meikkaaja laatii meikit ja peruukkimestari tekee peruukit, joita oopperassa käytetään hyvin runsaasti.


title: Ooppera

text: Musiikkijärjestäjä tai näytäntöjärjestäjä on ikään kuin toinen kapellimestari, joka seuraa partituuria ja määrää esimerkiksi esiintyjien sisääntulon ajoituksista, lavasteiden ja valojen vaihtumisesta, erikoistehosteista ja esiripun liikkeistä. Esitykseen osallistuu lisäksi erilaisia näyttämötyöntekijöitä, jotka esimerkiksi siirtelevät lavasteita ja hoitelevat tehosteita.


title: Ooppera

text: Oopperan juuret juontuvat renessanssin aikaan suosittuihin musiikkia ja draamaa yhdistäneisiin taidemuotoihin "pastoraali-" ja "madrigaalidraamaan" sekä ennen kaikkea intermedioon, jotka olivat lyhyitä esityksiä, joita esitettiin tavallisten puhedraamojen väliajoilla. Barokin kynnyksellä tehdyt kaksi merkittävää musiikillista keksintöä tekivät oopperan synnyn mahdolliseksi. Kirkkosävellajeista luopuminen ja duuri–molli-tonaliteetin vakiintuminen mahdollisti modulaation ja siten kontrastien ja jännitteiden luomisen musiikkiin. Sävellajien erot teki erityisen vaikuttaviksi se, ettei viritysjärjestelmä ollut tasavireinen. Renessanssimusiikin polyfoniasta siirtyminen barokkimusiikin monodiaan mahdollisti melodian vapaamman liikkumisen ja siten tekstin sisältöä paremmin kuvaavien laululinjojen säveltämisen.


title: Ooppera

text: 1500-luvun lopulla Venetsiassa vaikutti neljä kilpailevaa seurapiiriä: "camerataa", jotka pohtivat miksi ajan musiikki ei yltänyt Aristoteleen "Runousopissa" kuvaamalle tasolle ja pyrkivät uudelleen herättämään henkiin antiikin musiikkiperinteen. "Cameratojen" pohdintojen tuloksena syntyi uusi laulutyyli, resitatiivi, jota käytettiin ensimmäistä kertaa Jacopo Corsin "camerataan" kuuluneen säveltäjä Jacopo Perin teoksessa "Dafne" vuodelta 1597. "Dafnea" pidetään ensimmäisenä varsinaisena oopperana, mutta se ei ole säilynyt. Ensimmäinen näihin päiviin säilynyt ooppera on saman säveltäjän "Euridice" vuodelta 1600. Varhaisen barokin merkittävimmäksi oopperasäveltäjäksi nousi Claudio Monteverdi, jonka oopperat "Orfeo" (1607) ja "Il ritorno d’Ulisse in patria" (1640) muodostuivat varhaisen oopperan kulmakiviksi ja joita esitetään edelleen laajasti. Ensimmäistä kertaa termi ooppera esiintyi vasta vuonna 1647 julkaistun librettokokoelman alaotsikossa: "”opera de rappresentarsi in musica”" (”Musiikiksi esitettävä teos”). Ensimmäiset oopperat olivat pienen eliitin harrastus, mutta 1600-luvun puoliväliin mennessä ooppera oli levinnyt laajempiin yhteiskuntakerroksiin. Suuriin kaupunkeihin perustettiin julkisia oopperataloja, joihin myös porvaristo saattoi ostaa pääsylippuja. Yleisö oli kiinnostunut laulajien taiturimaisista suorituksista ja hienoista lavasteista, joihin liittyi usein näyttäviä erikoistehosteita.


title: Ooppera

text:
Ranskassa Jean-Baptiste Lully 1670-luvulla loi yhdessä libretistinsä Philippe Quinault'n kanssa omaleimaisen ranskalaisen oopperatyylin, "tragédie en musiquen", joka säilyi elinvoimaisena kokonaisen vuosisadan. Myöhäisbarokin aikana Georg Friedrich Händel saavutti suurta arvostusta oopperasäveltäjänä ja sävelsi sekä ohjasi oopperoita lähes kolmenkymmenen kuuden vuoden ajan. Tunnetuimpia hänen yli neljästäkymmenestä italialaistyylisestä oopperastaan ovat "Almira" 1705 ja "Giulio Cesare" (Julius Caesar) 1724.
Monet klassismin ajan musiikin keskeisistä piirteistä kehittyivät aluksi italialaisen koomisen oopperan piirissä 1720- ja 1730-luvuilla, koska koominen ooppera oli vähemmässä määrin perinteen ja etiketin säätelemää kuin vakava ooppera, "opera seria". Italiassa syntyi monia oopperan tyylisuuntia kuten "dramma giocoso", "dramma comico" ja "opera buffa", joista viimeinen on vakiintunut koko aikakauden koomisen oopperan yleisnimitykseksi. "Opera buffa" on useasta näytöksestä koostuva koominen ooppera, jossa on tavallisesti yli kuusi lauluroolia. "Opera buffan" piirissä kehittyneet muodot löysivät tiensä ennen pitkää myös vakavampaan "opera seriaan", jonka keskeisimpiä vaikuttajia oli libretisti Pietro Metastasio. Useat eri säveltäjät, muun muassa Christoph Willibald Gluckin ja Wolfgang Amadeus Mozart, käyttivät Metastasion librettoja sävellyksissään satoja kertoja.


title: Ooppera

text:
1700-luvun puolivälissä monet musiikkivaikuttajat alkoivat arvostella "opera seriaa", jonka katsottiin kangistuneen kaavoihin ja etääntyneen kauaksi Jacopo Perin oopperalle asettamista ihanteista. Syntyneen uudistusliikkeen keulahahmoksi on musiikin historiassa noussut Christoph Willibald Gluck, jonka "Orfeo ed Euridice" ja "Alceste" olivat ensimmäiset uusien ihanteiden mukaisesti sävelletyt oopperat. Gluck pyrki palauttamaan musiikin tukemaan draamaa.
1800-luvun alkupuoli oli monin tavoin oopperan kulta-aikaa, jolloin ympäri Eurooppaa pystytettiin uusia oopperataloja ja musiikinlaji levisi myös Atlantin yli Yhdysvaltoihin. Suurinta osaa eurooppalaisista oopperataloista pyörittivät impressaarit, jotka saivat rahallista tukea valtiolta tai yksityisiltä lahjoittajilta. Suosituimmat ooppera-aariat levisivät myös pianosovitettuina nuottipainoksina yksityiskoteihin. Vaikka libretolla ja spektaakkelimaisella näyttämötekniikalla oli edelleen keskeinen asema, alkoi musiikki nousta kuitenkin keskeisimmäksi elementiksi ja säveltäjät nousivat arvostuksessa kuuluisien laulajien rinnalle. 1800-luvun loppupuolella ooppera kytkeytyi enenevässä määrin kansallisuusaatteeseen. Aiheita haettiin kansakunnan historiasta ja myyteistä: esimerkiksi Richard Wagnerin" Nibelungin sormus" -tetralogia haki aiheensa saksalaisista kansantaruista. Venäläisissä oopperoissa käytettiin teemoina maan kansanmusiikkisävelmiä ja pyrittiin luomaan omintakeinen venäläinen musiikkityyli. Aikakaudelle tyypillistä oli myös vanhojen menestyneiden oopperoiden uudelleenesittäminen, mikä aikaisempina vuosikymmeninä ja -satoina oli ollut harvinaista. Näistä uudelleen esitetyistä oopperoista syntyi hiljalleen oopperan keskeinen ohjelmisto ja uusien oopperoiden kysyntä väheni. Vähentynyt kysyntä antoi säveltäjille mahdollisuuden hioa teoksiaan pidempään. Perinteiden sijaan keskeiseen rooliin nousikin sävellyksen ennenkuulumattomuus ja omintakeisuus.


title: Ooppera

text: 1900-luvun aikana ooppera kehittyi muun taidemusiikin tavoin eri suuntiin, ja siksi oopperan kehitystä voidaan tarkastella ensisijaisesti yksittäisten säveltäjien ja teosten kautta, koska oopperalla muotokieli ei ollut enää yhtenäinen. Vuosisadan aikana säveltäjät loivat uutta oopperataidetta monin toisista poikkeavin keinoin. Vuosisadan alussa sävelletyt oopperat olivat vielä kauttaaltaan tonaalisia ja sävelkieli yhtenäisempää, mutta 1900-luvun musiikissa säveltasojärjestelmien, rytmin ja muodon saralla tehdyt innovaatiot tulivat värittämään myös oopperataidetta.


title: Oheislaiteliitännät

text: Oheislaiteliitännöillä liitetään lisälaitteita tietokonelaitteistoon. Lisälaitteita voivat olla esimerkiksi toiset tietokoneet, kirjoittimet, näytöt, kamerat ja hiiret tai ulkoiset kovalevyt.


title: Oheislaiteliitännät

text: Nykyään lähes kaikki liitäntätyypit voidaan korvata USB-liittimeen hankittavalla sovittimella, joka muuntaa signaalin ja pistokkeen liitäntään sopivaksi. Kannettavien tietokoneiden "telakat" ovat lisälaitteita jotka mahdollistavat monien erilaisten liitäntäjohtojen helpon käytön, pöytäkoneesta kannettavaksi muuttaminen tapahtuu irrottamalla ainoastaan tietokone telakasta, kaikkien lisälaitteiden johdot ovat kiinni telakassa.Näyttöliitännän avulla videotykki, televisio tai näyttö voidaan liittää tietokoneeseen. Näyttöliittimen ulkonäkö ja nastamäärä riippuu siitä, minkä standardin mukainen näytönohjain tietokoneessa on. Ulkoinen näyttö on aktivoitava (laitettava päälle) näppäimistön tai asetusten kautta. Erilaisia näyttöliittimiä ovat:


title: Oulunkylä

text: Oulunkylä () on kaupunginosa Pohjois-Helsingissä. Oulunkylä sijaitsee Helsingin kantakaupungin rajalla pääradan varressa noin kuusi kilometriä keskustasta pohjoiseen.


title: Oulunkylä

text: Oulunkylä on Helsingin 28. kaupunginosa, joka käsittää Oulunkylän ja Maunulan peruspiirit. Kaupunginosa muodostuu Maunulan, Maunulanpuiston, Metsälän, Patolan, Pirkkolan, Veräjälaakson ja Veräjämäen osa-alueista.


title: Oulunkylä

text: Oulunkylässä on ollut asutusta ainakin 1200-luvulta lähtien. Keskiaikaisissa asiakirjoissa Oulunkylä on Helsingin pitäjään (sittemmin Helsingin maalaiskunta, nykyään Vantaan kaupunki) kuuluva kylä.


title: Oulunkylä

text: Esikaupunkiasutusta alkoi Oulunkylään muodostua sen jälkeen, kun alueelle vuonna 1881 oli perustettu rautatieasema. Vuonna 1907 Oulunkylästä muodostettiin taajaväkinen yhdyskunta. Tuolloin määriteltiin myös yhdyskunnan rajat. Alueen muodosti Oulunkylän kylä ja Kottbyn yksinäistalon alue N:o 1. Kottby oli aikaisemmin jaettu kahteen kokonaisuuteen, Lands-Kottby ja Käpylä, joista jälkimmäinen oli Kumpulan liittämisen yhteydessä sulautettu Helsinkiin.


title: Oulunkylä

text: Oulunkylä erotettiin Helsingin maalaiskunnasta itsenäiseksi Åggelbyn kunnaksi vuonna 1921. Suomenkielisen nimen Oulunkylän kunta sai 1922. Helsinkiin Oulunkylä liitettiin suuressa alueliitoksessa 1946.


title: Oulunkylä

text: Oulunkylän nimen () alkuperää ei tiedetä, eikä edes ole varmaa, onko se alkuperältään suomen- vai ruotsinkielinen. Nimi on esiintynyt 1500-luvulla muun muassa muodoissa Ogleby, Ogelby ja Ågelby, joskus myös Vggleby tai Ögleby. Suomalainen muoto Oulunkylä on ollut käytössä ainakin 1880-luvulta lähtien, mutta se saattaa olla paljon vanhempi.


title: Oulunkylä

text: Nimen on arveltu johtuvan suomen kielessä aikoinaan esiintyneestä, saamen kielestä lainatusta tulvavettä tarkoittavasta sanasta "oulu", joka esiintynee myös paikannimissä Oulu, Oulainen ja Oulanka. Oulunkylän nimen vanhojen kirjoitusasujen on kuitenkin katsottu osoittavan, ettei nimi voi johtua tästä sanasta. Toisaalta nimen on myös arveltu johtuvan Mäntsälän Ohkolan kylän nimestä.


title: Oulunkylä

text: Ruotsinkieliseen alkuperään viittaavia nimiteorioita on esitetty useita: Ågloby ("glo" 'lammikko'), Ågärdhoby ("gärdho" 'aidattu alue'), Ågölby ("göl" 'syvänne'), Åkullaby ("kulla" 'mäki, kukkula'), Åkällby ("källa" 'lähde'). Mikäli nimi todella on ruotsalaista alkuperää, sen alkuosa on mahdollisesti ruotsin sana "å" 'joki'. Nimen lopussa esiintyvä sana "by" tarkoittaisi kylää.


title: Oulunkylä

text: Oulunkylän kantatilat olivat nimiltään Mickels eli Landboas, Britas, Monsas (Månsas), Petas ja Nybondas eli Jeppars. Lisäksi Kottbyn tila sijaitsi osittain nykyisen Oulunkylän alueella. Tilojen nimistä peräti kolme on sittemmin päätynyt viereisten asutusalueiden nimiksi: Britas (Pirkkola), Monsas (Maunula) ja Kottby (Käpylä).


title: Oulunkylä

text:
Oulunkylän kaupunginosa jakautuu kahteen peruspiiriin ja seitsemään alueeseen seuraavan taulukon mukaisesti. Asukasluvut ovat 1.1.2012 mukaiset.
"*) Patola käsittää Oulunkylän keskeisen alueen pääradan ja Tuusulanväylän välissä."


title: Oulunkylä

text: Postinumeroalueet eivät noudata täsmälleen muuta aluejakoa.


title: Oulunkylä

text: Oulunkylän kaupunginosa jakautuu kahteen peruspiiriin, jotka ovat Oulunkylä (numero 404) ja Maunula (numero 400). Oulunkylän peruspiirissä on kolme osaa: vanhemmat Patola ja Veräjämäki sekä uusin tulokas, 1990-luvulla rakennettu Veräjälaakso.


title: Oulunkylä

text: Oulunkylän peruspiirissä oli vuonna 2012 yhteensä 13 675 asukasta. Asukkaista oli suomenkielisiä 89 % (koko Helsingissä 83 %) ja ruotsinkielisiä 4 % (6 %). Ulkomaalaistaustaisia oli 8 % (koko Helsingissä 12 %). Peruspiirin asunnoista oli vuonna 2011 vuokra-asuntoja 38 % (Helsingin keskiarvo 45 %) ja pientaloasuntoja 21 % (13 %). Asuntojen keskikoko oli 70 m (63 m).


title: Oulunkylä

text: Vuoden 2010 tilaston mukaan kaupungin vuokra-asuntoja oli Oulunkylän peruspiirissä 12 % (koko Helsingissä 14 %). Kaupungin vuokra-asuntojen osuus oli suurempi Veräjämäessä ja Veräjälaaksossa ja pienempi Patolassa pääradan pohjoispuolella.


title: Oulunkylä

text: Oulunkylä on pääasiassa kerros- ja pientaloaluetta. Kerrostaloalueita sijaitsee eri puolilla Oulunkylää. Pientaloalueilla on sekä rivitaloja että omakotitaloja.


title: Oulunkylä

text: Asuinalueiden ja laajojen virkistysalueiden lisäksi Oulunkylässä on kaksi pienteollisuusaluetta. Toinen sijaitsee Metsälän eteläosassa ja toinen Vantaanjoen rannassa Pukinmäen rajalla. Huomattavia toimistorakennuksia on Käpylän asemalla ja Metsälän eteläosassa. Liikerakennuksia on erityisesti Oulunkylän aseman ja Vantaanjoen rannan tuntumassa sekä Oulunkylän osa-alueen Maunulan keskustassa.


title: Oulunkylä

text: Vanhaa huvila-asutusta on säilynyt Oulunkylässä on jonkin verran. Vielä 1950-luvulla rakennuskanta oli enimmäkseen suuria puuhuviloita, joista osa oli siirretty sinne Terijoelta. Niitä on vielä jäljellä varsinkin Veräjämäen puolella, muutamia myös rautatien länsipuolella.


title: Oulunkylä

text: 1950- ja 1960-luvuilla Oulunkylään rakennettiin kerrostaloja rautatieaseman läheisyyteen sekä Maunulan osa-alueelle. Myöhemmin kerrostaloja on rakennettu 1970-luvulta lähtien Käskynhaltijantien pohjoispuolelle sekä 1990-luvulla Veräjälaaksoon.


title: Oulunkylä

text: Oulunkylässä toimii suomenkielinen evankelis-luterilainen "Oulunkylän seurakunta", jonka alue kattaa Oulunkylän kaupunginosan lisäksi Käpylän ja Koskelan. Oulunkylässä seurakunnalla on kolme kirkkoa: Maunulan kirkko, Oulunkylän kirkko ja Oulunkylän vanha kirkko. Viimeksi mainittu on myös alueen ruotsinkielisen seurakunnan "Petrus församlingin" pääkirkko.


title: Oulunkylä

text: Oulunkylässä on lisäksi Jehovan todistajien valtakunnansali ja vanhoillislestadiolaisen "Helsingin Rauhanyhdistyksen" toimitalo.


title: Oulunkylä

text: Oulunkylän keskustassa rautatieaseman läheisyydessä on palveluiden keskittymä. Alueella sijaitsee mm. Ogelin liikekeskus, kirjasto, posti, apteekki, terveysasema, työväenopisto, nuorisotalo ja valvottu leikkipuisto.


title: Oulunkylä

text: Suurimmat kaupat ovat rautakauppa ja Käpylän asemalla sijaitseva supermarket. Sekä Käskynhaltijantien varrella että Metsälässä on huoltoasemia ja muita autoiluun liittyviä liikkeitä ja palveluita.


title: Oulunkylä

text: Oulunkylään kuuluvan Maunulan keskustassa on liikkeitä, kirjasto, sosiaaliasema, terveysasema sekä Suursuon sairaala.


title: Oulunkylä

text: Oulunkylässä sijaitsee Oulunkylän asuintalo, joka on tarkoitettu mielenterveyskuntoutujille. Oulunkylän asuintalo koostuu neljästä rakennuksesta ja 44 asunnosta. Kaikilla asukkailla on hoitosuhde Oulunkylän psykiatriselle poliklinikalle.


title: Oulunkylä

text: Oulunkylän liikuntapuistossa on urheilukenttä, jäähalli, tekojäärata, curlinghalli, liikuntasaleja ja metsäalue pururatoineen.


title: Oulunkylä

text: Pirkkolan liikuntapuistossa on urheilukenttiä, kunto- ja voimailusali, maauimala, uimahalli, palloiluhalli ja kaksi jäähallia. Lisäksi puistossa on kuntoratoja ja hiihtolatuja. Viereisessä Maunulanpuistossa on ulkoilureittejä, hiihtolatuja ja ulkoilumaja.


title: Oulunkylä

text: Vantaanjoen rannassa kulkee ulkoilureittejä ja talvella hiihtolatu. Siellä on myös Pikkukosken uimaranta, jossa on talvisin mahdollisuus avantouintiin ja jääkiipeilyyn.


title: Oulunkylä

text: Ala-asteen opetusta antavat "Maunulan ala-asteen koulu", "Oulunkylän ala-asteen koulu", "Veräjälaakson sivukoulu" ja ruotsinkielinen "Månsas lågstadieskola". Yläaste- ja lukio-opetusta antavat Maunulan yhteiskoulu ja Helsingin matematiikkalukio sekä Oulunkylän yhteiskoulu.


title: Oulunkylä

text: Helsingin työväenopisto toimii "Oulunkylätalossa" Oulunkylän aseman läheisyydessä.


title: Oulunkylä

text: Merkittäviä Oulunkylään sijoittuneita yrityksiä ovat mm. DNA, Fingrid ja YIT. Näiden yritysten pääkonttori sijaitsee Oulunkylän alueella lähellä Käpylän asemaa. Oulunkylän alueella toimivat myös mm. Cygate, Cityvarasto (pienvarastoja vuokraava yritys), Kaukokiito ja Schenker sekä "Helsinki Fashion House", jonka tiloissa toimii yli sata vaatetusalan yritystä.


title: Oulunkylä

text: Aiemmin Oulunkylässä on sijainnut mm. Hankkijan pääkonttori. "Mäkitorpan Autoradio" toimi alkujaan Oulunkylän Mäkitorpantiellä.


title: Oulunkylä

text: Oulunkylästä on monipuoliset liikenneyhteydet sekä joukkoliikenteen, yksityisautoilun että kevyen liikenteen näkökulmasta. Oulunkylän keskustassa on bussi- ja junaliikenteen solmukohta. Matkustajien käytössä on sekä poikittaislinjoja että Helsingin keskustaan päin suuntautuvia linjoja.


title: Oulunkylä

text: Oulunkylässä on yksi moottoritie. Tuusulanväylä kulkee Oulunkylän halki Käpylästä Pakilaan päin. Moottoritielle on Oulunkylän kohdalla kaksi liittymää. Myös Hämeenlinnanväylä ja Kehä I kulkevat läheltä Oulunkylää.


title: Oulunkylä

text: Oulunkylän pääkatuja ovat Tuusulanväylän Oulunkylän liittymässä kohtaavat Pakilantie ja Käskynhaltijantie, Metsälän halki kulkeva Asesepäntie, siitä lähtevä Mäkitorpantie ja tämän jatke Siltavoudintie, Käpylästä Oulunkylään johtava Oulunkyläntie ja sen jatke Norrtäljentie sekä Maunulassa sijaitsevat Pirjontie ja Pirkkolantie.


title: Oulunkylä

text: Merkittävin kevyen liikenteen väylä kulkee pääradan vartta Oulunkylän läpi. Väylä yhdistää Helsingin keskustan pohjoisiin kaupunginosiin. Muita huomattavia kaupunginosasta toiseen johtavia väyliä kulkee Oulunkylän länsiosassa sijaitsevassa keskuspuistossa (Maunulanpuisto) sekä Vantaanjoen varressa.


title: Oulunkylä

text: Matkoja Oulunkylän keskustasta kevyen liikenteen väyliä pitkin, sulkeissa arvio pyöräilyajasta: Viikki 3 km (15 min), Pasila 4 km (15 min), Rautatientori 8 km (25 min), Itäkeskus 8 km (30 min).


title: Oulunkylä

text: Helsingin latuverkosto ulottuu talvisin Oulunkylän alueelle. Helsingin keskustasta pohjoiseen johtava hiihtoreitti kulkee Maunulanpuiston ja Pirkkolan liikuntapuiston kautta. Latuverkosto ulottuu myös Vantaanjoen rantaan sekä Oulunkylän liikuntapuistoon. Hiihtäen matkaa Paloheinän ulkoilumajalle tulee Oulunkylästä Vantaanjoen vartta n. 8 km ja Maunulan majalta 5 km. Julkisen liikenteen käyttäjillä on Oulunkylästä suora bussiyhteys ladulle Pirkkolan kautta.


title: Oulunkylä

text: Oulunkylä sijaitsee pääradan varrella. Oulunkylän rautatieasemalla pysähtyvät lähijunat I, K, N, P ja T.


title: Oulunkylä

text: Oulunkylän rajalla sijaitsee myös Käpylän rautatieasema. Siellä pysähtyvät lähijunat I, N, P ja T.


title: Oulunkylä

text: Lähijunat kulkevat arkisin päivällä 5–10 minuutin väliajoin. Matka-aika Helsingin päärautatieasemalta Käpylän asemalle on 8 minuuttia, Oulunkylän asemalle puolestaan 9–10 minuuttia.


title: Oulunkylä

text:
Helsingin Bussiliikenne
Pohjolan Liikenne
Nobina Finland
Transdev


title: Oulunkylä

text: Taksikuljetus


title: Oulunkylä

text: Arvioituja bussimatka-aikoja Oulunkylän keskustasta, suora yhteys ilman vaihtoja: Viikki 5 min, Sörnäinen 10 min, Hakaniemi 15 min, Itäkeskus 15 min, Pitäjänmäki 15 min, Leppävaara 20 min, Rautatientori 20 min, Munkkiniemi 25 min.


title: Oulunkylä

text: Oulunkylässä on kaksi taksiasemaa. Näistä toinen sijaitsee Oulunkylän torilla ja toinen Maunulan keskustassa.


title: Oulunkylä

text: Matkaa Helsinki-Vantaan lentoasemalle on 12 km laskettuna Tuusulanväylältä Oulunkylän kohdalta. Henkilöautolla matkaan kuluu noin 10 minuuttia. Suora bussiyhteys lentoasemalle kestää 15–30 minuuttia ja juna suunnilleen saman ajan.


title: Oulunkylä

text: Malmin lentoasemalle on autolla noin 7 km Oulunkylän keskustasta.


title: Oulunkylä

text: Vantaanjoki virtaa Oulunkylän reunalla. Joki on Oulunkylän kohdalta liikennöitävissä pienveneillä sekä ylä- että alavirtaan päin. Merelle asti veneellä ei pääse Vanhankaupunginkosken takia. Julkista liikennettä joella ei ole.


title: Oulunkylä

text: Lähin raitiotie sijaitsee toistaiseksi Käpylässä noin 700 metrin päässä Oulunkylän rajalta. Oulunkylään on suunnitteilla pikaraitiotie Raide-Jokeri.


title: Oulunkylä

text: Oulunkylän liikenneyhteyksiä merkittävästi parantavia ratahankkeita on vireillä useita. Pikaraitiotie Raide-Jokeri tulisi kulkemaan Oulunkylän läpi. Suunniteltu Pisararata parantaa rautatieyhteyksiä Oulunkylästä etelään päin.


title: Oulunkylä

text: Suurin osa Oulunkylän asuntoalueista on alle 55 dB:n melualueella. Pääasiallinen melunlähde on tieliikenne, mikä vaikuttaa varsinkin Tuusulanväylän ympäristössä. Paikallista tiemelua esiintyy myös suurimpien katujen varsilla. Toinen melunlähde on päärata. 55 dB:n ylittävä ratamelualue on Oulunkylän kohdalla kapea, karkeasti vain yhden talorivin levyinen. Lentomelualuetta Oulunkylässä ei ole lainkaan. Sekä pääradan että Tuusulanväylän varteen on rakennettu melueste. Koko Helsingin asukkaista karkeasti puolet asuu yli 55 dB:n melualueella.


title: Ontologinen todistus

text: Ontologinen todistus on todistus Jumalan olemassaolosta, jonka kehitti ensimmäisenä Anselm Canterburylainen 1070-luvulla kirjassa "Proslogion".


title: Ontologinen todistus

text: Anselm esitti käsityksen Jumalasta täydellisenä olentona, jota täydellisempää ei voi ajatella: ”olento, jota suurempaa ei voida kuvitella”. Anselm erotti kaksi asiaa: että olio on olemassa vain mielessä, ja että olio on olemassa myös todellisuudessa. Jos täydellisin kuviteltavissa oleva olio olisi ainoastaan kuvittelijan mielessä, syntyisi Anselmin mukaan ristiriita: on kuviteltavissa vielä täydellisempi olio, joka on olemassa myös kuvittelijasta riippumattomassa todellisuudessa. Tämän vuoksi täydellisimmän kuviteltavissa olevan olion täytyy olla todellisuudessa olemassa.


title: Ontologinen todistus

text: Todistuksen ensimmäisen muodon lisäksi Anselm esitti sen myös toisessa muodossa. Hän esitti, että on olemassa olio, jota on mahdoton kuvitella olemattomaksi. Koska Jumala on olio, joka on täydellinen, Jumala ei Anselmin mukaan ole ajan rajoittama. Jumala ei ole koskaan alkanut olla olemassa eikä koskaan lakkaa olemasta olemassa. Täten on mahdotonta, että Jumalaa ei olisi olemassa. Anselm väitti, että hänen todistuksensa koskee ainoastaan ajatusta Jumalasta eikä mistään muusta oliosta. Hän tarkoittaa täydellisintä kuviteltavissa olevaa oliota, joka on niin täydellinen, että sitä ei edes voi kuvitella olemattomaksi.


title: Ontologinen todistus

text: Todistus rajoittuu pelkästään väittämään, että jonkinlainen Jumala on olemassa, ts. ateismi on väärässä. Tästä ei voi vielä ratkaista, minkä uskonnon, esimerkiksi kristinuskon, islamin tai jonkin muun teistisen maailmankuvan käsitys Jumalasta on lähempänä oikeaa kuin toisen.


title: Ontologinen todistus

text: Ontologisella todistuksella tai sen eri muunnelmilla on ollut huomattava merkitys useiden myöhempienkin filosofien kuten Descartesin ja Leibnizin ajatusrakennelmissa.


title: Ontologinen todistus

text:
Jo aikalaiset kritisoivat todistusta osoittamalla, että millainen tahansa täydellisyys voidaan "todistaa" samalla tavalla. Esimerkiksi kaikkipahan olennon olemassaololle voidaan luoda vastaava todistus.
Jo 1200-luvulla Tuomas Akvinolainen hylkäsi ontologisen todistuksen, mutta esitti muita jumalatodistuksia.