Kommt drauf an, wer die Fragen gestellt hat. Wenn es der Prof war, dann wird Dir hier kaum einer helfen können - denn hier ist die harte Realität
Hier mein Versuch (ich habe mit prozeduralen wie auch objektorientierten Sprachen zu tun):
Die Pioniere der EDV haben mathematisch geprägte Sprachen wie zb. PLANKALKÜL genutzt. Zumindest in ihren Gedanken, ein PLANKALKÜL-Compiler für die Zuse Z3 ist mir nicht bekannt.
Danach kam Assembler sowie prozedurale Sprachen wie C, COBOL, BASIC, FORTRAN... welche mit etwas Drumherum den Kram flink in Assembler kompilieren konnten und den Programmierer von der Maschine abschirmten (aussgenommen C vielleicht).
Wer "richtig" Objektorientiert meint, der muss sich mit Sprachen wie Smalltalk und Lisp auseinandersetzen. Diese genannten Sprachen (und andere Sprachen, die vor 20-40 Jahren unter dem Begriff "Objektorientiert" segelten) lösten aber nur an Hochschulen einen Orgasmus aus - die dringlichsten Probleme der damaligen Welt ("mit welchem Winkel muss eine in Washington abgefeuerte IBM-Rakete fliegen damit sie mit ihrem Atomsprengkopf genau über Moskau explodiert") wurden weiterhin mit FORTRAN oder BASIC gelöst.
1985 kam dann Bjarne Stroustrup von AT&T (da wo schon C entwickelt wurde) und dachte sich, dass in den OOP-Konzepten ja doch schon was sinnvolles drinsteckt und erfand C++ welches noch schrecklicher als C war, aber zumindest eine Brücke in die Neuzeut brachte. Ich hab 1989 (oder so) Herrn Stroustrup auf einem Softwaremeeting getroffen und in der Diskussion meinte er in etwa zu mir "Naja, das Konstrukt ist so dolle nicht aber man kann es schön parallel zum bisherigen C Source laufen lassen und nach und nach alles umstellen".
Er hat ja recht. C++ ist so doof zu C doof ist zu Assembler, aber man kann damit recht schnell arbeiten ohne alles Wissen zu verlieren, was man als "Prozedualer Programmierer" in seiner Karriere gelernt hat - im Gegensatz Smalltalk, Lisp ....
Ja - man muss schon mal in die Historie der Programmiersprachen eintauchen um zu verstehen warum OOP entstanden ist.
Früher waren die Programme ja recht "offen" (wenn es in Programm "A" ein Label "machwas" gab dann könnte man von Programm "B" problemlos ein "GOTO machwas" setzen und landete statt in München plötzlich in Budapest). Also "erfanden" prozeduale Programmiersprachen sowas wie "Kapselung" (Sichtbarkeit von Variablen, Subroutinen und Prozeduren).
Ich hab diese Entwicklung in diversen Prozeduralen Sprachen (zb. MS-BASIC, REXX etc..) seit ca. 1980 mitgemacht. Erst wurden Subroutinen eingeführt deren interne Variablen man optional als "lokal" deklarieren konnte (also ein besseres GOSUB), dann wurden die dort deklarierten Variablen grundsätzlich lokal, dann gab es Records (TYPE etc..) und die Records wurden nach Klassen aufgebohrt bis plötzlich das olle MS-Basic ein Visual-Basic mit OOP-Elementen wurde.
Das ist alles parallel zu C++ gelaufen wo etliche Sprachfamilen plötzlich (naja, damals war Internet nicht so verbreitet und es dauerte 2-5 Jahre bis die neue Sau wirklich das Ende vom Dorf erreichte) ihre Zuneigung zu OOP entdeckten.
Zum Glück aber nur immer Schrittweise und (für heutige Zeiten) in großzügigen Releasezeiträumen von 1-2 Jahren.
"Richtiges" OOP gemäss Alan Kay ("Messages! Messages! Messages!") implementiert keine heute populäre Sprache (oder umgekehrt: wer es so strikt implementiert hat, ist heute bis auf wenige Inseln vergessen), prozedurale Sprachen wurden in Richtung OOP erweitert und aus dem damit gewonnenem Wissen wurden neue Sprachen wie Java entwickelt die zwar OOP Konzepte beinhalten aber auch einen starken prozeduralen Kern enthalten (wie zb. primitive Datentypen).
Bernd