C programozási nyelv
A Wikipédiából, a szabad lexikonból.
| Paradigma: | imperatív (eljárások) |
|---|---|
| Megjelenés: | 1972 |
| Tervezte: | Dennis Ritchie |
| Fejlesztő: | Dennis Ritchie & Bell Labs |
| Típusosság: | statikus, gyenge |
| Fordítóprogram: | GCC, MSVC, Borland C, Watcom C |
| Dialektusok: | ObjC, C++ |
| Kiindulási nyelv: | B (BCPL,CPL), ALGOL 68, Assembly, Pascal |
| Befolyásolt nyelvek: | awk, csh, C++, C#, ObjC, BitC, D, Concurrent C, Java, Javascript |
A C programozási nyelvet Dennis Ritchie az 1970-es évek elején fejlesztette ki (Ken Thompson segítségével), a UNIX operációs rendszereken való használat céljából. Ma már gyakorlatilag minden operációs rendszerben megtalálható és a legnépszerűbb programozási nyelvek egyike, rendszerprogramozáshoz és felhasználói program készítéséhez egyaránt jól használható. Az oktatásban és a számítógépes tudományokban is jelentős szerepe van.
A népszerű C++ programozási nyelv is a C alapjaira épül.
Tartalomjegyzék |
[szerkesztés] Történet
[szerkesztés] Korai fejlesztések
A kezdeti fejlesztések az AT&T keretein belül történtek 1969 és 1973 között. A legkreatívabb időszak, Ritchie-nek köszönhetően 1972-ben volt. Azért lett „C” a nyelv neve, mert egy korábbi, „B” nevű programozási nyelv sok tulajdonságát „örökölte”. A leírások különböznek a „B” név forrását illetően: Ken Thompson írt egy programozási nyelvet, a BCPL-t, de írt egy Bon nevűt is, a feleségéről (Bonnie-ról) elnevezve.
Az 1973-as évben a C nyelv elég hatékonnyá vált, így a UNIX mag legnagyobb részét, melyek PDP-11/20 assembly nyelven íródtak, újraírták C-ben. Ez volt az egyik első operációs rendszer mag, mely nem assembly nyelven íródott, korábbiak, a Multics PL/I-ben íródott, a Tripos BCPL-ben.
[szerkesztés] K&R C
1978-ban megjelent Ritchie és Brian Kerninghan nevével fémjelzett A C programozási nyelv c. könyv első kiadása. Ez a könyv, melyet a C programozók csak K&R néven emlegettek, sokáig szolgált a nyelv formai leírásának forrásaként. A C nyelvnek az a verziója, melyet leírt, az a „K&R C” nyelv. (A könyv második kiadása az „ANSI C” szabványt írta le, lásd alább.)
K&R a nyelv következő tulajdonságait vezette be:
structadattípuslong intadattípusunsigned intadattípus=+operátort megváltoztatták+=-re stb. (=+zavaros volt a C fordító számára)
A K&R C a nyelv legalapvetőbb részének tekinthető, melyet egy C fordítónak mindenképpen ismernie kell. Sok éven keresztül, még az ANSI C bevezetése után is, a „legkisebb közös nevező” volt a K&R, melyet a C programozók használtak, ha a legnagyobb mértékű (forrás szintű) kompatibilitásra volt szükség, hiszen nem minden C fordító támogatta a teljes ANSI C-t és a megfelelően megírt K&R C (forrás) kód megfelelt az ANSI C szabványnak is.
A K&R C megjelenése utáni években, sok „nem hivatalos” kiegészítés látott napvilágot, melyet az AT&T és néhány másik cég fordítói is támogattak.
Ilyen változtatások voltak többek közt:
voidtípusú függvény ésvoid *adattípus- függvények, melyek
structvagyuniontípusokat voltak képesek „visszaadni” (return) constdefiníció, az érték írásvédettségéhez- szabvány függvény-gyűjtemény (un. library) mely a különböző cégek leggyakrabban támogatott függvényeit tartalmazta.
- felsorolások
- az un. „single-precision” (egyes pontosságú)
floatadattípus
[szerkesztés] ANSI C és ISO C
Az 1970-es évek vége felé, a C kezdte felváltani a BASIC nyelvet a személyi számítógépeken. IBM PC számítógépekre is átültették az 1980-as években, így a C nyelv népszerűsége ugrásszerűen emelkedni kezdett. Ugyanebben az időben Bjarne Stroustrup és társai a Bell Labs-nál elkezdtek dolgozni objektum orientált nyelvi elemek hozzáadásán a C nyelvhez. A nyelv, amit készítettek a C++ nevet kapta, ez ma a legelterjedtebb programozási nyelv a Microsoft Windows operációs rendszereken, míg a C a UNIX világban megőrizte népszerűségét.
1983-ban az Amerikai Nemzeti Szabványügyi Hivatal (angolul: American National Standards Institute, röviden ANSI) megalakította az X3J11 bizottságot, hogy létrehozzanak egy egységes (szabvány) C definíciót. A hosszú és fáradságos folyamat végén 1989-ben elkészült a szabvány (egy évvel az első C++ ANSI szabvány után!) és jóváhagyásra került, mint: ANSI X3.159–1989 „A C programozási nyelv”. A nyelv eme verziója nevezik ANSI C-nek. 1990-ben az ANSI C szabványt (néhány apróbb módosítással) átvette a Nemzetközi Szabványügyi Szervezet (angolul: International Organization for Standardization, röviden ISO), mint ISO/EC 9899:1990.
Az ANSI C szabványosítás egyik célja az volt, hogy a K&R C-ből és a nemhivatalos bővítésekből egy egységet alakítson ki. Belevettek azonban számos új megoldást is, mint pl. függvény prototípust (a C++ nyelvből) valamint egy jobban alkalmazható (fejlettebb) előfordítót (preprocessor).
ANSI C-t szinte minden használt fordító támogat. A legtöbb C kód, mely manapság íródott, az ANSI C-n alapul. Bármilyen program, amely a szabvány C-ben íródott, helyesen működik bármely platformon, amelyen szabványos C létezik. Vannak azonban programok, melyek csak adott platformon vagy adott fordítóval fordíthatók le, a használt nem szabvány függvénygyűjtemények miatt (pl. grafikus függvények) és vannak olyan fordítók, melyek nem támogatják alapértelmezésben az ANSI C szabványt.
[szerkesztés] C99
ANSI szabványosítási folyamatot követően, a C nyelv viszonylag állandó maradt, míg a C++ fejlődött. Új C verzió, 1995-ben az első normatív kiegészítéssel jött létre, de ez a változat ritkán használt). Akárhogyan is, de a szabványt átdolgozták az 1990-es években és ebből lett az ISO 9899:1999 1990-ben. Ez a szabvány „C99” néven vált ismertté, majd 2000 márciusában bekerült az ANSI szabványok közé is.
C99 új tulajdonságai, többek közt:
- inline függvények
- változók definiálási helyének szabályai enyhítése (hasonlóképpen, mint C++-ban)
- új adattípusok, pl.:
long long int, hogy a 32bitről a 64bitre való átállást megkönnyítsék, explicit boolean és acomplextípus. - változó méretű tömbök
- hivatalosan is bevezették az egysoros kommentár jelölést
//(a C++-ból) - több új függvény, mint pl.:
snprintf() - több új „header” állomány, mint pl.:
stdint.h
Érdeklődés, a C99 új tulajdonságainak támogatásával kapcsolatban eléggé vegyes. Míg GCC (Gnu C Compiler) és más fordítók támogatják a C99 újdonságait, addig a Microsoft és Borland által forgalmazottak nem és ez a két cég nem is foglalkozik a C99 jövőbeli támogatásának lehetőségével jelenleg.
[szerkesztés] A klasszikus „Hello, world!” C-ben
A következő egyszerű program kiírja azt, hogy „Hello, world!” az alapértelmezett kimeneti eszközre (ami általában a képernyő, de lehet egy állomány, vagy bármi más is). Először a K&R-ben jelent meg egy verziója ennek a programnak.
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}
A program első sora egy #include utasítás, ami azt eredményezi, hogy a fordító (compiler) erre a helyre bemásolja az adott állomány tartalmát, amelyre a a zárójelek közötti név utal. Ebben az esetben az stdio.h állomány kerül beillesztésre. A hegyes zárójel (kisebb, nagyobb jel) arra utal, hogy az stdio.h állomány a fordító részére megadott ún. „include path” által definiált helyen van.
A következő (nem üres sor) a „main” függvény definicíója. A main függvény egy speciális függvény a C programokban, amely legelőször indul el amikor a programot elindítják. A kapcsos zárójel a függvény törzsének kezdetét jelzi. Az „int” megadja, hogy a „main” függvény egy integer típusú adatot ad vissza. A „void” azt jelenti, hogy a függvény nem vár paramétereket vagy adatokat az őt meghívó rutintól.
A következő sor „meghívja”, vagy futtatja a printf függvényt. Az „include” állomány, stdio.h, tartalmazza a printf függvény meghívásának leírását. Ebben az esetben, a printf függvényt mindössze egyetlen paraméterrel hívjuk meg, mégpedig egy fix szöveggel (constant string): „Hello, world!\n”. A \n az sordobást jelenti, amelyet ha kiírunk, új sort eredményez (az új sor lehet: 0x0d(cr) és/vagy 0x0a(lf) rendszertől függően). A printf függvény ugyan ad vissza értéket, de ez jelen esetben nem érdekel minket, ezért nem is foglalkozunk vele.
A return parancs „tudatja” a programmal, hogy fejezze be az aktuális függvényt (ami ebben az esetben a main) adja vissza a 0 (nulla) értéket az őt meghívó függvénynek. Mivel ebben az esetben az aktuális függvény a main, a hívó fügvény bármi lehet, ami a mi programunkat elindította. És végül a kapcsos zárójellel jelezzük, hogy itt a „main” függvény vége.
[szerkesztés] Kapcsolódó cikkek
| Főbb programozási nyelvek (továbbiak) | |||
|
Kereskedelmi: ABAP | Ada | Awk | C | C++ | C# | COBOL | Delphi | Fortran | Java | JavaScript | Lisp | Objective-C | Perl | PHP | PL/SQL | Python | SAS | sh | SQL | Visual Basic
|


Based on work by