Warum müssen wir prozedurale Programmierung lernen, bevor wir objektorientierte Programmierung lernen [geschlossen]

10

Ich bin jetzt im 4. Jahr an einer IT-Universität und wenn ich mit meinem Professor über dieses Thema spreche, lehnt er meine Meinung ab und gibt mir eine sehr heftige Kritik (an meiner Universität wurde uns C (ANSI) (in Procedural) beigebracht Programmierklasse - im 1. Jahr an der Universität) vor C ++ (in der OOP-Klasse im 2. Jahr) und anderen ...

Aber im Alter von 13 Jahren wurde meinem Bruder von mir zuerst Java und sonst nichts beigebracht. Jetzt kann er fast alles, was ein normaler Student im zweiten Jahr mit Java machen kann.

Für Sie Profis würde ich gerne wissen, warum Sie der Meinung sind, dass uns zuerst die prozedurale Programmierung beigebracht werden sollte.

Luke
quelle
8
Weil Assembler keine Objekte hat.
9
Es ist so, als ob wir lernen sollten, richtig zu rechnen, bevor wir lernen, wie man einen Taschenrechner benutzt.
22
Weil objektorientiertes Design fehlerhaft ist. Programme sind eine Sammlung von Verhaltensweisen, die mit Daten arbeiten. Objekte führen oft zu unnötiger Komplexität. Lesen Sie "Entwerfen von Programmen: Eine Einführung in das Programmieren und Rechnen".
8
Wie von jemand anderem gesagt : " Lenken Sie neue Programmierer nicht mit OOP ab": prog21.dadgum.com/93.html - im Grunde alles, was OOP im Weg hat, neuen Programmierern die Grundlagen beizubringen . Sie bringen ihnen zwei wirklich schwierige Konzepte gleichzeitig bei.
John Ripley
7
@juxstapose - zu sagen, dass objektorientierte Programmierung unnötige Komplexität mit sich bringt, ist wie zu sagen, wir sollten Fahrzeuge aus einem einzigen Stahlblock schnitzen. Nur meine Meinung.

Antworten:

23

Kurze Zusammenfassung:

  1. Denn in der realen Welt muss man früher oder später mit prozeduralem Code arbeiten.

  2. Weil prozedurale Sprachen wie eine Erweiterung oder Einführung in objektorientierte Sprachen funktionieren können, anstatt nur eine Alternative zu sein.

  3. Ergänzung zu Antwort 2. Da OOP komplexer als die prozedurale Programmierung ist, ist es besser, zuerst die prozedurale Programmierung zu lernen.

  4. Denn in der realen Welt arbeiten Programmierer mit AKA "Multiparadigm Programming" und kombinieren nicht mehrere Möglichkeiten, um Probleme zu lösen, nicht nur ein einziges Paradigma.

  5. Die meisten Programmiersprachen sind auf einer bestimmten Ebene Multiparadigmen, selbst wenn ihre Designer oder gemeinsamen Entwickler das Gegenteil sagen.

  6. [NEU] Da die modulare Programmierung, die häufig mit der prozeduralen Programmierung gemischt und verwechselt wird, auf OOP angewendet werden kann, kann die Frage lauten: "Warum müssen wir die modulare Programmierung lernen, bevor wir die objektorientierte Programmierung lernen?"

Erweiterte Bohrung Beschreibung:

Punkt 1 ist sehr klar, keine weitere Erklärung.

Punkt 2, Klassen, Vererbung, Polymorphysmus, Schnittstellen usw.

Punkt 3, ich codiere Procedural Pascal, bevor ich Object Oriented Pascal lernte. Als ich dort ankam, sagte ich: "Schau, Klassen sind wie kleine prozedurale Programme ... ... und du kannst sie dazu bringen, miteinander zu reden, cool !!! ".

Ich hörte dasselbe von Leuten, die von einfachem C zu C plus plus gingen.

Punkt 4: In den meisten Fällen kombinieren Programmierer verschiedene Programmiertechniken oder -paradigmen oder Möglichkeiten zur Lösung eines Problems. Funktional, prozedural, OOP, logisch.

Selbst Java "Pure OO" ist nicht so einfach wie es heißt.

+1 Punkt für "Prozedurale Programmierung" anstelle von "Strukturierte Programmierung". Oder modulare Programmierung. Das ist wichtig.

Obwohl diese Begriffe oft zusammen gelehrt und austauschbar verwendet werden, sind sie es nicht. Strukturierte Programmierung umfasst viele Konzepte, nicht nur die Verwendung von Prozeduren, und eine davon besteht darin, das Programm so zu gestalten, dass es nicht wie "Spaghetti-Code" aussieht.

Heute habe ich mehrere "reine" OO-Programme gelesen, die wie "objektorientierter Spaghetti-Code" aussehen, was bedeutet, dass der Programmierer OOP verwendet hat, aber sein Code sieht aus wie ein Durcheinander.

Oft kann ich einen OO-Code lesen und feststellen, dass der Programmierer vor OOP die strukturierte Programmierung gelernt hat, da der Code klar und übersichtlich ist.

Und für die modulare Programmierung habe ich mehrere Apps gesehen. In C ++ und PHP werden keine Module verwendet. *

umlcat
quelle
18

Ich würde denken, dass die Analogie der Mathematik ähnlich wäre. Sie müssen zuerst einige grundlegende Konzepte lernen (Addition / Subtraktion / ...) und dann zu komplexeren Themen (Algebra / Kalkül) übergehen. Das prozedurale Programm ist sehr linear und es ist einfacher, den Kontrollfluss zu erfassen, während Sie die Syntax lernen. OOP wird vielleicht als komplexer angesehen, es baut auf den einfacheren Konstrukten auf, die in prozeduralen Sprachen verwendet werden, ist aber abstrakter und schwerer zu verstehen. Wenn Sie mit Sprachen wie C beginnen, kommen Sie auch näher an die Hardware heran und beschäftigen sich mit Problemen der Speicherzuweisung und Zeigern, die Sie verstehen müssen, aber in Sprachen wie Java / C # nicht wirklich verwenden können. Es ist wirklich wertvoll, in der Schule dem ausgesetzt zu sein, unabhängig davon, ob es an erster oder zweiter Stelle steht.

FWIW, es wird sich irgendwann ändern. Als ich in die Schule kam, lernten wir in Pascal und PL / 1. Wir haben C erst im fortgeschrittenen Sprachkurs erreicht (das datiert mich). Ich habe Java erst in der Graduiertenschule gelernt - es war noch nicht erfunden worden!

Tvanfosson
quelle
+1 - eine Art Paradox der Absicht dort ... "abstrakter und schwerer zu verstehen" :)
10
@Spacemoses - nicht wirklich, je abstrakter etwas ist, desto einfacher ist die Diskussion, aber desto schwieriger ist es, die Realität dessen zu erfassen, was diskutiert wird.
stimmte zu, ich verstehe deinen Standpunkt jetzt.
ses011
12

Objektorientierte Programmierung ist eine Sammlung von prozeduralen Schnipsel auf organisierte Weise. Ich denke, die Lektion, die Sie lernen, ist, dass objektorientierte Methoden zur Aufrechterhaltung der Organisation und Wartbarkeit beitragen. Es gibt viele Programmierer, die diese Unterscheidung nicht treffen können und behaupten, ihre Programme seien objektorientiert, wenn sie prozeduraler sind.

ses011
quelle
3
aber Funktionen + Zustand = Objekte
Dan D.
4
Die Objektorientierung erschwert die Wartung häufig erheblich, da dadurch die Codebasis aufgeblasen wird. Java-basierte Systeme sind aufgrund der in dieser Community anzutreffenden OO-Reinheit und Designmusterentzündung ein Albtraum.
Bit-Twiddler
1
"In dieser Community gefundene Entwurfsmuster" - klingt nach einem persönlichen Problem in der "Java-Community", wenn dies Ihre Haltung ist.
ses011
1
@ Dan D: Objektorientierung ist viel mehr als das Kombinieren von Funktionen und Status in einem Objekt ...
Marjan Venema
4
@Spacemoses: Ich habe ein Problem mit einer Entwicklergemeinschaft, die das KISS-Prinzip nicht akzeptiert. Die beste Lösung für ein Problem ist oft die einfachste Lösung.
Bit-Twiddler
11

Das tust du nicht.

Wir haben zuerst die funktionale Programmierung mit Schema gelernt . Dann gingen wir zu prozedural, dann zu OOP und dann zu deklarativer Programmierung über. Und ob Sie es glauben oder nicht, obwohl ich bereits mit Programmieren vertraut war, denke ich, dass es auch für andere einfacher war: weil FP wie Mathe ist! Sie kennen also die Grundlagen bereits.

Ich habe dies viele Male mit mir selbst diskutiert und bin letztendlich zu dem Schluss gekommen, dass es wirklich davon abhängt, wie gut Ihr Lehrer Ihnen die Konzepte beibringt.

Es gibt keine einzige Antwort, weil:

  • Beginnen Sie mit etwas Prozeduralem wie C (oder sogar Assembly), da Sie lernen, wie Computer wirklich funktionieren

  • Mit etwas objektorientiertem Java zu beginnen, könnte eine gute Wahl sein, da es relativ einfach zu erlernen und OOP auf das wirkliche Leben anzuwenden ist und weil es Ihnen das ** Formen beibringt

  • Mit funktionaler Programmierung wie Scheme zu beginnen, könnte eine gute Wahl sein, da Sie lernen, abstrakter zu denken (in Form von Funktionen anstelle von Variablen), was Sie letztendlich zu einem besseren Programmierer macht

Wenn Ihr Lehrer es nicht gut unterrichtet, spielt es keine Rolle, womit Sie beginnen. sie werden so ziemlich gleich ausfallen.

user541686
quelle
4
+1 Knall an und ich kann nicht glauben, dass ich durch so viele schlechte Antworten scrollen musste, um es zu finden!
jk.
Ich hatte tatsächlich eine Weile Probleme, mathematische Funktionen zu verstehen, weil ich zuerst etwas Codierung gelernt hatte, und das Konzept einer Funktion, die "ist" statt "Dinge zu tun", verwirrte mich. : 3
StarWeaver
6

Eine Sprache kann objektorientiert sein wie C ++, Java oder C #. Und Sie können mit diesen Sprachen beginnen. Aber der Punkt ist, dass Sie selbst mit diesen OO-Sprachen zuerst die prozedurale Programmierung und dann OOP lernen müssen. Ich denke, dasselbe hast du deinem Bruder angetan.

Gulshan
quelle
3
+1 Genau. Jede OOP-Methode ist ein kurzes Verfahrensprogramm. Wenn Sie nicht wissen , wie die kleinen Stücke kombinieren (Typen, Literalwerte, Variablen, Operatoren, =Zuordnung, if, forusw.) in größere Stücke (Methoden), wie kann man je verstehen OOP hoffen. Wie bei den meisten Fähigkeiten können Sie, wenn Sie sehr klug, motiviert und / oder Zugang zu Einzelunterricht haben, mehrere verwandte Themen gleichzeitig lernen.
David Harkness
3

Die prozedurale Programmierung, zumindest in einer Sprache wie C, reduziert die Programmierung auf eine sehr einfache Praxis: Algorithmen und Datenstrukturen und auf einer Abstraktionsebene, die ein glückliches Medium zwischen menschlich verständlichem Quellcode und Assembler-Code ist.

Auf diese Weise können die Schüler gleichzeitig ein bisschen Wissenschaft (Algorithmen, Datenstrukturen) und ein bisschen Technik (Quell-> Objekt-> Maschinenkompilierung, von-neuman (wahrscheinliche) Architektur) lernen.

OOP führt über C ++ / obj-C ein Code-Organisationsmuster ein, das nur noch zu lernen ist. Dies könnte das Erlernen der oben genannten Konzepte etwas erschweren.

OOP über Java (unter anderem) geht noch weiter, indem Hardware und Umgebung abstrahiert werden. Jetzt ist das zugrunde liegende Produkt kein Maschinencode, sondern eine Art Vermittler, der nicht verrät, wie die zugrunde liegende Hardware funktioniert. Der Effekt ist jedoch, dass sich der Schüler auf Code-Organisationsmuster konzentrieren kann.

Am Ende denke ich, dass es ein Kompromiss zwischen dem Erlernen der Funktionsweise der Hardware oder dem Erlernen eines Code-Organisationsmusters ist. Was wichtiger ist, weiß ich nicht wirklich. Die reale Welt erfordert zumindest teilweise Kenntnisse über beide.

Ich gehe davon aus, dass ein Bachelor-Programm, das mit prozeduraler Programmierung auf niedriger Ebene beginnt, wahrscheinlich Informatiker / Computeringenieure hervorbringt, und ein Programm, das mit übergeordneten Konzepten beginnt, Software-Ingenieure / Entwickler / Programmierer hervorbringt.

Curtis Batt
quelle
3

Der Mut von OOP-Objekten besteht aus prozeduraler Programmierung.

Wenn Sie keine for-Schleife ausführen können, verwenden Sie Zeiger ordnungsgemäß, deklarieren Sie Ihre Typen und Funktionen, und Sie können keine Schnittstellen für Ihre Klassen schreiben, geschweige denn, dass die Innenseiten etwas tun, das sich lohnt.

Sie würden OOP sowieso nicht in einer Einführungsklasse lernen, es wäre nur Syntax - ein direktes Einspringen in OOP würde das Erfassen der Dinge (zunächst) komplizierter machen als es bereits ist.

Bei OOP geht es nicht darum, Syntax für Klassenklassen zu deklarieren, sondern um Datenstrukturen, Entwurfsmuster, Polymorphismus, Vererbung und Komposition.

Um all diese Dinge zu tun, die Sie benötigen, um die prozedurale Programmierung zu kennen, was in C leicht zu bewerkstelligen ist. Sie können fast alles, was Sie mit C lernen, auf Java oder C ++ übertragen. Möglicherweise müssen Sie einige Dinge überdenken, die Sie in C für selbstverständlich gehalten haben, ABER ... Sie müssen die Grammatik kennen (wo Sie sich in Einleitung C befinden), um Sätze zu schreiben (müssen Prozeduren schreiben, um Schnittstellen zu definieren), dann Absätze (müssen Datenstrukturen kennen) und dann einige Entwurfsmuster (Tragödie, Komödie, fehlerhaft) kennen Held, wie sie interagieren und wann sie nicht verwendet werden sollen), bevor Sie komplette Romane schreiben können (komplettes OOP-System).

: Wenn ich Sie wäre , würde ich einige der folgenden Bücher abholen der Programmiersprache C , der Programmiersprache Java , Design Patterns , Gang of Four und Muster Schlüpfen . Ich würde definitiv eine Kopie von The C Programming Language abholen, wenn ich C / C ++ ernst nehmen würde.

Wenn Sie nur den ganzen Weg Java gehen möchten (und dies für die $ -ID tun), lesen Sie einige Bücher über Java-Entwurfsmuster und die Verwendung von Java mit den Apache- und Tomcat-Webservern sowie einige Bücher über die SQL-Datenbankprogrammierung. Java tritt so viel in den Arsch, es tut mir leid, aber PHP hat in der Vergangenheit unzählige Sicherheitslücken, die es genauso nervig machen wie Windows, Ihren Server nicht zu verwurzeln oder SQL-Datenbanken einzuschleusen.

Sie sollten sich auch die Zeit nehmen, um SQL zu lernen. Oracle MySQL Postgresql und MSSQL haben viele Gemeinsamkeiten in Bezug auf die Syntax. Wenn ich mich jedoch nur für das Lernen entscheiden müsste, wählen Sie Postgresql, nur weil es BSD-lizenziert ist, anstatt GPL (Sie sollten einen Vergleich nachschlagen und Kontrast auch bei GPL / BSD-Lizenzen)

Hategrin
quelle
2

Ich muss sagen, dass der meiste Code, der in objektorientierten Sprachen wie Java geschrieben wurde, nicht wirklich objektorientiert ist. Es ist schwierig, die Ideen hinter OO wirklich zu verstehen, daher ist der angeblich OO-Code eigentlich meistens prozedural.

Dies ist jedoch nichts wirklich Falsches daran, prozeduralen Code in Java zu schreiben. Ja, OO hat Vorteile, aber ich möchte einen beginnenden Programmierer nicht damit verwechseln. Auf dieser Basis sehe ich nichts Falsches daran, Java zu unterrichten. Erwarten Sie kein echtes OO, aber es funktioniert.

Java verbirgt jedoch viele Details auf niedriger Ebene darüber, was im Computer vor sich geht. C lässt diese viel mehr im Freien. Man kann gut behaupten, dass die Schüler lernen sollten, wie diese Details auf niedriger Ebene funktionieren, bevor sie eine Sprache verwenden, die sich um diese kümmert. Sie können aber auch geltend machen, dass Sie diese Details ignorieren und später erfahren sollten.

Winston Ewert
quelle
2

Einige andere haben bereits zu diesem Thema geantwortet, aber ich denke, es lohnt sich, dies expliziter zu formulieren.

Selbst wenn Sie anfangen, Programmieren mit einer objektorientierten Sprache wie Java zu lernen, lernen Sie zunächst prozedurale Programmiertechniken, bevor Sie zu den OO-Konzepten gelangen . Wenn Sie einem neuen Programmierer Java beibringen, führen Sie ihn nicht zuerst in Objekte und Klassen ein, sondern in Anweisungen und Variablen. Wenn der Schüler in der Lage ist, viel über Objekte und Klassen zu lernen, verfügt er bereits über mindestens die Grundlagen der prozeduralen Programmierung.

Zumindest müssen Sie also die prozedurale Programmierung in Java und dann die objektorientierte Programmierung in Java lernen. Ob Sie ein ganzes Jahr mit prozeduraler Programmierung verbringen oder nur die ersten Wochen des Programmierkurses verbringen und ob Sie eine andere Sprache dafür verwenden oder nicht, ist nur ein Streit über die Details.

Ben
quelle
0

Um es ganz klar zu sagen, ich denke, der Schwung dafür kommt hauptsächlich von alten Programmierern, die sich alte Zeiten wünschen.

Bevor sagen etwas anderes, ich absolut nicht halten jede Konkurrenzsituation für ältere Programmierer, viele viele von ihnen einfach erstaunlich qualifiziert. Leider sind manchmal diejenigen, die es nicht sind, die angeschwemmt werden und nie wirklich gut programmieren konnten, Professoren geworden, wenn sie es in der "realen Welt" nicht hacken können. (Nicht alle Professoren auch ... aber ... VIELE)

OOP ist weder der heilige Gral der Programmierung, als die es sich herausstellt, noch ist die prozedurale Programmierung ein Relikt. Es ist gut, zumindest einige von beiden zu kennen, aber ich denke, dass die allgemeine Praxis dessen, was als prozedurale Programmierung gelehrt wird, eine enorme Zeit- und Arbeitsverschwendung darstellt. Wir müssen das Programmieren im akademischen Bereich lernen , nicht nur den einen oder anderen Stil. Ich schreibe dem eine Menge schrecklichen Codes und Missverständnisse zu, einschließlich meines eigenen.

Garet Claborn
quelle
2
Ich hatte einen Lehrer, der C von '89 verwendete, aber es war für einen Mikrochip, der c '99 erwartete. Dann gab es diesen anderen Lehrer, der 'c ++' benutzte, aber ohne die STL oder Vorlagen. Könnte auch Strukturen mit Funktionszeigern gewesen sein.
Ape-inago
1
Um fair zu sein, sind die STL und Vorlagen im Allgemeinen keine einführenden C ++ - Themen. Das grundlegende Ziel eines 101-stufigen Programmierkurses besteht darin, zu lehren, wie eine gut strukturierte sequentielle, bedingte und iterative Logik innerhalb der Einschränkungen einer bestimmten Syntax erstellt wird. Alle anderen Sprachmerkmale sind lediglich syntaktischer Zucker, mit dem die grundlegenden Kontrollstrukturen gruppiert und an Daten gebunden werden können.
Bit-Twiddler
autsch zwei downvotes. sah, dass einer kam = P seltsam für mich, da die Meinung ursprünglich von einem älteren Programmierer kam, der mir half, mich von schlechtem Unterricht zu erholen. @Ape: Der Leiter unserer CS-Abteilung hat bereits 2004 versucht, uns COBOL für ein Jahr beizubringen. XD (die geringste meiner Sorgen wegen seines Unterrichtsstils macht mir nichts aus, da ich an einigen Verkaufsstellen arbeiten kann Maschinen lol aber geeze ... ernsthaft?)
Garet Claborn
1
@ Bit-Twiddler - Ja, Sir, sehr seltsam. Ich verlasse mich in dieser Meinung nicht sehr auf diese Erfahrung, aber ich habe mir andere Orte angesehen. Ich liebe beide Programmierstile sehr und denke, sie sollten sie zusammen unterrichten. Ich finde nur, dass die noch etwas jüngeren Professoren nicht den gleichen Prozentsatz an Eifer in dieser Angelegenheit haben. IMO das ist eine gute Sache. Ich verstehe, dass einige denken, dass zuerst das Verfahren wichtig ist.
Garet Claborn
1
@ Bit-Twiddler: Ja, aber es war kein Einführungskurs. Es war ein Fortgeschrittenenkurs im 4. Jahr für Datenbankdesign, und wir sollten C ++ verwenden. Es fühlte sich einfach falsch an, nachdem ich C ++ mit früheren Kursen auf einem so hohen Niveau erlebt hatte.
Ape-inago
0

Zwei Gründe für mich: Eine OO-Programmierung löste Probleme der prozeduralen Programmierung. Wenn Sie also eine prozedurale Codierung und dann dieselben Dinge in OO schreiben, können Sie den Unterschied leichter verstehen.

Hier gibt es noch ein zusätzliches Element: Die beiden Ansätze zur Schulung zu Programmierthemen. Man kann mit so niedrig wie möglich beginnen (Beispiel Assembly, an vielen Stellen prozedural, einige andere beginnen mit Schaltkreisen) und dann nach oben gehen (in Richtung OO / Functional / Managed). Der andere Ansatz besteht darin, von der physischen Welt (z. B. Browser / Windows 7 usw.) aus zu beginnen und dann tiefer zu gehen. Jeder Ansatz hat Vor- und Nachteile. Ihre Universität hat sich für die erste entschieden und mit dem Verfahren begonnen. Es könnte eine Begründung geben oder sie haben einfach jemand anderen kopiert :-).

Dimitrios Mistriotis
quelle
1
"Die OO-Programmierung löste Probleme der prozeduralen Programmierung." Das war das Ziel, aber OO hat so viele Probleme geschaffen, wie es gelöst hat.
Bit-Twiddler
@ Bit-Twiddler: Sehr große Geschichte. Wenn wir uns auf den pädagogischen Aspekt konzentrieren (oder ihn eingrenzen), macht es einen Fall: Was wir hatten, wie wir es besser gemacht haben: das (Sie streiten darüber, ob es besser ist oder nicht)
Dimitrios Mistriotis
0

Es gibt keinen anderen Grund als die institutionelle Trägheit. Schauen Sie sich die CMU an, sie haben ihren gesamten OOP-Lehrplan verworfen und ihn durch funktionale Programmierung ersetzt. Die Antwort auf Ihre Frage lautet also erneut, dass die Administratoren der Schule, die Sie besuchen, eine willkürliche Entscheidung treffen. Für den Fall, dass sich jemand über die tatsächlichen Aussagen wundert, die ich hier gemacht habe, ist der Beitrag über die Änderung des Lehrplans an der CMU durch einen Professor / Administrator: Unterrichten von FP für Studienanfänger .

davidk01
quelle
1
-1 irreführend - während ich einen Thread (über die Google-Suche) gesehen habe, in dem behauptet wurde, die CMU habe OOP aus ihrem CS-Lehrplan im ersten Jahr gestrichen und durch funktionale Programmierung ersetzt, beginnt der offizielle CMU-Lehrplan mit der Programmiersprache Alice, die objekt- orientiert [siehe enr-apps.as.cmu.edu/assets/SOC/CS_SPRING.htm]
Steven A. Lowe
1
@ davidk01: (1) sachlich falsche Aussage in der Antwort. (2) "Alice ist ein frei verfügbares Lehrmittel, das entwickelt wurde, um einen Schüler zum ersten Mal mit objektorientierter Programmierung vertraut zu machen" von alice.org
Steven A. Lowe
2
@Steven A. Lowe: Direkt aus dem Maul des Pferdes: "Objektorientierte Programmierung wird vollständig aus dem Einführungslehrplan gestrichen, da sie von Natur aus sowohl antimodular als auch antiparallel ist und daher für einen modernen CS-Lehrplan ungeeignet ist. Ein neuer Kurs zur objektorientierten Entwurfsmethodik wird im zweiten Studienjahr für diejenigen Studenten angeboten, die dieses Thema studieren möchten. " - Unterrichten von FP für Erstsemester
Davidk01
1
@ davidk01: ausgezeichneter Link, danke. Aus dem in diesem Artikel zitierten Ausschusspapier: "Obwohl die objektorientierte Programmierung (in ihren unzähligen Formen) ein dominierendes Thema in der industriellen Softwareentwicklung bleibt, führt die Verwendung objektorientierter Sprachen wie Java auf der Einführungsebene zu erheblicher Komplexität und Ablenkung von den Kernzielen auf der Einführungsebene . Es scheint vorzuziehen, später im Lehrplan eine umfassendere Beschreibung der OO-Entwurfs- und Implementierungsmethode zu geben, um eine konzentriertere Konzentration auf die Grundlagen auf der Einführungsebene zu ermöglichen. " [Hervorhebung von mir] ...
Steven A. Lowe
1
@ davidk01: Ich bin froh zuzustimmen, nicht zuzustimmen. Nennen Sie mich pedantisch, wenn Sie möchten, aber für mich gibt es einen signifikanten Unterschied zwischen der Änderung des Einführungsschwerpunkts und dem "Auswerfen des gesamten OOP-Lehrplans". Ich würde es kaum als "tiefgreifende Veränderung" bezeichnen, den Umfang der Einführungskurse zu reduzieren ;-)
Steven A. Lowe