Kada buvo sukurta c kalba? §1 Bendra informacija apie kalbą

C++ (skaityti c-plus-plus) yra sukompiliuota, statiškai atspausdinta bendrosios paskirties programavimo kalba, kuria galite kurti bet kokio sudėtingumo programas.
Jau daugiau nei 20 metų ši kalba buvo tarp trijų populiariausių ir paklausiausių programavimo kalbų. (Tai galite patikrinti apsilankę TIOBE svetainėje).
Kalba atsirado devintojo dešimtmečio pradžioje, kai „Bell Labs“ darbuotojas Björnas Stroustrupas savo poreikiams pateikė keletą C kalbos patobulinimų.

Bjarne Stroustrup – C++ kalbos kūrėjas

Stroustrup nusprendė išplėsti C kalbą su galimybėmis, esančiomis Simula kalboje. C kalbos būtybė pagrindinė kalba UNIX sistema, kurioje veikė „Bell“ kompiuteriai, yra greita, turtinga ir nešiojama. Stroustrup pridėjo galimybę dirbti su klasėmis ir objektais. Dėl to praktines problemas Simulacijas pasirodė įmanoma išspręsti tiek pagal kūrimo laiką (dėl Simul panašių klasių), tiek pagal skaičiavimo laiką (dėl C greičio).
Štai kaip apie tai kalba pats kalbos kūrėjas:



1998 m. standartų komitetas paskelbė pirmąjį kalbos standartą, žinomą kaip C++98. C++ toliau tobulėja, kad reaguotų šiuolaikiniai reikalavimai. Viena iš grupių, kuriančių C++ kalbą ir teikiančių pasiūlymus dėl jos tobulinimo C++ standartų komitetui yra Padidinti, kuri, be kita ko, tobulina kalbos galimybes, pridedant ją metaprogramavimo funkcijomis. Naujausias standartas buvo išleistas 2017 m. ir vadinamas C++17. Kitas standartas netruks laukti ir tikimasi, kad jis pasirodys 2020 m.
Niekas neturi teisių į C++ kalbą, ji yra nemokama. 2016 m. kovą buvo sukurta Rusija darbo grupė RG21 C++. Grupė buvo suburta rinkti pasiūlymus dėl C++ standarto, siųsti juos į komitetą ir ginti Tarptautinės standartizacijos organizacijos visuotiniuose susirinkimuose.
C++ yra kelių paradigmų kalba (nuo žodžio paradigma – rašymo stilius kompiuterines programas), įskaitant platų asortimentą įvairių stilių ir programavimo technologijas. Ji dažnai priskiriama prie objektų orientuotų kalbų, tačiau griežtai kalbant, taip nėra. Darbo proceso metu kūrėjas gauna absoliučią laisvę renkantis įrankius, kad tam tikru būdu išspręsta problema būtų išspręsta kuo efektyviau. Kitaip tariant, C++ neverčia programuotojo laikytis tik vieno programos kūrimo stiliaus (pavyzdžiui, objektinio).
C++ turi turtingą standartinę biblioteką, kuri apima bendrus konteinerius ir algoritmus, I/O, reguliariąsias išraiškas, kelių gijų palaikymą ir kitas funkcijas. C++ padarė įtaką daugeliui programavimo kalbų, įskaitant: Java, C#, D. Kadangi C++ priklauso kalbų šeimai, pagrįsta C kalbos sintaksė, galite lengvai įsisavinti kitas šios šeimos programavimo kalbas: JavaScript, PHP , Perl, Objective-C ir daugelis kitų. ir kt., įskaitant pačią pirminę kalbą – C. ()
Per savo egzistavimą C++ kalba įgijo nuolatinių mitų, kurie lengvai paneigiami (žr. čia: 1 ir 2 dalis)

Kalbos ir standartų išleidimo istorija

  • 1983
  • kalbos kūrėjas – Björnas Stroustrupas, „Bell Labs“ darbuotojas, pristatė ankstyvąją C++ kalbos versiją („C su klasėmis“)

  • 1985
  • pirmasis komercinis C++ leidimas, kalba pagerėjo modernus pavadinimas

  • 1986
  • išleistas pirmasis C++ programavimo kalbos leidimas – knyga, skirta C++, kurią parašė Björn Stroustrup.

  • 1998
  • Ratifikuotas tarptautinis C++ kalbos standartas: ISO/IEC 14882:1998 „Standartas C++ programavimo kalba"

  • 2003
  • 2005
  • Išleista bibliotekos techninė ataskaita 1 (TR1). Nors oficialiai tai nėra standarto dalis, ataskaitoje aprašyti standartinės bibliotekos plėtiniai, kurie turėtų būti įtraukti į kitą C++ kalbos versiją.

  • 2011
  • išleidžiamas naujas standartas – C++11 arba ISO/IEC 14882:2011; naujas standartasįtrauktas kalbos branduolio papildymas ir standartinės bibliotekos, įskaitant daugumą TR1, išplėtimas

  • 2014
  • C++14 standarto išleidimas („Tarptautinis standartas ISO/IEC 14882:2014(E) programavimo kalba C++“); C++14 gali būti vertinamas kaip nedidelis C++11 plėtinys, kuriame daugiausia yra klaidų pataisymų ir nedidelių patobulinimų

  • 2017
  • išleistas naujas standartas – C++1z (C++17). Šis standartas padarė daug pakeitimų ir papildymų. Pavyzdžiui, STD apėmė C11 standarto bibliotekas, failų sistema, paremta boost::failų sistema, dauguma eksperimentinė biblioteka TS I.

C++ filosofija

Savo knygoje The Design and Evolution of C++ (2007) Björn Stroustrup aprašo principus, kurių laikėsi kurdamas C++ (sutrumpintai):

  • Gauk universali kalba naudojant statinius duomenų tipus, C kalbos efektyvumą ir perkeliamumą.
  • Tiesiogiai ir visapusiškai palaiko įvairius programavimo stilius.
  • Suteikite programuotojui pasirinkimo laisvę, net jei tai suteikia jam galimybę pasirinkti neteisingai.
  • Kiek įmanoma palaikykite suderinamumą su C, kad tai būtų įmanoma lengvas perėjimas iš C programavimo.
  • Venkite neatitikimų tarp C ir C++: bet kokia konstrukcija, galiojanti abiem kalbomis, turi reikšti tą patį kiekvienoje iš jų ir lemti tą patį programos elgesį.
  • Venkite funkcijų, kurios priklauso nuo platformos arba nėra universalios.
  • „Nemokėkite už tai, ko nenaudojate“ – ne kalbinis prietaisas neturėtų sumažinti programų, kurios jo nenaudoja, našumo.
  • Nereikia pernelyg sudėtingos programavimo aplinkos.

C ir C++

C++ sintaksė yra paveldėta iš C kalbos Nors formaliai vienas iš C++ principų išlieka suderinamumo su C kalba palaikymas, iš tikrųjų šių kalbų standartizacijos grupės nesąveikauja, o jų atliekami pakeitimai ne. tik ne koreliuoja, o dažnai iš esmės ideologiškai prieštarauja vienas kitam. Taigi elementai, kuriuos naujieji C standartai prideda prie branduolio, yra standartinės bibliotekos C++ standartiniuose elementuose ir jų iš viso nėra branduolyje, pavyzdžiui, dinaminiai masyvai, masyvai su fiksuotomis ribomis, lygiagrečios apdorojimo priemonės. Anot Stroustrup, šių dviejų kalbų raidos derinimas būtų labai naudingas, tačiau vargu ar tai būtų įmanoma dėl politinių priežasčių. Taigi praktinis C ir C++ suderinamumas palaipsniui bus prarastas.
IN šiame pavyzdyje, priklausomai nuo naudojamo kompiliatoriaus, bus išvesta „C++“ arba „C“:

#įtraukti int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

Taip yra dėl to, kad simbolių konstantos C yra int tipo, o C++ - tipo char, tačiau šių tipų dydžiai skiriasi.

Taikymo gyvavimo ciklo modeliai

Gyvenimo ciklas programinė įranga yra laikotarpis, kuris prasideda nuo to momento, kai priimamas sprendimas dėl būtinybės kurti programinės įrangos produktas ir baigiasi jo visiško pašalinimo iš tarnybos momentu. Šis ciklas yra programinės įrangos kūrimo ir tobulinimo procesas. Yra keli modeliai gyvavimo ciklas.
Kaskadinis modelis gyvavimo ciklą (angliškas krioklio modelis) 1970 metais pasiūlė Winstonas Royce'as. Jame numatyta griežtai nuosekliai įgyvendinti visus projekto etapus fiksuota tvarka. Perėjimas į kitą etapą reiškia visišką ankstesnio etapo darbų užbaigimą. Reikalavimų formavimo etape apibrėžti reikalavimai yra griežtai dokumentuojami formoje technines užduotis ir yra registruojami visam projekto vystymui. Kiekvienas etapas baigiasi išleidžiant visą dokumentų rinkinį, kurio pakanka, kad kūrimą galėtų tęsti kita kūrimo komanda.
Projekto etapai pagal krioklio modelį:

  1. Reikalavimų formavimas;
  2. Dizainas;
  3. Įgyvendinimas;
  4. Testavimas;
  5. Įgyvendinimas;
  6. Eksploatacija ir priežiūra.

Kaskadiniame modelyje perėjimas iš vieno projekto etapo į kitą daro prielaidą, kad ankstesnio etapo rezultatas yra visiškai teisingas. IN dideli projektai tai pasiekti beveik neįmanoma. Todėl šis modelis tinka tik mažam projektui vystyti. (Pats W. Royce'as šio modelio nesilaikė ir naudojo iteracinį modelį).
Iteratyvus modelis
Alternatyva kaskadiniam modeliui yra iteracinio ir laipsniško vystymosi (IID) modelis, gautas iš T. Gilb 70-aisiais. evoliucinio modelio pavadinimas. IID modelis apima projekto gyvavimo ciklo suskaidymą į iteracijų seką, kurių kiekviena primena „mini projektą“, įskaitant visus kūrimo procesus, taikomus kuriant mažesnius funkcionalumo elementus, palyginti su visu projektu. Kiekvienos iteracijos tikslas – gauti veikiančią programinės įrangos sistemos versiją, įskaitant funkcionalumą, apibrėžtą visų ankstesnių ir dabartinių iteracijų integruoto turinio. Galutinės iteracijos rezultate yra visos reikalingos gaminio funkcijos. Taigi, pasibaigus kiekvienai iteracijai, produktas padidina savo galimybes, todėl jos vystosi evoliuciškai.

Programos gyvavimo ciklo standartizavimas Rusijoje

Valstybės standartas išsamiai aprašo programos gyvavimo ciklą GOST R ISO/IEC 12207-2010 Informacinės technologijos. Sistemų ir programinės įrangos inžinerija. Programinės įrangos gyvavimo ciklo procesai“. Šis standartas buvo priimtas Federalinė agentūra dėl Rusijos Federacijos techninio reguliavimo ir metrologijos ir yra panašus į tarptautinį standartą ISO/IEC 12207:2008. Šis standartas nustato bendra struktūra programinės įrangos gyvavimo ciklo procesus, kuriais gali vadovautis programinės įrangos pramonė. Standartas nesiūlo konkretaus gyvavimo ciklo modelio. Jos nuostatos yra bendros visiems programinės įrangos kūrimo gyvavimo ciklo modeliams, metodams ir technologijoms. Jame aprašoma gyvavimo ciklo procesų struktūra, nenurodant, kaip įgyvendinti ar užbaigti į tuos procesus įtrauktas veiklas ir užduotis.

Kūrimo procesas – racionalus vieningas procesas (RUP)

Daugumoje šiuolaikinių kūrimo metodikų įgyvendinami įvairūs iteracinio požiūrio variantai:

Racionalus vieningas procesas (RUP)(racionalus unified process) yra programinės įrangos kūrimo metodika, kurią palaiko Rational Software (IBM). Metodikoje pateikiamos rekomendacijos visiems kūrimo etapams: nuo verslo modeliavimo iki testavimo ir paleidimo baigta programa. Unified Modeling Language (UML) naudojama kaip modeliavimo kalba.
Visas produkto kūrimo gyvavimo ciklas susideda iš keturių fazių, kurių kiekviena apima vieną ar daugiau iteracijų.

  • Pradinis etapas (pradžia)
  • Projekto apimties ir reikalingų išteklių kiekio nustatymas. Nustatomi pagrindiniai gaminio reikalavimai, apribojimai ir pagrindinės funkcijos. Rizika vertinama. Veiksmų planavimas. Baigus pradinė fazė Vertinamas gyvavimo ciklo tikslo etapo pasiekimas, o tai suponuoja suinteresuotųjų šalių susitarimą tęsti projektą.

  • Paaiškinimas
  • Reikalavimai dokumentavimui. Vykdomosios architektūros projektavimas, įgyvendinimas ir testavimas. Sąlygų ir išlaidų paaiškinimas. Pagrindinių pavojų sumažinimas. Sėkmingas kūrimo etapo užbaigimas reiškia gyvenimo ciklo architektūros etapo pasiekimą.

  • Statyba
  • „Build“ fazėje yra įdiegta didžioji dalis produkto funkcionalumo: užbaigiamas programos dizainas, parašomas šaltinio kodas. Sukūrimo etapas baigiasi pirmąja išorine sistemos išleidimu ir pradinio veikimo pajėgumo etapais.

  • Įvadas
  • „Įdiegimo“ fazėje sukuriama galutinė produkto versija, kurią kūrėjas perduoda užsakovui. Tai apima beta versijos testavimo programą, naudotojų mokymą ir produkto kokybės nustatymą. Jei kokybė neatitinka vartotojo lūkesčių ar pradiniame etape nustatytų kriterijų, Diegimo etapas kartojamas dar kartą. Įgyvendinti visus tikslus reiškia pasiekti produkto išleidimo etapą ir užbaigti visą kūrimo ciklą.


Pokalbis su Bjarne Stroustrup


Internetinė konferencija kūrėjams naudojant Embarcadero C++Builder. Pokalbį su legendiniu C++ kalbos kūrėju Bjarne'u Stroustrup vedė Davidas Intersimone'as, Embarcadero ryšių su kūrėjais viceprezidentas. (Dubliuotas vertimas).

C kalba(skaityti "C") buvo sukurtas 70-ųjų pradžioje, kai Kenas Thompsonas ir Dennisas Ritchie iš Bell Labs sukūrė operacinė sistema UNDC. Pirmiausia jie sukūrė dalį C kompiliatoriaus, tada panaudojo ją likusiai kompiliatoriaus daliai kompiliuoti SU ir galiausiai naudojo gautą kompiliatorių UNIX kompiliavimui. UNIX operacinė sistema iš pradžių buvo platinama šaltinio kodu SU universitetuose ir laboratorijose, o gavėjas galėtų kompiliuoti C šaltinio kodą į mašininį kodą naudodamas tinkamą C kompiliatorius.

Pradinio kodo platinimas UNIX operacinę sistemą pavertė unikalia; programuotojas galėtų pakeisti operacinę sistemą, o šaltinio kodas galėtų būti perkeltas iš vienos aparatinės įrangos platformos į kitą. Šiandien POSIX standartas apibrėžia standartinis rinkinys UNIX sistemos skambučiai galimi SU, kuris turi būti įdiegtas UNIX versijose, kurios yra suderinamos su POSIX. SU buvo trečioji kalba, kurią sukūrė Thomsonas ir Ritchie kuriant UNIX; pirmieji du, žinoma, buvo A Ir IN.

Palyginti su daugiau pradžios kalba- BCPL, SU buvo patobulinta pridedant tam tikro ilgio duomenų tipus. Pavyzdžiui, duomenų tipas tarpt gali būti naudojamas kuriant kintamąjį su tam tikras skaičius bitų (paprastai 16), o duomenų tipas ilgas gali būti naudojamas sukurti visą kintamąjį su didelis skaičius bitų (dažniausiai 32). Skirtingai nuo kitų kalbų aukšto lygio, SU galėtų dirbti su atminties adresais tiesiogiai, naudodamas rodykles ir nuorodas. Kadangi SU išlaikė galimybę tiesiogiai pasiekti aparatūra, ji dažnai klasifikuojama kaip vidutinio lygio kalba arba juokais vadinama „mobiliųjų surinkimo kalba“.

Kalbant apie gramatiką ir sintaksę SU yra struktūrinė kalba programavimas. Nors daugelis šiuolaikinių programuotojų mąsto klasėmis ir objektais, programuotojai SU galvoti apie procedūras ir funkcijas. IN SU galite apibrėžti savo abstrakčius duomenų tipus naudodami raktinį žodį struktūra. Taip pat galite apibūdinti savo sveikųjų skaičių tipus (išvardijimus) ir suteikti kitus pavadinimus esamų tipų naudojant duomenis raktažodį typedef. Šia prasme SU yra struktūrizuota kalba, turinti objektinio programavimo užuomazgų.

Plačiai paplitęs C kalbaįjungta įvairių tipų kompiuteriai (kartais vadinami aparatūros platformomis), deja, lėmė daugybę kalbos variantų. Jie buvo panašūs, bet nesuderinami vienas su kitu. Tai buvo didelė problema programinės įrangos kūrėjams, kuriems reikėjo parašyti suderinamas programas, kurios galėtų veikti keliose platformose. Tapo aišku, kad to reikia standartinė versija C. 1983 metais ANSI (Amerikos nacionalinis standartų komitetas) sudarė techninį komitetą X3J11, kad sukurtų kalbos standartą C(„pateikti nedviprasmišką ir nuo mašinos nepriklausomą kalbos apibrėžimą“). 1989 m. standartas buvo patvirtintas. ANSI bendradarbiavo su ISO ( Tarptautinė organizacija Standartai) standartizuoti C tarptautiniu mastu; 1990 m. buvo paskelbtas bendras standartas, pavadintas ANSI/ISO 9899:1990. Šis standartas vis dar tobulinamas ir jį palaiko dauguma kompiliatorių kūrimo įmonių.

Bjarne'as Stroustrupas išlaisvintas į objektą orientuotas potencialas SU perkeliant klasės galimybes 67 modelis V SU. Iš pradžių nauja kalba nešiojo pavadinimą „Su klasėmis“ ir tik tada pradėta vadinti C++. Kalba C++ sulaukė populiarumo po to, kai buvo sukurtas Bell Labs, vėliau jis buvo perkeltas į kitas pramonės šakas ir korporacijas. Šiandien tai vienas iš labiausiai populiarios kalbos programavimas pasaulyje. C++ paveldi ir gerą, ir blogosios pusės SU.

Bjarne'as Stroustrupas: "Sugalvojau C++, užsirašiau pradinį jo apibrėžimą ir baigiau pirmąjį įgyvendinimą. Pasirinkau ir suformulavau projektavimo kriterijus C++, sukūrė pagrindines jo savybes ir buvo atsakingas už pasiūlymų išplėsti kalbą likimą standartizacijos komitete C++“, – rašo populiariausios programavimo kalbos autorius. C++ kalba daug skolingas kalbai C, ir kalba C lieka poaibis C++ kalba(tačiau C++ ištaisė keletą rimtų C tipo sistemos trūkumų). Taip pat sutaupiau lėšų C, kurios yra pakankamai žemo lygio, kad galėtų atlikti svarbiausias sistemos užduotis. C kalba, savo ruožtu, daug skolingas savo pirmtakui BCPL; Beje, komentaro stilius // buvo perkeltas į C++ iš BCPL. Kitas pagrindinis įkvėpimo šaltinis buvo Simula67 kalba. Iš jos buvo pasiskolinta klasių (su išvestinėmis klasėmis ir virtualiomis funkcijomis) samprata. Operatoriaus perkrovos galimybė ir galimybė pateikti deklaracijas visur, kur tik gali būti parašytas nurodymas, primena Algol68. “

Vardas C++ išrado Rickas Massittis. Pavadinimas rodo evoliucinį perėjimo prie jo iš C pobūdį. „++“ yra C raidės padidėjimo operatorius. Šiek tiek trumpesnis C+ pavadinimas yra sintaksės klaida; be to, jis jau buvo vartojamas kaip visai kitos kalbos pavadinimas. C semantikos mokslininkai mano, kad C++ blogiau nei ++C. Kalba nebuvo pavadinta D, nes ji yra C plėtinys ir nesistengia išspręsti problemų išmesdama įvairias funkcijas...

Iš pradžių C++ programavimo kalba buvo sukurta taip, kad autoriui ir jo draugams nereikėtų programuoti asamblėjos kalba, C ar kita šiuolaikinės kalbos aukšto lygio. Jo pagrindinis tikslas buvo rašyti geros programos paprastesnis ir malonesnis individualiam programuotojui. Plėtros planas C++ niekada neegzistavo popieriuje; projektavimas, dokumentacija ir įgyvendinimas persikėlė vienu metu. Žinoma, išorinė sąsaja C++ buvo parašyta C++. Niekada nebuvo „C++ projekto“ ar „C++ plėtros komiteto“. Štai kodėl C++ vystėsi ir toliau vystosi visomis kryptimis, kad susidorotų su iššūkiais, su kuriais susiduria vartotojai, ir per diskusijų tarp autoriaus ir jo draugų bei kolegų.

IN C++ kalba Objektinio programavimo principai yra visiškai palaikomi, įskaitant tris ramsčius, ant kurių jis stovi: inkapsuliavimą, paveldėjimą ir polimorfizmą. Inkapsuliavimas C++ palaikoma kuriant nestandartinius (pasirinktinius) duomenų tipus, vadinamus klasėmis. C++ kalba palaiko paveldėjimą. Tai reiškia, kad galite deklaruoti naujo tipo duomenis (klasę), kuri yra esamo plėtinys.

Nors C++ programavimo kalba yra teisingai vadinamas C tęsiniu ir bus palaikoma bet kuri veikianti C programa C++ kompiliatorius, pereinant iš C į C++ buvo padarytas labai reikšmingas šuolis. C++ kalba jau daugelį metų naudojosi savo giminingumu C kalba, nes daugelis programuotojų pastebėjo, kad norint išnaudoti visas galimybes C++ kalba, jiems reikia atsisakyti kai kurių ankstesnių žinių ir įgyti naujų, būtent: mokytis naujas būdas konceptualizavimas ir programavimo problemų sprendimas. Prieš pradėdami mokytis C++, Stroustrup ir dauguma kitų programuotojų, naudojančių C++ Jie mano, kad mokytis C yra neprivaloma.

C++ programavimo kalbaŠiuo metu yra laikoma dominuojančia kalba, naudojama kuriant komercinius produktus, 90% žaidimų yra parašyti C++ naudojant DirectX.

Literatūra:
H.M.Deitel, P.J.Deitel "Kaip programuoti C++"
Bjarne'as Stroustrup "C++ programavimo kalba. 3-asis leidimas."
Simonas Robinsonas, Ollie Cornesas, Jay Glynnas ir kiti „C# profesionalams“.
Jess Liberty „Išmok save C++ per 21 dieną“
Stanislavas Gornakovas "DirectX, programavimo pamokos C++"

Kokia yra tokio C kalbos statuso priežastis? Istoriškai ši kalba yra neatsiejama nuo Unix operacinės sistemos, kuri dabar išgyvena savo atgimimą. 60-ieji buvo operacinių sistemų ir aukšto lygio programavimo kalbų formavimosi era. Tuo metu OS ir kompiliatoriai buvo kuriami atskirai kiekvienam kompiuterių tipui, o dažnai net ir savo programavimo kalboms (prisiminkite, pavyzdžiui, PL/I). Kartu jau išryškėjo šiuo atveju kylančių problemų bendrumas. Atsakymas į šio bendrumo suvokimą buvo bandymas sukurti universalią mobiliąją operacinę sistemą, o tam reikėjo turėti vienodai universalią ir mobilioji kalba programavimas. C tapo tokia kalba, o Unix tapo pirmąja OS, parašyta beveik vien aukšto lygio kalba.

Glaudus ryšys su „Unix“ suteikė C kalbai tokį išbandymo lauką, kokio tuo metu neturėjo jokia kita kalba. Užduotys sistemos programavimas buvo teisingai laikomi tuo metu sudėtingiausiomis pramonėje. Dažniausiai jie buvo tokie priklausomi nuo mašinos, kad daugelis net negalvojo, kaip juos išspręsti kitaip nei surinkime. Aukšto lygio kalbos buvo skirtos taikomųjų programų programavimui ir įdiegė tik labai ribotas tam reikalingas funkcijas sistemos darbas, ir dažnai tik tam tikro tipo mašinoms.

Nuo pat pradžių C kalba buvo sukurta tam, kad ja galėtum rašyti sistemos užduotys. C kūrėjai nesukūrė abstraktaus kalbos vykdytojo modelio, o tiesiog įdiegė jame tas galimybes, kurių labiausiai reikėjo sistemos programavimo praktikoje. Tai visų pirma buvo tiesioginio darbo su atmintimi priemonės, struktūrinės valdymo struktūros ir modulinis programos organizavimas. Ir iš esmės nieko daugiau į kalbą nebuvo įtraukta. Visa kita buvo įtraukta į vykdymo biblioteką. Todėl niekintojai kartais vadina C kalbą kaip konstrukcijų surinkėją. Bet kad ir ką jie sakytų, šis metodas pasirodė esąs labai sėkmingas. Jo dėka tai buvo pasiekta naujas lygis kalbant apie kalbos paprastumą ir galimybes.

Tačiau yra dar vienas veiksnys, nulėmęs kalbos sėkmę. Kūrėjai labai meistriškai atskyrė nuo mašinos priklausomą ir nepriklausomos savybės. Dėl to daugumą programų galima rašyti universaliai – jų veikimas nepriklauso nuo procesoriaus ir atminties architektūros. Kai kurios nuo aparatinės įrangos priklausančios kodo dalys gali būti lokalizuotos atskiruose moduliuose. O naudodami išankstinį procesorių galite sukurti modulius, kurie, sukompiliavus skirtingose ​​platformose, sugeneruos atitinkamą nuo mašinos priklausomą kodą.

C kalbos sintaksė sukėlė daug ginčų Dėl joje naudojamos trumpinimo technikos, jei jos naudojamos per daug, programa gali būti visiškai neįskaitoma. Tačiau, kaip sakė Dijkstra, priemonės nėra kaltos dėl to, kad jos naudojamos neraštingai. Tiesą sakant, C siūlomos sintaksės santrumpos atitinka dažniausiai praktikoje pasitaikančias stereotipines situacijas. Jei santrumpas laikysime išraiškingo ir kompaktiško tokių situacijų pateikimo idiomomis, jų nauda tampa besąlygiška ir akivaizdi.

Taigi, C atsirado kaip universali sistemos programavimo kalba. Tačiau jis nesilaikė šiose ribose. Iki devintojo dešimtmečio pabaigos C kalba, išstūmusi Fortraną iš lyderio pozicijų, įgijo didžiulį populiarumą tarp programuotojų visame pasaulyje ir buvo pradėta naudoti įvairiose srityse. taikomų problemų. Nemažą vaidmenį čia suvaidino Unix (taigi ir C) paplitimas universiteto aplinkoje, kur buvo ruošiama nauja programuotojų karta.

Kaip ir visos kalbos, C buvo palaipsniui tobulinamas, tačiau dauguma patobulinimų nebuvo radikalūs. Reikšmingiausiu iš jų, ko gero, reikėtų laikyti griežtos funkcijų tipų specifikacijos įvedimą, kuris žymiai padidino C modulių tarpusavio ryšio patikimumą. Visi tokie patobulinimai 1989 m. buvo įtvirtinti ANSI standarte, kuris iki šiol apibrėžia C kalba.

Bet jei viskas taip rožinė, kodėl toliau vartojamos visos kitos kalbos, o tai patvirtina jų egzistavimą? C kalbos Achilo kulnas buvo tas, kad ji pasirodė per žemo lygio užduotims, kurios buvo įtrauktos į darbotvarkę 90-aisiais. Be to, ši problema turi du aspektus. Viena vertus, į kalbą buvo integruoti per žemo lygio įrankiai – pirmiausia atminties valdymas ir adresų aritmetika. Ne be reikalo procesorių bitų talpos keitimas labai skaudžiai atsiliepia daugeliui C programų. Kita vertus, C trūksta aukšto lygio savybių – abstrakčių duomenų tipų ir objektų, polimorfizmo, išimčių tvarkymo. Dėl to C programose užduoties įgyvendinimo technika dažnai dominuoja jos turinyje.

Pirmieji bandymai ištaisyti šiuos trūkumus buvo pradėti devintojo dešimtmečio pradžioje. Net tada Bjarne'as Stroustrupas iš AT&T Bell Labs pradėjo kurti C kalbos plėtinį pagal kodinis pavadinimas. Kūrimo stilius gana atitiko dvasią, kuria buvo sukurta pati C kalba - joje buvo įdiegtos tam tikros funkcijos, kad darbas būtų patogesnis konkretūs žmonės ir grupės. Pirmasis komercinis naujosios kalbos vertėjas, pavadintas C++, pasirodė 1983 m. Tai buvo išankstinis procesorius, kuris išvertė programą į C kodą. Tačiau tikruoju kalbos gimimu galima laikyti Stroustrup knygos paskelbimą 1985 m. Nuo šio momento C++ pradėjo populiarėti visame pasaulyje.

Pagrindinė C++ naujovė – klasių mechanizmas, leidžiantis apibrėžti ir naudoti naujus duomenų tipus. Programuotojas aprašo vidinį klasės objekto atvaizdavimą ir funkcijų-metodų rinkinį, skirtą prieigai prie šios reprezentacijos. Vienas iš puoselėjamų tikslų kuriant C++ buvo noras padidinti jau parašyto kodo pakartotinio panaudojimo procentą. Klasių koncepcija pasiūlė tam paveldėjimo mechanizmą. Paveldėjimas leidžia kurti naujas (išvestas) klases su išplėstu vaizdavimu ir modifikuoti metodai nedarant įtakos sukompiliuotam šaltinio (bazinių) klasių kodui. Tuo pačiu metu paveldėjimas suteikia vieną iš polimorfizmo įgyvendinimo mechanizmų – pagrindinę objektinio programavimo koncepciją, pagal kurią atlikti to paties tipo apdorojimą. skirtingų tipų duomenis galima naudoti tą patį kodą. Tiesą sakant, polimorfizmas taip pat yra vienas iš būdų užtikrinti pakartotinį kodo naudojimą.

Klasių įvedimas neišsemia visų C++ kalbos naujovių. Jame įdiegtas visavertis struktūrizuotas išimčių apdorojimo mechanizmas, kurio nebuvimas C programoje labai apsunkino patikimų programų rašymą, šablonų mechanizmas – sudėtingas makrokomandų generavimo mechanizmas, giliai įterptas į kalbą, atveriantis dar vieną kelią pakartotiniam kodo naudojimui, ir daug daugiau.

Taigi, bendroji linija plėtojant kalbą buvo siekiama išplėsti jos galimybes, diegiant naujas aukšto lygio konstrukcijas, išlaikant kuo pilnesnį suderinamumą su ANSI C Žinoma, kova dėl kalbos lygio kėlimo vyko ir antruoju frontu – taip pat klasės leidžia su tinkamu požiūriu paslėpti žemo lygio operacijas, todėl programuotojas iš tikrųjų nustoja dirbti su atmintimi ir nuo sistemos priklausančiais objektais. Tačiau kalboje nėra mechanizmų, kurie verčia kūrėją teisingai struktūrizuoti programą, o autoriai nepateikė jokių sistemingų rekomendacijų, kaip naudoti gana sudėtingas jos konstrukcijas. Jie taip pat nepasirūpino laiku sukurti standartinę klasių biblioteką, kuri įdiegtų dažniausiai pasitaikančias duomenų struktūras.

Visa tai lėmė, kad daugelis kūrėjų buvo priversti patys tyrinėti kalbinės semantikos labirintus ir savarankiškai rasti sėkmingai veikiančias idiomas. Pavyzdžiui, pirmajame kalbos raidos etape daugelis klasių bibliotekų kūrėjų siekė sukurti vieną klasių hierarchiją su bendra bazine klase Object. Ši idėja buvo pasiskolinta iš „Smalltalk“, vienos garsiausių objektų orientuotų kalbų. Tačiau C++ jis pasirodė visiškai neperspektyvus – kruopščiai sukurtos klasių bibliotekų hierarchijos pasirodė nelanksčios, o ir klasių darbas nebuvo akivaizdus. Kad klasių bibliotekos būtų tinkamos naudoti, jos turėjo būti pateiktos šaltinio kodu.

Šablonų klasių atsiradimas visiškai paneigė šią vystymosi kryptį. Paveldėjimas pradėtas naudoti tik tais atvejais, kai reikėjo sukurti specializuotą esamos klasės versiją. Bibliotekos pradėjo sudaryti iš atskirų klasių ir mažų nesusijusių hierarchijų. Tačiau šiuo keliu jis pradėjo mažėti pakartotinai naudoti kodas, nes C++ kalboje polimorfinis klasių iš nepriklausomų hierarchijų naudojimas yra neįmanomas. Plačiai paplitęs šablonų naudojimas lemia nepriimtiną sukompiliuojamo kodo apimties padidėjimą – nepamirškime, šablonai diegiami naudojant makrogeneravimo metodus.

Vienas rimčiausių C++ trūkumų, kurį ji paveldėjo iš C sintaksės, yra aprašymų prieinamumas kompiliatoriui. vidinė struktūra visos naudojamos klasės. Dėl to, pakeitus bibliotekos klasės vaizdavimo vidinę struktūrą, reikia iš naujo kompiliuoti visas programas, kuriose naudojama ši biblioteka. Tai labai apriboja bibliotekų kūrėjus jų modernizavimo požiūriu, nes išleidžiant nauja versija, jie turi išlikti dvejetainiu būdu suderinami su ankstesniu. Būtent ši problema verčia daugelį ekspertų manyti, kad C++ netinka dideliems ir labai dideliems projektams vykdyti.

Ir vis dėlto, nepaisant išvardintų trūkumų ir net kalbos standarto neprieinamumo (tai po penkiolikos papildomų metų naudokite!), C++ išlieka viena populiariausių programavimo kalbų. Jo stiprybė visų pirma yra beveik visiškas suderinamumas su C kalba. Dėl to C++ programuotojai turi prieigą prie visų C ​​kalbos patobulinimų. Tuo pačiu metu C++, net ir nenaudojant klasių, suteikia daug tokių svarbių dalykų. papildomos funkcijos ir patogumai, kuriuos daugelis naudoja tiesiog kaip patobulintą S.

Kalbant apie C++ objektų modelį, kol jūsų programa netampa labai didelė (šimtai tūkstančių eilučių), ji yra gana tinkama naudoti. Atsiranda pastaruoju metu Komponentinės programinės įrangos tendencija tik sustiprina C++ poziciją. Kuriant atskirus komponentus, C++ trūkumai dar neatsiranda, o komponentų susiejimas į veikiančią sistemą vyksta jau ne kalbos, o operacinės sistemos lygmeniu.

Atsižvelgiant į visa tai, kas buvo pasakyta, C++ perspektyvos neatrodo niūrios. Nors jis neturės monopolio programavimo kalbų rinkoje. Galbūt vienintelis dalykas, kurį galime tvirtai pasakyti, yra tai, kad ši kalba neišgyvens dar vienos modernizavimo-plėtros. Ne veltui, kai pasirodė Java, jai buvo skiriama tiek daug dėmesio. atidus dėmesys. Kalba, kurios sintaksė yra artima C++ ir todėl daugeliui programuotojų atrodo pažįstama, buvo išvengta ryškiausių C++ trūkumų, paveldėtų iš 70-ųjų. Tačiau neatrodo, kad „Java“ atitiktų kai kurių žmonių jai skirtą vaidmenį.

Dėl ypatingo C/C++ kalbų vaidmens šiuolaikiniame programavime praktiškai beprasmiška pateikti konkrečius adresus internete, kur galima rasti medžiagą apie jas. Tokių vietų tiesiog yra per daug. Tačiau, jei norite sužinoti daugiau apie C++ raidą, pradėkite nuo šio trumpo straipsnio http://citforum.syzran.ru/programming/prg96/76.shtml.

Aleksandras Sergejevas, [apsaugotas el. paštas]
Straipsnis iš BYTE/Russia žurnalo, 2000 m. kovo mėn

Norėdami aiškiai parodyti aprašytų kalbų naudojimą praktikoje, pasirinkome užduotį, kurioje reikėjo įvesti sveikųjų skaičių seką iš standartinės įvesties arba iš failo, o tada išvesti tik nelyginius, o atvirkštine tvarka sekantis. Tai viena iš paprasčiausių problemų, kuriai išspręsti iš esmės reikia dirbti su masyvais, kilpomis, šakojimu ir I/O, taip pat leidžia demonstruoti paprogramių iškvietimus. Kartu tai matoma ir lengvai suvokiama.

Sąrašas 1. C

1 #įtraukti /* Sujungti I/O funkcijas */ 2 3 void main(void) 4 ( 5 int M; /* 10 sveikųjų skaičių masyvas, skaičiuojamas nuo 0 */ 6 int N; 7, kai (N=0; N)<10; ++N) /* Вводим не более 10 чисел */ 8 if (EOF == scanf ("%d, M+N)) 9 break; /* Если конец файла, прерываем цикл */ 10 11 for (-N; N>=0; --N) /* Einame per masyvą atvirkštine tvarka */ 12 if (M[N]%2) /* tvarka ir išspausdiname nelyginius */ 13 printf("%d\n", M[N]) ; 14)

  • 3 eilutė. C/C++ kalboje programos vykdymas visada prasideda nuo pagrindinės funkcijos.
  • 7 ir 11 eilutės. Ciklo antraštėje nurodomas pradinis nustatymas, tęsimo sąlyga ir ciklo parametro perskaičiavimo taisyklė, atskirti kabliataškiais. Operacijos ++ Ir -/- - garsiausios C kalbos santrumpos, reiškiančios kintamojo padidėjimą ir mažinimą, tai yra jo vertės padidėjimą ir sumažėjimą vienu.
  • 8 eilutė. Funkcija scanf pagal pirmojo parametro nurodytą formatą įveda kintamųjų, kurių adresai nurodyti likusiais parametrais, reikšmes. Čia adresas, kuriame įvedama reikšmė, apskaičiuojamas naudojant adreso aritmetiką iki masyvo vietos adreso M poslinkis pridedamas N elementai. Tą patį efektą galima pasiekti rašant &M[N].
  • 12 eilutė. Operacija % apskaičiuoja dalybos likutį. Operatoriaus būklė jeigu laikomas įvykdytu, jei išraiškos skaitinė reikšmė skiriasi nuo nulio.
  • 13 eilutė. Funkcija printf- spausdinimas pagal formatą veikia taip pat scanf, bet vietoj adresų perduodamos reikšmės, kurios turi būti išvestos.
1 #įtraukti 2 3 šablonas klasė 4 masyvas ( 5 viešas: Masyvas (T dydis=1) : M (naujas T), N(dydis), n(0) () 6 Masyvas (tuščias) ( ištrinti M;) 7 T Skaičiavimas (tuščias) const ( return n ) 8 T operatorius (int i) const ( return M[i] ) 9 void Add (T Data) // Paskirstytos atminties adresas 12 int N, n; 13); 14 15 šablonas tuščias masyvas ::Add(T Data) 16 ( if (N-n) // Jei visi skirti 17 naudojami ( int* P = naujas T; // tarpas, paskirstykite daugiau 18 už (int i=0; i A; // Kintamo dydžio sveikųjų skaičių masyvas 28 while (1) // Begalinis ciklas 29 ( int N; 30 cin >> N; // cin - standartinis įvesties srautas 31 if (cin.eof()) break; // Išeikite iš ciklo pagal failo pabaigą 32 A.Add(N) // Pridėkite įvestą skaičių į masyvą 33 ) 34 for (int N=A.Count()-1; N>=0; --N) // Pereiti; masyvas 35 if ( A[N]%2) 36 cout<ir atlaisvinkite atminties
  • 3-13 eilutės.Šablono klasė deklaruojama Masyvas su parametru T. Tai kintamo dydžio objektų masyvas T. Žinoma, mūsų užduotyje nereikia naudoti šablonų klasės. Tačiau norėjome parodyti, kaip C++ gali sukurti polimorfinę duomenų struktūrą, kuri gali dirbti su bet kokio tipo elementais.
  • 5 eilutė. Klasės konstruktorius. Jis inicijuoja objekto vaizdavimą. Pavyzdžiui, lauke Mįvedamas operacijos užsakyto atminties bloko adresas naujas T.
  • 8 eilutė. Operacijos perkrovos pavyzdys. Funkcija operatorius bus iškviestas, kai klasės objekto dešinėje atsiras laužtiniai skliaustai Masyvas.
  • 9 eilutė.Ši funkcija yra pagrindinė įgyvendinant. Jis prideda elementus prie masyvo, prireikus jį išplečiant. Kadangi jis yra sudėtingesnis nei kiti, jo apibrėžimas paimtas iš klasės aprašymo. Klasės korpuse aprašytos funkcijos C++ kalboje įgyvendinamos ne iškvietimu, o inline pakeitimu. Tai pagreitina programą, nors padidina jos dydį.
  • 15-24 eilutės. Funkcijos apibrėžimas Masyvas::Pridėti(T)(beje, tai jos pilnas vardas).
  • 27 eilutė. Sukurkite tipo objektą Masyvas. Šablonas Aggau parametrizuojami pagal tipą tarpt.

Kodėl C++

C++ šiuo metu laikoma dominuojančia kalba, naudojama kuriant komercinius programinės įrangos produktus. Pastaraisiais metais šis dominavimas šiek tiek svyravo dėl panašių teiginių iš programavimo kalbos, tokios kaip Java, tačiau visuomenės nuomonės švytuoklė pasisuko į kitą pusę, o daugelis programuotojų, kurie atsisakė C++, skirto Javai, pastaruoju metu puolė grįžti prie savo buvusios meilės. Bet kuriuo atveju abi kalbos yra tokios panašios, kad išmokę vieną, automatiškai įvaldote 90% kitos.

C# yra nauja kalba, kurią Microsoft sukūrė tinklo platformai. Iš esmės C# yra C++ variantas, ir nepaisant daugybės esminių skirtumų, C# ir C++ kalbos yra maždaug 90% vienodos. Tikriausiai praeis daug laiko, kol C# rimtai konkuruos su C++; bet net jei taip atsitiks, C++ kalbos žinios bus didelis privalumas.

C++ yra bendrosios paskirties programavimo kalba. Natūrali jo taikymo sritis yra sistemos programavimas, suprantamas plačiąja šio žodžio prasme. Be to, C++ buvo sėkmingai naudojamas daugelyje taikymo sričių, kurios gerokai viršija šią sritį. C++ diegimas dabar pasiekiamas visuose įrenginiuose – nuo ​​pačių kukliausių mikrokompiuterių iki didžiausių superkompiuterių ir beveik visose operacinėse sistemose.

C++ kalbos atsiradimas ir raida

Bjarne'as Stroustrupas yra C++ kalbos kūrėjas ir pirmojo vertėjo kūrėjas. Jis yra AT&T Bell Laboratories tyrimų skaičiavimo centro Murray Hill mieste (Naujasis Džersis, JAV) darbuotojas. Aarus universitete (Danija) įgijo matematikos ir informatikos magistro laipsnį, o Kembridžo universitete (Anglija) – kompiuterių mokslų daktaro laipsnį. Jo specializacija – paskirstytos sistemos, operacinės sistemos, modeliavimas ir programavimas. Kartu su M. A. Ellisu jis yra galutinio C++ kalbos vadovo „The Annotated C++ Manual“ autorius.

Žinoma, C++ daug skolinga C kalbai, kuri išlieka kaip jos poaibis. Taip pat buvo išsaugoti visi žemo lygio C įrankiai, skirti spręsti aktualiausias sistemos programavimo problemas. C, savo ruožtu, daug skolinga savo pirmtakui BCPL kalbai. BCPL kalbos komentaras buvo atkurtas C++. Kitas įkvėpimo šaltinis buvo SIMULA-67 kalba; būtent iš jos buvo pasiskolinta klasių sąvoka (kartu su išvestinėmis klasėmis ir virtualiomis funkcijomis). C++ galimybė perkrauti operatorius ir laisvė pateikti deklaracijas visur, kur tik gali atsirasti operatorius, primena ALGOL-68 kalbą.

Ankstesnės kalbos versijos, vadinamos „C su klasėmis“, buvo naudojamos nuo 1980 m. Ši kalba atsirado dėl to, kad autoriui reikėjo rašyti pertraukimu valdomas modeliavimo programas. SIMULA-67 kalba tam puikiai tinka, neskaitant efektyvumo. C kalba su klasėmis buvo naudojama didelėms modeliavimo problemoms spręsti. Tuo metu buvo griežtai tikrinamos galimybės jame rašyti programas, kurioms buvo svarbūs laiko ir atminties ištekliai. Šiai kalbai trūko operatoriaus perkrovos, nuorodų, virtualių funkcijų ir daugelio kitų funkcijų. C++ pirmą kartą buvo išleistas už autoriaus tyrimų grupės ribų 1983 m. liepos mėn., tačiau daugelis C++ funkcijų dar nebuvo sukurtos.

Pavadinimą C++ (C plius plius) sugalvojo Rickas Maschitti 1983 metų vasarą. Pavadinimas atspindi evoliucinį C kalbos pokyčių pobūdį. Žymėjimas ++ reiškia C auginimo operaciją. Šiek tiek trumpesnis pavadinimas C+ yra sintaksės klaida. Be to, jis jau buvo naudojamas kaip visiškai kitos kalbos pavadinimas. Tie, kurie išmano C semantiką, mano, kad C++ yra blogesnis nei ++C. Kalba nėra pavadinta D, nes ji yra C plėtinys ir nesistengia išspręsti jokių problemų pašalindama C ypatybes. Dar vieną įdomų pavadinimo C++ aiškinimą galima rasti priede.

C++ iš pradžių buvo sukurtas taip, kad autoriui ir jo draugams nereikėtų programuoti asamblėjos, C ar kitomis šiuolaikinėmis aukšto lygio kalbomis. Jo pagrindinis tikslas – supaprastinti ir padaryti programavimo procesą malonesnį individualiam programuotojui. Dar visai neseniai nebuvo C++ kūrimo plano popieriuje. Projektavimas, įgyvendinimas ir dokumentavimas vyko lygiagrečiai. Niekada nebuvo „C++ projekto“ ar „C++ plėtros komiteto“. Todėl kalba vystėsi ir toliau vystosi taip, kad būtų įveiktos visos vartotojų problemos. Autoriaus diskusijos apie visas problemas su draugais ir kolegomis taip pat yra postūmis tobulėti.

Nuo tada, kai buvo išleistas pirmasis šios knygos leidimas, C++ kalba buvo gerokai pakeista ir patobulinta. Tai daugiausia susiję su neaiškumų perkrovimu, įrišimu ir atminties valdymu. Tačiau buvo atlikti nedideli pakeitimai, siekiant padidinti suderinamumą su C kalba. Visų šių plėtinių ir patobulinimų buvo siekiama, kad C++ taptų kalba, kuria galima kurti ir naudoti bibliotekas. Visi pakeitimai aprašyti .

Kiti plėtiniai, pristatyti 1985–1991 m (pvz., daugybinis paveldėjimas, statinės narių funkcijos ir grynos virtualios funkcijos) atsirado apibendrinus C++ programavimo patirtį, o ne iš kitų kalbų.

Kalbos plėtiniai, atlikti per šiuos šešerius metus, visų pirma buvo skirti padidinti C++ kaip duomenų abstrakcijos ir į objektą orientuoto programavimo kalbos išraiškingumą, o ypač kaip priemonę kuriant aukštos kokybės bibliotekas su vartotojo apibrėžtais duomenų tipais.

Maždaug 1987 m. tapo akivaizdu, kad C++ standartizavimo darbai yra neišvengiami ir kad jį reikia pradėti nedelsiant.

„AT&T Bell Laboratories“ labai prisidėjo prie šio darbo. Apie šimtas atstovų iš maždaug 20 organizacijų peržiūrėjo ir pakomentavo tai, kas tapo modernia informacinio vadovo versija ir ANSI standartizacijos šaltiniu. C++. Galiausiai Hewlett-Packard iniciatyva 1989 m. gruodžio mėn. ANSI buvo suformuotas X3J16 komitetas. Tikimasi, kad ANSI (American Standard) C++ standartizacijos darbai taps ISO (Tarptautinės standartizacijos organizacijos) standartizacijos darbo dalimi.

C++ buvo sukurtas kartu su kai kurių pagrindinių klasių kūrimu.

Pasirinkite jus dominančias C pamokas:

C yra programavimo kalba, kurią 1972 m. sukūrė Dennisas M. Ritchie. Tuo metu kalbos standartas buvo parodytas knygoje, kurią Ritchie parašė kartu su Brianu Kernighanu (C programavimo kalba). Šis standartas vadinamas K&R standartu (pagal Kernighan ir Ritchie). Bet kuri programa, parašyta naudojant K&R-C taisykles, bus sėkmingai sukompiliuota bet kurio C kompiliatoriaus.

Programuotojai, kuriantys C kompiliatorius, pradėjo modernizuoti ir plėtoti kalbą. Kad būtų išvengta painiavos, Amerikos nacionalinis standartų institutas 1983 metais sukūrė ANSI kalbos standartą. ANSI-C iki šių dienų nustato C kalbos keitimo ir tobulinimo taisykles.

C yra kompiliuota programavimo kalba. Programą sudaro instrukcijos ir funkcijos, kurios turi būti išverstos į dvejetainius kodus, kad kompiuterio aparatinė įranga galėtų jas vykdyti.
C šiuo metu yra gana populiarus, tai yra dėl jo geidžiamų savybių, tokių kaip greitis, nešiojamumas ir struktūra.

  • Greitis

Tarp visų aukšto lygio kalbų C yra programavimo kalba, artimesnė asamblėjos kalbai. Taigi, daugelis kalbų instrukcijų yra skirtos tiesiogiai kompiuterio aparatūrai, todėl programa veikia labai greitai. Dėl šios priežasties C gali būti naudojamas operacinėms sistemoms ir kompiliatoriams rašyti.

Dauguma sukurtų C kompiliatorių generuoja labai optimizuotus kodus, t.y. kitaip tariant, mažo dydžio (kuo mažesnį kodą generuoja kompiliatorius, tuo jis labiau optimizuotas).

  • Perkeliamumas

Iš esmės prasminga būtų rašyti greitai veikiančias programas asamblėjos kalba. Bet mes turėtume juos parašyti kiekvienai platformai, nes mnemoniniai surinkimo kodai yra pritaikyti mikroprocesorių šeimoms.

C naudoja standartinius raktinių žodžių rinkinius. Tie. programa parašyta vieną kartą bet kuriai platformai, bet kuriam kompiuteriui su bet kokia operacine sistema. Tačiau yra dviejų tipų kalbos kompiliatoriai: vienas skirtas IBM, kitas – Apple. Tačiau pats programos tekstas yra sukurtas kartą ir visiems laikams.

  • Struktūrizavimas

C kalba parašytos programos turi savo struktūrą ir taisykles, kurios skatina programuotoją mąstyti logiškai.
Būtinybė struktūrizuoti programą yra tik „pliusas“, nes būtent dėl ​​to C programą labai lengva kurti, prižiūrėti ir derinti.

  • Funkcijų bibliotekos

C yra programavimo kalba, kurios sintaksėje iš pradžių yra nedaug operacijų. Pavyzdžiui, kalboje nėra įmontuotų operatorių informacijos įvedimui ir išvedimui, taip pat operatorių darbui su eilutėmis.

Visos C galimybės teikiamos per funkcijų bibliotekas, kai kurios iš jų pateikiamos kartu su kompiliatoriumi. Biblioteka yra atskiras failas, pridedamas prie kompiliatoriaus ir kuriame yra specifinių problemų sprendimo funkcijų.



Ar jums patiko straipsnis? Pasidalinkite su draugais!