Merkmale der C-Programmierung, die es einzigartig machen (und besser)

Merkmale der C-Programmierung, die es einzigartig machen (und besser) / Programmierung

Die Programmiersprache C ist die Mutter aller modernen Programmiersprachen. 10 Programmiersprachen, die Sie wahrscheinlich noch nie gehört haben. 10 Programmiersprachen, die Sie wahrscheinlich noch nie gehört haben. Es gibt einige sehr seltsame und bizarre Programmiersprachen, die die Logik auf den Kopf gestellt haben und trotzdem erhalten bleiben Getreu der Wissenschaft der Kommunikation mit einem Computer. Sie werden… Lesen Sie mehr. Fast jede heutige Sprache enthält mehrere Funktionen, die zuerst in der C-Sprache erschienen. Es wurde umfangreich verwendet, um Software für die kleinsten eingebetteten Mikrocomputer für die größten Mainframes und Supercomputer zu schreiben.

In C geschriebene Anwendungen reichen von Systemsoftware, Desktopsoftware, Unternehmenssoftware, Datenbanken usw. aus. Sie starten sehr gut, um eine Programmierkarriere zu starten. 10 Computerprogrammierjobs, die jetzt gefragt sind 10 Computerprogrammierjobs, die im Einsatz sind Jetzt nachfragen Da die Landung eines Programmierjobs in der derzeitigen Landschaft schwierig sein kann, sollten Sie sich auf eine der folgenden Konzentrationen konzentrieren, um Ihre Erfolgschancen zu verbessern. Lesen Sie mehr mit Kenntnissen über die Grundlagen von C.

Eine kurze Geschichte von C

Die Entwicklung der C-Sprache ist sehr eng mit Unix verbunden. Es wurde um 1972 entwickelt, in späteren Jahren wurden weitere Ergänzungen vorgenommen.

Bevor C entwickelt wurde, wurde das Unix-Betriebssystem für den PDP-7-Computer mit seiner Assembler-Sprache entwickelt. Später wurde auf dieser Plattform ein Compiler für C erstellt, der wiederum Assemblersprache verwendet. Zu dieser Zeit sollte C die Entwicklung von Unix selbst erleichtern. Mit diesem Compiler wurde Unix für den PDP-11-Computer in C komplett neu geschrieben. Und wieder wurde der Compiler in C-Sprache in C umgeschrieben (natürlich unterstützt von den exzellenten) lex und yacc Tools), um den C / Unix-Bootstrapping-Prozess abzuschließen.

Der Hauptgrund, warum Unix in C umgeschrieben wurde, war die Portabilität. Seit Assemblersprachen für verschiedene CPU-Architekturen Ein kurzer Leitfaden für den fantastischen AMD-Threadripper-Prozessor Ein kurzer Leitfaden für den fantastischen AMD-Threadripper-Prozessor AMD befand sich mehrere Jahre in der CPU-Wildnis, ist jedoch mit einem riesigen Knall wieder da. Der AMD Threadripper ist eine der leistungsstärksten Consumer-CPUs auf dem Markt, aber ist er für Sie richtig? Lesen Sie mehr sind anders, die Portierung des Unix-Betriebssystems auf jedes Betriebssystem wäre ein erheblicher Aufwand gewesen. Durch die Entwicklung eines Systemsprache B. C und das Unix-Betriebssystem in C umgeschrieben, wurde dieser Aufwand um mehrere Größenordnungen reduziert.

Nach der Entwicklung der Sprache wurde erkannt, dass mit ihr weitaus mehr als nur Systemsoftware geschrieben werden kann. Und so begann C mit dem Schreiben von Software wie Dateiservern, Datenbankservern, Netzwerkstacks, Desktopsoftware (und später) Webservern. So verwandeln Sie ein Android-Gerät in einen Webserver. So verwandeln Sie ein Android-Gerät in ein Web Server Hosten Sie Ihren eigenen Webserver einfach und kostengünstig mit einem Android-Smartphone oder -Tablet. Lesen Sie mehr usw.

1978 veröffentlichten Brian Kernighan und Dennis Ritchie das Buch Die Programmiersprache C. Dieses Buch diente als informell C-Sprachspezifikation viele Jahre bis 1989, als C von ANSI formal standardisiert wurde. Die neueste Version von C ist C11, veröffentlicht im Jahr 2011.

Lassen Sie uns nun einige Merkmale von C betrachten, die es einzigartig machen.

C vs C ++: Sind sie verwandt??

Als komplexere Software in C entwickelt wurde, wurde erkannt, dass objektorientierte Konzepte wie Einkapselung, Polymorphismus usw. die Komplexität beherrschen. Dies führte zur Entwicklung von C ++ als Obermenge von C.

C ++ wurde durch Hinzufügen bestimmter Funktionen zum Schreiben objektorientierter Software unter Beibehaltung der Kompatibilität mit C erstellt. Es wurde mit der Idee von entwickelt Progressive Enhancement - kompatible Änderungen an der C-Sprache vornehmen, sodass C- und C ++ - Module in demselben Programm kombiniert und mit demselben Compiler kompiliert werden können. Dies ermöglichte die Wiederverwendung älterer C-basierter Module mit minimalen Änderungen in einem größeren Programm, das mit objektorientierten Konzepten geschrieben wurde.

Ein C-Programm kann theoretisch ohne Änderungen von einem C ++ - Compiler kompiliert werden. In der Praxis führt eine strengere Typüberprüfung, die von C ++ erzwungen wird, zu Fehlern, die einige Änderungen am Code erfordern.

Kleine Anzahl von Schlüsselwörtern

Die C-Sprache war trotz ihrer Macht eine kleine Sprache. Dies liegt daran, dass nur 32 Wörter als Schlüsselwörter mit einer bestimmten Bedeutung deklariert werden. Im Gegensatz dazu erklärt C ++ 82 Schlüsselwörter, Java hat 50 reservierte Schlüsselwörter und Javascript 63. Und COBOL erklärt satte 357 Schlüsselwörter. Stellen Sie sich die Kopfschmerzen vor, sich an so viele Schlüsselwörter zu erinnern und diese zu umgehen!

Kein expliziter Zeichenfolgentyp

Im Gegensatz zu den meisten anderen modernen Sprachen Um eine Android-App zu erstellen, müssen Sie diese 7 Programmiersprachen lernen. Um eine Android-App zu erstellen, müssen Sie diese 7 Programmiersprachen erlernen. Welche Programmiersprache eignet sich zum Erstellen von Android-Apps? Es hängt von Ihrer Programmierhistorie ab und mit welchen Sprachen Sie sich am wohlsten fühlen. Zum Glück haben Sie Optionen. Lesen Sie mehr wie Java, C ++ und JavaScript. C bietet keinen separaten Typ für Zeichenfolgen. Eine Zeichenfolge wird als ein Array von Zeichen betrachtet, das durch a abgeschlossen wird 0 Zeichen (bezeichnet “\ 0”). Die Länge der Zeichenfolge wird durch eine Konvention angegeben: Die Anzahl der Zeichen bis 0 Zeichen. Sie können es ignorieren und zählen und speichern “\ 0”. Dieses Fehlen eines richtigen String-Typs und der Konvention hat im Laufe der Jahre zu unzähligen Fehlern geführt, die als bekannt sind Pufferüberlauf.

Tatsächlich war der erste Wurm, der jemals ins Internet gegangen war, der Morris Internet Worm, das Ergebnis eines solchen Fehlers in einer wichtigen Systemsoftware, die als Finger-Daemon.

Hier ist ein Beispiel für einen solchen Fehler. Es zeigt, wie einfach es ist, solche Fehler in ein Programm einzuführen. Das Programm kann problemlos kompiliert werden, stürzt jedoch aufgrund des Pufferüberlaufs ab.

# enthalten  main () char * buf = "Hallo Welt"; buf [12] = 'a'; printf ("% s \ n", buf);  

Im Gegensatz dazu bieten die meisten modernen Sprachen einen expliziten Zeichenfolgentyp, der solche Phänomene unmöglich macht. Sogar C ++, das den obigen Code gut kompiliert, liefert eine explizite std :: string Art.

Zeiger-Manipulation

Ein Zeiger ist eine Referenz auf einen Speicherplatz. C ist völlig flexibel, wenn es darum geht, beliebige Speicherplätze zu lesen und zu schreiben. Diese Flexibilität ist mit hohen Kosten verbunden und hat zu vielen Fehlern im gesamten Softwarespektrum geführt. Das bemerkenswerteste und das gesamte Internet betreffende Problem umfasst Fehler in Webservern, Mailservern und FTP-Servern. Bis heute gibt es gelegentlich Nachrichten über Fehler, die durch Referenzieren und Aktualisieren ungültiger Speicherplätze verursacht wurden.

Das berüchtigte SSL HeartBleed Der im Jahr 2014 entdeckte Sicherheitsfehler war das Ergebnis einer fehlerhaften Verwaltung der Zeigerpositionen und verdeutlicht die entscheidende Bedeutung einer ordnungsgemäßen Zeigerverwaltung in C.

Sogar gelegentlich BSOD (“Bluescreen des Todes”) Fehler, die auf Windows-Systemen auftreten, werden wahrscheinlich auch durch falsche Zeigerbehandlung verursacht.

Andere Sprachen als C ++ erlauben keine Zeigermanipulation und sind daher nicht anfällig für diese Klasse von Fehlern.

Arrays und Zeiger sind austauschbar

In C-Feldern sind Verweise und Zeiger austauschbar. Die Sprache erlaubt die Verwendung einer Arrayreferenz. Verwendung einer Java-ArrayList. Verwendung einer Java-ArrayList. Eine Java-Arrayliste ist ein allgemein anpassbares Array. Es bietet die meisten Einrichtungen, die normalerweise von Arrays in anderen Sprachen erwartet werden. In diesem Artikel erfahren Sie, wie Sie eine Arrayliste einrichten und verwenden. Lesen Sie mehr, wo ein Zeiger benötigt wird und umgekehrt. Dies ermöglicht zwar eine mächtige Manipulation, hat aber auch zu vielen berüchtigten Fehlern geführt.

Breite Verwendung von “definieren” Makros

Makros werden verwendet, um eine andere Erweiterung durch einen Namen zu ersetzen. Sie können verwendet werden, um die Definition eines Namens zur Kompilierzeit zu ändern oder um einen einfachen Namen durch eine längere Erweiterung zu ersetzen. Das C-Makrosystem unterstützt ifdef Bedingungen, die eine bedingte Kompilierung erlauben. Dies ist eine Möglichkeit, mit der Software auf verschiedene Architekturen und Betriebssysteme portiert wird. Generische Namen werden zur Kompilierzeit mit unterschiedlichen Erweiterungen für unterschiedliche Bedingungen definiert und ersetzt.

Es ist auch möglich, vollständige Codeabschnitte mit diesen Makros zusammenzustellen oder zu entfernen. Have A Razer Keyboard? Aufnehmen von Makros ist mit Synapse ganz einfach eine Razer-Tastatur? Das Aufnehmen von Makros ist mit Synapse einfach Wenn Sie Razer-Peripheriegeräte verwenden, aber die Synapse-Software nicht nutzen, verpassen Sie es nicht. Hier erfahren Sie, wie Sie Makros effektiv einsetzen und wie Sie Ihr Spiel aufladen können. Weiterlesen .

Sie sind veraltet, aber in C ++ verfügbar. Andere Sprachen wie Java, JavaScript, Python usw. bieten keine ähnliche Funktion.

In Dateien gekapselte Module

C hat nicht das Konzept einer Klasse und unterstützt daher nicht die Vorstellung einer separaten öffentlichen, privaten und geschützten Sichtbarkeit. Die einzige von C bereitgestellte Kapselung ist die von Dateien. Innerhalb einer Quelldatei definierte Funktionen, globale Variablen und Typen sind nur dann in dieser Datei sichtbar, wenn die Namen nicht exportiert werden. Die Schlüsselwörter statisch und extern werden bereitgestellt, um die Sichtbarkeit von Variablen- und Funktionsnamen zu steuern.

Im Gegensatz dazu unterstützen andere Sprachen wie C ++, Java und Python im Allgemeinen Klassen und die für Klassen erforderliche Kapselung.

Externe Bibliotheken

Anders als grundlegende Sprachkonstrukte werden komplexere Funktionen in C an externe Bibliotheken delegiert. String-Manipulation, Mathematik, Eingabe-Ausgabe, Vernetzung usw. werden alle von externen Bibliotheken bereitgestellt. Im Gegensatz dazu enthalten andere Sprachen normalerweise eine gut gefüllte Bibliothek mit Modulen, die die Sprache selbst enthalten.

Und das deckt einige grundlegende Merkmale der C-Sprache ab, insbesondere diejenigen, die sie von anderen Sprachen unterscheiden.

Hast du mit C gearbeitet? Hat es Ihnen gefallen oder hätten Sie lieber mit einer anderen Sprache gearbeitet? Bitte erkläre es in den Kommentaren unten.

Erfahren Sie mehr über: Programmierung.