C (ohjelmointikieli)

Wikipedia
Loikkaa: valikkoon, hakuun
C
Paradigma proseduraalinen
Tyypitys heikko, staattinen
Yleinen suoritusmalli käännetty
Muistinhallinta manuaalinen
Julkaistu 1972
Kehittäjä Dennis Ritchie
Merkittävimmät toteutukset GCC, Borland C, Visual C, Watcom C
Vaikutteet B, BCPL, Assembly
Vaikuttanut C++, Objective-C, C#
Murteet K&R, ANSI C, C99
Käyttöjärjestelmä alustariippumaton
Uutisryhmä comp.lang.c

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 ad hoc -polymorfismin käytön
  • Leksikaalinen muuttujien määrittelyalue (lexical variable scoping)
  • Tietueet, käyttäjän luomat datatyypit (struct-avainsana) joiden avulla toisiinsa liittyviä muuttujia voidaan käsitellä yhdessä
  • Esikääntäjä (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. vahva tyypitys (type safety), roskienkeräys, funktioiden ja operaattoreiden ylikuormitus, tuki säikeille, listojenkäsittely ym. Tosin useimmat näistä ominaisuuksista voidaan ohjelmoida C-kielellä epäsuorasti.

Standardit[muokkaa | muokkaa wikitekstiä]

Alkuperäinen epävirallinen standardi C-ohjelmointikielestä tunnetaan nimellä K&R, kahden C-kielen alkuperäisen kuvauksen kirjoittajien mukaan (Kerninghan ja Ritchie).

Uusin standardi on ISO/IEC vuodelta 1999, joka tunnetaan nimellä C99. Se pohjautuu sitä edeltäneeseen ANSI C standardiin vuodelta 1989, joka tunnetaan myös nimellä C89.

ISO/IEC ja ANSI standardit koskevat paitsi itse kielen semantiikkaa ja syntaksia, myös asianomaiselle alustalle käännettyjä peruskirjastoluokkia, jotka tulevat yleensä kunkin valmistajan toimittaman kääntäjän mukana (ks. C-standardikirjastot).

Esimerkkiohjelma[muokkaa | muokkaa wikitekstiä]

Esimerkkiohjelma, joka kysyy käyttäjältä kaksi lukua ja tulostaa niiden summan.

#include <stdio.h>
int main(void)
{
    int a, b, c;
    printf("Anna 1. luku:\n");
    scanf("%d", &a);
    printf("Anna 2. luku:\n");
    scanf("%d", &b);
    c = a + b;
    printf("Antamiesi lukujen summa on %d\n", c);
    return 0;
}

Lähteet[muokkaa | muokkaa wikitekstiä]

  • Aitken - Jones: Opeta itsellesi C-ohjelmointi. Jyväskylä: Suomen Atk-kustannus Oy, 1997.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]

Wikibooks
Wikikirjastossa on aihe: C.