Warum wird C ++ oft als erste Sprache am College unterrichtet? [geschlossen]


12

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.


6
Welche Schulen und wo? Alle in meiner Nähe (3 in der Stadt und einige andere innerhalb von ein paar Autostunden) unterrichten Java als Muttersprache. C ++ wird in den letzten ein oder zwei Jahren eingeführt (je nachdem, welche Kurse ein Student belegt). Zumindest in den letzten 10 Jahren war das so.
FrustratedWithFormsDesigner

7
Professoren haben wie andere Programmierer nur mäßig rationale Vorlieben und Abneigungen. Gleichzeitig sind sie wie Schüler, denen die Erfahrung entzogen ist.
Mike Dunlavey

@Casey Hier werden Sie wahrscheinlich mit anderen Benutzern in Konflikt geraten, da Sie nur behaupteten, dass C ++ nicht gut gefällt, aber keine Rechtfertigung dafür. Wenn Sie sich nur darauf konzentrieren, herauszufinden, warum C ++ an Universitäten gewählt wird, sollten Sie alle Referenzen herausschneiden, die Ihnen gefallen oder nicht gefallen, da dies für Ihre eigentliche Frage weitgehend irrelevant ist.
Adam Lear

4
Im ersten Jahr geht es darum, die Spreu vom Weizen zu trennen.
Steven Evers

2
Es wäre interessant, Statistiken darüber zu haben, wie viele Colleges / Universitäten welche Sprachen für ihre Einführungskurse verwenden.
Jerry Coffin

Antworten:


25

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:

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.


2
Es mag keine "schlechte" Sprache sein, wenn Sie zur Philosophie "schlecht ist subjektiv" aufsteigen, aber für praktisch jede Kombination von technischen Belangen gibt es eine produktivere und sicherere Sprache. Meiner Meinung nach wird C ++ unterrichtet, weil es das ist, was die Leute verwenden, und es ist das, was die Leute verwenden, weil es das ist, was die Leute wissen, und es ist das, was die Leute wissen, weil es das ist, was die Universitäten unterrichten. Abgesehen von der Popularität hat C ++ keine wesentlichen Vorteile, die ich sehen kann, und ich programmiere professionell damit.
weberc2

13

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.


9
Ich bin besorgt über die Tatsache, dass diese falsche Analogie so viele positive Stimmen erzielt hat. So funktioniert Lernen nicht. Eines der vielen Missverständnisse der Didaktik.
Konrad Rudolph

12
C++ isn't that bad. 

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.


Ein sehr vernünftiger Punkt! Ich erhielt im College keine Übungen zu Smart Pointern oder RTTI oder RAII. WTF!
Chani

12

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.


1
+1 für c ++ ist keine kommerzielle Sprache. Es ist gut, eine Sprache zu lernen, ohne sich über die Politik und die Geschäftstaktik Gedanken zu machen. <Java7 zum Beispiel unter Linux installieren>
Chani

5

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.


1
Es scheint, als wäre C für Ihre zweiten beiden Punkte besser. Gibt es Schulen, die Ada unterrichten? Ich würde das definitiv über C ++ übernehmen, aber andererseits bin ich komisch!
Jetti

C ++ wird für kommerzielle Produkte ausgewählt, weil es das ist, was mehr Menschen wissen, nicht wegen seiner technischen Bedenken. C ++ ist eine unsichere, schwer zu verwendende Sprache im Vergleich zu vielen modernen Sprachen. Sprachen werden nicht aufgrund ihrer Verdienste ausgewählt, sondern weil sie beliebt sind.
weberc2

Außerdem kann ich mir nicht viele Dinge vorstellen, die Ada schlechter macht als C ++, und ich würde es viel lieber benutzen als C ++ (mein Code wäre sowieso einfacher und sicherer), und ich programmiere professionell in C ++! Und um den Schülern Zeiger beizubringen, gibt es immer Ada, Go oder eine von mehreren vernünftigen Sprachen. Und in Bezug auf Ihren letzten Punkt ist C ++ unnötig schwierig. Viele der Probleme, mit denen C ++ - Programmierer konfrontiert sind, haben nichts mit Programmierung zu tun, sondern mit der Überwindung von C ++. Das Programmieren auf jeder Ebene ist in einer vernünftigen Sprache ziemlich einfach.
weberc2

5

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.


Möglicherweise trifft dies nicht auf den Objektcode zu, aber das Versprechen von C-Sprachen, einschließlich C ++, war, dass es Compiler für nahezu jede Plattform gab, sodass derselbe Quellcode zum Kompilieren von Anwendungen für eine Vielzahl von Plattformen verwendet werden konnte.
JohnFx

Das ist tatsächlich wahr. Die meisten * NIX-Plattformen verfügen über eingebaute Compiler, und das hat für die meisten Menschen psychologische Auswirkungen in Form von "Sicher, ich könnte DIESEN Compiler herunterladen, aber dieser Compiler wurde mit meinem Betriebssystem geliefert, so dass er mit Sicherheit der beste sein muss".

Sie sollten außer Java auch andere Sprachen ausprobieren - es gibt Alternativen, die das Beste aus beiden Welten ausmachen. Go zum Beispiel bietet Geschwindigkeit, Portabilität und Einfachheit und macht die gleichzeitige Nutzung zum Kinderspiel.
weberc2

4

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.


Das klingt nach einem Argument für Ada, nicht für C ++ ...
weberc2

3

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.


3

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.)


Dies erklärt nicht, warum beispielsweise Ada nicht als Muttersprache unterrichtet wird.
weberc2

2

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


3
Diese Antwort ist einfach völlig falsch. In erster Linie, weil es keine Sprache namens „C / C ++“ gibt.
Konrad Rudolph

1
  1. Professoren bereiten keinen neuen Kurs vor und es gibt Grenzen, wie viel Sie anbieten können.
  2. Sprachen kommen und gehen, also gaben sie den Versuch auf, auf dem neuesten Stand zu bleiben (siehe # 1)
  3. Es ist eine Universität und keine technische Schule. Mehr auf die Bereitstellung einer Grundlage als auf die Berufsausbildung.
  4. Umfasst eine ausreichend breite Palette an Programmen: Server, Desktop, Embedded, UNIX, Windows.
  5. Sie benutzen es als Ausrottungskurs. Jeder Studienschwerpunkt hat mindestens einen.

1

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.