ANSI C

Nykymaailmassa ANSI C:stä on tullut yhä tärkeämpi. Olipa kyse akateemisesta, työelämästä, sosiaalisesta tai kulttuurisesta alalla, ANSI C:stä on tullut keskeinen keskustelun ja pohdinnan aihe. Sen merkitys on ylittänyt maantieteelliset ja kulttuuriset esteet ja vaikuttanut merkittävästi ihmisten elämään. Tässä artikkelissa tutkimme ANSI C:n eri puolia sen alkuperästä sen nykyiseen vaikutukseen. Yksityiskohtaisen analyysin avulla yritämme valaista ANSI C:tä ympäröivät monimutkaisuudet ja ristiriidat, jotta voimme ymmärtää paremmin sen roolia nykymaailmassa.

ANSI C on ANSI-standardi C-kielelle.

ANSI C korvasi aiemman K&R C -version, joka syntyi Brian Kernighanin ja Dennis Ritchien toimesta ennen varsinaista standardia. Kernighan ja Ritchie julkaisivat vuonna 1978 kirjan The C Programming Language, jossa K&R-versio kielestä oli approksimaatio standardille, mutta tarve muodolliselle standardille oli ilmeinen vuonna 1982. Vuonna 1982 käytössä ollut versio ei ollut sama kuin kirjassa kuvattu ja eri kääntäjissä ei ollut mukana uusimpia muutoksia. K&R ei ollut myöskään riittävän tarkka monissa kielen yksityiskohdissa. Myöskään Stephen Johnsonin Portable C Compiler ei enää ollut sopiva referenssikääntäjänä. Myös kielen käyttö projekteissa, joita koskivat kaupalliset ja valtion hallinon sopimukset aiheutti paineita standardin muodostamiselle. Vuonna 1983 ANSI perusti X3J11-komitean stadardoimaan C-kieli. ANSI X3.159-1989 -standardi hyväksyttiin 14. joulukuuta 1989 ja julkaistiin keväällä 1990. ANSI-standardi korvattiin kansainvälisellä ISO-standardina (ISO C) nimellä ISO/IEC 9899:1990, joka oli ISO/IEC JTC 1 -ryhmän työtä. Standardit erotetaan myös nimillä C89 ja C90.

X/Open käyttää standardointia edeltävästä versiosta tietyissä yhteyksissä termiä X/Open C.

Myöhemmin standardista on julkaistu useita pävitysversioita:

  • ISO/IEC 9899:1990/Amd 1:1995, Amendment 1 (C95)
    • ISO/IEC 9899:1990/Cor 1:1994
    • ISO/IEC 9899:1990/Cor 2:1996
  • ISO/IEC 9899:1999, C99
    • ISO/IEC 9899:1999/Cor 1:2001
    • ISO/IEC 9899:1999/Cor 2:2004
    • ISO/IEC 9899:1999/Cor 3:2007
  • ISO/IEC 9899:2011, C11
    • ISO/IEC 9899:2011/Cor 1:2012
  • ISO/IEC 9899:2018, C18
  • tuleva versio on C23 (ISO/IEC CD 9899)

Muutokset aiempaan

ANSI C -versiossa on useita eroja K&R C -versioon, joita ovat esimerkiksi funktioiden prototyyppien käsittelyssä, esikääntäjän toiminnan määrittelyssä ja uudet avainsanat. Yhteenveto K&R ja ANSI -versioiden eroista on lueteltu The C Programming Language -kirjan toisessa painoksessa (Second Edition, 1988). Standardissa C-kieleen on otettu eräitä vaikutteita C++-kielestä (muun muassa const-käyttö ja prototyyppien käsittely).

Lähteet

  1. a b c d e f Brad Kelechava: The Origin of ANSI C and ISO C blog.ansi.org. 14.9.2017. Viitattu 21.11.2022. (englanniksi)
  2. a b c d e f g Ritchie, Dennis M.: The Development of the C Language bell-labs.com. Viitattu 24.7.2017.
  3. X/Open Guide XPG3-XPG4 Base Migration Guide, Version 2 (PDF) (sivu 241) archive.opengroup.org. Viitattu 21.11.2022. (englanniksi)
  4. ISO/IEC 9899:1990/Amd 1:1995 iso.org. Viitattu 23.11.2022. (englanniksi)
  5. Clive D.W. Feather: A brief description of Normative Addendum 1 lysator.liu.se. Viitattu 23.11.2022. (englanniksi)
  6. https://www.iso.org/standard/24271.html
  7. https://www.iso.org/standard/27110.html
  8. https://www.iso.org/standard/35952.html
  9. https://www.iso.org/standard/41326.html
  10. https://www.iso.org/standard/50510.html
  11. https://www.iso.org/standard/61717.html
  12. https://www.iso.org/standard/82075.html
  13. The Differences Between K&R Sun C and Sun ANSI/ISO C docs.oracle.com. Viitattu 29.11.2022. (englanniksi)
  14. Converting to ANSI C h.eng.cam.ac.uk. Viitattu 29.11.2022. (englanniksi)
  15. a b Brian W. Kernighan & Dennis M. Ritchie: The C Programming Language, s. 259–261. Prentice Hall, 1988. ISBN 0-13-110370-9. (englanniksi)