• IT-Karriere:
  • Services:

Warum nicht einfach C?

Die Programmiersprache C ist gerade in den Bereichen, in denen Sicherheit am wichtigsten ist, also in der eingebetteten Programmierung sowie Kryptographie, immer noch extrem beliebt. Dabei ist die Sprache dafür gar nicht wirklich gut geeignet. Es gibt einfach zu viele Fehlerquellen.

Stellenmarkt
  1. dtms GmbH, Mainz
  2. WINGAS GmbH, Kassel

Die Liste ist lang, hier nur einige Beispiele: Textuelle Inklusion mit #include sowie allgemein der textbasierte Preprozessor machen es schwer, Definitionen zu finden, zu sehen, welcher Code aktiv ist, und manchmal auch, was Code eigentlich bedeutet (insbesondere Makros, die anstelle von Funktionen verwendet werden).

Syntaktische Eigenheiten wie die Zuweisung mit, if-Statements, switch-Statements sowie Schleifen, bei denen mit optionalem Ende-Marker nicht klar ist, wo sie aufhören, machen den Code weniger lesbar und Fehler damit schlechter auffindbar. Gleiches gilt für Abkürzungen wie "i++", deren einziger Vorteil es ist, dass sie einfach zu schreiben sind.

Viele C-Programmierer haben diese Schwächen erkannt, möchten oder können aber nicht die Sprache wechseln. So hat zum Beispiel der Linux-Kernel-Entwickler Kees Cook in einem Vortrag mit dem Titel Making C Less Dangerous Vorschläge gemacht, wie manche der Probleme umgangen werden können. Im eingebetteten Bereich ist der Standard MISRA-C beliebt, der die gefährlichsten C-Konstrukte verbietet.

Golem Akademie
  1. Advanced Python - Fortgeschrittene Programmierthemen
    3./4. Mai 2021, online
  2. Masterclass: Data Science mit Pandas & Python
    9./10. September 2021, online
Weitere IT-Trainings

Die meisten und die am weitesten verbreiteten CWE-Einträge - Ausnahmen sind Bugs, die speziell in Webtechnologien relevant sind, wie Cross-site Scripting - sind in C nicht nur möglich, sondern fast an der Tagesordnung. Ist die Vermeidung von Sicherheitslücken wie CWE ein Ziel, dann ist die Benutzung von C kontraproduktiv.

Ada und C im Vergleich

Ada versucht, eine möglichst klare, lesbare und von Stolpersteinen freie Syntax anzubieten - und vermeidet dabei die größten Probleme der C-Syntax. Die Tabelle gibt einen Überblick, wie die typischen Stolpersteine in C in Ada vermieden werden.

  • Vergleich C und Ada (Tabelle: Johannes Kanig)
Vergleich C und Ada (Tabelle: Johannes Kanig)

Die Vorteile von Ada gehen jedoch über solche syntaktischen Verbesserungen hinaus. Das Typsystem von Ada ist deutlich besser und strenger, es kann viele Fehler sehr zeitig entdecken. Arrays sind Teil des Typsystems und enthalten ihre Länge, so dass Verwirrung über den belegten Speicherbereich viel seltener ist.

Ein weiteres Feature von Ada sind Laufzeitüberprüfungen. Wenn in C eine Integer-Variable mit Vorzeichen ihren Wertebereich überschreitet, geht die Ausführung in der Regel einfach mit einem falschen Wert weiter. In Ada wird der Überlauf zur Laufzeit entdeckt und eine Exception ausgelöst.

Programming in Ada 2012

Das Gleiche gilt für die Division durch null, Zugriffe auf Arrays außerhalb der Indexgrenzen, sogenannte Pufferüberläufe und mehr. Für Informationssicherheit sowie Testläufe ist das sehr wertvoll. Denn in der Regel ist es besser, dass die Software abstürzt, als dass ein Angreifer eindringen kann, denn Pufferüberläufe sind oft auch Sicherheitslücken.

In eingebetteten Systemen, wo in der Regel kein Absturz erwünscht ist, können diese Überprüfungen für Produktionscode auch ausgeschaltet werden.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Programmiersprachen: Ada und Spark sind sicherer als C... und was ist jetzt Spark? 
  1.  
  2. 1
  3. 2
  4. 3
  5.  


Anzeige
Spiele-Angebote
  1. 5,99€
  2. 4,19€
  3. 35,99€
  4. 2,99€

amagol 03. Sep 2020

Eine C/C++ library kann man in den meisten Faellen auch von anderen Sprachen aus...

TheNX 02. Sep 2020

Ich habe mich mal für Ada im kommerziellen Bereich interessiert. Kurzum, die Situation...

igor37 02. Sep 2020

Jede gefundene Lücke basierend auf ungültigen Pointerzugriffen, data races...

captain_spaulding 02. Sep 2020

Dann eben neu. Von Pascal hab ich schon lang nichts mehr gelesen und hab es im Job oder...

captain_spaulding 02. Sep 2020

Ist aus Safety/Security-Sicht quatsch. Es kommt auf die Fehlerhäufigkeit an. Fehler in...


Folgen Sie uns
       


Gopro Hero 9 Black - Test

Ist eine Kamera mit zwei Displays auch doppelt so gut?

Gopro Hero 9 Black - Test Video aufrufen
Programm für IT-Jobeinstieg: Hoffen auf den Klebeeffekt
Programm für IT-Jobeinstieg
Hoffen auf den Klebeeffekt

Aktuell ist der Jobeinstieg für junge Ingenieure und Informatiker schwer. Um ihnen zu helfen, hat das Land Baden-Württemberg eine interessante Idee: Es macht sich selbst zur Zeitarbeitsfirma.
Ein Bericht von Peter Ilg

  1. Arbeitszeit Das Sechs-Stunden-Experiment bei Sipgate
  2. Neuorientierung im IT-Job Endlich mal machen!
  3. IT-Unternehmen Die richtige Software für ein Projekt finden

Weclapp-CTO Ertan Özdil: Wir dürfen nicht in Schönheit und Perfektion untergehen!
Weclapp-CTO Ertan Özdil
"Wir dürfen nicht in Schönheit und Perfektion untergehen!"

Der CTO von Weclapp träumt von smarter Software, die menschliches Eingreifen in der nächsten ERP-Generation reduziert. Deutschen Perfektionismus hält Ertan Özdil aber für gefährlich.
Ein Interview von Maja Hoock


    Fiat 500 als E-Auto im Test: Kleinstwagen mit großem Potenzial
    Fiat 500 als E-Auto im Test
    Kleinstwagen mit großem Potenzial

    Fiat hat einen neuen 500er entwickelt. Der Kleine fährt elektrisch - und zwar richtig gut.
    Ein Test von Peter Ilg

    1. Vierradlenkung Elektrischer GMC Hummer SUV fährt im Krabbengang seitwärts
    2. MG Cyberster MG B Roadster mit Lasergürtel und Union Jack
    3. Elektroauto E-Auto-Prämie übersteigt in 2021 schon Vorjahressumme

      •  /