Foto: Liam Briese über Unsplash Es gibt
immer mehr Programmiersprachen. Mittlerweile gibt es etwa 700 davon. Meistens verwenden Entwickler jedoch 20 davon. Hier, wie in vielen anderen Bereichen, gibt es Bewertungen, Trends und sogar Mode.
Nennen wir nur einige beliebte Sprachen. Für die Unternehmensentwicklung wird Java aktiv verwendet (bald wird dort auch Kotlin repariert), C #, für die Webentwicklung - JavaScript, Go, Python und PHP, für die mobile Entwicklung - Swift, Java / Kotlin, nun, ich wage es, JavaScript aufzurufen (weil vielleicht, weil React Native). Spieleentwickler verwenden häufig C # und C ++. Alle von ihnen sind aus mehreren Gründen gefragt:
- vereinfachte Syntax (größtenteils) und klare Semantik - vor dem Hintergrund der C-Sprache;
- voll funktionsfähiger Satz von Standard-APIs;
- aktive Unterstützung der Gemeinschaft;
- ein wachsendes Ökosystem von Frameworks und Bibliotheken.
Die Sprache C wird bei der Entwicklung von Software- und Hardwarelösungen verwendet. In C können Sie auch teilweise die Funktionalität von Softwareprodukten implementieren, die hohe Anforderungen an die Leistung stellen. Obwohl nicht jeder Programmierer solche Projekte will und kann. Aber zurück zur Lernphase.
In der Regel beginnen zukünftige Entwickler mit dem Codieren in Schul-, Universitäts- oder Karrierewechselkursen. Die letztere Option gewinnt übrigens jetzt an Popularität.
Früher oder später fragen sie sich: Welche Programmiersprache ist besser, um zuerst zu lernen? In Schule und Universität kann diese Frage für Sie beantwortet werden: Meistens beginnt das Lernen dort mit der C / C ++ - Sprache (einfach so durch "/"). Bei alternativen Trainingsorten ist es jedoch unwahrscheinlich, dass jemand Ihnen vorschlägt, nur C zu studieren, um Ihren Horizont zu erweitern oder Ihr Gehirn zu pumpen. Jeder möchte schnell in die IT einsteigen. Wie Sie sehen, müssen Sie hier und da Willen und Unabhängigkeit zeigen, wenn Sie sich entscheiden, aus der C-Sprache zu lernen.
In diesem Artikel werden wir über die Phase der Ausbildung und Ausbildung eines zukünftigen Spezialisten sprechen. Lassen Sie mich deshalb jetzt meine Argumente darlegen, und dann können Sie Ihre angeben.
C zwingt Sie, tief in die Lösung des Problems einzusteigen
In moderneren Sprachen werden für alle gängigen Anlässe mehrere integrierte Abstraktionen (oder Abstraktionen aus Standardbibliotheken) gleichzeitig angeboten. Dies gilt hauptsächlich für algorithmische Standardprobleme. Wenn Sie beispielsweise bestimmte Elemente vom ersten Array in das zweite kopieren müssen, können Sie die integrierte filter () -Methode in JavaScript verwenden. Wenn Sie in Java schreiben, steht Ihnen die filter () -Methode aus dem Paket java.util.stream zur Verfügung.
JavaScript: Array.filter ()
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
// 6,
const result = words.filter(word => word.length > 6);
console.log(result);
// : Array ["exuberant", "destruction", "present"]
Java: stream (). Filter ()
List<String> lines = Arrays.asList("spray", "limit", "elite");
// List Stream
List<String> result = lines.stream()
// elite
.filter(line -> !"elite".equals(line))
// List
.collect(Collectors.toList());
// : spray, limit
result.forEach(System.out::println);
In der Sprache C können Sie insbesondere für Bildungszwecke die folgende Implementierung anbieten (um das Beispiel nicht zu komplizieren, habe ich die Zeichenfolgen in Zahlen geändert und die Bedingung "Filtern" geändert):
#include <stdio.h>
#define SIZE 5
void copy_aka_filter_arr(double trg[], double src[], int n);
int main(void){
int i;
double source[SIZE] = {1.1, 2.2, 3.3, 4.4, 5.5};
double target[SIZE];
printf("Source: ");
for (i = 0; i < SIZE; i++){
printf("%5.1f ", source[i]);
}
putchar('\n');
copy_arr(target, source, SIZE);
return 0;
}
void copy_aka_filter_arr(double trg[], double src[], int n){
// i- , 3.3.
// i- 0.0
int i;
for (i = 0; i < n; i++){
if (trg[i]) > 3.3){
trg[i] = src[i];
}
else{
trg[i] = 0.0;
}
}
printf("Target: ");
for (i = 0; i < SIZE; i++){
printf("%5.1f ", trg[i]);
}
putchar('\n');
}
Wenn Sie versuchen, solche Funktionen von Hand zu implementieren, werden Sie auf grundlegende Prinzipien und Nuancen stoßen, die tief verstanden werden müssen. Insbesondere die unabhängige Implementierung von Algorithmen zur Verarbeitung von Datenstrukturen in der Sprache C ist eine hervorragende Möglichkeit, um das Lösen von Problemen zu erlernen und nicht nach vorgefertigten Lösungen zu suchen.
Unabhängig davon, in welcher coolen und fortgeschrittenen Sprache Sie schreiben, treten von Zeit zu Zeit komplexe Probleme auf, die mit Standardbibliotheken und integrierten Abstraktionen nicht gelöst werden können. In diesen Fällen ist eine solche Fähigkeit einfach notwendig.
Übrigens trainieren Entwickler, die an wettbewerbsorientierten Hackathons teilnehmen, diese Fähigkeit häufig und lösen nicht standardmäßige Probleme nur in C.
Mit C können Sie die "Low-Level" -Programmierung berühren
Es ist praktisch, in modernen Hochsprachen (Python, C #, Java oder was auch immer Sie möchten) zu schreiben. Diese Sprachen sind jedoch in ihrer Interaktion mit der Hardware sehr eingeschränkt. Mit anderen Worten, Sie erhalten erst dann die volle Hardwareerfahrung, wenn Sie mit dem Programmieren in C beginnen. Moderne Programmiersprachen verbergen hardwareabhängige Implementierungsdetails und emulieren stattdessen eine Art Abstraktion. In den meisten Fällen wird es mit einer virtuellen Maschine erstellt.
Leider haben Anfänger absolut keine Ahnung von Speicherverwaltung, Dateiverwaltung und Codeoptimierung, da sie in C noch nie Beispiele für "Low-Level" -Programmierung gesehen haben. Unter diesem Gesichtspunkt automatisieren und verbergen moderne Programmiersprachen zu viel . Die C-Sprache zwingt Sie dazu, viel mit Ihren Händen zu tun und hochoptimierten Code zu schreiben.
Für mich ist dies ein Muss für jeden professionellen Entwickler. Na ja, zumindest ein Backender.
C lehrt Freiheit und Verantwortung
Wenn eine Programmiersprache eine Reihe von menschenfreundlichen Abstraktionen bietet, wird sie weniger flexibel. Jede integrierte Methode oder Bibliotheksmethode verhält sich wie eine fest codierte Black Box. Mit anderen Worten, moderne Programmiersprachen verbergen Implementierungsdetails und weisen den Entwickler an, einfach auf eine Reihe von Schnittstellen zu verweisen. Eine manuelle Steuerung der Zuordnung des dynamischen Speichers in modernen Programmiersprachen ist in den meisten Fällen nicht möglich. In der Zwischenzeit gibt Ihnen C echte Freiheit, sodass Sie auswählen können, wie Sie es auf einer niedrigeren Ebene implementieren möchten.
C-Compiler erzeugen bei richtiger Optimierung einen unglaublich schnellen Assembler-Code. Zwar müssen Sie nicht nur die erforderlichen Optimierungsflags für die Kompilierung setzen, sondern auch selbst Hochleistungsquellcode schreiben. In C müssen wir Variablen sorgfältig deklarieren, Speicher rechtzeitig zuweisen und bereinigen, auf Ressourcen zugreifen und daran denken, sie freizugeben. Wenn C Ihre Muttersprache war, werden Sie sich daran gewöhnen, Speicher und Ressourcen rational zu nutzen, und Sie werden sich daran gewöhnen, optimale Datenstrukturen auszuwählen. Diese Angewohnheit wird fortgesetzt, wenn Sie anfangen, in anderen Sprachen zu schreiben.
C motiviert Sie, sauberen Code zu schreiben
Im Gegensatz zu modernen Programmiersprachen müssen Sie um ein Vielfaches mehr Code schreiben, um dieselben Aufgaben in C zu implementieren. Dies liegt an der Tatsache, dass in C vieles auf einer niedrigeren Ebene implementiert werden muss, anstatt integrierte Wrapper und Abstraktionen aus Standardbibliotheken zu verwenden, die Implementierungsdetails verbergen. Wenn die Anzahl der Zeilen im Code zunimmt, nimmt auch die Komplexität des Codes zu. Um diesen Effekt zu kompensieren und die Ordnung im Projekt aufrechtzuerhalten, müssen Sie versuchen, sauberen und verständlichen Code zu schreiben.
Das Schreiben von sauberem Code ist eine Fähigkeit, die besonders bei der Arbeit an großen kommerziellen Projekten gefragt ist. Wenn Sie lernen können, sauberen C-Code zu schreiben, ist es für Sie einfacher, dies in einer anderen, einfacheren Sprache zu tun.
Noch nicht überzeugt?
Mit der aktiven Entwicklung von C ++ wurde die C-Sprache von vielen nicht mehr als eigenständige Sprache wahrgenommen. Es scheint eine Teilmenge der C ++ - Sprache geworden zu sein. Es ist klar, dass dies tatsächlich nicht der Fall ist. C ++ ist eine wirklich moderne Programmiersprache mit allen Standardbibliotheken. Meiner Meinung nach sollte C ++ nicht die erste Sprache sein, die man lernt. Es stimmt, es gibt eine Einschränkung: Wenn Sie sich in Zukunft darauf spezialisieren möchten, fahren Sie fort. In diesem Fall können diese beiden Sprachen parallel unterrichtet werden, aber irgendwann "kreuzen" sie sich - und der Übergang von C zu C ++ erfolgt organisch und fast augenblicklich.
Fast alle modernen Programmiersprachen konkurrieren miteinander, führen neue Syntax, Semantik ein und erweitern Standardbibliotheken und Frameworks. Wie sie sagen, ist alles für Menschen. Das ist faszinierend. Wenn zukünftige Entwickler diese Sprachen jedoch von Grund auf lernen, werden sie die wertvollen Möglichkeiten von C verpassen. Irgendwann können sie einfach keinen neuen Schritt in ihrer Entwicklung mehr machen, ohne zu wissen, wie der Code auf einer niedrigeren Ebene funktioniert , nicht einmal zu wissen, wie ihre bevorzugten Frameworks und Bibliotheken im Inneren implementiert sind.
Wählen Sie also C als Ihre erste Programmiersprache. Das Lernen wird länger dauern, aber es wird Ihnen helfen, in Zukunft sehr schnell ein Experte für modernere Sprachen zu werden.
Cloud-Server von Macleod eignen sich hervorragend für die Entwicklung in C und anderen Programmiersprachen.
Registrieren Sie sich über den obigen Link oder indem Sie auf das Banner klicken und erhalten Sie 10% Rabatt für den ersten Monat der Anmietung eines Servers einer beliebigen Konfiguration!