C (ohjelmointikieli)
C on yleiskäyttöinen, imperatiivinen ja rakenteinen käännettävä tietokoneiden ohjelmointikieli, joka on levinnyt laajalle 1970-luvulta lähtien, jolloin Dennis Ritchie kehitti sen UNIX-käyttöjärjestelmää varten. Kielessä yhdistyvät koneenläheisyys ja korkean tason kielen ominaisuudet. C:n suosiota selittää kielen yksinkertaisuus, tehokkuus, joustavuus ja siirrettävyys. C:ssä itsessään ei ole paljoa varattuja sanoja, monet toiminnot tehdään funktiokirjastoilla. C++, Java, C# ja monet muut myöhemmät kielet perustuvat syntaksiltaan ja avainsanoiltaan C:hen.
C perustuu Ken Thompsonin kehittämään B-kieleen, jonka juuret ovat BCPL-kielessä. Kielen kehitys alkoi nimellä NB ("New B"). 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ä:
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.
C-kielisen lähdekooditiedoston tunnus on tiedostopääte .c.
Alkuperäinen standardi C-ohjelmointikielestä tunnetaan nimellä K&R. Se perustuu kirjaan "The C Programming Language", jonka Kerninghan ja Ritchie julkaisivat 1978.
Vuonna 1983 ANSI perusti X3J11-komitean standardoimaan C. Standardit koskevat paitsi itse kielen semantiikkaa ja syntaksia, myös eräitä peruskirjastoluokkia, jotka tulevat yleensä kunkin valmistajan toimittaman kääntäjän mukana. Suurin osa standardista perustuu Unix-ympäristössä käytettyyn C:hen, kuitenkin se osa Unixin C-kirjastosta, jota ei voi toteuttaa muissa ympäristöissä siirrettiin IEEE:lle ja siitä tuli osa POSIX-standardia.
ANSI X3.159-1989 julkaistiin 1989 ja tunnetaan myös nimillä ANSI C ja C89. Tähän stadardisoimisprosessiin kului kuusi vuotta. Myös ISO julkaisi saman standardin nimellä ISO/IEC 9899:1990.
C-standardia laajennettiin 1990-luvun lopussa, jolloin syntyi ISO/IEC 9899:1999, joka myös tunnetaan nimellä C99.
ISO standardi ISO/IEC 9899:2011, joka tunnetaan myös nimellä C11 julkaistiin korvaamaan C99.
C99 toi C:hen mm.:
Vuonna 2007 standardista alettiin kehittää seuraavaa versiota C11, joka julkaistiin joulukuussa 2011.C11 sallii toteutukset, joissa osaa standardista ei ole toteutettu. Valinnaisia osia ovat kompleksiluvut, IEC 60559 -liukuluvut, säikeistys ja atomisuus ja liitteet K ja L.
Esimerkkiohjelma, joka kysyy käyttäjältä kaksi lukua ja tulostaa niiden summan.
Kielelle on kehitetty useita kääntäjäohjelmia, joista yksi laajalle levinneistä on GNU-projektin GCC.
CompCert C-kääntäjä on "formaalisti verifioitu" kääntäjä, joka on tarkoitettu turvakriittisien ja tehtäkriittisien järjestelmien toteutukseen.