Datatekniikka ja viestintä - Ohjelmointi:

Tietoa C-ohjelmointikielestä (ja C++:sta) Internetissä

Tämän sivun sisältö on suurelta osin vanhentunutta.

Fakki

Tärkeä C-ohjelmointikieltä koskeva tietolähde Internetissä on C:tä käsittelevä fakki (engl. FAQ, (Answers to) Frequently Asked Questions) eli comp.lang.c FAQ. Se on laaja ja asiantuntevasti tehty, joskaan sitä ei ole viime vuosina päivitetty, ja monet selitykset ovat aika lyhyitä. Siitä on olemassa useita versioita, mm.

Myös muista fakeista voi löytyä C-kieltä koskevia tai sitä sivuavia asioita. Hyvin laaja fakkien lista on osoitteessa http://www.faqs.org/

Englanninkieliset oppaat

Internetissä on varsin paljon C-kieltä käsitteleviä erilaisia oppaita, lähinnä englanninkielisiä. (Jäljempänä käsitellään erikseen suomenkielistä aineistoa). Ne saattavat kuitenkin sisältää puutteita ja jopa suoranaisia virheitä; taso on kirjava. Mainittakoon, että C-fakin oppaita koskeva kohta on jo aika vanhentunut. Olisi melkoinen työ arvioida edes pieni joukko C-oppaita kunnolla, mutta seuraavassa on muutama vinkki:

Ks. myös Vinit Carpenterin LEARN C/C++ TODAY (A list of resources/tutorials) sekä Simo Salmisen Programmer's Oasis, jossa isoja linkkilistoja, myös C:tä ja C+:aa koskeviin aineistoihin.

C++ on aivan eri kieli kuin C, ja se on tarkoitettu lähinnä ns. olio-ohjelmointiin (object-oriented programming). Mutta kun Bjarne Stroustrup kehitti C++:n, hän otti siihen monia piirteitä C:stä suoraan tai muunneltuina. Tarkempia tietoja on mm. dokumentissa C++ FAQ Lite.

Suomenkielistä aineistoa C:stä ja C++:sta

Aluksi on syytä mainita ohjelmointia yleisesti koskevat aineistot:

Suomenkielisiä yleisesityksiä C:stä:

Muuta aineistoa C:stä suomeksi:

C++:sta on olemassa ainakin seuraavat suomenkieliset esitykset:

Jukka Suomela on kirjoittanut sivun Tutoriaali: Ohjelmointi GNU/Linux-ympäristössä, joka käsittelee C- ja C++-ohjelmien kääntämisen ja ajamisen käytännön menettelyjä Linuxissa (ja yleensä ympäristöissä, joissa käytetään Gnu-ohjelmia).

Standardit

C-kielen standardi tunnetaan yleensä nimellä "ANSI C" tai "ISO C", virallisesti "ANSI/ISO 9899". Ensimmäinen versio hyväksyttiin vuonna 1990, toinen, huomattavasti laajennettu vuonna 1999. Itse standardia valitettavasti ei ole netissä, koska tekijänoikeuksien haltija ei ole sitä halunnut. ISO:n sivustossa on vain tieto standardin olemassaolosta ja nykyversiosta. (Ks. juttua standardeista yleisesti.) C-fakin luku ANSI/ISO Standard C kertoo hiukan sen taustasta sekä vaikutuksesta käytännön ohjelmointiin mutta on jo aika vanha. Standardeja on yleisesti hankittavissa esim. SFS:n kautta (kalliilla). C:n standardointia hoitaa ISO:n piirissä työryhmä WG14. Sen Web-sivuilta on saatavilla kyseisen standardin luonnos sellaisena kuin se oli Committee Draft -tasoisena, useassa muodossa (pelkkänä tekstinä, PostScript-muodossa ja PDF-muodossa). C++:aa puolestaan standardoi WG21, jonka sivuilla on (HTML-muodossa) Committee Draft -tasoinen luonnos 1997 C++ Public Review Document, jonka pohjalta nykyinen C++-standardi on vahvistettu.

Techstreet (ent. CSSINFO) tarjoaa ostettavaksi (luottokortimaksulla) useita standardeja, joitakin niistä edulliseen hintaan PDF-muodossa. Erityisesti on vuoden 1999 C-standardi (ANSI/ISO 9899-1999) saatavissa PDF-muotoisena hintaan 18 USD ja C++-standardi (ANSI/ISO/IEC 14882-1998) samoin hintaan 18 USD. Ne ovat saatavissa kyseiseen hintaan myös ANSIn Electronic Standards Storesta: ANSI/ISO/IEC 9899-1999 ja ISO/IEC 14882-1998. Varoitus: Hinnoittelussa on ollut ja on vaihtelua ja epäselvyyksiä.

Niille, joilla on käytössään vuoden 1990 C-standardi, mainittakoon, että Netistä löytyy maksutta eräitä virallisia teknisiä korjauksia siihen.

Käytännössä C-ohjelmoijan kannattaa yleensä hankkia ennen kaikkea oppikirja, joka kuvaa C-standardin mukaista kieltä. Varoitus: C-oppikirjojen taso on hyvin vaihteleva tässäkin suhteessa.

Vuoden 1990 C-standardin mukaisista kirjastoista on Webissä yksityiskohtainen ja kattava kuvaus, The Dinkum® C Library Reference. On huomattava, että sen käytön ehdot sallivat netin kautta lukemisen mutta eivät kopiointia.

C-kääntäjät

C-kääntäjistä mainittakoon Gnu-C, josta on olemassa myös PC-toteutuksia kuten DJGPP. Siitä ja muutamasta muusta vaihtoehdosta kertoo juttu Maksuttomista C-kääntäjistä PC:lle.

Tiedon etsintä

C-kieltä, kuten kaikkia muitakin maailman asioita, koskevia tietoja voi hakea Webistä hakukoneilla kuten Google ja AltaVista.

Tiedon etsintä hakukoneilla on tehokkainta silloin, kun hakulauseke voidaan muotoilla käyttäen täsmällisiä termejä, jotka eivät sekaannu (englannin) yleiskielen sanoihin. Esimerkiksi etsiminen hakusanalla search on melko hyödytöntä, koska löytyy aivan liian paljon epäolennaista tietoa, mutta etsiminen spesifisellä C-kielen funktion nimellä bsearch voi olla hyödyllistä. Tosin silloin löytyy mm. suuri määrä eri järjestelmien man-sivuja ja vastaavia dokumentteja. Hakulauseke bsearch example on hyödyllisempi, koska silloin löytyvät ainakin ensisijaisesti ne dokumentit, joissa on esimerkki bsearch-funktion käytöstä. Itse asiassa sellaisella haulla pääsin seuraavassa mainittavan dokumentin jäljille.

Hyödyllisiä voivat olla myös Yahoon C:tä ja C++:aa käsittelevät sivut (linkkikokoelmat).

Eräitä dokumenttikokoelmia

http://www.lysator.liu.se/c/
sisältää linkkejä useisiin C:tä (ja C++:aa) käsitteleviin dokumentteihin.

Dokumentti Identifiers NOT To Use in C Programs sisältää selkeän listan tunnuksista, joita ei ole syytä käyttää omien muuttujien, funktioiden yms. nimeämiseen. (C-kielessä yllättävän monet tunnukset ovat varattuja tässä mielessä.)

C:llä tehdyt aliohjelmakirjastot

Ajay Shah ylläpitää tietoja C:llä ja C++:lla tehdyistä numeerisen laskennan maksuttomista aliohjelmista:

http://www.csd.uwo.ca/%7ejamie/.Refs/.Footnotes/free-c-num.html

Numerical Recipes homepage sisältää linkin mm. kirjaan Numerical Recipes in C, joka on Webissä PostScript-muodossa.

Nyysit

Nyyseistä (newseistä) löytyy useita ryhmiä, joissa käsitellään C-kieltä koskevia tai siihen liittyviä asioita, mm.

C-kieltä käsittelevät ryhmät on tarkoitettu nimenomaan kielikohtaisten kysymysten käsittelyyn. Ohjelmointia yleensä koskevia kysymyksiä, joissa siis ei ole kyse algoritmin toteuttamisesta jollakin kielellä vaan algoritmeista, käsitellään etenkin ryhmässä comp.programming.

Suomalaiset ryhmät sfnet.atk.ohjelmointi.alkeet, sfnet.atk.ohjelmointi, ja sfnet.atk.ohjelmointi.moderoitu ovat sekä yleisiä ohjelmointikysymyksiä että eri kieliin liittyviä kysymyksiä varten. Ks. tarkemmin sfnet.atk-ryhmien kuvauksesta.


Omia juttujani

Ehkä joskus kirjoitan muitakin omia juttujani C:stä yleisesti kysytyistä aiheista kuin seuraavat:

Muita kuvauksia C- ja C++-aineistoista

Suomi24-hakemistossa on C- ja C++-aiheisten linkkien kokoelma.