Myter

Myter

Da jeg begyndte at arbejde i det indlejrede miljø, var jeg overrasket over, at der var så mange fordomme mod brugen af ​​C++ i den indlejrede programmering. De fleste er baseret på en forkert forståelse af programmeringssproget C++.

Myterne

Først skal jeg sige et par ord om de myter omkring C++, jeg ofte har hørt. Dette indlæg afspejler selvfølgelig min opfattelse. Eksempler?

  • Skabeloner puster koden op.
  • Objekter skal leve på dyngen
  • Undtagelser er dyre.
  • C++ er for langsom og kræver for meget hukommelse.
  • C++ er for farligt i sikkerhedskritiske systemer.
  • Du skal programmere objektorienteret i C++.
  • C++ kan kun bruges til applikationer.
  • IOstream-biblioteket er for stort; standardskabelonbiblioteket for at bremse.

Eller for at sige det i én erklæring.

=> C++ er et dejligt legetøj, men vi står over for alvorlige udfordringer.

Listen over (for)domme er lang og består delvist af halve sandheds- og usandhedsudsagn, der ofte fremføres af erfaren C-programmør. Jeg vil kun henvise til usandhedserklæringerne. De halve sandhedsudsagn er i høj grad spørgsmål på grund af den rigtige brug af C++ og i ringe grad spørgsmål om implementeringen af ​​kernen og bibliotekerne i C++.

  • Objekter skal leve på dyngen.
    • Objekter kan oprettes på stakken eller på en vilkårlig position ved hjælp af ny placering.
  • C++ er for farligt i sikkerhedskritiske systemer.
    • Det afhænger selvfølgelig af udviklerens erfaring. Men den der bruger C-strenge i stedet for C++-strenge; bruger C-arrays i stedet for C++-arrays; bruger makroer i stedet for konstante udtryk eller skabeloner, kan ikke argumentere for, at C++ ikke er velegnet til sikkerhedskritiske systemer. Helt ærligt, det modsatte gælder. C++ har meget at byde på i sikkerhedskritiske systemer.
  • Du skal programmere objektorienteret i C++.
    • C++ er et sprog med flere paradigmer. Derfor kan du løse dit problem i en objektorienteret, struktureret, funktionel, generisk eller generativ stil.
  • C++ kan kun bruges til applikationer.
    • C++ bruges for eksempel til en ildslukker, hjertestartere og biler. ARM opretholder med ARM GCC den nuværende GCC-samling sammen med gnu-værktøjskæden. Derfor er den nuværende g++ compiler tilgængelig. De pakker, der er meget hyppigt brugt, vedligeholdes af ARM for deres processorer, der er standardarkitekturen for den indlejrede verden.

Hvad er grunden til den halve sandhed? Jeg tror, ​​der er flere grunde.

  • Gamle C++ compilere
    • Viden er baseret på gamle C++ compilere fra det sidste årtusinde. De implementerer C++98-standarden, men de har et stort potentiale for optimering.
  • Uddannelsesunderskud
    • På den ene side lærte mange indlejrede programmører kun C, på den anden side er der ikke tid til at eksperimentere med nye teknologier.
  • Tab af ekspertstatus
    • Du skal være modig for at forlade dit område som C-ekspert og fortsætte næste dag som C++-novice.
  • Ældre kodebase i C
    • Den eksisterende kodebase er i C, derfor er den indlysende beslutning om at rette en fejl eller implementere en funktion i første omgang i C.
  • Mange C-eksperter
    • Der er mange C-eksperter. De træner nybegyndere og bliver ledere.
  • Monokulturens forbandelse
    • Jeg opfatter den indlejrede verden ofte som en monokultur. Jeg arbejdede 15 år som konsulent inden for bilområdet og brugte omkring 10 sprog. Tværtimod brugte jeg kun 3 sprog i det indlejrede område.
  • Presset fra standarden
    • Der er mange standarder, som du skal opfylde. Modet til at bruge nye teknologier ser ud til at være omvendt proportional med presset fra standarderne.
  • Utilstrækkelig viden om C++
    • Mange udviklere har ikke tilstrækkelig viden om klassisk C++ og intet kendskab til moderne C++.

Måske vil jeg polarisere med dette indlæg. Men hvis det er med til at gøre de fantastiske funktioner i moderne C++ bedre kendt i den indlejrede verden, så vil jeg gerne gøre det frivilligt. I næste indlæg sammenligner jeg myterne med fakta. Jeg vil især skrive om den tekniske rapport om C++-ydelse.