OOP schlecht zum Anfangen?
-
Ich habe in der Uni genug Umgang mit absoluten Programmieranfängern und denen braucht man nicht mit OOP kommen. Beziehungsweise man tut ihnen damit keinen Gefallen. Gerade Programmierer verkennen völlig die gedankliche Komplexität von OOP-Ansätzen. Mit "natürlich" und "einfach" ist da nicht wirklich viel. Um's mal auf den Punkt zu bringen, Java überfordert erst mal alle Anfänger und auch nach einem Semester intensiven lernens kriegen es sehr viele nicht gebacken vernünftige Programme in Java zu schreiben. Werden die Leute aber mit z.B. Perl als erstes konfrontiert, verstehen sie es ziemlich schnell und schreiben auch brauchbare Skripte damit. Und Perl ist sicherlich nicht die Sprache mit der "schönsten" Syntax. Aber man programmiert damit meistens prozedural und hinter diesem Paradigma steckt wenig dahinter. Der Gegensatz dazu ist OOP mit sehr viel Konzepten, die dahinter stehen und die Komplexität entsprechend hochtreiben. Herrje, selbst abgefahrene Sachen wie Prolog fällt den Anfängern hier leichter.
Objekt-orientierte Systeme sind zum Bauen größerer Anwendungen eine absolute Wohltat und vergleichsweise geradezu ein Traum, aber sie sind auch komplex. Dagegen will "man" keine großen Anwendungen prozedural bauen, aber das Konzept dahinter ist furchtbar primitiv und einfach zu verstehen.
Sicher, wenn man frei weg von der Leber philosophiert sieht man viel WinAPI-Code und wenig OOP-Framework-Code und ist deswegen versucht ersteres als höllisch schwer und letzteres als furchtbar einfach zu sehen. Die Anfänger-Praxis sieht aber eben anders aus.
-
Ich habe in der Uni genug Umgang mit absoluten Programmieranfängern und denen braucht man nicht mit OOP kommen. Beziehungsweise man tut ihnen damit keinen Gefallen. Gerade Programmierer verkennen völlig die gedankliche Komplexität von OOP-Ansätzen. Mit "natürlich" und "einfach" ist da nicht wirklich viel. Um's mal auf den Punkt zu bringen, Java überfordert erst mal alle Anfänger und auch nach einem Semester intensiven lernens kriegen es sehr viele nicht gebacken vernünftige Programme in Java zu schreiben. Werden die Leute aber mit z.B. Perl als erstes konfrontiert, verstehen sie es ziemlich schnell und schreiben auch brauchbare Skripte damit. Und Perl ist sicherlich nicht die Sprache mit der "schönsten" Syntax. Aber man programmiert damit meistens prozedural und hinter diesem Paradigma steckt wenig dahinter. Der Gegensatz dazu ist OOP mit sehr viel Konzepten, die dahinter stehen und die Komplexität entsprechend hochtreiben. Herrje, selbst abgefahrene Sachen wie Prolog fällt den Anfängern hier leichter.
Objekt-orientierte Systeme sind zum Bauen größerer Anwendungen eine absolute Wohltat und vergleichsweise geradezu ein Traum, aber sie sind auch komplex. Dagegen will "man" keine großen Anwendungen prozedural bauen, aber das Konzept dahinter ist furchtbar primitiv und einfach zu verstehen.
Sicher, wenn man frei weg von der Leber philosophiert sieht man viel WinAPI-Code und wenig OOP-Framework-Code und ist deswegen versucht ersteres als höllisch schwer und letzteres als furchtbar einfach zu sehen. Die Anfänger-Praxis sieht aber eben anders aus.Und?
Die Anfänger im 1. Semester, die wirklich was machen wollen, sind auch dahinter OOP und die Programmier-Sprache verstehen zu wollen...
Ich kenne einige die nicht wirklich wollen und auch nur eine halbe Stunde investieren und dann sagen "mag nimma"....
Und andere die ziemlich schnell verstehen wie OOP funktioniert bzw. ein paar Stunden da sitzen und dann sagen "ach so!"...
Klar ist es einfacher prozedural zu programmieren aber wenn die gleich mit OOP durchstarten brauchen sie sich nachher nicht mit der Umstellung quälen, was meist der Fall ist...
-
Ich stimme minhem in allen Punkten voll und ganz zu!

Ich hab dieses Semester angefangen, Informatik zu studieren. Etwa 70% aus meinem Jahrgang hatten noch nie programmiert und dann gleich Java. Bei durchgängig allen Programmieranfängern (die ich kenne) dasselbe: keine Ahnung, wofür OOP gut ist, wie Klassen funktionieren und wie man irgendetwas anfangen soll. Dazu natürlich anfangs die Schwierigkeit, dass man ein Programm nur nach einer vorgegebenen Art aufbauen muss.
Java:class Main { public static void main( String[] args ) { } }Es ist wohl erstmal für niemanden verständlich, warum alles in class xxx gekaselt sein muss, die die Funktion main enthalten muss usw. Natürlich kann man das alles auswendig lernen, aber ich denke nicht, dass man dann wirklich die Bedeutung von Klassen begreift!
int main() { return 0; }Einem Programmieranfänger kann man wohl wirklich einfach erklären, dass ein Programm immer in der main-Funktion beginnt und Zeile für Zeile abarbeitet.
Und wie soll man den (von minhem angesprochenen) Segen der OOP erkennen, wenn man nie prozedural gearbeitet hat? Und die kleinen Progrämmchen, die man im ersten Semester schreiben muss, ließen sich imo ohne Klassen ne Ecke besser/schneller/sinnvoller schreiben

Mein Vorschlg wäre: Prozedural, Strukturen, Klassen

-
An der Uni werden keine Programmierer angelernt. Die einen wollen lernen und strengen sich an, die anderen wollen es offenbar nicht. Ich kenne Leute, die schließen ihr Studium ab ohne richtig programmieren zu können. Es kommt halt drauf an, wie man seine Prioritäten setzt.
Aber man sollte nicht den Lehrstoff an der Uni an die Lernbereitschaft der Studenten anpassen. Das wird in der Schule schon zur Genüge getan. Uni ist Uni. Entweder man schafft es oder eben nicht.
-
Ich finde, das sollte in der praktischen Informatik genauso sein wie in der Mathematik: Man fängt elementar an und steigert sich dann sehr schnell. OOP im Java-Stil bringt von Anfang an einen nicht vermittelbaren Wasserkopf mit. Mein Tipp: Pascal, Scheme, die üblichen Verdächtigen. OOP im 3. Semester oder so.
Große Ausnahme: Smalltalk für Ersties wär wohl auch OK, da dort Objektinteraktionen das elementare sind und es keinen überflüssigen Ballast gibt.
-
Wie hab ihr den Objektorientierung gelernt?
Bevor wir irgendwas programmiert haben, hat man uns erstmal Stundenlang erklärt was Objekte sind, wie man sie findet, wie sie richtig definiert werden, ...
(mit Übungen und ohne je eine Zeile Code geschrieben zu haben)Das Programmieren kam erst viel später.
-
Ich habe erst procedural programmieren gelernt. Erst viel später ging es mit einer einer OO-Sprache (C++) los. Dabei war das erste Thema, was Klassen und Objekte sind. Tja, habe da leider kein Wort verstanden. Nur Bahnhof. Vorallem ging mir immer durch den Kopf "Das kann ich auch procedural lösen!"
Erst in der Praxis nach ein paar Wochen intensiv C++ programmieren (8 Std. pro Tag) hat es KLICK gemacht. OO-Vorteile erscheinen meiner Meinung nach erst, wenn man es in der Praxis anwendet. Erzählen kann mir jemand viel.
-
Bei mir war's ähnlich. Ich hab das grundlegende Zeugs wie Variablen, Schleifen, Funktionen usw. mit VB gelernt. Auf'm Gymnasium haben sie uns dann Java beigebracht, aber meine erstens Programme waren alles andere als OOP^^ Ich brauchte auch ne Weile, bis ich die Geschichte gerafft habe.
-
Badestrand schrieb:
...
class Main { public static void main( String[] args ) { } }Es ist wohl erstmal für niemanden verständlich, warum alles in class xxx gekaselt sein muss, die die Funktion main enthalten muss ...
Naja, das Unterbringen von main() ist aber wohl auch das unwichtigste Thema beim Lernen einer Programmiersprache bzw. von OOP.
Ob OO ein guer Einstieg in die Programmierung ist, weiß ich nicht .... ich habe es auch erst nachträglich gelernt (aber wer weiß: Vielleicht wäre ich heute besser, wenn ich es von vorneherein gelernt hätte ?).
Auf jeden Fall sollte man mit der Analyse eine Problems und nicht mit der Umsetzungstechnik anfangen. Und bei der Analyse kann man (ein geeignetes Beispiel vorausgesetzt) durchaus sinnvoll mit "Objekten" anfangen. Wenn man dann seine Klasse modelliert hat, ist es doch schön, sie im Quellcode wiederzufinden und wie man sie dann aus einem main() heraus ansteuert, kann man durchaus dem Lernenden als "Isso-Wissen" zumuten.BTW: Ich halte den "alles-in-Klassen-Ansatz" von Java für stark überschätzt .. sowohl von seinen Befürwortern als auch von seinen Gegnern.
Gruß,
Simon2.
-
LOLZ³ schrieb:
Aber man sollte nicht den Lehrstoff an der Uni an die Lernbereitschaft der Studenten anpassen. Das wird in der Schule schon zur Genüge getan. Uni ist Uni. Entweder man schafft es oder eben nicht.
Das sehe ich auch so.
Wer sich für sein Studiengebiet interessiert, investiert einfach genug Zeit, bis er kann, was gefordert ist. Die anderen brechen das Studium ja eh ab: Egal, wie sehr man die Anforderungen runtersetzt. Sooo schwer ist das Informatikstudium auch jetzt nicht, ich würde sogar sagen, dass es eher leicht ist.
Und Interesse am Fach kann man wohl durchaus von den Leuten erwarten, die am Schluss einen entsprechenden Abschluss bekommen sollen, oder etwas nicht?
-
Badestrand schrieb:
class Main { public static void main( String[] args ) { } }Es ist wohl erstmal für niemanden verständlich, warum alles in class xxx gekaselt sein muss, die die Funktion main enthalten muss usw. Natürlich kann man das alles auswendig lernen, aber ich denke nicht, dass man dann wirklich die Bedeutung von Klassen begreift!
int main() { return 0; }Einem Programmieranfänger kann man wohl wirklich einfach erklären, dass ein Programm immer in der main-Funktion beginnt und Zeile für Zeile abarbeitet.
Naja, ich hab vor C BASIC programmiert. Wozu eine Main-Funktion? Es war mir völlig unverständlich, wieso ich da erstmal 'ne Funktion schreiben muss. Natürlich kann man das alles auswendig lernen.
-
Badestrand schrieb:
Ich hab dieses Semester angefangen, Informatik zu studieren. Etwa 70% aus meinem Jahrgang hatten noch nie programmiert...
echt? wie kommen die dann auf informatik?
ich dachte immer, der durchschnittliche info-studie hat schon die eine oder andere programmiererfahrung gemacht, fand dann alles ganz toll und hat sich aus dem grund für informatik entschieden...
-
net schrieb:
Badestrand schrieb:
Ich hab dieses Semester angefangen, Informatik zu studieren. Etwa 70% aus meinem Jahrgang hatten noch nie programmiert...
echt? wie kommen die dann auf informatik?
ich dachte immer, der durchschnittliche info-studie hat schon die eine oder andere programmiererfahrung gemacht, fand dann alles ganz toll und hat sich aus dem grund für informatik entschieden...Von den Studienanfängern in Informatik brechen auch etwa 65% irgendwann das Studium ab. Es wäre interessant, ob es da eine gewisse Korrelation gibt.
-
Na gut, das Beispiel war nicht gerade berauschend... Es war sogar schlecht... Wollte damit eigentlich sagen, dass (ich kann ja auch nur von der Uni Kassel sprechen) den Studenten gar nicht den Nutzen von Klassen kennenlernen.. Und der Anwendungsbereich von Informatik ist schließlich groß, also es auch gut sein, dass man (kleine) Systeme ohne Klassen programmieren muss. Obwohl Java meines Wissens ja auch für viele kleine Geräte/Systeme zur Verfügung steht.
net schrieb:
echt? wie kommen die dann auf informatik?
Naja, diese 70% sind so, dass die gerne am PC sitzen und deshalb Info studieren wollen, wir haben aber auch ne hohe Durchfallquote (nach Statistik)^^ Immerhin haben einige davon schon ein bisschen HTML gemacht

Jedenfalls finde ich es schlecht, wie das programmieren vermittelt wird. Andererseits hat Kassel für den Studiengang Informatik auch nicht besonders gute Rankings

-
Also in der Brufsschule haben wir uns erst mit UML beschäftigt und den Einstieg haben wir dann über VBSCript gemacht. Das hat den Vorteil, dass man nicht den ganzen Overhead einer Programmiersprache hat, um OOP zu verstehen und anzuwenden.
-
Wenn man erst beim Programmieren begreift was Objekte sind hat man was wesentliches vorher nicht gemacht... die OOA.

Wer einmal ein kleines Problem mit der OOA in der Gruppe durch diskutiert und mit der UML dokumentiert hat, bekommt eine Vorstellung von Objekten ohne auch nur eine Zeile Code geschrieben zu haben.
-
Gregor schrieb:
net schrieb:
Badestrand schrieb:
Ich hab dieses Semester angefangen, Informatik zu studieren. Etwa 70% aus meinem Jahrgang hatten noch nie programmiert...
echt? wie kommen die dann auf informatik?
ich dachte immer, der durchschnittliche info-studie hat schon die eine oder andere programmiererfahrung gemacht, fand dann alles ganz toll und hat sich aus dem grund für informatik entschieden...Von den Studienanfängern in Informatik brechen auch etwa 65% irgendwann das Studium ab. Es wäre interessant, ob es da eine gewisse Korrelation gibt.
ich glaub nicht. das ist ja bei vielen technischen studiengängen so. die leute unterschätzen die stoffülle und das hohe mass an eigeninitiative, das man aufbringen muss, vergurken die ersten klausuren, kommen dann nicht mehr mit, sind völlig frustriert und haben schliesslich keinen bock mehr drauf...
-
net schrieb:
ich glaub nicht. das ist ja bei vielen technischen studiengängen so. die leute unterschätzen die stoffülle und das hohe mass an eigeninitiative, das man aufbringen muss, vergurken die ersten klausuren, kommen dann nicht mehr mit, sind völlig frustriert und haben schliesslich keinen bock mehr drauf...
Ja, ich stimme mit Dir insofern überein, dass viele das Studium deshalb abbrechen, weil sie zu schlecht informiert sind. Sie wissen nicht, was es heißt, zu studieren, sie kennen das Fach zu wenig usw..
Aber ich könnte mir durchaus vorstellen, dass gerade die Leute, die vorher schon programmieren, etwas besser bezüglich der Informatik informiert sind. Sie kennen zumindest Teilgebiete der Informatik, haben also eine etwas genauere Vorstellung vom Fach. Sie können somit auch mehr mit den Inhalten anfangen, mit denen Sie im Studium konfrontiert werden. Zudem haben sie auch schon vor dem Studium Eigeninitiative auf diesem Gebiet gezeigt.
-
Gregor schrieb:
Aber ich könnte mir durchaus vorstellen, dass gerade die Leute, die vorher schon programmieren, etwas besser bezüglich der Informatik informiert sind. Sie kennen zumindest Teilgebiete der Informatik, haben also eine etwas genauere Vorstellung vom Fach. Sie können somit auch mehr mit den Inhalten anfangen, mit denen Sie im Studium konfrontiert werden. Zudem haben sie auch schon vor dem Studium Eigeninitiative auf diesem Gebiet gezeigt.
Schätze auch, dass man mit guten Vorkenntnissen in Programmierung besser durchkommt, aber trotzdem gefährlich: Wenn man (gut) programmieren kann neigt man dazu, das Studium zu unterschätzen, den Teil an Mathe, Elektrotechnik usw. Es geht halt nicht ausschließlich ums Programmieren.
Mein Bruder z.B. hat auch Informatik angefangen (andere Uni, andere Zeit) und nach 1 Semester abgebrochen. Er hatte schon gute Vorkenntnisse und ne Menge Praxis in Delphi und hat anscheinend etwas falsches vom Studium erwartet. Tja, seitdem programmiert er nicht mehr...