Meine Schule beginnt das Informatik-Curriculum mit C ++ - Programmierkursen, was bedeutet, dass dies die erste Sprache ist, die viele Schüler lernen.
Ich habe gesehen, dass viele Leute C ++ nicht mögen, und ich habe eine Reihe von Gründen dafür gelesen. Es scheint fast populär zu sein, dass C ++ keine sehr gute Sprache ist. Ich habe den Eindruck, dass es aufgrund einiger Fragen zu StackExchange nicht sehr beliebt ist, sowie aufgrund von Beiträgen wie:
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ node / 2298
http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/
usw.
(Hinweis: Ich bin nicht der Meinung, dass C ++ eine schlechte Sprache ist. Tatsächlich ist es die Hauptsprache, die ich verwende. Das Internet und einige Professoren haben mir jedoch den Eindruck vermittelt, dass es keine sehr beliebte Sprache ist. Tatsächlich , einer meiner Professoren hat ständig Probleme mit C ++, aber es ist immer noch die Ausgangssprache an meinem College!)
Mit dem im Verstand, warum ist dies die erste Sprache an vielen Schulen gelehrt? Was sind die Gründe, um ein Programmiercurriculum mit C ++ zu starten?
Hinweis: Diese Frage ähnelt der Frage "Ist C ++ als Muttersprache geeignet", ist jedoch etwas anders, da ich nicht daran interessiert bin, ob sie geeignet ist, sondern warum sie ausgewählt wurde.
Antworten:
Jede einzelne Sprache hat eine kultige Anhängerschaft von Liebhabern und Hassern; Dies gilt für C ++, Java, C #, Haskell und Objective-C.
Es gibt viele triftige Gründe, eine Sprache zu mögen oder nicht zu mögen.
Letztendlich gibt es einige Gründe, warum C ++ überwiegend an Universitäten unterrichtet wird:
Es baut auf C auf; Daher ist der Übergang von C zu C ++ nicht zu schmerzhaft. Nicht wenige Universitäten unterrichten C vor C ++ (was IMO sehr sinnvoll ist).
Es ist eine der beliebtesten Sprachen in der Branche (das ändert sich allmählich mit Java, mobiler Entwicklung, Webentwicklung usw., aber es ist immer noch da oben).
Es ist eine Sprache, die von einem Akademiker für akademische (dh Forschungs-) Zwecke geschrieben wurde . Viele Professoren verwenden es daher tagtäglich und sind mit ihm sehr vertraut, was es zu einer offensichtlichen Wahl für den Inhalt ihres Kurses macht.
Seien Sie nicht zu voreilig, wenn Sie es als "schlechte" Sprache abtun; Ich empfehle Ihnen, darin einzutauchen, es wirklich zu lernen und einige mittelgroße bis große Projekte damit zu erstellen. Machen Sie dasselbe mit anderen Sprachen. An diesem Punkt haben Sie genug Erfahrung und Einsicht, um zu sagen: "Ich denke, C ++ ist schlecht, weil X, Y, Z" oder "Ich denke, C ++ ist gut, weil A, B, C, die Java nicht hat".
Sie müssen noch viel lernen, junge Heuschrecke.
quelle
Einfach gesagt, es ist eine sehr gute Unterrichtssprache, weil sie nicht Ihre Hand hält. Menschen, die lernen, auf einem Schaltgetriebe zu fahren, haben fast keine Probleme beim ersten Mal mit einem Automatikgetriebe, aber das Gegenteil ist nicht der Fall. Das Erlernen dauert länger, aber im College haben Sie 4 Jahre Zeit, Spielzeugprogramme zu üben, bevor Sie etwas Nützliches machen müssen.
quelle
Was in der Schule gelehrt wird, hängt in der Regel von dem ab, was die Professoren wissen und was in der Industrie und der damaligen Beliebtheit verwendet wurde.
Stellen Sie sich Schulen als eine Zeitkapsel der Vergangenheit vor. :)
Ich wünschte wirklich, es wäre umgekehrt.
quelle
Englisch wurde auch als eine wirklich schlechte, zusammengehackte, inkonsistente Sprache beschrieben, aber da so viele Leute hier davon wissen, entschieden meine Eltern und Lehrer, dass es eine gute Idee war, es mir beizubringen.
Ich denke, dass es mit C ++ dasselbe ist. Es ist eine Sprache, die viele Leute kennen, es lohnt sich also, eine Grundkenntnisse zu erlangen.
Es hat auch den Vorteil, dass es niedrig genug ist, um Ihnen ein Gefühl dafür zu vermitteln, was auf Hardwareebene vor sich geht.
Schließlich gibt es nicht die "kommerziellen" Probleme, die einige andere Sprachen haben (wie Java-Oracle oder .NET-MS). Ich weiß, dass viele Universitäten nicht beschuldigt werden möchten, ein bestimmtes Unternehmensprodukt über ein anderes zu unterrichten.
quelle
Wie erklären Sie sich, dass die meisten Softwareprodukte, die Sie in Ihrem täglichen Leben verwenden, in C ++ geschrieben sind, wenn C ++ so schlecht ist?
Es kann verschiedene Gründe geben, C ++ vom ersten Jahr an am College zu lernen:
Es ist weitgehend genutzt. Die vorhandene Codebasis ist einfach riesig, und selbst jetzt, wo es Sprachen wie Ruby, Python oder C # gibt, wird C ++ auch beim Erstellen von Anwendungen von Grund auf verwendet, auch für die Websites. In diesem Fall ist das Erlernen von C ++ eine gute Wahl. Zumindest ein besserer, als zwei Jahre mit dem Erlernen von Ada zu verbringen, etwas, das Sie niemals in Ihrem Leben verwenden werden, es sei denn, Sie entwickeln Anwendungen für Raumfahrzeuge.
Es ist nicht zu abstrakt. Wie können Sie zum Beispiel den Schülern erklären, was Zeiger sind, wenn sie nur C # oder Java gelernt haben?
Es ist schwierig genug im Vergleich zu PHP. Das bedeutet, dass Studenten, die nicht für das Programmieren gemacht sind, bald abreisen, was nicht so schlimm ist und verhindert, dass ein Student zwei oder drei Jahre verschwendet, bevor er versteht, dass die Softwareentwicklung nichts für ihn ist.
Dies macht C ++ geeigneter als Ada, Java oder PHP.
quelle
Im Allgemeinen können Sie, wenn Sie C ++ lernen und beherrschen, so ziemlich jede andere Sprache da draußen lernen und beherrschen. Der Grund, warum es nicht so beliebt ist, ist, dass Sie sich mit der Sprache und der Standardbibliothek auskennen müssen, um sie beherrschen und eine schnelle Veröffentlichungszeit haben zu können.
In einer Sprache wie Java können Sie jedoch eine schnelle Bereitstellungszeit mit nur einigen fortgeschrittenen Kenntnissen der Vor- und Nachteile der Sprach- / Standardbibliothek erreichen. Zur Hölle, ich kenne nur fünf Dinge aus der Java-Standardbibliothek auswendig (abgesehen von den grundlegenden Dingen wie natürlich Sammlungen).
Trotzdem ist C ++ immer noch eine weit verbreitete Sprache, da es eine großartige Kombination aus Geschwindigkeit und objektorientierten Methoden bietet. Während viele Leute glauben, dass es nicht voll OOP ist, glaube ich, dass es Ihnen die meiste Flexibilität von OOP gibt, ohne Sie zu zwingen, ein totaler Fanatiker zu sein. Die meisten Compiler erlauben es sogar, reines C zu schreiben.
Wenn ich die Wahl hätte, würde ich jeden Tag C ++ über Java nehmen, aber das ist nur, dass ich ein Fanjunge bin. Im Allgemeinen ist Java nützlich, da es auf nahezu jeder Architektur ausgeführt werden kann, für die ein Java-Interpreter erstellt wurde. Für Client-Anwendungen, die auf mehreren Plattformen unterstützt werden müssen, gilt dies als das beste Tool für den Job, und die meisten neu geschriebenen Anwendungen sind sowieso webbasiert.
quelle
Wie mir einige meiner Professoren gesagt haben, ist es einfacher, von unten oder von unten anzufangen und sich dann nach oben zu arbeiten. Eine Sprache wie C ++ gibt Ihnen eine großartige Einführung in das, worum es als Informatiker wirklich geht. Es ist vielleicht keine so glamouröse Sprache wie Java, Python, Ruby usw., aber es ermöglicht Ihnen ein grundlegendes Verständnis wichtiger Programmfunktionen wie Zeiger und Speicherverwaltung. Auch wenn es sich nicht um eine Sprache handelt, die Sie planen oder für den Rest Ihres Lebens verwenden möchten, werden Sie es in den kommenden Jahren zu schätzen wissen, wenn Sie beginnen, den gewünschten Programmierpfad zu finden.
quelle
C ++ kann eine der einfachsten Sprachen für Einsteiger-Konsolenprogramme sein. Sicher ist die Sprache komplex, aber Sie können sich auf eine prozedurale Teilmenge konzentrieren. Sie können die Existenz von Zeigern für eine Weile ignorieren. Sie können einfach anfangen, dann bauen.
Im Vergleich zu Java oder C # gibt es weniger "Fluff" -Syntax, um das ursprüngliche "Hallo Welt" -Programm zum Laufen zu bringen. Sollte ein Anfänger das Wort "statisch" für eine hallo Welt App sehen müssen? In Java / C # tun sie.
quelle
Als ich Informatik studierte, wurde Java zuerst unterrichtet, aber meine Universität unterrichtet uns Computerlinguisten derzeit zwei Sprachen: zuerst Prolog und dann C ++.
C ++ wird (zumindest) aus folgenden Gründen unterrichtet:
Es ist eine universelle Sprache, mit der Sie Software für jedes Betriebssystem schreiben können (da es viele Compiler gibt). Es ist eine gute Produktionssprache, die es einfach macht, Programmteile wiederzuverwenden, mit realer Hardware und Software zusammenzuarbeiten usw.
Es ist sehr schnell. Sie können Python, Schema oder Prolog nicht für die Verarbeitung großer Datenmengen verwenden, die heutzutage üblich sind. Denken Sie an Graph-Algorithmen mit Millionen von Knoten. (Aus diesem Grund werden Computerspiele normalerweise in C ++ geschrieben.)
Die Schüler können lernen, was der Compiler macht. Eigentlich kam mir die Arbeit des Compilers immer wie eine Zauberei vor, solange ich nur Java lernte (ab der High School). Man lernt als Java-Anfänger einfach nichts über den Stack und den Heap, das ganze statische oder dynamische Verknüpfen usw. C ++ enträtselt den gesamten Computer.
Für das, was es kann, ist es in der Lernzeit in Ordnung (obwohl es wahrscheinlich eine der kompliziertesten Sprachen ist, wenn Sie sich wirklich damit beschäftigen). Es bietet eine schöne Bibliothek, die mit einer reibungslosen Lernkurve hilft. (Es gibt jedoch unterschiedliche Ansätze. An meiner Universität wurde uns beigebracht, wie man eigene Zeichenfolgenklassen und intelligente Zeiger schreibt, bevor wir die Bibliothek benutzen durften. Bjarne Stroustrup, der Erfinder von C ++, empfiehlt die umgekehrte Reihenfolge.)
quelle
C / C ++ ist tatsächlich eine bessere Sprache als die meisten anderen, zum einen, weil es kein falsches Sicherheitsgefühl vermittelt. Zweitens, weil Sie wissen, was Sie tun.
Eigentlich liebe ich die Sprache und halte sie für die meisten Alternativen überlegen.
Es ist auch so produktiv wie die meisten anderen Sprachen und nicht so "krachend", wenn Sie wissen, was Sie tun, und überlegen, bevor Sie zufällige Codez kopieren.
Auch eine gute Lektüre - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Einige Dinge in C ++ sind jedoch tatsächlich schlecht, zum Beispiel Ausnahmen, und in einigen Fällen ein nicht intuitiver Overhead. Ich denke, das ist der Grund, warum Linus in dem von Ihnen zitierten Beitrag so negativ ist.
Eine gute Lektüre zum Anfassen eines der verwandten Themen - http://blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx
quelle
quelle
Früher gab es Pascal, früher gab es etwas Ähnliches wie Basic. Der interessante Teil ist - was kommt als nächstes? Vielleicht gar nichts. Ich habe eine obwohl über "warum C ++". Weil es schwer ist, aber es ist nicht so schwer wie lispeln. Nein, ich verstehe wirklich, dass C ++ eine gute Sprache für die Systemprogrammierung ist. Ich weiß, dass es viele Projekte gibt, die auf C ++ programmiert sind, und dass es Unmengen von Bibliotheken gibt, mit denen die Studenten alles erstellen können. Wir sprechen aber über Schüler und ihre Möglichkeit, Logik zu erstellen und das System zu verstehen. Sie können kein guter C ++ - Codierer sein, wenn Sie keine einfachen Logiken erstellen und nicht verstehen, wie das System funktioniert, und das ist meiner Meinung nach ein Hauptgrund. Und ja, ein weiterer einfacher Grund ist ein stabiler Berufseinstieg.
quelle