Home About us Products Services Contact us Bookmark
:: wikimiki.org ::
Ohjelmointikieli

Ohjelmointikieli

Ohjelmointikieli on keksitty kieli, jota käytetään tietokoneen ohjelmointiin. Ohjelmointikielille on normaalisti olemassa joko kääntäjä, joka muuntaa kirjoitetun ohjelman konekielelle tai muulle välikielelle, tai tulkki, joka on ohjelmointikieltä lähdekoodiläheisemmästä esitysmuodosta tulkitseva ohjelma. Nykyisin tulkin ja kääntäjän raja ei ole enää niin selkeä kuin esimerkiksi vielä 1980-luvulla. Tietokonekielet ovat monin tavoin luonnollisten kielten kaltaisia. Niillä on oma sanastonsa ja kielioppisääntönsä; näistä kahdesta muodostuu kielen syntaksi eli lauseoppi. Niillä on myös looginen merkitys, jota kutsutaan semantiikaksi. Luonnollisia ja tietokonekieliä tutkiva lingvistiikka on hyvin samankaltaista. Itse asiassa luonnollisista kielistä on saatu paljon uutta tietoa tietokonekielten tutkimuksen avulla. Yksinkertainen lause selventää syntaksin ja semantiikan eron. Lause "Koira söi luun" on sekä syntaktisesti (lauseopillisesti) oikein että semanttisesti (merkitykseltään) mielekäs. Sen sijaan lause "Luu söi koiran" on syntaktisesti oikein mutta semanttisesti epämielekäs. Tietokonekielet on suunniteltu siten, että ihminen voi niillä ilmaista toiminnot, joita tietokoneen halutaan suorittavan, ja että ne ovat mukavia käyttää ja riittävän tarkkoja, jotta tietokone kykenee niitä noudattamaan yksiselitteisellä tavalla. Tyypillisesti tietokonekielten sanasto on hyvin yksinkertainen (alle sata sanaa) ja kielioppi rajoitettu (joka määrittelee kuinka sanoja voidaan laittaa yhteen).

Ohjelmointikielten jaottelu

Ohjelmointikielet jaetaan yleensä neljään ryhmään:
- proseduraalinen ohjelmointikieli
- oliopohjainen ohjelmointikieli
- funktionaalinen ohjelmointikieli
- logiikkapohjainen ohjelmointikieli

Ohjelmointikieliä


- Ada
- Algol
- APL
- Assembly
- Basic
- BrainFuck
- C
- C++
- C#
- Coolbasic
- Cobol
- D

- Delphi
- Eiffel
- Forth
- Fortran
- Haskell
- IDL
- Java
- Lisp
- Logo
- Modula-2

- Modula-3
- Mozart
- Oberon
- Objective-C
- Objective Caml
- Pascal
- Perl
- PHP
- PL/M
- Prolog
- Python

- Ruby
- Scheme
- Smalltalk
- Snobol
- SQLWindows
- SURVO
- TCL
- ohjelmoitavat logiikat:tikapuukaaviot,IEC
- Visual Basic
 

Linkkejä


- Sivustoja
  - [http://www.mureakuha.com Mureakuha]
  - [http://www.ohjelmointiputka.net Ohjelmointiputka]
  - [http://www.2kmediat.com/artikkelit/ 2kmediat.com]
- Historiaa
  - [http://www.levenez.com/lang/ Aikajana muutamista ohjelmointikielistä] Luokka:Ohjelmointi ja:PuRoGuRaMiN6Gu
      -
  -


Tietokone

::Tämä artikkeli käsittelee laitetta. Tietokone (lehti) käsittelee lehteä. Tietokone on kone, joka käsittelee numeeris-loogista tietoa ohjelmointinsa mukaisesti. Arkikielessä tietokoneella tarkoitetaan yleensä yleiskäyttöistä laitetta, joka on tarkoitettu suorittamaan kaikenlaisia tietojenkäsittelytehtäviä. Esimerkiksi pelikonsolit, matkapuhelimet ja taskulaskimet ovat usein ominaisuuksiensa puolesta täysiverisiä tietokoneita, vaikka niitä ei käyttötarkoitustensa vuoksi yleensä pidetäkään sellaisina. Eräs tietokoneen matemaattinen malli on Turingin kone, jonka kehitti englantilainen matemaatikko Alan Turing. Tietojenkäsittelyn ekvivalenssiperiaatteen mukaan kaikki tietokoneet pystyvät suoriutumaan samoista tehtävistä, mikäli käytössä on riittävästi tallennustilaa ja aikaa. Näin ollen mikäli koneella tai formaalilla järjestelmällä (esimerkiksi ohjelmointikielellä) voi toteuttaa Turingin koneen, voi sillä periaatteessa toteuttaa myös minkä tahansa algoritmin tai ohjelman. Tietokoneiden edeltäjinä voidaan pitää toisaalta reikäkorttien käsittelyyn tarkoitettuja reikäkorttikoneita, toisaalta esimerkiksi mekaanisia laskimia. Ensimmäiset varsinaiset ohjelmoitavat tietokoneet rakennettiin 1940-luvulla ja niitä käytettiin mm. toisen maailmansodan aikaan salakirjoitusten murtamiseen (brittiläinen Colossus), ohjusten ratojen laskentaan (amerikkalainen ENIAC) ja lentokonesuunnittelun lujuuslaskentoihin (saksalainen Z3).

Tietokoneen toiminta

Vaikka tietokoneen pystyykin toteuttamaan lukemattomilla eri tekniikoilla, on valtaosa tietokoneista kautta historian perustunut elektronisiin piireihin, joiden alkeellisimmat perusosat suorittavat Boolen algebraan kuuluvia perusoperaatioita. Koska Boolen algebra perustuu kahteen totuusarvoon, on luontevaa käyttää niitä kaiken käsiteltävän tiedon ilmaisemiseen: esimerkiksi lukuja on teknisesti yksinkertaisinta käsitellä, jos ne on esitetty binäärijärjestelmän avulla. Yksittäisestä totuusarvosta (binäärijärjestelmän numerosta 1 tai 0) käytetään nimitystä bitti. Useimmat tietokoneet toteuttavat John von Neumannin mallia, jossa sekä ohjelma että sen käsittelemä tieto ovat muistiin tallennettua dataa. Tietokone suorittaa ohjelmaa yleensä lukemalla peräkkäisiä muistipaikkoja ja tulkitsemalla lukemansa bittijonot konekielisiksi käskyiksi. Konekielikäsky suorittaa yleensä jonkin yksinkertaisen alkeisoperaation, kuten bittijonon lukemisen muistipaikasta, kahden bittijonon välisen yhteenlaskun tai ohjelman suoritusosoitteen ehdollisen vaihtamisen. Konekielikäskyjä suorittavaa tietokoneen osaa kutsutaan suorittimeksi eli prosessoriksi, joka on nykyään yleensä alaltaan muutamien neliösenttimetrien kokoinen integroitu piiri. Henkilökohtaisissa tietokoneissa on tyypillisesti vain yksi suoritin, mutta suurissa palvelimissa ja supertietokoneissa niitä voi olla jopa useita tuhansia. Suorittimien lisäksi tietokoneessa on yleensä myös muita piirejä, jotka suorittavat erikoistuneempia tietojenkäsittelytehtäviä ja vapauttavat siten varsinaiset suorittimet näistä tehtävistä, esimerkiksi:
- Levyohjain, joka kopioi tietoa keskusmuistin ja kiintolevyn välillä.
- Näytönohjain, joka muuttaa näyttömuistiin tallennetun kuvan näyttölaitteelle sopivaksi ajoitetuksi signaaliksi. Monet näytönohjaimet osaavat myös itse piirtää grafiikkaa näyttömuistiin. Vaikka kaikki tietokoneet pystyvätkin periaatteessa suorittamaan samat tehtävät, ovat jotkut tietokoneet huomattavasti soveltuvampia joihinkin tehtäviin kuin toiset. Suorituskykyä erityyppisissä tehtävissä mitataan ns. benchmark-testeillä. Riittävän suorituskyvyn lisäksi merkittäviä tekijöitä ovat mm. koneen vakaus, vikasietoisuus, virrankulutus, fyysinen koko, ohjelmistoyhteensopivuus sekä hankinta- ja käyttökustannukset. Arkipuheessa tietokoneiden "paremmuutta" vertaillaan usein vertailemalla suoraan esimerkiksi suorittimien kellotaajuuksia. Kellotaajuus voi antaa suurpiirteisen vihjeen esimerkiksi PC-työaseman teknisestä iästä ja siten sen yleisestä suorituskyvystä ja luotettavuudesta useimmissa tehtävissä, mutta pelkkiin numeerisiin suureisiin katsominen voi esimerkiksi koneen ominaisuuksia arvioitaessa olla hyvinkin harhaanjohtavaa.

Tietokoneen arkkitehtuuri

Tietokonejärjestelmään kuuluvat
- ohjelmisto, "pehmo", "softa", (engl. :en:software).
- laitteisto, "rauta", (engl. :en:hardware) ja Ohjelmisto jaetaan edelleen
- kiinteisiin eli valmiisiin ohjelmiin, "valmo" (engl. :en:firmware),
- käyttöjärjestelmän (esim. Microsoft Windows tai GNU/Linux) ja
- käyttöjärjestelmän päällä toimiviin sovellusohjelmiin (esim. Open Office). Tietokoneen laitteiston von Neumannin arkkitehtuuri on säilynyt suunnilleen samana aina 1940-luvulta asti. Se on saanut nimensä ENIACin rakentamiseen osallistuneen John von Neumannin mukaan. Siihen kuuluu:
- suoritin, (engl. processor), joka suorittaa ohjelmaa
- muisti, (engl. data storage), johon tallennetaan sekä ohjelmat että niiden käyttämät tiedot
- oheislaitteet, (engl. peripheral device), tiedon syöttöön ja tulostukseen

Pöytätietokoneen osat

Nykyaikaisen pöytämallisen työasema- tai kotitietokone laitteisto koostuu erillisistä osista, joita ovat tyypillisesti:
- yksi tai useampi suoritin
- muisti
- emolevy
- näytönohjain (joko emolevyllä tai erillisenä korttina)
- ääniohjain (joko emolevyllä tai erillisenä korttina)
- massamuisti
  - yksi tai useampi kiintolevy
  - Kirjoittava DVD-asema
- ohjauslaitteet
  - näppäimistö
  - hiiri
- yksi tai useampi näyttö
- tietoliikenneyhteyden (esim. Internet) mahdollistava laite (yleensä verkkokortti tai modeemi)
- tulostin
- kuvanlukija eli skanneri Lisäksi tarvitaan osia, joita ei käytetä tiedonkäsittelyyn, kuten
- kotelo
- virtalähde
- muiden osien jäähdytykseen tarvittavat tuulettimet tai vesijäähdytysjärjestelmä

Tietokoneiden käytöstä

Ensimmäiset tietokoneet 1940- luvulla oli tehty sotilaallisiin tarkoituksiin, mm. Saksan ja Japanin salakirjoitusjärjestelmien murtamiseen. Tietokonetta käytetiin aluksi keskeisesti laskemiseen (vrt. engl. computer). ENIAC (385 kertolaskua sekunnissa) pystyi korvaamaan kertolaskussa (noin 1 kertolasku per minutti per ihminen) noin 23 000 ihmistä. Nykyinen mikroprosessori on edelleen noin 3 000 000 kertaa ENIAC:ia nopeampi, eli korvaa kertolaskuissa noin 60 miljardia ihmistä. Myöhemmin oivallettiin että ykkösillä ja nollilla voitiin kuvata mitä tahansa: tekstiä (tekstinkäsittely), kuvia (kuvien käsittely), sanomia, kirjoja, arkistoja, maastoa, rakennuksia jne. Tietokone ohjaa monesti laajoja järjestelmiä, esim. tietokoneohjattua tuotantoa, ase-, tiedustelu- tai johtamisjärjestelmää, liikennevaloja, puhelinkeskuksia, Internetin reitittimiä, autoja, pesukoneita, lähes kaikkia teknisiä järjestelmiä. Nykyaikaisen yhteiskunnan teknologinen pohja on keskeisesti tietokonetekniikkaa. Tietokoneen kapasiteetin kasvu on jatkuvasti yllättänyt asiantuntijat. Aikojen saatossa ovat asiantuntijoina pidetyt henkilöt lausuneet monia väitteitä, jotka tulevaisuus on osoittaneet vääriksi, esimerkiksi
- "Maailmassa on markkinoita ehkä viidelle tietokoneelle."
- "En näe mitään käyttöä tietokoneille kotona."
- "640 kilotavun pitäisi riittää kaikille. Tietyssä viitekehyksessä nämä ovat joskus ehkä voineetkin pitää paikkansa. Šakin peluuta pidettiin pitkään niin ihmismäisenä toimintona, että tietokoneen ei ajateltu koskaan pystyvän siihen. Merkittävä tapaus tietokoneen historiassa oli myös Toy story- elokuva, joka oli tehty täysin tietokoneella, tietokoneanimaationa.

Tietokonesukupolvet

Tietokoneiden sukupolvien teknologisia vaiheita ovat olleet:
- putkikoneet
- transistorikoneet
- mikropiirikoneet ja
- mikroprosessorikoneet. Ensimmäiset elektroniset tietokoneet 1940- luvun lopussa perustuivat releisiin ja elektroniputkiin, hitaisiin, epäluotettaviin, suurta energiakulutusta edustaviin ja suuriin komponentteihin. Colossus oli ensimmäinen elektroninen yleiskäyttöinen tietokone, joka rakennettiin Britanniassa Natsien viestiliikentessä käytetyn salauksen purkamiseen. Koska kyse oli tiedustelu toiminnasta, Britannian hallituksen salassapitomääräys koski myös Colossusta. ENIAC oli Yhdysvaltain ensimmäinen täysin elektroninen yleiskäyttöinen tietokone. Sen käyttö tarkoitus oli tykistön ampumataulukoiden laskenta, mitä ei luokiteltu sodanjälkeen salaiseksi ja näin ollen ENIAC:iin liittynyt dokumentaatio voitiin julkistaa heti 2. maailmansodan päätyttyä Siirtyminen 1950- luvulla puolijohteisiin perustuviin transistoreihin pienensi oleellisesti komponettien kokoa ja energian tarvetta sekä lisäsi luotettavuutta. Siirtyminen 1960- luvulla mikropiirehin pienensi jälleen tietokoneen komponenttien kokoa. Alkoi Mooren lakina tunnettu kehitys, jossa samalle mikropiirille saatiin kaksinkertainen komponenttimäärä puolessatoista vuodessa. Seuraava mullistus oli mikroprosessorin keksiminen. Mikroprosessorin avulla syntyi henkilökohtainen tietokone, PC. 1980- ja 1990- luvuilla siirryttiin suurtiheyksisiin mikropiireihin (VLSIC) ja edelleen suurnopeuksisiin mikropiireihin (VHSIC). Tietokoneiden sukupolvien suurvaiheita ovat olleet:
- suurtietokone (1965 - 1975) (mainframe)
- minikone (1975 - 1985)
- palvelin (1985 - 1995)
- verkko (1995 - ?)
- verkko + pääte (2000 - ?)

Mikroprosessori, suoritin

Mikroprosessori on tietokoneen keskusyksikkö, aivot, yhdellä mikropiirillä. Ensimmäinen mikroprosessori, Intelin 4004 vuodelta 1971 sisälsi noin 2300 transistoria. Sen kellotaajuus, nopeus oli 0,1 MHz:iä, kerralla käsitteltävän tiedon leveys 4 bittiä (yksi numero) ja se pystyi käsittelemään 0,06 miljoonaa käskyä sekunnissa. Kolmekymmentä vuotta myöhemmin, vuonna 2001 uusin mikroprosessori Intelin perheessä oli Itanium. Se sisälsi noin 25.000.000 transistoria, sen kellotaajuus oli 733 MHz:iä, kerralla käsisteltävän tiedon leveys oli 64 bittiä (16 numeroa) ja Itanium pystyi suorittamaan 7491 miljoonaa käskyä sekunnissa. Luvut ovat murskaavia. Ihmiskunnan tekniikan historiassa ei ole vastaavaa ilmiötä. Tästä voidaan päätellä, että ihmiskunnan tekniikan historiassa eletään poikkeuksellisia aikoja.

Tietokoneen aiheuttamia muutoksia

1. Yksityisyys vaarassa. Mikroprosessori on luomassa ennen näkemättömän mahdollisuuden yhdistellä ja saada tieto eri lähteistä. Tämä kehitys uhkaa ihmisten yksityisyyttä. Lääke tähän on mikroprosessori ja sen antama mahdollisuus tietojen tehokkaaseen ja halpaan salaamiseen. 2. Elektroninen työpaikka. Aluksi työpaikka muuttui melko vähän. Sitten halvat työryhmäohjelmat ja tietokoneverkot muuttivat työtä enemmän. Johto pystyy johtamaan useampaa ja erilaisempaa työryhmää tehokkaasti. Hyvät uutiset ovat se, että toimistokoneet eivät koskaan ole olleet näin halpoja. Huonot uutiset ovat se, että ihmisten etenemismahdollisuudet pienenevät, kun johtajia tarvitaan vähemmän. 3. Aivokuvaus kaikille. Kolmiulotteiset tomografia- laitteet vaativat laskentakapasiteetin, joka oli toteutettavissa vain kalliilla minitietokoneilla. Nyt sama kapasiteetti löytyy tehokkaimmista mikroista. 4. Uutistuotannosta tulee yhteistoimintaa. Aiemmin uutiset tulivat suurista uutistoimistoista. Nyt sähköpostijärjestelmät ja elektroniset keskustelufoorumit tarjoavat uutisaiheita valtavan turhan tiedon lisäksi. Reportterit saavat paljon sähköpostia ulkopuolisilta. Uutispohja kasvaa. 5. DNA-mysteerit paljastuvat. Ihmisperimän molekyyliketjujen laskenta on synnyttänyt uuden laskennallisen molekyylibiologian. Sairastumisherkkyys ja perinnölliset taudit voidaan kartoittaa. Ja vakuutusyhtiöt voivat tutkia, ketä kannattaa vakuuttaa. 6. Sähköposti luo demokratiaa. Se korvaa hierarkkisen johtamisportaikon ja mahdollistaa suoran tiedon alhaalta ylös (vrt kohta 3). 7. Älykkäämmät autot hallitsevat maanteitä. Moottorit käyttävät vähemmän polttoainetta ja antavat paremman tehon. Tarve säätää moottoria huollon yhteydessä on mennyttä aikaa. Omia käyttöjärjestelmiä yhdistämään tavallisen auton noin tusina mikroprosessoria tutkitaan. Tiedon valtatie autossa. 8. Luottoa kaikille. Kymmenen vuotta sitten luottokorttiostosten tarkistaminen oli hankalaa ja työlästä. Nyt jokaisen ostoksen automaattinen tarkastus on mahdollista heti, ja ennen kaikkea halvalla. Vuonna 1990 Visan tietoverkoissa maksettiin 174 miljardilla dollarilla, vuonna 1994 293 miljardilla, joka tarkoittaa 17 prosentin vuosikasvua. 9. Maailmanlaajuinen äänivalinta. Kännykkä on käytännössä mikrotietokone, johon on liitetty antenni ja joka on optimoitu signaalien välittämiseen. Uudet matkapuhelinverkot tarjoavat uusille valtiolle mahdollisuuden kivikaudesta suoraan uusimpaan tekniikkaan. 10. Animaatio avaa uuden ulottuvuuden. Elokuva Toy Story tehtiin pienimmällä henkilöstöllä kuin mikään aikaisempi animaatioelokuva. Silicon Graphicsin työasemien koneaikaa kului 800 000 tuntia ja tuloksena oli 500 Gigatavua tietoa, jonka yleisö näki filminä. 11. Tietokone ja digitaalinen signaalinkäsittely on aivan keskeinen osa nykyaikaisinta tavanomaista sodankäyntiä. Tietokoneeseen perustuvat mm. täsmäase, AWACS, JSTARS, GPS, tietoliikenne ja suuri osa tiedustelua 12. Laajimmillaan tietokone nähdään uuden tieteellisen paradigman mahdollistajana. Tällöin tietokone on avaa ihmiselle kompleksisuuden maailman samalla tavalla kuin mikroskooppi avasi pienuuden maailman ja kaukoputki suuruuden maailman. Tietokone tutkimusvälineenä mahdollistaa mm. kokonaisuuksien uudenlaisen tutkimuksen osiin keskittymisen sijasta. Tätä tietokoneiden aiheuttamaa muutosta on käsitellyt mm. amerikkalainen filosofi ja fyysikko Heinz R. Pagels.

Tietokoneen tulevaisuudesta

Mooren laki jatkunee vielä jonkin aikaa, eli tietokoneiden kehitys jatkuu ainakin nykyisenlaisena. Tämä kehitys merkitsee:
- teknisen älykkyyden radikaalin kasvun jatkumista (ks. Epistemologia/Tekninen ja inhimillinen tieto)
- yhä älykkäämpien, suurempien ja reaaliaikaisempien tehtävien siirtymistä tietokoneille
- tekniikan ja ihmiskunnan tietokoneistumista Tietokoneiden tulevaisuus on tietokoneverkoissa. Mullistusta tietokonetekniikassa on esitetty kvanttitietokoneista. Tietokone muuttaa ehkä ihmiskunnan kehityksen suunnan. Yksi tällainen suunta on transhumanismi.

Kirjallisuutta


- Martin Davis: Tietokoneen esihistoria Leibnizista Turingiin. Art House, 2003. ISBN 951-884-364-3

Katso myös


- Tietotekniikka
- Kannettava tietokone
- Tietokoneverkot
- Supertietokone
- Sulautettu tietokone
- Tekninen ja inhimillinen tieto
- Tietokonesimuloinnin keinot
- Tallennettu tieto
- Tietokoneiden vertailu 1940 - 2000
- Tietokoneet ja mallintaminen Neuvostoliiton kaatamisessa
- Suomen ensimmäiset tietokoneet
- PC
- Macintosh Luokka:Tietotekniikka Luokka:Matemaattiset apuvälineet ms:Komputer ko:컴퓨터 ja:コンピュータ simple:Computer

Konekieli

Konekieli on tietokoneen suorittimen ymmärtämä kieli. Konekieli koostuu sarjasta konekielisiä käskyjä. Suorittimen käyttämä konekieli riippuu sen arkkitehtuurista, esimerkiksi x86-arkkitehtuurin suorittimella varustettu kone ajaa x86-konekieltä ja PowerPC-kone PowerPC-konekieltä. Assembly on symbolinen konekieli, jossa kutakin koneen ymmärtämää käskyä vastaa jokin symbolinen sana. Kullakin konekielellä on oma symbolinen vastineensa, esimerkiksi x86-konekieltä vastaa x86-assembly. Symbolisenkin konekielenkin käyttö on vaivalloista, joten on kehitetty lukuisia korkeamman tason ohjelmointikieliä, ns. korkean tason kieliä, esimerkiksi C, Basic ja Pascal. Nämä kielet, kuten assemblykin, käännetään konekieleksi tai tulkataan konekielisellä ohjelmalla. Korkean tason ohjelmointikielet mahdollistavat myös samojen ohjelmien käytön tietokoneissa, jotka eivät käytä samaa konekieltä. Konekielinen ohjelma varastoidaan pitkäaikaisesti tietokoneen massamuistiin ja ladataan suorittamista ali ajoa varten tietokoneen keskusmuistiin. Käännetty konekielinen ohjelma voidaan esittää heksadesimaalimuodossa eli 16-järjestelmän lukuina. Luokka:Ohjelmointi Luokka:Tietokonetekniikka ko:기계어 ja:機械語 simple:Machine code

Ohjelmointikielen tulkki

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. Periaatteessa on mahdollista joko tulkata tai kääntää sama lähdekoodi. Lähdekoodin tulkkaaminen on hitaampaa, kuin samasta koodista käännetyn konekielisen ohjelman ajaminen. Tämä 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. Eräät ohjelmointikielet, kuten Java ja Emacs Lisp, tyypillisesti käännetään tavukoodiksi, joka suoritetaan virtuaalikoneella. Tämä tavukoodi on laitteistoriippumatonta ja kompaktia, joskin hieman hitaampaa kuin konekielinen ohjelma.

Katso myös


- komentosarjakieli
- makrokieli Luokka:Ohjelmointi ko:인터프리터 ja:インタプリタ

Lingvistiikka

Kielitiede eli lingvistiikka on kieltä tutkiva tiede. Varsinaisessa kielitieteessä kieltä tutkitaan autonomisena järjestelmänä ilman kytköksiä kielen ulkopuoliseen todellisuuteen. Kielitieteessä tutkimuksen kohteena voi olla
- ihmiskielen yleiset ominaisuudet. Tämä ala on yleistä kielitiedettä.
- yksi kieli tai murre eli dialekti.
- yhden henkilön kieli eli idiolekti, tai ryhmän kieli. Yleisemmin kielitieteessä tutkitaan muun muassa kielten universaaleja yhtäläisyyksiä, kielen ja ajattelun yhteyksiä, kielissä tapahtuvia muutoksia ja niiden syitä. Kielitieteellinen tutkimus voi olla
- synkronista, jolloin tutkitaan jollakin hetkellä vallitsevaa kielen tilaa. Yleensä tutkitaan käsitteellisen nykyhetken kieltä.
- diakronista, jolloin tutkitaan kieltä ajan kuluessa muuttuvana ilmiönä. Diakronisessa tutkimuksessa ilmiöiden muutoksia kuvataan vanhojen tekstien ja sukukielten antaman aineiston avulla. Kielitieteen juuret ovat filosofiassa. Antiikin filosofit pohtivat esineiden ja asioiden oikeita nimiä. Näistä pohdinnoista syntyivät sanaluokat, ja samalla syntyi uusi tieteenala, kielitiede, eli kielitieteen käsitykset kielen olemuksesta ovat filosofien luomia. Antiikin filosofi-kielitieteilijät loivat nykyiset sanaluokkakäsitteet, jotka osoittavat, mitkä luokat olivat tärkeitä kreikassa ja latinassa. Nämä sanaluokat eivät kuitenkaan ole universaaleja, esim. suomessa olisi tarpeen deverbaalinominien oma luokka (sana voi saada sekä verbin määritteet että substantiivin sijapäätteet), ja turkkilaiskielissä adverbi (verbin attribuutti) ja adjektiivi (substantiivin attribuutti) eivät useinkaan eroa muodollisesti toisistaan. Kielitieteen tutkimuskohteena on muun muassa kielioppi, eli säännöt, jotka tekevät kielen mahdolliseksi ja ymmärrettäväksi. Kyse on siis eri asiasta kuin kielenhuoltoihmisten käsitys yhteisöllisesti hyväksyttävästä kielestä. Kielioppi koostuu sanojen morfologiasta eli muoto-opista, syntaksista eli lauseopista ja ortografiasta. Puheääniä yleensä kielestä riippumatta tutkii fonetiikka, kun taas fonologia on keskittynyt yhden tietyn kielen foneemeihin eli äänteisiin ja niiden funktioihin.

Kielitieteen osa-alueita


- fonetiikka (äänneoppi)
- fonologia (funktionaalinen äänneoppi)
- kielioppi
  - morfologia (muoto-oppi)
  - syntaksi (lauseoppi)
  - ortografia
- leksikologia (sanasto-oppi)
  - onomasiologia (nimitysoppi)
  - etymologia (sanojen alkuperän tutkimus)
  - leksikografia (sanakirjaoppi)
  - terminologia (oppisanasto)
- semantiikka (merkitysoppi)
- stilistiikka (tyylintutkimus)
- pragmatiikka (kielen käytön tutkimus)

Kielitieteeseen liittyviä tieteenaloja


- kielifilosofia
- kielipsykologia
- neurolingvistiikka
- sosiolingvistiikka
- semiotiikka (yleinen merkkioppi)
- eri kielten filologiat
- vanhojen tekstien tutkimus
  - paleografia (vanhojen kirjoitusjärjestelmien tutkimus)
- kieliteknologia
- psykolingvistiikka
- käännöstiede
- tekstilingvistiikka
- keskusteluntutkimus
- kognitiivinen kielentutkimus

Kielitieteeseen liittyviä henkilöitä


- Roland Barthes
- Jean Baudrillard
- Walter Benjamin
- Noam Chomsky
- Jacques Derrida
- Umberto Eco
- Michel Foucault
- Roman Jakobson
- Jacques Lacan
- Claude Lévi-Strauss
- Charles Morris
- Charles Sanders Peirce
- Ferdinand de Saussure
- George Lakoff Luokka:Kielitiede zh-min-nan:Gí-giân-ha̍k ko:언어학 ja:言語学 th:ภาษาศาสตร์ fiu-vro:Keeletiidüs

Proseduraalinen ohjelmointikieli

Proseduraalinen ohjelmointikieli on kieli, jossa pääidea on käskyjen laittaminen peräkkäin. Ohjelmointi proseduraalisella tavalla on tehtävän jakamista osatehtäviin, ja näiden jakamista edelleen, kunnes tuloksena on niin yksinkertaisia tehtäviä, että ne voidaan suoraan kirjoittaa ohjelmariviksi. Syntymäpäiväjuhlien järjestäminen voidaan nähdä tehtäväksi, jonka osatehtävä on täytekakun tekeminen, ja tämän osatehtävä on kakkupohjan leipominen. Esimerkiksi yhden kananmunan rikkominen voisi vastata analogiassa lopullisen ohjelmakoodin yhtä riviä. Tyypillisiä proseduraalisia ohjelmointikieliä ovat C, Ada ja Pascal.

Katso myös:


- oliopohjainen ohjelmointikieli
- ohjelmointikieli Luokka:Ohjelmointi

Oliopohjainen ohjelmointikieli

Olio-ohjelmointi (object-oriented programming) on ohjelmoinnin lähestymistapa, jossa ohjelmointiongelmien ratkaisut jäsennetään olioiden yhteistoimintana. Olio-ohjelmoinnin kaksi koulukuntaa ovat skandinaavinen ja amerikkalainen. Skandinaavinen koulukunta hahmottaa olio-ohjelmoinnin reaalimaailman simulointina; oliokielistä ensimmäinen, Simula, kuuluu skandinaaviseen koulukuntaan. Amerikkalainen koulukunta on syntynyt Smalltalkin esimerkin ympärille; tälle koulukunnalle oleellista on ohjelman jäsentäminen olioiden yhteistoiminnan avulla riippumatta siitä, simuloiko tämä jäsennys millään tavalla reaalimaailmaa. Olio-ohjelmoinnille on annettu useita määritelmiä:
- olio-ohjelmointi = abstraktit tietotyypit + perintä (ks. esim. Danforth [http://portal.acm.org/citation.cfm?doid=62058.62060])
- "Ohjelman suoritus katsotaan fysikaaliseksi malliksi, joka simuloi joko todellisen tai kuvitteellisen maailman osan käyttäytymistä." (Knudsen ym. [http://springerlink.com/link.asp?id=6r379qv5u4nfm4yn])
- "Oliopohjainen ohjelmointikieli tukee datan ja käyttäytymisen kapselointia olioihin, joilla on vahva identiteetti ja rikkomattomuus, sekä jonkinasteista tiedonpiilotusta. Tavallisesti se myös tukee operaatioiden myöhäistä sidontaa ja perintää joko olioiden tai olioluokkien välillä. Tavallisesti se myös sallii olioiden luomisen, muuttamisen ja poistamisen." (Sakkinen, 1992) Olio (object) on oleellinen osa olio-ohjelmoinnin kokonaisuutta. Olio on tällaisen ohjelmoinnin rakenne, joka sisältää sekä tietoa, että (usein tietoon liittyviä) operaatioita. Oliot kuuluvat useissa ohjelmointikielissä luokkiin ja jokainen olio on (ainakin) yhden luokan edustaja. Näissä oliokielissä oliot muodostetaan tekemällä instanssi tietystä luokasta. Eli sama pipari-analogiana: luokka on kuin piparkakkumuotti, jolla painetaan taikinasta uniikkeja piparkakkuja eli olioita. Luokka siis määrittelee olioiden rajat ja toiminnallisuuden muttei niiden sisältämää dataa muuten kuin tietotyypeillä. On olemassa myös vähemmän tunnettuja prototyyppipohjaisia kieliä, jotka eivät tunne luokkakäsitettä. Esimerkki olioiden käytöstä ohjelmoitaessa: auto = new automobile; auto->Aja(KAUPPA); jossa:
- automobile on luokka
- auto on olio eli tässä tapauksessa automobile-luokan ilmentymä
- Aja on automobile-luokan operaatio.

Koodin uudelleenkäytettävyys

Olio-ohjelmoinnin merkittäväksi hyödyksi on sanottu sitä, että voidaan hyödyntää kertaalleen johonkin luokkaan kirjoitettua koodia periyttämällä siitä luokasta uusi luokka joka sisältää kaiken yliluokan/kantaluokan toiminnallisuuden sekä lisää siihen vielä jotain. Tämä on varsin yleinen olio-ohjelmoinnin mainoslause, jonka totuusarvo on kyseenalaistettu. Joidenkin tutkijoiden (mm. Markku Sakkinen) mielestä periyttämisen merkitystä olio-ohjelmoinnissa on ylikorostettu. Ohjelmakoodin uudellenkäyttö joka tapauksessa onnistuu myös muilla keinoilla kuin perinnällä. Tavallinen perintäesimerkki: Eläin-luokasta voidaan periyttää Kissa-luokka, joka osaa Eläin-luokan toiminnallisuuden lisäksi kehrätä ja pyydystää hiiriä. Jotkin ohjelmointikielet kuten C++ tukevat moniperiytymistä (multiple inheritance), jossa uusi luokka voidaan periyttää useista kantaluokista. Vaikka tämä voi vaikuttaa epäloogiselta, on se hyödyllistä esimerkiksi tilanteessa, jossa on "lentävä otus"- ja "nisäkäs"-luokat. Jos halutaan tehdä objekti, joka on nisäkäs, mutta "osaa lentää", voidaan se periyttää molemmista luokista, jolloin se perii molempien ominaisuudet.

Kapselointi

Kapselointi-termiä käytetään kahdessa merkityksessä. Ensimmäisen merkityksen mukaan kapseloinnin ideana on datan ja käyttäytymisen kokoaminen yhteen yksikköön, olioon. Toinen merkitys lisää tähän vielä tiedonpiilotuksen: olion sisäisiin muuttujiin ei (pääsääntöisesti)päästä käsiksi olion ulkopuolelta, jolloin ohjelmointivirheiden määrä vähänee.

Kirjallisuutta


- Kai Koskimies: Oliokirja. Suomen Atk-Kustannus, 2000. ISBN 951-762-720-3
- Bertrand Meyer: Object-Oriented Software Construction, Prentice-Hall, 1998. ISBN 0-13-629155-4
- Markku Sakkinen: Inheritance and Other Main Principles of C++ and Other Object-oriented Languages, Jyväskylä Studies in Computer Science, Economics and Statistics 20, University of Jyväskylä, 1992. Luokka:Ohjelmointi ms:Pengaturcaraan Berorientasikan Objek ja:オブジェクト指向 th:การเขียนโปรแกรมเชิงวัตถุ

Funktionaalinen ohjelmointikieli

Funktionaalinen ohjelmointikieli kuvaa maailman funktioina, jotka saavat joitakin parametreja ja palauttavat jonkin tuloksen. Olennaista on, että mitään varsinaisia muuttujia siten kuin proseduraalisessa tai oliopohjaisessa ohjelmointikielessä ole, ja että funktiot voivat saada parametreina toisia funktioita ja palauttaa tuloksenaan funktion. Etuna tästä on se, ettei ohjelmien funktioilla ole sivuvaikutuksia, mikä antaa esimerkiksi vapauksia funktioiden suoritusjärjestykselle. Esimerkiksi funktionaalisella Scheme-ohjelmointikielellä 1+5 lasketaan sanomalla (+ 1 5) Funktio, joka lisää parametriin yhden, voidaan määritellä: (define plus1 (lambda (luku) (+ 1 luku))) Tämän jälkeen (plus1 5) palauttaa arvon 6. Tunnetuin funktionaalinen kieli on lisp. Katso ohjelmointikieli. Luokka:Ohjelmointi ja:関数型言語

Logiikkapohjainen ohjelmointikieli

Logiikkapohjainen ohjelmointikieli kuvaa maailman faktoina ja faktojen välisinä suhteina. Esimerkiksi "Ville on Kallen isä, Matti on Villen isä, X on Y:n poika, jos Y on X:n isä ja jälkeläinen on poika tai pojan jälkeläinen" kuvataan prolog-kielellä näin: isa(ville, kalle).
isa(matti, ville).
poika(X, Y) :- isa(Y, X).
jalkelainen(X, Y) :- poika(X, Y).
jalkelainen(X, Y) :- poika(X, Z), jalkelainen(Z, Y). Nyt kyselyssä "kuka on Matin jälkelainen" todetaan ensin, että säännön 4 mukaan X on Matin jälkeläinen, jos X on Matin poika, ja säännön 3 mukaan X on Matin poika, jos Matti on X:n isä, ja säännön 2 mukaan Matti on Villen isä. Samalla tavoin Kalle todetaan Matin jälkeläiseksi käyttäen kaikkia viittä sääntöä. Ehdottomasti tunnetuin logiikkapohjainen ohjelmointikieli on edellä kuvattu prolog. Katso ohjelmointikieli. Luokka:Ohjelmointi th:การเขียนโปรแกรมเชิงตรรกะ

Algol

Algol (tähtitieteessä) on kirkkaudeltaan muuttuva tähti, jonka kirkkauden muutokset johtuvat kirkkaamman ja himmeämmän tähden pimentäessä toisiaan. Algol onkin Algol-tyyppisten pimennysmuuttujien esikuva. Spektroskooppisen kaksoistähden Algolin Bayerin nimi on β Per eli Beta Persei joka lyhennetään joskus BET PER. Algolin kirkkaus vaihtelee välillä 2,06 -- 3,28. Säännöllisen valonvaihtelun jakso on 2 päivää, 20 tuntia ja 49 minuuttia. Valonvaihtelun huomanneet arabit antoivat tähdelle nimeksi الغول al-ghūl, "piruntähti".

Algol-kaksoistähden kuvaus

Algol on nyt 92,8 valovuoden eli 35,14 parsekin päässä, mutta mittausten mukaan se olisi ohittanut auringon 7,3 miljoonaa vuotta sitten noin 9,8 valovuoden päästä. Algol on kolminkertainen tähti. Tähden ikä on alle 300 miljoonaa vuotta. Kirkkaamman Algol A:n ja himmeämmän Algol B:n väli on 0,062 AU ja kiertoaika 2,8673043 päivää joka lyhenee hitaasti. Kaltevuus on 97,69° ja soikeus noin 0, eli tähtien radat ovat ympyröitä. Kaltevuus kasvaa 0,1 astetta vuosisadassa. Algol AB on puoliksi erillinen kaksoistähti. Kaukana on vielä Algol C etäisyydellä 2,69 AU kiertoajalla 681 päivää eli 1,86 vuotta. Algol C:n radan kaltevuus on 83,98 ja soikeus e=0,225. Tähden väriä kuvaava väri-indeksi B-V on -0,05 ja vaihtelee. Kun himmeä, keltaoranssi Algol B pimentää kirkkaan, sinivalkoisen Algol A:n, tähden valo himmenee 10 tunniksi. Tämä on Algolin valonvaihtelun pääminimi. Sivuminimi jossa kirkkaus alenee 30 %, voidaan havaita vain valosähköisesti, siinä kirkkaampi tähti pimentää himmeämpää. Kirkkaimmillaan kaksoistähti on, kun molemmat tähdet loistavat esteettä yhtä aikaa. Algol A on sinertävänvalkoinen pääsarjan tähti tyyppiä B5-8V, ehkä massaltaan 3,59 (5?) Auringon massaa, läpimitaltaan 2,88 Aurinkoa ja sen kirkkaus visuaalisessa alueessa on 98 Auringon kirkkautta ja noin 180 Aurinkoa jos ultravioletti otetaan mukaan. Tähti pyörii nopeasti vauhdilla 65 km/s. Pintalämpötila on noin 12 500 K. Algol B on keltainen alijättiläistähti tyyppiä K0-2 IV (aikaisemmin G8), joka täyttää pisaramaisen Rochen pinnan, jonka ulkopuolelta A-komponentti pystyy vetämään B-tähden ainetta pois nopeudella 0,4 -- 2,0
- 10e-11 Auringon massaa vuodessa. Algol tunnetaan tähtien kehitysteoriassa Algol-paradoksista. Yleensä raskaampi sininen tähti kehittyy nopeammin kuin kevyempi. Kuitenkin kevyempi B-tähti on vanhempi kuin raskas sininen tähti. Tämä johtuu massan siirrosta keltaisesta tähdestä siniseen. Algol B:n massa on 0,79 Auringon massaa ja läpimitta ehkä 3,4 Aurinkoa. Algol B pimentää A-tähden valoa 1,3 magnitudia minimissä joka kestää 14 % kiertoajasta. Algolissa tapahtuu valtavia röntgenpurkauksia, jotka liittyvät magneettiseen vuorovaikutukseen tähtien ja kaasuvirran välillä. B-tähdessä on noin 0,2 tähden säteen mittainen valtava magneettinen silmukka joka tuottaa muutaman tunnin röntgenflareja. Tähtien välillä tapahtuu ns. magneettista jarrutusta. Radiopurkauksia tulee noin 1 AU:n säteeltä liittyen "tähdenjäristyksiin". Algol C on tyyppiä A5V (aikaisemmin luokiteltu F2:ksi). Tähden massa on 1,67 Aurinkoa, läpimitta 1,7 Auringon läpimittaa ja kirkkaus 4,1 Aurinkoa ja lämpötila 4 500 kelviniä. Luokka:Tähdet ja:アルゴル

Assembly (ohjelmointikieli)

Assembly on ohjelmointikielten alaluokka ja tarkoittaa symbolisia konekieliä. Tietokoneiden ymmärtämät konekielet ovat luvuista koostuva sarja käskyjä. Symbolinen konekieli havainnollistaa konekieltä ohjelmoijaa varten määrittelemällä konekielen toiminnoille kirjoitetun kielen kaltaisen ulkoasun. Assembly-kielessä on siten lähes sama rakenne ja komennot kuin varsinaisessa konekielessä, mutta tekstimuotoisuus mahdollistaa ohjelman lukemisen, kirjoittamisen ja ymmärtämisen. Konekieli ja siten Assembly ovat sidonnaisia tiettyyn suoritinperheeseen. Assembly-kielinen ohjelma muutetaan konekielelle assembleriksi nimetyllä kääntäjällä. Samaa laiteympäristöä varten voi olla useita eri syntakseja noudattavaa Assembly-kieltä ja niille omat kääntäjänsä. Assembly-kieliä ovat muun muassa Intel x86 Assembly ja AT&T Assembly, jotka ovat molemmat x86-konekielen symbolisia esitysmuotoja. Sen sijaan esimerkiksi ARM-konekielen kirjoittamiseen käytetään ARM-assemblyä. Assembly-kieli antaa ohjelmoijalle täyden määräysvallan suorittimelle syötettävän komentosarjan suhteen, ja siksi sitä käyttämällä voidaan hyödyntää tietokoneen resurssit tehokkaasti. Assemblyä ei juurikaan käytetä nykyaikaisten PC:n kaltaisten koneiden ohjelmoinnissa, paitsi erityisen laitteistoläheistä ohjelmointia vaativissa tehtävissä, kuten laiteohjaimissa, joskus myös suurta nopeutta vaativien tehtävien optimoinnissa, kuten salauksessa ja videokoodauksessa. Mobiililaitteiden ja muiden pienten sulautettujen järjestelmien ohjelmoinnissa on assemblyllä kuitenkin jonkin verran vahvempi asema. Kokonaisia ohjelmia ei tosin näillekään järjestelmille ole kovin mielekästä ohjelmoida pelkällä assemblyllä. Korkean tason kielten kääntäjät ovat kehittyneet huomattavasti aikojen kuluessa ja se on vähentänyt tarvetta kirjoittaa konekieltä käsin. Nykyään konekieltä käytetään nostamaan pienten ja usein suoritettavien ohjelman osien nopeutta. Esimerkiksi vektorilaskutoimitukset saatettaisiin ohjelmoida konekielellä laskettavaksi vektorilaskuyksikössä, koska kääntäjä ei syystä tai toisesta tee sitä itse. Tällainen optimointi on yleistä esimerkiksi videopakkauksen purkamisessa. Toisaalta uudet suorittimet ovat sisäiseltä toiminnaltaan niin monimutkaisia, että kääntäjän tuottaman koodin kirjoittaminen käsin nopeammaksi on monesti käytännössä vaikeata tai se ei ole vaivan arvoista. Muistilatenssien kasvaminen on saanut aikaan tilanteen että tietyissä sovelluksissa muutama ylimääräinen laskutoimitus ei sinänsä hidasta ohjelman toimintaa mitenkään, koska suurin osa suoritusajasta kuluu muistin toiminnan odottamiseen. Tällaisissa tapauksissa ei ole hyödyllistä kirjoittaa koodia käsin koska muistin nopeus ei riipu siitä, mikä konekielen on tuottanut. Lisäksi esimerkiksi tehokkaiden algoritmien ja tietorakenteiden valinta saattaa suurempia kokonaisuuksia assemblyllä kirjoittavalta jäädä pahasti taka-alalle, koska sellaisten algoritmien toteuttaminen voi olla konekielellä liian työlästä. Puhtaan assembly-kielen käyttöä on perinteisesti puoltanut myös ohjelmakoodin tiiviys verrattuna kääntäjien tuottamaan konekieleen. Etenkin varhaisten tietokoneiden ferriittirengasmuistit, kotitietokoneiden muistit sekä sulautettujen järjestelmien ohjelmamuistit ovat olleet verrattain pieniä ja asettaneet tiukan rajan suoritettavan ohjelman koolle. Assembly-kielellä toteutettuun ohjelmaan voitiin koodata vain sovelluksen tarvitsemat toiminnot, kun taas esimerkiksi FORTRAN- tai Algol-kielellä toteutetut ohjelmat toivat aina mukanaan 'ylimääräistä' koodia. Tyypillinen kokoero oli n. 1/10 'kehittyneimpiin' kieliin nähden.

Assembly-esimerkkejä

Tekstin tulostaminen MS-DOS -käyttöjärjestelmällä

Alla on esimerkki Assembly-kielisestä ohjelmasta Intelin x86-suvun arkkitehtuureille. Ohjelmakoodissa on käytetty Intelin x86-merkintätapaa. Ohjelma on MS-DOS-käyttöjärjestelmässä suoritettava COM-tyyppinen ohjelma. 1 org 100h 2 section .text 3 4 mov ah,9 5 mov dx,teksti 6 int 21h 7 ret 8 9 teksti: db 'Hei maailma!$' Ohjelma kutsuu MS-DOS -käyttöjärjestelmän systeemikutsua, joka tulostaa annetussa muistiosoitteessa olevan tekstin "Hei maailma!". Tulostamiseen käytetään PC:n DOS-käyttöjärjestelmien ohjelmistokeskeytystä 21h (h tarkoittaa heksalukua, luku on desimaalisena 33), jolle halutun toiminnon numero (9) annetaan rekisterissä ah (rivi 4). Rekisteriin dx sijoitetaan muistiosoite, josta haluttu $-merkkiin loppuva teksti alkaa datasegmentin ds sisällä (rivi 5). Itse keskeytysrutiinia kutsutaan rivillä 6. Rutiinin suorittamisen jälkeen palataan pääohjelmaan, mikä onnistuu com-tyyppisessä ohjelmassa pelkällä ret-käskyllä (rivi 7). Muuntyyppisessä ohjelmassa voi olla tarpeen käyttää ohjelmistokeskeytyksen 21h alaista toimintoa 4Ch. Tekstiin kuuluvat tavut on määritelty rivillä 9, joten ne alkavat heti ohjelmakoodin viimeisen tavun jälkeen. Tekstin alkuosoitteelle on annettu nimike teksti, jota käytetään rivillä 5 rekisterin dx arvon asettamiseen. Rivi 1 määrittelee ohjelman alkuosoitteen segmenttinsä sisällä. Com-tyyppisissä ohjelmissa alkuosoite on aina 100h.

Fibonaccin lukujen laskeminen

Seuraava esimerkki on Fibonaccin lukujen laskija Motorola 68K-suoritinperheelle. Lasketaan n:s Fibonaccin luku antamalla n rekisterissä d0. Fibonaccin n:s luku f_n lasketaan silmukassa kaavalla: f_ = f_ + f_, ja f_0 = 1 ja f_1 = 1. 1 fibonacci: cmp.l #1,d0 2 bgt.b overone 3 moveq #1,d0 4 rts 5 overone: moveq #1,d1 6 moveq #1,d2 7 moveq #1,d3 8 loop: move.l d2,d4 9 add.l d3,d4 10 move.l d3,d2 11 move.l d4,d3 12 addq.l #1,d1 13 cmp.l d0,d1 14 bne.b loop 15 move.l d4,d0 16 rts Riveillä 1-4 tarkistetaan, onko d0 \leq 1 ja jos se on, lopetetaan aliohjelma ja palautetaan tuloksena 1. Rivillä 5 asetetaan silmukkalaskuri rekisterissä d1 arvoon 1. Riveillä 6 ja 7 asetetaan rekisterit d2 ja d3 arvoihin f_0 ja f_1. Rivillä 8 alkaa silmukka. Rivit 8 ja 9 laskevat seuraavan Fibonaccin luvun rekisteriin d4 summaamalla kaksi edellistä lukua rekistereistä d2 ja d3. Riveillä 10 ja 11 tallennetaan muistiin 2 uusinta Fibonaccin lukua rekistereihin d2 ja d3 seuraavaa kierrosta varten. Rivillä 12 kasvatetaan silmukkalaskuria yhdellä. Riveillä 13 ja 14 vertaillaan silmukkalaskuria ja n:ää. Mikäli n on saavutettu, lopetetaan silmukka. Muuten hypätään takaisin riville 8. Rivillä 15 siirretään tulos rekisteristä d4 rekisteriin d0 ja rivillä 16 poistutaan aliohjelmasta.

Esimerkeistä

Esimerkit antavat hyvän kuvan, miksi sovelluksia kehittäessä aikaa kuluu erittäin kauan ja työskentely puhtaalla assemblyllä on hankalaa. Korkeamman tason ohjelmointikielet on luotu helpottamaan tätä työtä, ja kääntäjiä käytetään muuntamaan selkeämpi kieli konekielimuotoon. Konekielet ovat kuitenkin yleensä hyvin suoraviivaisia, ja käskyjen suorittamat toiminnot ovat yksinkertaisia. Tämän vuoksi assembly-ohjelmointi on helppo opetella.

Aiheesta muualla


- [http://www.osc.edu/hpc/manuals/ia64/docs2/ref/asm_lan_lx.htm Intel Itanium]
- [http://docs.sun.com/app/docs/doc/817-5477 x86-manuaali] Sunilta Solarikselle
- [http://docs.sun.com/app/docs/doc/816-1681 SPARC-manuaali] Sunilta Solarikselle

Assemblereita


- A86
- [http://flatassembler.net flat assembler (FASM)]
- GNU Assembler
- [http://www.masm32.com/ Microsoft Macro Assembler (MASM)] Windows ohjelmointiin
- Borland Turbo Assembler (TASM)
- Wolfware Assembler (WASM)
- Netwide Assembler (NASM) Luokka:Ohjelmointikielet ja:アセンブリ言語

BASIC

BASIC (lyhenne sanoista Beginner's All purpose Symbolic Instruction Code) on proseduraalinen ohjelmointikieli, joka kehitettiin vuonna 1964 ohjelmoinnin alkeiden opetukseen. BASIC oli suosittu kieli etenkin 1980-luvulla, kun lähes jokaisessa kotimikrossa oli BASIC-tulkki joko sisäänrakennettuna tai oheisohjelmana. Nykyisin kenties suosituin BASIC-versio on Microsoftin Visual Basic, jota usein ohjelmoidaan käyttäen Microsoftin Visual Studio (.NET) -ohjelmointiympäristöä. Basicin käskyt tulkataan rivi kerrallaan, kun useimmiten ohjelmointikielissä on tulkin sijasta kääntäjä, joka kääntää koko ohjelman konekielelle Useimmat suositut BASIC-versiot niin 8-bittisissä kuin kehittyneemmissäkin koneissa ovat Microsoftin käsialaa ja polveutuvat jotain kautta Paul Allenin ja Bill Gatesin Altair 8800:lle vuonna 1975 kirjoittamasta Altair BASIC-tulkista, joka oli ensimmäinen Microsoftin julkaisema tietokoneohjelma. Etenkin perinteisiä rivinumero-BASICeja on kritisoitu siitä, että niiden puutteelliset rakenteelliset ominaisuudet totuuttavat aloittelevan ohjelmoijan kirjoittamaan niin sanottua spagettikoodia, jossa mielivaltaisiin paikkoihin sijoitettujen ohjelmanpalasten välillä hypitään GOTO-käskyillä. Vaikka nykyiset BASICit ovatkin rakenteellisilta ominaisuuksiltaan monipuolisempia, ei kielen huono maine ole vieläkään täysin hävinnyt. On olemassa myös useita harrastelijoiden tekemiä Basiciin pohjautuvia kieliä, esimerkiksi suomalainen Coolbasic. Esimerkki perinteisestä rivinumero-BASICista (toimii esimerkiksi useimpien 8-bittisten koneiden tulkeissa): 5 REM Tämä ohjelma arvuuttaa lukua 10 PRINT "Arvaa luku"; 20 INPUT A 30 IF A=42 THEN GOTO 50 40 PRINT "Väärin" : GOTO 10 50 PRINT "Oikein!" 60 END Vastaavan toiminnallisuuden saa useimmissa BASIC-tulkeissa myös seuraavanlaisella rimpsulla: 1INPUT"Arvaa luku";A:IFA=42THEN?"Oikein!"ELSE?"Väärin":GOTO1 Tämäntyyppinen kompakti koodaustyyli, jossa välilyöntejä ei käytetä, oli jopa suositeltavaa 80-luvulla (niissä BASIC-tulkeissa joissa se oli mahdollista), sillä siten saatiin aikaan nopeampia ohjelmia. Myös kommentit (jotka alkoivat joko REM tai ') jätettiin yleensä pois samasta syystä. Perinteistä siistiä tyyliä välilyönteineen ja kommentteineen näki lähinnä aloittelijoiden ohjelmointioppaissa. Tänä päivänä muita suosittuja BASIC-ohjelmointikieliä Microsoftin Visual Basicin lisäksi ovat lähinnä Macintosh-ympäristöissä mainetta niittänyt RealBasic sekä pelikehitykseen suunnatut DarkBASIC ja BlitzBasic, joista jälkimmäinen julkaistiin jo Amigalle ja jota käytettiin mm. ensimmäisen Worms-pelin kehittämiseen.

Linkkejä

Kääntäjiä


- [http://www.coolbasic.com CoolBasic]
- [http://www.realbasic.com Real Basic]
- [http://www.blitzbasic.com Blitz Basic]
- [http://darkbasic.thegamecreators.com/ DarkBASIC]
- [http://msdn.microsoft.com/vbasic/ Microsoft Visual Basic] Luokka:Ohjelmointikielet ms:BASIC ko:베이직 ja:BASIC th:ภาษาเบสิก

C (ohjelmointikieli)

C-ohjelmointikieli on Dennis Ritchien 1970-luvun alussa UNIX-käyttöjärjestelmälle kehittämä imperatiivinen ja sittemmin standardisoitu ohjelmointikieli. Se perustuu Ken Thompsonin kehittämään B-kieleen. C-kieli tarkoitettiin alun perin pelkästään järjestelmäohjelmointiin, mutta se on saavuttanut suosiota myös sovellusohjelmointikielenä. C yleistyi Unixin yleistyessä ja nykyisin käytännössä kaikki järjestelmäalustat käyttävät C-kieltä järjestelmäkielenään. C-kielen merkitys näkyy myös siinä, että monet kielet muistuttavat C:tä avainsanoiltaan ja syntaksiltaan, vaikka niiden toimintaperiaate ja käyttötarkoitus olisi erilainen. Jotkin uudemmat ohjelmointikielet, kuten C++, C# ja Java, pohjautuvat C-kieleen. Ne eivät kuitenkaan ole syrjäyttäneet C-kieltä täysin. Joidenkin korkean tason ohjelmointikielten toteutukset käyttävät C-kieltä välikielenä. C-kielellä on seuraavia ominaispiirteitä:
- Yksinkertainen ydinkieli, jonka lisäksi keskeisiä toimintoja toteutettu kirjastoissa
- Minimalistinen määrä varattuja avainsanoja
- Keskeisenä periaatteena rakenteellinen proseduraalinen ohjelmointi
- Yksinkertainen ALGOL-sukulaiskielten tapainen tyyppijärjestelmä
- Matalan tason pääsy tietokoneen muistiin osoittimien avulla
- Parametrien välitys aliohjelmille joko arvoina tai viitteinä käyttämällä osoittimia
- Funktio-osoittimet, jotka mahdollistavat yksinkertaisten jatkumoiden ja polymorfismin käytön
- Leksikaalinen muuttujien määrittelyalue (Lexical Variable Scoping)
- Tietueet, joiden avulla toisiinsa liittyviä muuttujia voidaan käsitellä yhdessä
- Esikäsittelymekanismi (C Preprocessor), jonka avulla voidaan mm. yhdistää useissa tiedostoissa sijaitsevaa lähdekoodia ja määritellä makroja Yksinkertaisuuden tavoittelun vuoksi C-kielestä puuttuu suora tuki monille muista kielistä löytyville ominaisuuksille. Näitä ovat mm. tyyppien suojaaminen (Type Safety), roskienkeräys (Carbage Collection), luokkajärjestelmä, kuormitus, tuki säikeille, listojenkäsittely ym. Tosin useimmat näistä ominaisuuksista voidaan ohjelmoida C-kielellä epäsuorasti.

Esimerkkiohjelma

Esimerkkiohjelma tulostaa rivin ”Hei maailma!” vakiotulostevirtaan, joka on yleensä tietokoneen näyttöpääte. #include int main ( void )

Aiheesta muualla


- http://www.c-program.com/The_C_Programming_Language_Ritchie_kernighan.pdf
- [http://www.ohjelmointiputka.net/opas.php?tunnus=cohj_1 Suomalainen C-opassarja] Luokka:Ohjelmointikielet ms:Bahasa pengaturcaraan C ko:C 프로그래밍 언어 ja:C言語 th:ภาษาซี

C sharp

C# (laus. C sharp) on Microsoft-yhtiön .NET-konseptia varten kehittämä ohjelmointikieli, joka julkaistiin kesäkuussa 2000. Kieli muistuttaa C++- ja Java-kieliä. C#:n kehitti Anders Hejlsberg, joka tuli Microsoft-yhtiön palvelukseen Borlandilta. Anders Hejlsberg oli ennen C#:a mukana Turbo Pascalin, Delphin ja J++:n kehitystyössä. C#:n tavoitteena on yhdistää C++:n tehokkuus ja Javan, Visual Basicin tai Delphin tarjoama helppokäyttöisyys. Microsoft on pyrkinyt saamaan C#:lle virallisen standardisoinnin. C#:sta tulikin ISO-standardi vuonna 2003. Standardin pohjalta ollaan tekemässä itsenäisiä toteuksia kielestä, esimerkiksi:
- Mono, Ximianin .NET-alusta
- dotGNU ja PortableNET, Free Software Foundationin projekteja

Aiheesta muualla


- [http://msdn.microsoft.com/vcsharp/team/language/default.aspx C#:n esittely MSDN:n sivuilla]
- [http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36768&ICS1=35&ICS2=60&ICS3= ISO-standardi] Luokka:Ohjelmointikielet ko:C 샤프 ja:C Sharp th:ภาษาซีชาร์ป

COBOL

COBOL on vuonna 1959 Pentagonin aloitteesta kehitetty kaupallisiin sovellutuksiin tarkoitettu ohjelmointikieli. Nykyään käytössä oleva versio on COBOL 2002. Monet modernimmat kielet ovat jättäneet COBOLin hieman sivuraiteelle. Lyhennys tulee sanoista Common Business Oriented Language. COBOL-ohjelman tyypillinen piirre on sen jakautuminen divisiooniin:
- Identification Division :sisältää ohjelman tunnisteet.
- Environment Division :määrittää käyttöympäristön.
- Data Division :sisältää ohjelmassa käsiteltävän datan.
- Procedure Division :sisältää itse ohjelmaproseduurin. Proseduurin käskyt on pyritty laatimaan niin lähelle käyttöenglantia kuin mahdollista. Jos ohjelman parametreiksi ja muuttujiksi vielä valitaan sopivia sanoja, tulee proseduurista mahdollisesti täysin yleiskielinen ja englantia hallitsevan maallikonkin luettava. Luokka:Ohjelmointikielet ko:코볼 ja:COBOL

D (ohjelmointikieli)

D-nimisiä ohjelmointikieliä on ollut useita, mutta tällä sivulla keskitytään Walter Brightin kehittämään ohjelmointikieleen. Muita D-nimellä kutsuttuja ohjelmointikieliä:
- Dialog manager D-ohjelmointikieli on tällä hetkellä vielä kehitteillä, vaikkakin sen avulla on jo nyt mahdollista luoda ohjelmistoja. Kielen ominaisuuksia ei ole vielä lyöty lukkoon, eli muutoksia voi vielä tulla.

Linkkejä


- [http://www.digitalmars.com/d www.digitalmars.com/d] Luokka:Ohjelmointikielet

Delphi

Delphi on Borlandin tekemä Pascal-kieleen pohjautuva graafinen ohjelmankehitysympäristö ja ohjelmointikieli. Delphi mahdollisti julkaisuvuonnaan 1995 ensimmäisenä visuaalisen Windows -lomakkeiden editoinnin yhdistettynä olio-ohjelmointiiin. Linux-ympäristöön Delphistä on tehty oma versionsa, joka tunnetaan nimellä Kylix. Kylixin mukana tulee myös C++-kääntäjä Delphi -kääntäjän lisäksi. Delphiä vastaava C++ -kielinen graafinen ohjelmointiympäristö on C++ Builder. Delphin uusimassa versiossa on samaan pakettiin yhdistetty Delphi, C# Builder sekä C++ Builder.

Linkit


- http://www.borland.com/delphi/
- Delphin OpenGL linkit
  - [http://www.delphigl.com/index2.php DelphiGL], Delphin OpenGL yhteisö.
  - [http://delphi3d.net/ Delphi3D] Nopeata OpenGL kehittämistä.
  - [http://glscene.sourceforge.net/index.php GLScene]
- [http://newton.delphigl.de/ Newton Game Dynamics Engine] Luokka:Ohjelmointi Luokka:Ohjelmointikielet ja:Delphi

Forth

Forth on tietokoneiden ohjelmointikieli ja interaktiivinen ohjelmointiympäristö, jonka kehitti alun perin Chuck Moore 1970-luvun alkupuolella. Forth on rakenteeltaan hyvin yksinkertainen pinokeskeinen kieli, joka on ollut suosittu etenkin laitteistoresursseiltaan vaatimattomissa ja tehokasta ohjelmointia vaativissa sulautetuissa järjestelmissä. On valmistettu jopa mikroprosessoreita, jotka suorittavat Forth-tavukoodia konekielenään. __NOTOC__

Esimerkkejä

Yhteenlasku

5 7 + . Sanat 5 ja 7 lisäävät asianomaiset luvut datapinoon. Sana + laskee yhteen datapinon kaksi päällimmäistä lukua ja jättää jäljelle summan eli tässä tapauksessa luvun 12. Sana . tulostaa pinon päällimmäisen luvun. Pino on hyvin keskeisessä osassa Forth-ohjelmoinnissa, ja jopa ohjausrakenteet on toteutettu pinokeskeisesti. Tästä syystä Forth-ohjelmakoodin hahmottaminen vaatii jonkin verran harjoittelua.

Aliohjelma

: FLOOR5 ( n -- n' ) DUP 5 < IF DROP 5 ELSE 1 - THEN ; Tämä ohjelmakoodi määrittelee uuden sanan eli aliohjelman nimeltä FLOOR5, joka ottaa syötteenä yhden alkion (n) pinon päältä ja jättää tulosteenaan pinon päälle yhden alkion (n'). Aliohjelma itse vertaa syötteenään saamaansa lukua lukuun 5. Jos luku on pienempi kuin 5, niin palautetaan 5, muutoin vähennetään siitä 1 ja palautetaan erotus. Ohjelman suoritus etenee seuraavasti: DUP-sana tuplaa pinon päällimmäisen alkion. Jos pinon huipulla on esimerkiksi 8, on DUP-sanan suorituksen jälkeen huipulla kaksi 8:aa (8 8). <-sana vertailee pinon kahta päällimmäistä lukua (esimerkissä 8 ja 5) toisiinsa ja jättää niiden tilalle totuusarvon, joka ilmaisee, onko ensimmäinen luku pienempi kuin toinen. IF-sana jatkaa suoritusta pinon päällimmäisenä olevan totuusarvon mukaan. Jos arvo on tosi, suoritetaan koodi IF- ja ELSE-sanojen välistä, muussa tapauksessa ELSE- ja THEN-sanojen välistä. DROP-sana poistaa pinon päällimmäisen alkion. Tässä tapauksessa sitä tarvitaan, jotta päällimmäisen alkion (aliohjelman syötteen) voisi korvata luvulla 5. Sanat 1 - vähentävät pinon päällimmäisenä olevasta luvusta (eli syötteestä) luvun 1. Sana ; lopettaa sanan määrittelyn, joka alkoi sanoilla FLOOR5 (n -- n' ).

Hello World

Kuuluisa Hello World -ohjelma toteutettaisiin Forthilla seuraavasti: : HELLO ( -- ) ." Hello World!" ;

Aiheesta muualla


- [http://www.forth.org/ Forth Interest Group]
- [http://wiki.forthfreak.net/jsforth.html JSForth] - JavaScript-kielellä toteutettu selaimessa toimiva Forth-ohjelmointiympäristö. Luokka:Ohjelmointikielet ja:FORTH

IDL-ohjelmointikieli

IDL (interaktiivinen datakieli, engl. interactive data language) on 1970-luvun loppupuolella syntynyt ohjelmointikieli, jota on käytetty erityisesti luonnontieteissä kerätyn tiedon analysointiin ja visualisointiin. IDL:n kehittäjä on yhdysvaltalainen yhtiö Research Systems, Inc.

Yleistä

IDL on vektorien käsittelyyn suuntautunut numeerinen vuorovaikutteiseen työskentelyyn sopiva kieli. Monet sen piirteet muistuttavat Fortrania. Sitä käytetään suurten tietoaineistojen vuorovaikutteiseen käsittelyyn, esimerkiksi kuvankäsittelyyn. IDL:n toteutus 1980-luvulla pohjautui Fortraniin VAX/VMS-ympäristössä. Tämä näkyy yhä IDL:n syntaksissa: x = findgen(100)/10 y = sin(x)/x plot,x,y Huomaa, että toisen rivin laskutoimitus kohdistuu koko 100-alkioiseen ensimmäisellä rivillä luotuun ja alustettuun taulukkoon. Tämä muistuttaa yleiskäyttöisten vektoriohjelmointikielten (kuten APL tai J) ilmaisutapaa. Kuten useimmilla muilla vektorien käsittelyyn suuntautuneilla ohjelmointikielillä, IDL:llä voi suorittaa vektorien laskutoimituksia hyvin nopeasti (joskus nopeammin kuin vastaavalla Fortran- tai C-kielisellä toteutuksella), mutta alkioiden käsittely yksitellen on hidasta. Siten osa IDL-ohjelmointitaitoa on käyttää raskaissa numeerisissa laskutoimituksissa kieleen sisäänrakennettuja vektorioperaatioita.

Ominaisuuksia


- dynaaminen tyypitys
- yksi yhteinen nimiavaruus
- yksisäikeinen ohjelman suoritus
- pääsääntöisesti funktioiden argumentit välitetään viittauksena
- muuttujia ei tarvitse määritellä
- globaaleja muuttujia voi jakaa aliohjelmien välillä vain COMMON-alueiden välityksellä
- tuki yksinkertaiselle oliopohjaiselle ohjelmoinnille
- ohjelmat käännetään tulkittavaksi välikoodiksi, samaan tapaan kuin Javan virtuaalikoneessa
- yksinkertainen ja tehokas indeksointi, jolla taulukosta voidaan poimia osia
- eri kokonaislukutyyppejä, yksin- ja kaksinkertaisen tarkkuuden liukuluvut reaali- ja kompleksiluvuille
- yhdistettyjä tietotyyppejä (merkkijonot, yhtä alkiotyyppiä sisältävät taulukot, yksinkertaiset (ei-hierarkkiset) eri tietotyyppejä yhdistävät struktuurit)

Vaikeuksia

Jotkin ominaisuuksista, jotka tekevät IDL:stä helpon vuorovaikutteisessa käytössä, vaikeuttavat laajojen ohjelmistojen kirjoittamista. Yhteinen nimiavaruus hankaloittaa mm. eri lähteistä olevien ohjelmien yhdistämistä. IDL:ssä ei ole tyhjiä taulukoita, muuttuvankokoisia dynaamisia taulukoita eikä mahdollisuutta sisäkkäisiin taulukoihin. Kielen olio-ominaisuudet jättävät muistinhallinnan ohjelmoijan vastuulle.

Esimerkkejä


- Graafeja Etelämantereen paleoklimatologisten jääkairausten mittaustuloksista (mukana lähdekoodi)

Katso myös

IDL-ohjelmointikieli sekoitetaan helposti ohjelmistorajapintojen kuvauskieliin, joista usein käytetään lyhennettä IDL.

Linkkejä


- [http://www.rsinc.com Research Systems, Inc.] Luokka:Ohjelmointikielet

Java

Java on Sun Microsystems, Inc.:n kehittämä laitteistoriippumaton oliopohjainen ohjelmointikieli. Sen laitteistoriippumattomuus on saatu aikaan kääntämällä ohjelmat ns. virtuaalikoneen koodiksi (= "tavukoodi", engl. byte code), jota virtuaalikone tulkkaa muuntamalla tavukoodin lennossa varsinaisen tietokoneen suorittimen ymmärtämiksi konekielikäskyiksi. Java-kielen 1990-luvun lopulla saavuttaman suuren suosion takana ovat laitteistoriippumattomuuden lisäksi kielen C++-kieltä läheisesti muistuttava, mutta helpommin omaksuttavaksi suunniteltu kielioppi, oliopohjaisuus ja virtuaalikoneen mukana tuleva, erittäin kattava standardikirjasto. Myös muistinhallintaa on helpotettu ottamalla käyttöön muistikeräin (engl. garbage collector), joka vapauttaa muistia kun sitä ei enää tarvita. Koska Java-ohjelmat ajetaan virtuaalikoneessa, ne eivät normaalisti pysty vaikuttamaan suoraan muihin prosesseihin, eivätkä pääse virtuaalikoneelle määrätyn hiekkalaatikon ulkopuolelle vaan esimerkiksi kovalevyä käytettäessä käskyt kulkevat virtuaalikoneen läpi, joka varmistaa ettei käsky ole hiekkalaatikon ulkopuolella. Java-ohjelmat ovat mm. näiden rajoitusten vuoksi tavanomaisia konekieliohjelmia turvallisempia, mutta samalla hieman hitaampia. Kieltä käytetään paljon dynaamisia WWW-sivuja tehtäessä (JSP, servlet), raskaissa palvelinsovelluksissa (J2EE), kännyköissä (J2ME), taskutietokoneissa, ja jonkin verran myös käyttäjien selaimissa toimivissa sovelmissa. Myöskin isoja käyttöliittymiä tehdään Javalla paljon. Yleisyytensä vuoksi se on myös suosittu opetuskieli. Java kuuluu ohjelmointikieliin, joissa on käytössä ns. vahva tyypitys. Tämä tarkoittaa sitä, että jokaisella muuttujalla on tyyppi ja muuttujat voivat saada ainoastaan tyyppinsä mukaisia arvoja. Java on saanut nimensä Jaavan saaren (Indonesiassa) mukaan, sillä kyseisellä saarella tuotetaan kahvilajia, jota Java-kielen kehittäjät nauttivat suuria määriä kieltä suunnitellessaan ja toteuttaessaan. Sekaannusten välttämiseksi ohjemointikielen nimen oikeinkirjoitus on tärkeää, jottei se sekaannu Jaavan saarella puhuttuun jaavan kieleen.

Aiheesta muualla


- http://java.sun.com/
- Sun Microsystems, Inc.: http://www.sun.com/ Luokka:Ohjelmointikielet ko:자바 프로그래밍 언어 ja:Java言語 th:ภาษาจาวา

Lisp

Lisp (engl. LISt Processing language) on tulkattava, funktionaalinen ohjelmointikieli, jonka määritteli John McCarthy vuonna 1958. Puhtaassa muodossaan kielessä ei ole edes muuttujia ja sijoitusoperaatioita, vaan kaikki ohjelman tilannetieto sisältyy sen tekemien sisäkkäisten funktiokutsujen argumentteihin.

Esimerkkejä

Muotoiltu merkkijono ja yhteenlasku

(ajettu Lisp-tulkissa)

[1]> (format t "5 + 5 = ~D" ( + 5 5))
5 + 5 = 10
NIL

Sijoitus, funktion määrittely ja kutsu

(suoritettava ohjelma)

#!/usr/bin/clisp
;; Sijoitus
(setq a 5)
(setq h 4)

;; Funktion määrittely
(defun ala(a h)( / (
- a h ) 2 ))

;; Funktion kutsu
(setq A (ala a h))
(format t "~D" A)
Luokka:Ohjelmointikielet ko:리스프 ja:LISP

Oberon

Oberon on Uranuksen toiseksi suurin kuu ja uloin neljästä suuresta kuusta. Oberonin designaatio on Uranus IV.

Löytäminen ja nimeäminen

Kuun löysi William Herschel vuonna 1787 samaan aikaan Titanian kanssa. John Herschel nimesi Oberonin 1852 yhdessä kolmen muun silloin tunnetun Uranuksen kuun kanssa. Oberon on saanut nimensä William Shakespearen näytelmässä Kesäyön unelma esiintyvän keijukaisten kuninkaan mukaan.

Fyysiset ominaisuudet

Ainoa Oberonia lähietäisyydeltä tutkinut luotain on Voyager 2, joka ohitti kuun tammikuussa 1986. Ohilennon aikana kuun eteläinen pallonpuolisko oli kääntyneenä Aurinkoon päin joten ainoastaan sitä puolta pystyttiin tutkimaan. Oberonista on noin 50 % vesijäätä, 30 % silikaattikiveä 20 % metaanin muodostamia orgaanisia yhdisteitä. Pinta on jäinen, vanha ja voimakkaasti kraatereiden peittämä. Monien kraatereiden pohjaa peittää tuntematon tumma materiaali. Kraatereiden lisäksi Oberonista tunnetaan pitkiä, kapeita ja jyrkkäreunaisia vajoamia (Chasma). Luokka:Uranuksen kuut ja:オベロン

Objective-C

Objective-C -ohjelmointikieli on Brad J. Coxin 1980-luvun puolivälissä kehittämä ja nykyään Apple Computerin omistama ohjelmointikieli. Se on pieni oliolaajennus C-ohjelmointikieleen. Oliomalli on otettu Smalltalkista. Luokka:Ohjelmointikielet ja:Objective-C

United States v. The Progressive, et al.

attempted to censor.]] United States of America v. Progressive, Inc., Erwin Knoll, Samuel Day, Jr., and Howard Morland is the name of a lawsuit against the magazine The Progressive by the U.S. government (specifically the United States Department of Energy) in 1979. A temporary injunction was granted againstThe Progressive preventing the publication of an article by activist Howard Morland that purported to reveal the "secret" of the hydrogen bomb. Though the information was compiled from public domain sources (including a children's encyclopedia), the DOE claimed that it fell under the "born secret" clause of the Atomic Energy Act of 1954. Because of the nature of the information at stake in the trial, two separate trials were conducted, one in public, and the other in camera. The defendants (Morland and the editors of The Progressive) would not accept security clearances (which would put restraints on their free speech), and so were not present at the in camera hearings. Their lawyers did accept clearances so that they could participate in the trial, but were forbidden from conveying the information to their clients. The article was eventually published after the government dropped their case during the appeals process, calling it moot after other information was independently published, though many observers at the time thought it was because it was becoming clear their arguments were not being well received by the judges and they were afraid that the Atomic Energy Act might be ruled as unconstitutional.

See also


- Teller-Ulam design — the "secret", along with a brief account of the case
- Prior restraint — esp. section on the hydrogen bomb cases

External links


- [http://www.fas.org/sgp/eprint/cardozo.html Howard Morland on how he discovered the "H-bomb secret"] and the subsequent trial.
- [http://progressive.org/?q=node/2252 The Progressive November 1979 issue] – "The H-Bomb Secret: How we got it, why we're telling" (entire issue online).
- [http://www.bc.edu/bc_org/avp/cas/comm/free_speech/progressive.html Ruling of the preliminary injunction hearing] Category:United States case law Category:Nuclear secrecy

spielautomaten rozstpy gadu nauka Sennik online










































:: RELATED NEWS ::
Waldeck (wijk)
Waldeck is als wijk onderdeel van het stadsdeel Loosduinen in Den Haag. Bekend door onder andere Van Kooten en De Bie, die er naar school gingen op het Dalton College. Ook namen zij er later veel programmaonderdelen op. Waldeck grenst aan Loosduinen en Kijkduin, en ligt niet ver van het strand. Categorie:wijk in Den Haag
Maurice Trintignant
Maurice Trintignant (30 oktober 1917- 12 februari 2005) was een Frans autocoureur. Maurice Trintignant was al in 1938 actief in de autosport en nam deel aan de Formule 1 wedstrijden toen die in 1950 begonnen. Hij won de 24 uur van Le Mans in 1954 en 'De Grote prijs va
Mammillaria
De Mammillaria zijn een geslacht van Cactussen. Het geslacht is een van de grootste geslachten in de Cactaceae, er zijn nu 171 geslachten bekend. De eerste soorten werden reeds door Linnaeus in 1753 beschreven als Cactus Mammillaris. De naam leidde hij af van het uiterlijk van de plant, de oppervlakte lijkt met tepels bezet te zijn. In 1812 beschreef Adrian Haworth het geslacht Mammillaria. De vorm van de cactussen in dit ges
Cactaceae
Een cactus is een soort vetplant behorend tot de bloeiende planten. Ze zijn gegroepeerd als de familie Cactaceae. Afhankelijk van de taxonomische indeling worden tussen de 24 en 220 geslachten onderkend, met rond de 90 geslachten als meest geaccepteerde aantal, en 1500-1800 soorten. Cactussen zijn inheems in Zuid-, Midden en Noord-Amerika. Ze groeien vooral in woestijnen, maar sommige soorten komen juist voor in tropische regenwouden. Ze groeien dan als epiphiet op boomtakken waar ondanks de h
Cactusfamilie
Een cactus is een soort vetplant behorend tot de bloeiende planten. Ze zijn gegroepeerd als de familie Cactaceae. Afhankelijk van de taxonomische indeling worden tussen de 24 en 220 geslachten onderkend, met rond de 90 geslachten als meest geaccepteerde aantal, en 1500-1800 soorten. Cactussen zijn inheems in Zuid-, Midden en Noord-Amerika. Ze groeien vooral in woestijnen, maar sommige soorten komen juist voor in tropische regenwouden. Ze groeien dan als epiphiet op boomtakken waar ondanks de h
Fins-Oegrische
De Finoegrische (ook: Fins-Oegrische) talen vormen een taalfamilie met twee belangrijke takken.
- De Fins-Permische talen, bestaande uit: :de Oostzeefinse talen, te weten het ::Fins ::Estisch ::Karelisch ::Wepsisch ::Wotisch ::
Indiase keuken

Algemeen

In de Indiase keuken wordt veel gebruikt gemaakt van verschillende soorten rijst, granen, aardappelen, groenten en specerijen en verse kruiden die tot graham masala's (aromatische mengels) gemalen worden. De garam masala kan per streek en per gerecht verschillen. Curry's, tandoori's, tikka's en kofta's die met rijst, roti of met vers brood gegeten worden, zijn bekende Indiase gerechten. Tevens maakt men veel gebruikt van peulvruchten en kaas (
Günter Halm
Gunter Halm (
- Neurenberg, 23 juli 1940), was een Oost-Duits politicus. Halm volgde een opleiding als laborant (1954-1957). Hij studeerde natuurkunde aan de Technische Universiteit van Dresden en was daarna werkzaa
Glennis Grace
Glennis Grace (° 19 juni 1978 te Amsterdam) is een Nederlandse zangeres.

Biografie

Glennis Grace won in 1994 als 16-jarige de Soundmixshow als Whitney Houston. In
Tibeto-Birmaanse talen
De Tibeto-Birmaanse talen vormen een taalgroep in Zuid-Azië, die behoort tot de Sino-Tibetaanse taalfamilie. De taalgroep omvat zo'n 350 talen, die in Birma (Myanmar), Tibet, Thailand, Bhutan, Nepal,
All Rights Reserved 2005 wikimiki.org