A nyelv története c

Mi a C státusz? Történelmileg ez a nyelv elválaszthatatlan a Unix operációs rendszertől, amely most már második születésénél fog tapasztalni. A 60-as évek voltak az operációs rendszerek és a magas szintű programozási nyelvek fejlesztésének korszaka. Abban az időben az operációs rendszert és a fordítóprogramokat függetlenül fejlesztették ki mindegyik típusú számítógéphez, gyakran pedig programozási nyelvükhöz is (emlékezzünk például PL / I-re). Ugyanakkor a jelen ügyben felmerülő problémák közössége már nyilvánvalóvá vált. A közösség megvalósítására adott válasz egy univerzális mobil operációs rendszer létrehozásának kísérlete volt, amelyhez egyaránt egyetemes és mobil programozási nyelv szükséges. Ez a nyelv volt a C, és a Unix volt az első operációs rendszer, szinte teljesen megírt magas szintű nyelven.

A Unixhoz való szoros kapcsolat C-nek adott sokszöget a futáshoz, ami egyelőre nem volt más nyelv. A rendszerprogramozás feladatait joggal tekintették akkoriban az iparág legösszetettebbé. A legtöbb esetben annyira gépfüggő volt, hogy sokan nem gondolkodtak az összes megoldásukon, mint az összeszerelőben. A magas szintű nyelveket alkalmazási programozásra szánták, és csak nagyon korlátozott mértékben hajtották végre a rendszerszabályozáshoz szükséges funkciókat, gyakran csak bizonyos típusú gépek esetén.

A C nyelv kezdettől fogva létrejött, hogy rajta legyen rendszerfeladatok. A C alkotói nem kezdtek el a nyelv végrehajtójának elvont modelljét kifejleszteni, hanem egyszerűen felismerték azokat a lehetőségeket, amelyekre a rendszerprogramozás gyakorlatában a legtöbbet szükségük volt. Először is ezek voltak a memóriával, a strukturális irányítási struktúrákkal és a program moduláris szervezésével való közvetlen munkára szerszámok. Valójában semmi más nem szerepelt a nyelvben. A többit a futásidejű könyvtárhoz rendelték. Ezért a bántalmazók néha C-ről strukturális szerelőként beszélnek. De bármit mondanak, a megközelítés nagyon sikeresnek bizonyult. Köszönetének köszönhetően az egyszerűség és a nyelvi képességek aránya új szintet ért el.

Van még egy olyan tényező, amely meghatározza a nyelv sikereit. Az alkotók nagyon ügyesen felosztották a gépfüggő és független tulajdonságokat. Ennek köszönhetően a legtöbb program általánosan írhat - teljesítményük nem függ a processzor és a memória architektúrájától. Néhány ugyanazon hardverfüggő rész a különálló modulokban található. És egy előfeldolgozó segítségével olyan modulokat hozhat létre, amelyek különböző platformokon történő fordítása esetén a megfelelő gépfüggő kódot generálják.

A C nyelv szintaxisai miatt sok vitás kérdés merült fel, a mérések lerövidítéséhez használt módszerek mérhetetlenül felhasználhatják a programot. De ahogy Dijkstra elmondta, nem jelenti azt, hogy hibásan használják őket. Valójában a C-ban javasolt szintaktikai rövidítések megfelelnek a leggyakrabban tapasztalt sztereotípiás helyzeteknek a gyakorlatban. Ha feltételezzük, hogy a rövidítések idiómák az ilyen helyzetek kifejező és kompakt ábrázolásához, akkor ezek előnyei feltétlenek és nyilvánvalóvá válnak.

Tehát C a rendszerprogramozás univerzális nyelvévé vált. De nem maradt ezen a kereteken belül. Végére 80-es években a C nyelv, Fortran toló vezető pozícióját, nyert tömeges népszerűsége programozók szerte a világon, és már használják a legkülönbözőbb alkalmazások. Jelentős szerepe volt itt a terjedését Unix (és így C) az egyetemi környezetben, melyet képzett új generációs programozók.

Mint minden nyelv esetében, a C fokozatosan javult, de a fejlesztések többsége nem volt radikális. A legjelentősebb közülük talán, figyelembe kell venni a bevezetése szigorú előírás típusú funkciók, amelyek jelentősen megnövelik a megbízhatóság közötti moduláris kölcsönhatások C. E javulást voltak 1989-ben meghatározott ANSI szabvány, amely még mindig meghatározza a nyelv C.

A hiányosságok kijavítására tett első kísérleteket a 80-as évek elején kezdték meg. Még akkor is, amikor az ATT Bell Labs Bjarne Straustrup kezdett fejleszteni a C nyelv kiterjesztését feltételes név alatt. A fejlesztés stílusa meglehetősen összhangban volt azzal a szellemmel, amelyben maga a C nyelv jött létre - bizonyos lehetőségeket teremtett arra, hogy bizonyos emberek és csoportok munkáját kényelmesebbé tegye. 1983-ban megjelent egy új nyelv, az úgynevezett C + + nyelv. Előprocesszor volt, amely a programot C-ben fordította le. A nyelv tényleges születése azonban a Straustrupa könyv 1985-ös kiadásának tekinthető

Ettől a ponttól kezdve a C + + világszerte egyre népszerűbbé válik.

A C ++ legfontosabb újítása az osztálymechanizmus, amely lehetővé teszi az új típusú adatok meghatározását és használatát. A programozó leírja az osztályobjektum belső ábrázolását és a funkció elérésének módját. A C ++ létrehozásában az egyik legfontosabb cél az volt, hogy növelje a már megírt kód újrafelhasználásának százalékos arányát. Az osztályok fogalma öröklési mechanizmust ajánlott fel erre. Az öröklődés lehetővé teszi, hogy új (származtatott) osztályok nagyobb teljesítményt és módosított módszerek anélkül, hogy a lefordított kód az eredeti (alap) osztályok. Azonban öröklési biztosítja az egyik végrehajtási mechanizmusait polimorfizmus - alapkoncepciója az objektum-orientált programozás, amely szerint ugyanazt a kódot lehet használni, hogy végezze el ugyanazt a típusú feldolgozás különböző típusú adatokat. Valójában a polimorfizmus is az egyik módja a kód újrafelhasználásának.

Az osztályok bevezetése nem kíméli az összes újítást a C ++-ban. Hajtja végre egy teljes értékű mechanizmus strukturált kivételkezelés, amelynek hiánya a C jelentősen hátráltatja írásban megbízható szoftver sablon motor - egy kifinomult mechanizmus macrogenerations, mélyen beágyazódott a nyelv, nyitás másik módja, hogy újrafelhasználható kód, és így tovább.

Mindez arra vezetett, hogy sok fejlesztőnek magának kellett megvizsgálnia a nyelvi szemantika labirintusát, és önállóan találnia kellett sikeres idiómákat. Például a nyelvfejlődés első szakaszában sok osztálytárak készítői törekedtek arra, hogy egy közös osztályú hierarchiát építsenek fel egy közös alap objektummal. Ezt az ötletet a Smalltalk - az egyik legismertebb objektumorientált nyelv - kölcsönzte. A C ++-ban azonban teljesen elfogadhatatlan volt - az osztálykönyvtárak alaposan átgondolt hierarchiái keménynek bizonyultak, és az osztályok munkája nem volt nyilvánvaló. Az osztálykönyvtárak használatához a forráskódban kellett őket megadni.

A sablonok megjelenése teljesen elhárította ezt a fejlődési irányt. Az örökséget csak olyan esetekben kezdték használni, amikor létező osztály speciális változatának létrehozása volt szükséges. A könyvtárak külön osztályokból és kis, egymáshoz nem kapcsolódó hierarchiákból álltak. Ennek ellenére a kód újrahasznosítása csökkenni kezdett, mivel a C ++-ban lehetetlen polimorfizmust használni független hierarchiákból. A sablonok mindennapos használata elfogadhatatlanul növeli az összeállított kódok mennyiségét - ne felejtsük el, hogy a sablonok makrogenerációs módszerek alkalmazásával valósulnak meg.

A C szintaktikájából örökölt C ++ egyik legnehezebb hátránya a fordítóprogram rendelkezésre állása az összes használt osztály belső struktúrájának leírására. Ennek következtében egyes könyvtári osztályok megjelenítésének belső szerkezetének megváltoztatása szükségessé teszi az összes program újrafordítását, ahol ezt a könyvtárat használják. Ez nagymértékben korlátozza a könyvtárak fejlesztőit a modernizáció szempontjából, végül is, amikor új verziót bocsátanak ki, meg kell őrizniük a bináris kompatibilitást az előzővel. Ez a probléma miatt sok szakember úgy véli, hogy a C + + nem alkalmas nagy és szuper nagy projektek végzésére.

És mégis, annak ellenére, hogy ezeket a hiányosságokat, és még nem volt hajlandó nyelvi norma (ezt követően tizenöt plusz év használat!), C ++ az egyik legnépszerűbb programozási nyelvek. Az ereje elsősorban a szinte teljes kompatibilitás a nyelv C. Ez a C ++ programozók hozzáférést biztosít az összes elért a C, C ++, sőt használata nélkül osztályok hozza a C sorozat olyan fontos kiegészítő funkciókat és kényelem, hogy sokan használják azt egyszerűen a Superior .

Ami a C ++ objektummodellt illeti, miközben a programod nem válik nagyon nagy méretűvé (több százezer sor), teljesen használható. Az összetett szoftverre való áttérés legutóbbi tendenciája csak erősíti a C ++ helyzetét. Az egyes komponensek fejlesztésében a C ++ hiányosságai még nem nyilvánvalóak, és az összetevők az operációs rendszerhez való kötődése már nem a nyelv szintjén, hanem az operációs rendszer szintjén van.

A fentiek fényében a C ++ kilátásai nem tűnnek komornak. Bár a programnyelvek piaca monopóliuma nem ragyog. Talán csak bizonyosan tudjuk megmondani, hogy ez a nyelv nem fog túlélni egy másik modernizációs-terjeszkedésben. Nem ok nélkül, amikor megjelent a Java, annyi figyelmet fordítottak rá. A nyelv, hasonló szintaxis a C ++, és így látszólag ismerős sok programozó, már megkímélte a legsúlyosabb hiányosságokat C ++ örökölt őket a '70 -es években. Azonban nem tűnik úgy, hogy a Java kezeli a hozzárendelt szerepet.

Annak igazolására, a nyelveinek használatát leírt gyakorlat, akkor már választott feladat, amelyet meg kell adnia a szabványos bemenet vagy egy fájlból több egész szám, majd nyomtassa ki csak a kakukktojás, és fordított sorrendben. Ez az egyik legegyszerűbb feladatok, amelyek lényegében megoldása feltételezi a tömbökkel való munka, hurkok, elágazások, és az I / O, és lehetővé teszi, hogy bizonyítani az alprogram hívás. Ugyanakkor ez megfigyelhető és könnyen észrevehető.

Kapcsolódó cikkek