Welche Programmiersprachen sollte jeder Informatikstudent lernen?

13

Welche Sprachen (oder Klassen (wie in Paradigmen) von Programmiersprachen sowie eine empfohlene Sprache dieser Klasse) sollte jeder Informatikstudent Ihrer Meinung nach am College unterrichtet werden? Motivieren Sie Ihre Antworten. warum diese Sprache? Welchen Nutzen wird man daraus ziehen? Welche Konzepte lehrt es (besser als Sprache X)?

Anmerkung / Klarstellung : Bei dieser Frage handelt es sich um Informatik mit Schwerpunkt auf Software-Engineering, nicht um reine Informatik. Der Schwerpunkt liegt nach wie vor auf der Informatikausbildung und nicht auf der Software-Ingenieurausbildung.

Anto
quelle
13
Pseudocode sollte für CS ausreichen.
Jé Queue
12
@ Xepoch - nicht einverstanden. Es ist nicht besonders natürlich, eifrige vs. faule Bewertungssemantik, Kovarianz / Kontravarianz in Typensignaturen, Kategorietheorie usw. unter Verwendung von Pseudocode auszudrücken. Pseudo-Code eignet sich hervorragend zur Beschreibung von Algorithmen und Datenstrukturen, aber CS bietet noch viel mehr.
Aidan Cully
6
Darüber hinaus erhofft sich die überwiegende Mehrheit der CS-Studenten nach dem Abschluss einen nicht-akademischen Job. Pseudocode wird auf einem wettbewerbsintensiven Arbeitsmarkt nicht viel wert sein. Ich denke nicht, dass ein CS-Abschluss in erster Linie eine Berufsausbildung sein sollte, aber es muss eine gewisse Anpassung in diese Richtung geben.
Adam Crossland
2
ALLES VON IHNEN . Wenn die Zeit begrenzt ist, beginnen Sie mit den Buchstaben des Alphabets. A +, B, C, C #, D, E, F #, J, K, Q, R, T ... Das ist eigentlich keine schlechte Liste.
Jesse Millikan
6
Herzlichen Glückwunsch zur Entdeckung einer weiteren Version von "Which Language?" Frage. Ich kann es kaum erwarten, alle Meinungen zu lesen. Vergessen Sie nicht den Verweis auf SICP. Oh warte, da ist es.
Corbin

Antworten:

21

Ich werde eine Liste geben:

  • Montage (ein relativ einfacher Dialekt): Es ist wichtig, zumindest ein wenig über die Grundlagen zu verstehen
  • C: Verfahrenssprache, die an vielen Orten verwendet wird. Belastet neue Studenten nicht mit ganz neuen Konzepten wie OOD auf einmal.
  • Java / C # / Eiffel / C ++: Etwas Objektorientiertes ist gut, eines davon würde das Ziel erreichen, den Schülern OOD beizubringen, und wenn sie eine dieser Sprachen verstehen, sollten sie in der Lage sein, die anderen zu lernen. Es gibt viele Gute Sprachen, ich habe Eiffel gelistet, weil es auch Design-by-Contract hat.
  • LISP und Prolog: Bringt den Schülern eine völlig neue Denkweise bei, die wichtig ist, auch wenn sie keines von beiden "in der realen Welt" verwenden.
  • SQL und XML: Führt neue Wege ein, um über Daten nachzudenken und sie abzurufen und zu verwalten.

Die Schüler sollten zumindest mit all diesen Paradigmen konfrontiert sein. Nicht nur ein oder zwei.

Ich nehme an, dass viele Leute Python vorschlagen werden, um den prozeduralen Stil, den OOP-Stil und vielleicht auch andere zu behandeln, aber ich habe nicht genug persönliche Erfahrung mit Python, um es sicher empfehlen zu können.

FrustratedWithFormsDesigner
quelle
Ich wünschte wirklich, meine Schule hätte mehr auf XML und SQL eingegangen. Wir hatten eine Klasse, die auf beide einging und es war großartig.
Ich würde moderne dynamische Sprachen hinzufügen, wie Lua, Python, Javascript, etc.
Javier
4
ah, auch einige hardcore-funktionale wie haskell und erlang sind sehr lehrreich
Javier
1
+1 für die Auflistung von SQL. Zumindest denkst du an relationale Algebra.
Jé Queue
1
Ich würde auch verwaltet von nicht verwaltetem OO, C ++ und Java trennen . Obwohl ich C ++ seit uni noch nie benutzt habe, ohne etwas über malloc, den Heap und den Stack zu lernen, werden Sie OO nie so gut verstehen.
Markmnl
45

Ich persönlich finde es etwas traurig, dass funktionale Sprachen nicht mehr so ​​vorherrschend sind wie früher. Ich denke, dass die Studenten der Informatik zumindest einer Sprache aus allen wichtigen Paradigmen ausgesetzt sein sollten: prozedural, objektorientiert, funktional und dynamisch.

Michael Brown
quelle
2
+1 Mein Programmiersprachenkurs war mit Abstand der wertvollste, den ich belegt habe.
HappyCodeMonkey
1
Als IT-Student stimme ich definitiv zu. Ich habe den Vorteil, dass ich in der realen Welt ganztägig arbeite, während ich als Web-App-Entwickler auf Junior-Ebene zur Schule gehe, aber selbst wenn ich einen vollwertigen CS-Abschluss hätte, würde mir eine Menge Berichterstattung über die verschiedenen Bereiche fehlen Paradigmen.
Ken
1
Etwas verwandt: youtube.com/watch?v=Ps8jOj7diA0 Stanford hat seine vollständigen Vorlesungen zu Programmierparadigmen 2008 auf YouTube veröffentlicht.
Inaimathi
4
Deklarativ zur Liste hinzufügen (Prolog). Auch einige Sprachen sind explizit parallel (Occam). Den Schülern beizubringen, wie Parallelität funktioniert, wäre gut (niemand versteht es richtig).
Martin York
1
@ Martin York: Prolog ist eine logische Programmiersprache, die eine Art deklarative Sprache ist. (Ich erwähne dies, da funktionale Programmiersprachen im Allgemeinen auch deklarativ sind.)
mipadi
33

Ich denke, einem ausgewogenen CS-Schüler sollte eine Sprache in jedem der vier Programmiersprachentypen beigebracht werden:

Funktional - Lisp / Haskell / PostScript. Ich habe nicht viel Erfahrung mit Haskell, aber ich habe andere Programmierer gehört, die davon schwärmen. Wenn Sie die Konstrukte der funktionalen Programmierung verstehen und wissen, warum sie in vielen Situationen nützlich sind, können Sie Algorithmen auch in anderen Sprachen besser organisieren.

Objektorientiert - Treffen Sie Ihre Wahl. C # / Java / Python / Ruby / yadda yadda yadda. Dieser Typ muss einfach gelehrt werden, weil das moderne Unternehmen will.

Imperativ - C / Fortran / Pascal. Diese sind heutzutage weniger verbreitet, sollten aber aus praktischer / historischer Perspektive gelernt werden. Die Methoden, die sie anwenden, sind immer noch praktikabel, denn in jeder Sprache läuft alles auf eine Anweisung hinaus. Und imperative Sprachen sind sehr gut darin, Anweisungen aufzulisten und zu befolgen.

Logisch - ProLog. Ich habe noch nie eine gute praktische Verwendung für eine dieser Sprachen gefunden, aber ich fand einige der Konzepte hinter den logischen Sprachen nützlich, als ich versuchte, herauszufinden, wie ich einige meiner Methoden in objektorientierteren Sprachen schreiben kann. Ich konnte mich während meiner Studienzeit nicht lange auf die logischen Sprachen konzentrieren, und ich denke, ein stärkerer Fokus dort hätte mir dann vielleicht etwas Gutes getan.

Joel Etherton
quelle
6
Möglicherweise möchten Sie dieser Liste Prototypen hinzufügen, z. B. JavaScript.
Stusmith
@stusmith - Prototypisch ist eine Erwähnung wert, aber es ist wirklich eine Teilmenge der objektorientierten Sprachen, und Javascript ist bestenfalls ein begrenztes Beispiel. Ich würde es vielleicht als Hausaufgabe in einem Programmiersprachenkurs betrachten, aber nicht als Schwerpunkt.
Joel Etherton
1
+1 für Prolog. Ich habe seine praktische Anwendung gesehen und benutze regelmäßig Algorithmen, um sie zu prototypisieren.
Fred Foo
@ Larsmans - Es würde mich interessieren, was Sie davon halten. Ich habe es seit einigen Jahren nicht mehr angerührt, deshalb bin ich bei guten praktischen Anwendungen davon verwirrt. Haben Sie Links zu Whitepapers oder ähnlichen Artikeln?
Joel Etherton
Schauen Sie sich ECLiPSe ( eclipseclp.org ) an, einen Open-Source-Prolog-Dialekt, der industriell von mehreren großen europäischen Unternehmen verwendet wird (ua der französischen Eisenbahngesellschaft SNCF, wenn ich mich recht entsinne; ich werde versuchen, eine Referenz zu finden).
Fred Foo
6

Die erste Sprache, die jeder CS-Absolvent beherrschen sollte, ist die, die sein Potenzial für die Erreichung eines hervorragenden Arbeitsplatzes maximiert. Das wird sich im Laufe der Zeit ändern, es wird sich basierend auf der Definition eines großartigen Jobs durch den Einzelnen ändern , und es wird sich je nach geografischer Region ändern.

Im Moment werde ich sagen, dass Englisch die erste Sprache ist, die jeder CS-Hauptfach beherrschen sollte (dies variiert natürlich je nach Region).

Oosterwal
quelle
Ein guter Job ist ein Nebeneffekt eines CS-Abschlusses. Ein CS-Abschluss ist genau das, Kenntnisse der Computertheorie. Ich hätte leicht einen besseren Job in der Berufsschule bekommen können, anstatt mir für all die Jahre den Kopf in Mathe und CS zu zerbrechen.
Jé Queue
2
+1 für Englisch. Computersprachen sind Implementierungsdetails.
Wyatt Barnett
+1. Wenn jemand gut Englisch lernen kann, kann er die Handbücher gut lernen. Ich konnte gut Englisch. Ich hatte kein Problem damit, eine Sprache zu lernen.
Shiplu Mokaddim
4

Ich denke, es ändert sich mit der Zeit, aber im Idealfall - 3 Sprachen aus 3 sehr unterschiedlichen Perspektiven. Zu meiner Zeit war es prozedural, OO und funktional - Pascal, C ++ und LISP. Ich bin nicht so sehr von diesen dreien begeistert. Aber wenn ich interviewe, suche ich nach:

  • Etwas Erfahrung mit einer Sprache, bei der Sie auf Speicherverwaltung achten müssen (C / C ++ und viele andere)
  • Etwas Erfahrung mit einer objektorientierten Sprache mit Erwartungen an die API-Verwendung und den verschiedenen verfügbaren Abstraktionen (C ++ / Java)
  • Eine "Stretch" -Sprache - etwas, das seltsam, hart und herausfordernd ist. Ich werde nicht einstellen, weil jemand LISP, Assembler oder eine andere herausfordernde Sprache kennt, aber ich möchte sehen, dass der Ingenieur vor einer Herausforderung stand, die ernsthafte Problemlösungen und viel "Was zum Teufel ist das?" Momente.

Als weiterer Beruf - ich denke, CS-Programme müssen Studenten auf dem Markt in wichtigen Sprachen ausbilden. Ich denke, zu jedem Zeitpunkt haben 2-3 Sprachen für die meisten Berufe einen ernsthaften Stellenwert. Ich denke, eine Schule schuldet es den Schülern, 2 von 3 dieser Sprachen zu erlernen, wenn in mindestens einer Sprache eine umfassende Ausbildung vorhanden ist.

bethlakshmi
quelle
4

Suchen Sie für einen CS-Studenten nach Programmiersprachen, die eng mit den besprochenen CS-Konzepten verknüpft sind. Ich würde vorschlagen:

  • Schema, um die Lambda-Rechnung besser zu verstehen
  • Erlang, um das Schauspielermodell zu verstehen
  • Prolog für Prädikatenlogik und Beweissysteme
  • Haskell, für Typ- / Kategorietheorie, und weil die faule Bewertung in der Sprache so voll zum Ausdruck kommt
  • Mindestens eine Assemblersprache - wenn Sie es unter diesem Banner zählen möchten, würde ich auch eine Byte-Code-Sprache wie den Java- oder CLR-Byte-Code und den LLVM-IR eingeben
  • wahrscheinlich eine Hardware-Definitionssprache wie Verilog oder VHDL
  • Bison für eine Compiler-Bauklasse
  • etwas mit einem dynamischen Typensystem (Ruby fällt mir ein) ...

Die Liste könnte auf diese Weise fortgesetzt werden, aber die Grundidee ist ziemlich einfach: Bringen Sie den Schülern die Programmiersprache bei, die am besten zu der Art und Weise passt, wie Sie die Konzepte vermitteln möchten.

Aidan Cully
quelle
3

yacc

Damit Sie sich ein Bild davon machen können, was sich hinter den Kulissen abspielt, unabhängig von der verwendeten Programmiersprache. Es hilft dabei, grundlegende Konzepte wie toten Code und verschiedene Arten von Optimierungen zu verstehen, die ein (guter) Compiler für Sie ausführen kann.

Mariotomo
quelle
2

Lisp (mit CLOS für OOP) und Haskell. Diese Frage ist nicht auf Studierende beschränkt. Neue ausgefallene Programmiersprachen haben eine Menge Features von diesen beiden ausgeliehen (kopiert, gestohlen? ... nein, es ist nicht schlecht). Sie können sich auf die Zukunft vorbereiten. Funktionale Programmierung (Stil) ist heute wichtiger und wird in imperativen Programmiersprachen wie C # (LINQ) oder C ++ (Lambda) und vielen mehr eingeführt. Es ist schade, dass einige Schüler nur Java lernen.

knivil
quelle
1
Obwohl ich beiden zustimme, möchten Sie vielleicht etwas begründen (ich werde auch bemerken, dass es nicht besonders nützlich wäre, diese als Ihre einzigen Sprachen zu kennen).
Inaimathi
2

Ich denke, die Sprache ist nicht so wichtig, wie die Leute glauben.

Ja, Sie müssen wissen, wie man usw. programmiert, aber viele großartige Programmierer sind Autodidakten, die sich auf ihre realen Erfahrungen stützen, die ihnen bei der Entwicklung helfen.

Die Schüler könnten mit einigen Lektionen über das Programmieren in der realen Welt und nicht nur über die Buchmethoden fertig werden, dies würde sie "runder" machen und meiner Meinung nach bessere Entwickler / Absolventen.

Nachdem ich die Universität verlassen hatte und mit der Arbeit begonnen hatte, lernte ich mehr über Programmierung und Softwareentwicklung!

user18041
quelle
2

IST ES WIRKLICH WICHTIG ?

Normalerweise juckt es hinter dieser Frage: "Welche Schlagworte kann ich in meinen Lebenslauf aufnehmen, die mir die lukrativsten / interessantesten / herausforderndsten / leichtesten Jobs bringen?". Die Frage hat jedoch Vorzüge, da die meisten Lebensläufe zuerst von HR-Mitarbeitern überprüft werden, die kein Verständnis dafür haben, wonach sie suchen. Aber es ist sehr flach, denn sobald Sie die Tore passiert haben, müssen Sie die Waren liefern.

Es ist nicht die Sprache, die Sie kennen, die Sie zu einem guten oder schlechten Programmierer macht, sondern die Art und Weise, wie Sie sie verwenden können. Dafür gibt es grundsätzlich zwei Kategorien von Programmierern:

  1. Diejenigen, die sich darauf konzentrieren, eine Sprache bis ins Mark zu lernen. Das wichtigste ist die Sprache und wie man sie benutzt. Im Extremfall neigen sie dazu, jeden kleinen Codefleck zu optimieren, und verwenden häufig undurchsichtige Funktionen, nur weil sie dies können.

  2. Dann gibt es diejenigen, die etwas über Techniken und Paradigmen lernen wollen. Welche Sprache sie benutzen, spielt keine Rolle, solange sie ihr geistiges Bild elegant ausdrücken kann. Im Extremfall tendieren diese dazu, UML oder andere solche Systeme zu verwenden, in der Hoffnung, dass andere das Grunzen des Codierens übernehmen.

Meiner Meinung nach braucht man beides. Nr. 1 vermittelt kurzfristige Fähigkeiten und erleichtert Ihnen bei einer vernünftigen Auswahl das Durchstarten der Personalabteilung. Nr. 2 begleitet Sie während Ihrer gesamten Karriere und definiert Sie als Programmierer.

Nr. 2 wird Ihnen eine Anleitung geben und Ihren Gedankengang zu einer funktionierenden Lösung des vorliegenden Problems organisieren, aber ohne 1 bleibt es eine Idee, die für immer in den Grenzen des Dampfgeschirr-Himmels schwebt (oder der Hölle, je nachdem, von wo Sie es betrachten).

# 1 gibt Ihnen die Möglichkeit, Ideen in real funktionierende Systeme umzusetzen, aber ohne 2 tendieren Ihre Systeme zu krebsartigen, formlosen Monstern.

Newtopian
quelle
Ja, das ist wichtig. Die erste Sprache, die Sie lernen, prägt Ihr Gehirn in Bezug darauf, wie Sie zukünftige Sprachen betrachten werden.
1

Ich glaube, Sie haben Ihre Frage teilweise selbst beantwortet.

Es ist sehr wichtig, den Schülern die Möglichkeit zu geben, mit verschiedenen Paradigmen in Kontakt zu treten. Die eigentlichen Sprachen sollten keine Rolle spielen.

Natürlich ist es wichtig, in erster Linie die Paradigmen zu vermitteln, die die meisten Arbeitsmöglichkeiten bieten (derzeit wahrscheinlich OOP). Dementsprechend ist es auch besser, eine weit verbreitete Sprache für dieses Paradigma zu unterrichten, da dies nützlicher ist, als etwas zu lernen, das Sie wahrscheinlich niemals verwenden werden. Daher hasste ich es auch, Pseudocode für meine Prüfungen schreiben zu müssen. Pseudocode ist in Ordnung, solange es keine 'feste' Syntax gibt. Sie sollten nur in der Lage sein, Konzepte zu vermitteln.

Also konkret:

OOP: .NET oder Java

Mindestens 1 zusätzliches Programmierparadigma, um den Schüler auf andere Ansätze aufmerksam zu machen.

Funktional: Lisp?

Steven Jeuris
quelle
funktionsfähig, nein, bitte nicht LISP. eher: haskell.
Mariotomo
1

Assemblersprache und Mikrocode. Ein CS-Student sollte alle grundlegenden Abstraktionsebenen zwischen booleschen Zustandsautomaten und den neuesten hochrangigen funktionalen / OOP / etc verstehen. Paradigma der Programmiersprache.

Basic oder Logo oder Squeak (et.al.), wenn sie jemals verstehen wollen, wie man kleinen Kindern Computerkenntnisse beibringt.

Fortran, Cobol und Lisp, wenn sie die Geschichte der Programmiersprachen verstehen wollen und die eigentlichen Probleme, die durch moderne Praktiken behoben werden, kennen.

hotpaw2
quelle
Und C: Sie verstehen 90% des gesamten Open Source-Codes, den Sie studieren können.
Rightfold
1

Die Auswahl von 3 oder mehr Sprachen aus verschiedenen Paradigmen ist nicht so schwer, es wurden viele gute Antworten gegeben. Wenn ich jedoch nur eine Sprache auswählen müsste, würde ich mich für Scala entscheiden, da es sowohl funktional als auch objektorientiert ist. Sie können verschiedene Ansätze in derselben Sprache erklären und vergleichen.

Sean Patrick Floyd
quelle
1

Vergessen Sie nicht die stapelorientierten / verketteten Sprachen! Sie können echte Geisteskrankheiten sein. Sie betonen die Komplexität des Aufbaus mit kleinen, leicht verständlichen Grundelementen. Sie können sie verwenden, um pointfree (oder stillschweigenden) Code zu schreiben, der sich so verdammt sauber anfühlt.

Die klassische Sprache ist Forth , aber heutzutage bin ich Factor . Sehenswert sind auch Joy und Cat . Verpassen Sie nicht das Wiki für verkettete Sprachen . Es macht mehr Spaß als eine Tasche voller Hämmer!

Scant Roger
quelle
0

Etwas Funktionales, Haskell oder Lisp, wäre meine erste Wahl, aber vielleicht Erlang. In funktionalen Sprachen lernen Sie wirklich, wie Sie auf sehr leistungsstarke Weise Abstraktionen erstellen.

Zachary K
quelle
Aber sollten sich die Schüler auf ein Paradigma beschränken? Was ist mit funktionalen OOP-Sprachen wie Scala?
Anto
1
Nein, natürlich nicht, ich ging davon aus, dass andere Leute für sie einspringen würden!
Zachary K
0

Trotz des Mangels an Mainstream finde ich, dass D, speziell Version 2, einige interessante Lektionen bietet, die anderswo nicht leicht zu lernen sind. Es ist ein ernsthafterer Versuch als jede andere Sprache, die ich mir vorstellen kann, eine imperative / prozedurale, objektorientierte und funktionale Programmierung zu schaffen, um gut miteinander zu spielen und eine Programmierung auf einem sehr niedrigen Niveau zu ermöglichen (Zeiger, manuelle Speicherverwaltung, Inline-Programmierung) Assemblersprache) und ein sehr hohes Niveau (generische und generative Programmierung) in derselben Sprache.

Das ist wertvoll, denn anstatt Paradigmen isoliert zu betrachten, als ob sie in verschiedenen Universen existieren, können Sie den Wald durch die Bäume sehen. Sie können die Stärken und Schwächen jedes Paradigmas auf einer detaillierten Ebene erkennen, wenn Sie sie in Ihre Programme integrieren. Sie werden sehen, wie wichtige Aspekte von Paradigmen in Form von Code auf niedrigerer Ebene in Bibliotheken implementiert werden können. Das Standardbibliotheksmodul std.algorithm implementiert wichtige funktionale Programmierprimitive, ist jedoch einfacher D-Code ohne Zauberei. Ebenso std.rangeImplementiert Lazy Evaluation, ist aber wieder ziemlich einfacher D-Code. Sie werden die Kosten verstehen, die mit den Grundelementen jedes Paradigmas verbunden sind, da die metallnahen Funktionen von D die tatsächlichen Vorgänge unter der Haube relativ transparent machen. Sie können sogar einen Low-Level-Code schreiben, der wie C aussieht, und dann eine hübsche High-Level-Benutzeroberfläche in derselben Sprache erstellen, ohne dass magische Leimschichten in die Quere kommen.

dsimcha
quelle
0

Pseudocode.

Fachleute sollten in der Lage sein, ihre Ideen in einer kohärenten, strukturierten Weise ohne eine Framework- oder Syntax-spezifische Fachsprache zu erläutern. Ich sollte den Unterschied zwischen eckigen und geschweiften Klammern nicht kennen müssen, um Ihren Algorithmus zu verstehen. Ich sollte nicht wissen müssen, was ??bedeutet oder was die grepSchalter sind.

Schreiben Sie im Klartext, aber strukturieren und formatieren Sie es wie Code. Jeder kann es dann in einer beliebigen Sprache implementieren.

edit: Diese Antwort ist teilweise durch die Unfähigkeit einiger Programmierer motiviert, Pseudocode zu schreiben.

"Schreibe den Algorithmus einfach in Pseudocode"

"Was ist das?"

Der Vorteil von Pseudocode besteht darin, dass Stakeholder ohne Programmierkenntnisse ihn verstehen können. Ich schlage nicht vor, dass Sie möchten, dass BAs und Benutzer Ihren Code prüfen. Es kann jedoch hilfreich sein, wenn ein Nicht-Programmierer den erforderlichen Algorithmus versteht. Psuedocode beseitigt die Notwendigkeit zu erklären for (int i = 0; i < j; i++)und was ist im Wesentlichen Boilerplate Jargon.

Kirk Broadhurst
quelle
Viele Programmiersprachen sind leistungsfähig genug, um kaum einen Unterschied zwischen tatsächlichem Code und Pseudocode zu machen. Gegen welche Syntaxelemente tatsächlicher Programmiersprachen wenden Sie sich?
Kevin Cline
@ Kevin Cline - Ich bin mit den Syntaxelementen, die ich kenne, vertraut - es sind diejenigen, die ich nicht kenne, gegen die ich Einwände erheben könnte . Natürlich kann ich sie entschlüsseln, aber der Punkt ist, dass Pseudocode diese Probleme nicht haben sollte (ich muss noch eine Programmiersprache sehen, die wirklich wie Pseudocode aussieht)
Kirk Broadhurst
0

C.

  • Erstens wird es immer noch verwendet (weit verbreitet!) Und nicht nur für Kernel. Ich arbeite derzeit an einer in C codierten Geschäftsanwendung. Selbst mit einfachem C können Sie also immer noch einen Job finden. In großen Unternehmen, in der Industrie, fast überall (außer bei Webentwicklern).
  • Wenn Sie in einer Unix / Linux-Umgebung arbeiten möchten, ist es ein bisschen wie einkaufen zu gehen und nicht in der Lage zu sein, die Preise auf den Tags zu lesen, wenn Sie nicht mindestens ein bisschen C kennen.
  • Zeiger! Jeder sollte Hinweise verstehen (vgl. Joel Spolsky ). Sobald Sie sich für das Malloc-Konzept entschieden haben, wissen Sie genau, was passiert, wenn Sie achtlos ein "neues" in einer OOP-Sprache eingeben.
  • Die meisten "populären Sprachen" -Syntaxen stammen von C.
  • Ja, es ist nicht immer klar. Ja, es ist schwer zu lernen. Ja, Saiten sind für Anfänger ein Albtraum. Die Programmierung ist jedoch nicht immer klar und schwer zu erlernen. Sie werden die Vorteile von OOP wirklich verstehen, wenn Sie nach dem Studium von C C ++ ausprobieren und std :: string entdecken.

Natürlich sollte man mehr als eine Sprache kennen und nicht nur eine alte Verfahrenssprache. Aber wenn ich mit nur einem Compiler auf eine einsame Insel gehen müsste, würde ich mit meinem guten alten gcc gehen. Sie können High-Level-Programmierung verstehen, wenn Sie sich mit Low-Level-Programmierung auskennen. Ich denke, dass es andersherum nicht stimmt.

Raveline
quelle
0

Einige der Programmiersprachen, die angewendet wurden, um allgemeine Problemlösungsfähigkeiten und Programmierkonzepte zu erwerben, sind Logo und Karel. Sie sollten vor C / C ++ / Java / Lisp / PERL / Assembly / jedem Programmierparadigma unterrichtet werden.

Die Schüler erhalten eine sehr praktische Einführung in die Programmierung.

umlcat
quelle
-1

Alles mit Gegenständen. Stellen Sie einfach sicher, dass sie es gut lernen.

Ich würde jederzeit einen großartigen Java-Programmierer für c # einstellen, aber ich hätte viele Zweifel, jemanden einzustellen, der nie echten Code geschrieben hat

Eric
quelle