C-kielen historia

vuosi C standardi
1972 Kielen synty
1978 K&R C
1989 ANSI C (C89)
1990 ISO C (sama kuin C89)
1999 C99
2011 C11
2017 C17 (korjattu C11)
2018 C18 (sama kuin C17)

C - ohjelmointikieli kehitettiinvuosina 1969-1973 Bell Labsissa . Ritchien mukaanaktiivisin luovuuden aika oli vuonna 1972 . Kieltä kutsuttiin "C" (C on englannin aakkosten kolmas kirjain ), koska monet sen ominaisuudet ovat peräisin vanhasta kielestä " B " (B on englannin aakkosten toinen kirjain). Bi-kielen nimen alkuperästä on useita eri versioita. Ken Thompson viittaa BCPL -ohjelmointikieleen , mutta siellä on myös hänenluoma Bon -kieli. Ritchie ehdottaa, että kielen nimi on saatettu johtaa Thompsonin vaimon Bonnien nimestä [1] .

Vuoteen 1973 mennessä C-kieli oli tullut niin vahvaksi, että suurin osa UNIX - ytimestä , joka alun perin kirjoitettiin PDP-11 /20-asentajalla, kirjoitettiin uudelleen C -kielellä. Se oli yksi varhaisimmista käyttöjärjestelmän ytimistä, jotka oli kirjoitettu muulla kielellä kuin assembly; aikaisemmin olivat vain Multics (kirjoitettu PL/1 ) ja TRIPOS (kirjoitettu BCPL).

Syitä kehitykseen

C:n kehityksestä ja sen suhteesta UNIX -käyttöjärjestelmään liittyy useita legendoja , mukaan lukien seuraavat:

Erään legendan mukaan C:n kehitys johtui siitä, että sen tulevat kirjoittajat rakastivat tietokonepeliä, kuten suosittua Asteroids (Asteroids) -peliä.[ lähde? ] . He olivat pelanneet sitä pitkään yrityksen pääpalvelimella , joka ei ollut tarpeeksi tehokas ja jonka piti palvella noin sataa käyttäjää. Thompson ja Ritchie tunsivat, että heillä ei ollut hallintaa avaruusalukseen, jotta he eivät osuisi joihinkin kiviin. Joten he päättivät siirtää pelin ilmaiselle PDP-7 :lle toimistossa. Tässä tietokoneessa ei kuitenkaan ollut käyttöjärjestelmää , mikä pakotti heidät kirjoittamaan sellaisen. Lopulta he päättivät siirtää tämän käyttöjärjestelmän toimistoon PDP-11 , mikä oli erittäin vaikeaa, koska sen koodi oli kokonaan kirjoitettu assemblerissä . Ehdotettiin jonkinlaisen korkean tason kannettavan kielen käyttöä, jotta käyttöjärjestelmä voitaisiin helposti siirtää tietokoneelta toiselle. B-kieli, jota he alun perin halusivat käyttää tähän, jäi pois toiminnallisuudesta, joka voisi hyödyntää PDP-11:n uusia ominaisuuksia. Siksi he päätyivät C-kielen kehittämiseen.

On toinenkin legenda. Ensimmäinen tietokone, jolle UNIX alun perin kirjoitettiin, oli tarkoitus olla automaattinen asiakirjojen täyttöjärjestelmä. UNIXin ensimmäinen versio kirjoitettiin assembly-kielellä. Myöhemmin tämän käyttöjärjestelmän uudelleenkirjoittamiseksi kehitettiin C-kieli.[ lähde? ] .

K&R C

Vuonna 1978 Brian Kernighan ja Dennis Ritchie julkaisivat ensimmäisen painoksen C-ohjelmointikielestä. Tämä kirja, joka ohjelmoijat tunnetaan nimellä "K&R", toimi useiden vuosien ajan epävirallisena kielimäärityksenä. Siinä kuvattua C-kielen versiota kutsutaan usein nimellä "K&R C". Tämän kirjan toinen painos käsittelee uudempaa ANSI C -standardia , joka kuvataan alla.

K&R esitteli seuraavat kieliominaisuudet:

K&R C:tä pidetään usein tärkeimpänä kielen osana, jota C-kääntäjän on tuettava. Monien vuosien ajan, jopa ANSI C:n julkaisun jälkeen, sitä pidettiin vähimmäistasona, jota ohjelmoijien tulisi noudattaa, jos he haluavat saavuttaa maksimaalisen siirrettävyyden ohjelmistaan, koska kaikki kääntäjät eivät silloin tukeneet ANSI C:tä ja hyvä K&R C -koodi oli myös totta ANSI C:lle.

K&R C:n julkaisun jälkeen kieleen on lisätty useita ominaisuuksia, joita ovat tukeneet AT&T :n ja joidenkin muiden valmistajien kääntäjät:

Kielistandardit

ISO C

1970-luvun lopulla C alkoi syrjäyttää BASICin johtavana mikrotietokoneohjelmointikielenä . Se mukautettiin käytettäväksi IBM PC : ssä 1980-luvulla , mikä johti sen suosion dramaattiseen kasvuun. Samaan aikaan Björn Stroustrup ja muut Bell Labsin työntekijät aloittivat työskentelyn olio-ohjelmointiominaisuuksien lisäämiseksi C :hen. Lopulta heidän valmistamallaan kielellä, C++ , oli suuri vaikutus ohjelmistokehitykseen, mutta se ei koskaan vastannut [2] C:n suosiota varsinkin UNIX-tyyppisissä järjestelmissä.

Vuonna 1983 American National Standards Institute (ANSI) perusti komitean kehittämään standardispesifikaatioita C. Tämän pitkän ja vaikean prosessin päätteeksi vuonna 1989 se hyväksyttiin lopulta "C-ohjelmointikieleksi" ANSI X3.159-1989 . Tämän kielen version nimi on ANSI C tai C89. Vuonna 1990 International Organization for Standardization (ISO) hyväksyi ANSI C -standardin pienin muutoksin nimellä ISO/IEC 9899:1990 .

Yksi tämän standardin tavoitteista oli kehittää K&R C:n superjoukko, joka sisältää monia myöhemmin luodun kielen ominaisuuksia. Standardikomitea sisälsi kuitenkin myös useita uusia ominaisuuksia, kuten toimintoprototyyppejä (lainattu C++:sta) ja kehittyneemmän esiprosessorin .

ANSI C:tä tukevat nyt lähes kaikki olemassa olevat kääntäjät. Lähes kaikki viime aikoina kirjoitettu C-koodi on ANSI C:n mukaista. Kaikki vain standardissa C kirjoitetut ohjelmat toimivat oikein millä tahansa alustalla, jolla on asianmukainen C-toteutus. Useimmat ohjelmat on kuitenkin kirjoitettu siten, että ne käännetään ja suoritetaan vain tietyllä alustalla, koska:

  1. he käyttävät epästandardeja kirjastoja , esimerkiksi graafisia näyttöjä varten;
  2. he käyttävät erityisiä alustakohtaisia ​​työkaluja;
  3. ne on suunniteltu tiettyjen tietotyyppien koon tietylle arvolle tai tietylle tapalle tallentaa nämä tiedot muistiin tietylle alustalle.

C99

ANSI:n standardoinnin jälkeen C-kielen erittely pysyi suhteellisen muuttumattomana pitkään, kun taas C++ kehittyi edelleen (vuonna 1995 C-standardi otettiin käyttöön ensimmäisellä normatiivisella lisäyksellä, mutta melkein kukaan ei tunnistanut sitä). Standardia kuitenkin tarkistettiin 1990-luvun lopulla , minkä seurauksena ISO 9899:1999 julkaistiin vuonna 1999 . Tätä standardia kutsutaan yleisesti nimellä "C99". Maaliskuussa 2000 ANSI hyväksyi ja mukautti sen.

Joitakin C99:n uusia ominaisuuksia:

C11

8. joulukuuta 2011 julkaisi uuden standardin C-kielelle (ISO/IEC 9899:2011) [3] . Tärkeimmät muutokset:

C18

Standardin luonnosversio toimitettiin numerolla C17 (ISO/IEC 9899:2017) vuonna 2017 [4] . Kesäkuussa 2018 standardi julkaistiin nimellä C18 (ISO/IEC 9899:2018) [5] [6] . Uusi standardi poistaa edellisessä versiossa havaitut viat lisäämättä uusia ominaisuuksia. Nimiä C17 ja C18 kutsutaan yleensä synonyymeiksi [6] .

Muistiinpanot

  1. Ritchie D. M. C-kielen kehitys. Osiot "Johdanto" ja "Historia: asetus".
  2. Ohjelmointiyhteisöindeksi huhtikuulle 2012 . Haettu 2. helmikuuta 2019. Arkistoitu alkuperäisestä 2. heinäkuuta 2013.
  3. ISO/IEC 9899:2011 - Tietotekniikka - Ohjelmointikielet - C . Haettu 2. helmikuuta 2019. Arkistoitu alkuperäisestä 27. joulukuuta 2011.
  4. ISO/IEC. ISO/IEC9899:2017 . Ohjelmointikielet - C (ei saatavilla linkki) (2017) . Haettu 2. helmikuuta 2019. Arkistoitu alkuperäisestä 24. lokakuuta 2018. 
  5. ISO/IEC 9899:2018 - Tietotekniikka - Ohjelmointikielet - C . www.iso.org . Haettu 2. helmikuuta 2019. Arkistoitu alkuperäisestä 10. elokuuta 2018.
  6. ↑ 1 2 GNU Compiler Collection -kokoelman (GCC) käyttäminen: C  Murrevalinnat . gcc.gnu.org. Haettu 3. joulukuuta 2018. Arkistoitu alkuperäisestä 26. maaliskuuta 2014.

Kirjallisuus