Zum Inhalt springen

Java als 1. Programmiersprache??


Empfohlene Beiträge

Geschrieben
In Java kannst du aber nichts ohne eine Klasse programmieren, und somit bist du im Delemma, das du die strukturierte Programmierung nicht vor OOP lernen kannst.
Nein, nicht wirklich. Gerade zu Beginn lässt sich der gesamte OO-relevante Teil doch wunderbar "herausmocken".

Du erklräst den Anfängern, dass sie eine Klasse erstellen sollen, die eine Main-Methode enthält. Damit können sie anfangen und das Programm starten. Wieso es eine Klasse geben muss und wieso die Einstiegsmethode gerade die Signatur "public void main(String[] args)" haben muss kannst du wunderbar erklären als "Da gehen wir später drauf ein, für den Moment braucht ihr einfach nur zu wissen, dass es das geben muss und so heissen muss".

Da sehe ich überhaupt kein Dilemma.

Geschrieben (bearbeitet)

Das mit der generellen Methoden Definition für den Einstieg hat man ja analog unter C. Wobei, das hatte ich in dem anderen Thread auch schon ausführlich dargelegt, letztendlich jedet Methoden-Code eine Prozedur / Funktion ist und ich somit dort letztendlich prozedural arbeite, wobei das Scoping objektbezogen ist, d.h. ich brauche innerhalb der OOP letztendlich prozeduralen Code, sprich erst einmal prozedural lernen und dann darauf die OOP erweitern. Aber ich möchte nicht den gleichen Inhalt wieder holen, darum siehe den verlinkten Thread

Bearbeitet von flashpixx
Geschrieben
Doch klar. Wenn du einem Neuling erklärst, welche lexikalischen Elemente es gibt, welche Datentypen erstmal wichtig sind, Operatoren und vielleicht die Standard-Ausgabe dazu, dann kannst du schon unheimlich viel damit anfangen. Alles Weitere kann getrost vernachlässigt werden. Allein die Deklaration der main-Methode oder das Konstrukt der Standardausgabe beschreiben zu können erfordert Kenntnisse über (Zugriffs)modifizierer, Rückgabewerte, Parametrisierung (eventuell Überladung) und Streams. Wählt man keine verständliche und nachvollziehbare Step-by-Step Methodik beim Vermitteln, würde das jeden Anfänger erschlagen, da geb ich dir Recht. War das der Punkt der dich stört?

Gerade bei Java kommt es sicherlich für Anfänger auf eine nachvollziehbare Step-by-Step-Methodik an, da geb ich dir Recht.

Wenn man in Java aber 100 oder gar 300 Zeilen ohne OOP schreibt, hebelt man den Sinn, der hinter Java steckt aber aus und gewöhnt sich vielleicht (ohne Anleitung sogar sehr wahrscheinlich) einen falschen Stil an.

Und ganz ohne Klassen geht es auch im einfachsten Programm nicht:


class HalloWorld
{
public static void main(String[] args)
{
System.out.println("Hallo World!");
}
}
[/PHP]

Einigen wir uns darauf, das Java super ist, ich aber anderer Meinung ;)

Geschrieben

Ich persönlich halte zwar nichts davon, aber es gibt diverse Hilfsprogramme, die es ermöglichen in Java programmieren zu lernen, ohne sofort den gesamten objektorientierten Überbau zu haben.

Zum Beispiel Greenfoot.

Die Komplexität lässt sich damit langsam steigern.

Aber wie gesagt, ich mags nicht. Bei uns haben sie mit dem Hamster (der ist ähnlich wie Greenfoot) angefangen und danach alles nur in Eclipse gemacht. Die Folge war, dass ich damals ohne IDE-Unterstützung gar nicht Java programmieren konnte. Wir machten auch vieles, dass wir dann erstmal ohne zu verstehen so akzeptieren mussten (nach dem Motto "Schluck das, vielleicht verstehst Du es irgendwann von allein, ansonsten lernst Du es eben auswendig"). Ich hätte aber lieber alles von Grund auf gelernt und erst Verstandenes angewendet.

Mit C lässt sich das bestimmt besser machen. Tatsächlich haben wir C und Java parallel gelernt (erst später Assembler). Mit C kam ich damals wesentlich besser klar.

Geschrieben
Mit C lässt sich das bestimmt besser machen.
Der Vergleich hinkt gewaltig. C und moderne Sprache (wie z.B. Java aber auch C# oder andere) lassen sich nicht 1:1 vergleichen. Genauso wenig wie Äpfel und Birnen.

Was hauptsächlich Tatsache geschuldet ist, dass reines C deutlich weniger komplex ist als Java. Man muss sich nicht mit Objektorientierung beschäftigen sondern kann ein Makroassemblerkommando an das nächste schreiben. Ja, man sieht schneller Erfolge und glaubt schneller zu einem Ergebnis zu kommen, wirklich besser lernt man das ganze aber nicht - im Gegenteil.

Der Maßstab darf eben nicht sein "Wann kann ich ein lauffähiges Programm schreiben" sondern "wann kann ich ein sinnvolles und gut strukturiertes Programm schreiben".

Geschrieben
Der Vergleich hinkt gewaltig. C und moderne Sprache (wie z.B. Java aber auch C# oder andere) lassen sich nicht 1:1 vergleichen. Genauso wenig wie Äpfel und Birnen.

Was hauptsächlich Tatsache geschuldet ist, dass reines C deutlich weniger komplex ist als Java. Man muss sich nicht mit Objektorientierung beschäftigen sondern kann ein Makroassemblerkommando an das nächste schreiben. Ja, man sieht schneller Erfolge und glaubt schneller zu einem Ergebnis zu kommen, wirklich besser lernt man das ganze aber nicht - im Gegenteil.

Der Maßstab darf eben nicht sein "Wann kann ich ein lauffähiges Programm schreiben" sondern "wann kann ich ein sinnvolles und gut strukturiertes Programm schreiben".

Schreiben jetzt alle Programmierer, die nicht OOP verwenden, schlechte Programme ?!?

Ich habe schon viele Programme geschrieben, die sinnvoll sind, gut strukturiert sind und meiner Firma eine Menge Ärger erspart haben. Und das ganz ohne OOP !!!

Geschrieben (bearbeitet)

@Perdian: Bitte den Kontext beachten:

Ich hätte aber lieber alles von Grund auf gelernt und erst Verstandenes angewendet.

Der Maßstab darf eben nicht sein "Wann kann ich ein lauffähiges Programm schreiben"

Das ist nicht mein Maßstab. Ich konnte in Java schnell lauffähige Programme schreiben, ohne die Grundlagen verstanden zu haben. Mir geht es darum, dass ich persönlich nicht gut mit Java anfangen konnte, weil man mir nur die Hälfte erklärt hat und der Rest "eben einfach so ist". Ich beschuldige damit nicht die Sprache an sich (mittlerweile finde ich Java großartig), sondern meine Lehrer.

In C dagegen wurden selbst die kleinsten Details erklärt. Weil es lowlevel ist, geht das vermutlich auch einfacher. Nicht mehr habe ich gesagt. Und doch, ich darf Java und C vergleichen, weil mein Vergleich eben gerade die Unterschiede in Low- und Highlevelsprachen in meinen Anfangstagen herausstellen soll. Die Sprachen an sich habe ich damit nicht bewertet.

Wieso es eine Klasse geben muss und wieso die Einstiegsmethode gerade die Signatur "public void main(String[] args)" haben muss kannst du wunderbar erklären als "Da gehen wir später drauf ein, für den Moment braucht ihr einfach nur zu wissen, dass es das geben muss und so heissen muss".
Genau das fand ich nicht gut. Und bevor hier wieder eine Riesendiskussion losgeht: Ich sage nicht, dass es für alle der falsche Weg ist. Bearbeitet von Ezra

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...