(IDE) BlueJ wirklich geeignet für Einsteiger ?

irgendjemand

Top Contributor
nach dem ich immer wieder gelesen habe was es gerade mit BlueJ für probleme gibt hab ich mal versucht mich selbst damit auseinander zu setzen *ich persönlich bevorzuge Notepad2 und console*

also hab ich mir gedacht : frag mal google und guck dich auf der seite etwas um ...

und dann bin ich doch wirklich über das hier gefallen

4. Problems with Java (and BlueJ's answers)

Java is a reasonably clean language, but by no means free of problems for introductory teaching. For teachers, it is important to know those problems and to have a way to deal with them. Two of the problems most often reported in the literature (for example in [1] and [4]) are:

problems with the main function
problems with text I/O
The main function: The main function has to be written with the signature

public static void main (String[] args)

This causes several problems. Firstly, several concepts are used here which cannot be explained at this stage (static functions, arrays, void return types). So teachers have to use some hand-waiving ("just believe me and write it like this") and students feel frustrated. Secondly, this has nothing to do with object-orientation! The main function does not logically belong to any object. Thus, students start off with seeing an exception rather than a good example of object-orientation.

I/O: Text I/O, especially input, is not simple and causes regular problems. In addition, it forces students to deal with exceptions at a very early stage.

BlueJ solves both of these problems!

Because objects can be created interactively, and methods can be called interactively, there is no need for a main function. Students can write classes and call their methods without a need to have a main. And because parameters can be passed to interactive method calls and results are displayed, there is no immediate need for I/O. Students can write and test very sophisticated code without the need for any I/O operations!

als ich das gelesen habe bin ich vor lachen vom stuhl gefallen ... und wollte mal versuchen zu erklären warum ich genau das so lächerlich finde

laut diesem quote wäre es angeblich das problem von java selbst das sich anfänger oft mit "public static void main(String[])" und I/O-ops rumquälen ...

der grund für "main" wäre angeblich das dies 1) ein problem für lehrer wäre da sie diese zeile "so früh zu beginn der lernphase" nicht 100% erklären könnten und 2) das es angeblich nichts mit OOP zu tun hätte und daher ein schlechtes beispiel wäre ...

gut ... gegenfrage : warum soll es für lehrer so das problem sein ? JEDER sollte in der lage sein seinen schülern erstmal den inhalt dieser zeile zu erklären BEVOR es überhaupt ans programmieren geht ... das ist echt ein totschlagargument ...
und dessweiteren : hat nicht JEDE programmiersprache irgendwo einen fest definierten einstiegspunkt ?
bei java ist dieser nun mal als "main" mit dem parameter "String[]" , dem return-type "void" , der sichtbarkeit "public" und darüber hinaus im static-context zu definieren ... und WAS ist daran jetzt bitte der unterschied zum sehr viel komplexeren "int main(*was-auch-immer)" ? ich denke doch das es gerade in C deutlich schwieriger ist einem neuling die korrekten anwendungsfälle für die verschiedenen schreibweisen zu erklären als in java wo dies fest vorgeschrieben ist


dessweiteren finde ich es so lächerlich wie I/O scheinbar komplett unterschlagen wird ...
es ist zwar bestimmt schön bequem in irgendetwas graphischem rumzuklicken ... in irgendwelche felder irgendwelche werte für irgendwelche parameter einzugeben ... und dann das ganze "laufen zu lassen"
ich finde DAS hat noch weit weniger mit eigentlichem "java programming" zu tun als wenn man den "old-school" weg nimmt und erstmal locker mit nem editor und nem terminal anfängt ...


in meinen augen ist BlueJ also NICHT für scheinbar unfähige lehrer welche scheinbar zu faul wären ihren schülern java von grund auf zu erklären ... sondern eher VON ein paar stümpern die in der schule im info-unterricht gepennt haben und selbst genau diese probleme hatten und scheinbar immer noch haben ...

wenn ichs mal ganz krass auf die spitze treibe : es sollte einen grundsätzlichen boykott gegen BlueJ geben damit diese "phreaks" mal merken was sie da für einen absoluten SCHROTT zusammengekleistert haben ... und sollte für diese angeblichen "entwickler" mal ein anstoß sein selbst noch mal die schulbank zu drücken bei jemanden der java richtig gelernt hat ... am besten dierekt bei Sun/Oracle selbst ...


ihr könnte mich gerne eines besseren belehren ... mir auch geren vorteile , nachteile , persönliche kritik an mir und/oder BlueJ äußern ... aber bedenkt bitte eins : wäre es für uns alle nicht wenigstens ein klein wenig "besser" wenn es diesen schwachsinn NICHT geben würde und wir uns nicht immer wieder damit rumschlagen müssten ?

bin mal auf die reaktion gespannt
 

Antoras

Top Contributor
Ihr dreht euch im Kreis, was jetzt noch kommt sind nur Wiederholungen bereits besprochener Argumente.

[...] sondern nur eine nutztlose "Pseudosprache" beibringen.
Pseudosprachen sind nicht nutzlos, sondern fördern programmiertechnisches Verständnis. Es ist vollkommen irrelevant welche Programmiersprache man beherrscht - es geht darum die Denkweise zu verstehen. Jede gelernte Programmiersprache verkürzt die Zeit, die man benötigt um eine Andere zu lernen.

@irgendjemand
Deine tolle Schulmathematik wurde bei mir im ersten Semester in der ersten Vorlesung zu 90% abgehandelt. Danach habe ich von dem Zeugs, das in der Schule dran kam in den seltensten Fällen noch etwas gehört. Mathe-Professoren als Witzbolde darzustellen mag für dich und vielleicht auch für deinen Freundeskreis cool sein, zeigt aber nur, dass du dich noch nie wirklich mit Mathematik auseinander gesetzt hast.
Warum 1+1=2 ist war in meinen Vorlesungen im Übrigen nie Thema - es steht dir aber frei dir den Beweis dazu im Selbststudium anzueignen.
 

Kevin94

Top Contributor
Es mag schon sein das Pseudosprachen ihre Berechtigung haben, aber einem der Info Lehrer stolz ein TickTackToe mit grottiger KI und schlechter/unvollständiger GUI als Jahresprojekt seines Abiturjahrgangs vorstellt, weil er es selbst nicht besser könnte und es wennigsts ein oder zwei seiner Schüler geschafft haben den Link zu Java-API zu finden, dann muss doch irgendwas schief laufen.

Und was meine vorherige Aussage angeht: Ich bleibe dabei, dass BlueJ an sich einem nichts vorenthält. Weder eine main-Methode, noch irgendwelche Grundlagen. Dies tut nur auf BlueJ gestützte Bücher/Unterricht. Das Thema müsste also lauten: Machen Lehrbücher die auf eine bestimmte IDE, v.a. BlueJ, gestützt sind Sinn.
 

timbeau

Gesperrter Benutzer
Bayern, der WESTEN :D

Sorry irgendjemand, du disqualifizierst dich gerade selber. Schreib mal weniger, dafür mit mehr Inhalt und weniger Punkten. Deine Äußerungen über Studiengänge sind auch sehr amüsant.
 

HimBromBeere

Top Contributor
Mit diesem Thema wurde wunderbar bewiesen: nur weil etwas erledigt ist, wurde noch lange nicht ausreichend darüber diskutiert...
Also mal ehrlich, jetzt sind wir schon bei Lehrplasystemen der einzelnen Länder angekommen, was kommt als nächstes: Diskussion zum Atomausstieg oder was?

Ich bin mir im Übrigen der Ironie dieser Äußerung bewusst, da ich mit diesem Beitrag ebenfalls an der Laufendhaltung des Themas mitwirke...
 

Solgull

Mitglied
und DANN muss ich noch ins mathe-studium rennen nur damit ich mir von so nem witzbold anhand von 2 stäbchen zeigen lassen muss das 1 und 1 dann doch wirklich 2 sind ?

Nein dir wird dir im Zweifel eher zeigen, dass im passenden Körper 1+1=0 ist.
Wobei + dann auch nur ein Zeichen für eine Verknüpfungsvorschrift ist.
Dabei erfährst du im übrigen ganz nebenbei warum im Normalfall 1+1=2 ist.


Gerade Programmierern - die oft auch Interesse an Computerspielen haben - sollte klar sein, dass eine passende Lern- und Erfolgskurve einen wesentlichen Anteil daran hat wie viel Zeit man in ein Thema (Spiel) investiert.

Der Unterricht hängt immer im wesentlichen vom Lehrer/Ausbilder ab. BlueJ ist ganz sicher nicht das Allheilmittel, dass einen schlechten Lehrer zu einem guten macht. Aber einem guten Lehrer ist es ein sehr gutes Hilfsmittel um einen ersten Einstieg in die Programmierung zu erreichen.

Falls die Schüler in ihrer Freizeit sich zusätzlich mit Java beschäftigen und dabei feststellen, dass BlueJ zum Entwickeln von Java-Programmen nicht gut geeignet ist, hat der Lehrer doch alles richtig gemacht?

Natürlich brauche ich jemandem der schon 2 Jahre Java programmiert kein BlueJ mehr vorsetzen, aber ein Programmier-Kurs geht immer mit Vorraussetzungen einher. Falls es für den Kurs keine Vorraussetzungen gibt, muss ich auch so lehren, als ob keine Vorkenntnisse bei den Schülern gibt.
(Und selbst einem Java Programmierer kann ich mit passenden Aufgaben in BlueJ beschäftigen.)
 

Solgull

Mitglied
Hehe dann ma los, das würde der ganzen Theorie hier die passende Praxis einhauchen :p


Implementieren Sie einen AVL-Baum mit Methoden zum Suchen, Einfügen und Löschen von Werten. Werte werden mittels Key/Value eingetragen. Bei der Suche wird nur der Value zurück gegeben.

Key und Value sind über Generics zu implementieren, dabei sind passende Oberklassen oder Interfaces zu nutzen.

Überlegen Sie sich vor der Implementierung der Methoden (Suchen, Einfügen und Löschen) passende Testmethoden und Testfälle welche sich auch vorher bereits implementieren. (Testgetriebene Entwicklung)

Für die Nutzung in einer Multithread-Umgebung sind die Methoden zum Suchen, Einfügen und Löschen Thread-Save zu gestalten.

Verzichten sie bei der Umsetzung möglichst auf Imports von anderen Klassen.

=> Sollte für eine Schulstunde für Ruhe sorgen
(Inbesondere da kein Internet zur Verfügung steht, sondern nur Java ist eine Insel und die Api)
Eine Stunde vorher hat man dann den Binären Suchbaum erklärt und läßt von der normalen Klasse in der Zeit bei einer vorgefertigen Klasse (Einfügen gibt es schon) die Such-Methode implementieren. Gegebenenfalls erweitert um eine Methode zum Löschen.
 

GUI-Programmer

Top Contributor
"Es ist schon alles gesagt, nur noch nicht von allen." (Karl Valentin)

Genau, deswegen will ich nun auch mal meinen Senf dazugeben (nach gefühlten 2h durchlesen:lol:):

Angefangen mal hiermit:
Praxislernen ftw! Theorie alleien bleibt ohne praktischen zusammenahng und antesten in meinem Kopf auch kaum haften, dafür merkeich mir was ich einmal praktisch getan habe für immer (bis jetzt)


aber wenn jemand sagt, er hat mit bluej java gelernt, den kann man halt nur belächeln. er hat ein paar brocken gesehn, mehr nicht. um es als java lernen zu bezeichnen, fehlen, wie oben gesagt, wichtige grundlagen.

Dazu kann ich nur sagen, dass ich das jetzt im Nachhinein genauso sehe!

Als "Geschädigter" von dieser Einsteiger-IDE will ich mich mal auch zu Wort melden, erstmal kurz zu mir:
Ich hab selber im Infounterricht damit arbeiten müssen, und hab privat auch bis vor kurzen damit gearbeitet, weil Eclipse am Anfang einfach nur zu kompliziert war, bin aber jetzt doch umgestiegen, weil die Bugs von BlueJ (dass muss ja auch mal einer sagen) nerven.
Pro BlueJ:
Es ist eine übersichtliche Umgebung, die es ermöglicht schnell einfache Programme zu schreiben und einzelne Teile zu testen.
Contra BlueJ:
  • Viele gravierende Unsauberheiten/Bugs: Die farbliche Hinterlegung des Editor, die Autoformatierung, Abstürtze bei manchen Kompilerfehlern und die mangelde Performance bei größeren Projekten.
  • Auserdem macht es BlueJ dem Lehrer besonders leicht den Schülern Grundlagen vorzuenthalten, ich kann nur sagen wie es mir ergangen ist, aber ich habe in einem Jahr OO-Infounterricht am Beispiel Java nur mit BlueJ rumspielen dürfen und von einer main-Methode war nicht mal Ansatweise die Rede.

Aber nur bis dahin. Sehe mich selbst auch als "Geschädigten" an. Habe eine Komplette Klasse (10 am Gym.) verbracht und Dank BlueJ noch kaum Kenntnisse von Java bzw. Begriffen wie Instanz Konstruktoraufruf, Übergabeparamter, etc. gehabt.

Folgendes:
Kevin94 hat gesagt.:
Zusammen fassend kann ich sagen: Ich würde ein optimiertes BlueJ als Hobbyprogrammierer auch weiterhin einsetzen und Anfängern kann ich es nur empfehlen, aber selbst die beste IDE kann einem unfähigem Lehrer nicht den Unterricht abnehmen, und von denen gibt es leider viel zu viele.

Hier kann ich dir nur zustimmen, auch wenn es bei mir nicht am Lehrer gelegen hat, sondern hauptsächlich an BlueJ.

Schlussfolgerung:
Meiner Meinung nach lässt nicht pauschalisieren, ob BlueJ schlecht oder gut ist. Oder schlecht oder gut entwickelt wurde. Wichtig ist hierbei die Verwendung. Nicht nur wie BlueJ verwendet wird spielt dabei eine Rolle, sondern auch von wem, weshalb, und wann es verwendet bzw. nicht verwendet werden sollte.

WICHTIG ist nur, dass man die Gefahren bei falscher, bzw. schlechter Verwendung von BlueJ (v.a. in Schulen) nicht einfach unterschätzt - und bei der Haltung bleibt, "es gibt ja viele die BlueJ schlecht oder ...****... finden, aber ich finde es gut...".

Vielleicht könnte man (falls man nach dieser ganzen Diskussion noch Lust dazu hat) einen extra Thread eröffnen, der spezielle Situation bei der Verwendung von BlueJ beinhaltet, wie beispielsweise sowas: "Ist der Einsatz von BlueJ an Schulen zum Erlernen von OOP Prinzipien sinnvoll; PRP -CONTRA". (Aber das erinnert doch sehr stark an einer Erörterung und gehört imho nicht hier ins Forum, zumindest nicht in diesem Bereich hier).
 

bERt0r

Top Contributor
Ich geb auch mal meinen Senf dazu. Ich habe mich selber fürs Programmieren begeistert, durch den TI-92. Ohne Internet, ohne Handbuch, einfach herumgespielt. Den Taschenrechner "Hallo Welt" sagen zu lassen wenn man 1 drückt war das Erfolgserlebnis, das mich dazu bewog Programmieren zu lernen. Der Erfolg lag darin, einem "dummen" Ding etwas beizubringen.

Wie bezieht sich das jetzt auf BlueJ? MMn ist es ein ditaktischer Fehler einem Anfänger OO beibringen zu wollen. Das OO-Prinzip beruht darauf, die Realität besser im Computer abbilden zu können. Das ist die große Errungenschaft von OO, ich kann mir im Computer ein Objekt "Auto" erstellen. Das klingt für einen Anfänger aber ziemlich langweilig, "Natürlich kann man das" wir er sagen. Die Programmierer der JVM empfinden das sicher nicht so.

Auf was ich hinaus will: Man sollte Anfängern vermitteln, dass Computer dumme Maschinen sind, die genau das tun was man ihnen sagt. Computer wissen nicht was Objekte sind. Man muss Anfänger nicht mit Assembler peinigen :), ein kurzer prozeduraler Einstieg ist mMn aber erforderlich.

Nur wenn man die prozeduralen Grundlagen verstanden hat, kann man auch die Vorteile von OO verstehen. Der Anfänger weiß jetzt, dass er sich eine Variable "Auto" erstellen kann. Wenns dann aber darum geht, eine Menge Autos zu verwalten, abzufragen, abzuändern und auszugeben und vielleicht noch Unterschiede zwischen verschiedenen Herstellern und KFZ-Typen zu machen wird ihm bewusst, das wird eine Menge Arbeit. Und hier kommt der OO-Ansatz zum tragen. Praxisorientert und anhand eines Beispiels werden die Vorteile von OO klar.

Anders begreift man es mMn auch gar nicht um was es eigentlich bei OO geht und warum es wichtig ist.
 

irgendjemand

Top Contributor
@bERt0r

wobei gerade OOP ja hier auch zum "streitpunkt" geworden ist ...

grundsätzlich ist ja erstmal richtig : java ist zwar als OOP geplant ... kann aber auch imperativ geschrieben werden *wie wir es ja immer bei anfängern sehen : alles static , alles von main aus in fester reihenfolge ... objekte eher nur variablen angesehen wo man was reinstecken kann ... etc*

dann sollte man sich auch zu gmüte führen das *wie ja bereits MEHRFACH erwähnt* das selbsterklärte ziel von BlueJ ist es anfängern zu erleichtern in java einzusteigen ... und NICHT ihnen nur die prinzipien von OOP anhand von java zu erklären *wie hier fälschlicherweise behauptet wurde*

ob man einen anfänger gleich in OOP werfen sollte ? wenn die vom lehrer gewählte sprache keine imperativen möglichkeiten bietet *gibt da ja so einige dieser sog. esotherischen sprachen* dann muss man es ja tun ... aber wie bringe ich dann jemanden nur OOP bei ohne ihm gleich die sprache zu erklären ?

und genau desswegen kam ich auf ASM ...
auch wenn damit heute keiner mehr arbeitet *außer ein paar profis die sich mit HAL , boot-loadern und BIOS-programming befassen* zeigt es doch sehr genau was imperative programmierung ist : nämlich das einfache abarbeiten von anweisungen in einer festgelegten reihenfolge ... *wobei ich da jetzt auch mal loops und if() mit einbeziehe*

dann kann man versuchen jemanden zu erklären was OOP ist *am besten als vergleich mit der realen welt* und warum das seine vorzüge gegenüber imperativer programmierung hat *vergleich C <-> C++*

und wenn dann der "schüler" so einigermaßen begriffen hat was imperative und objekt orientierte programmierung ist ... und auch die grundlagen der EDV vermittelt bekommen hat *was intern im rechner so abgeht* ... dann kann man so langsam mit den basics von java anfangen ...

um hier dann auf dem bisherigen verlauf aufzubauen sollte man auch hier dann erstmal imperativ anfangen ... da man so dierekte vergleiche zu C und ASM ziehen kann : der code läuft in einer festgelegten reihenfolge vom anfang zum ende durch ...

dann bringt man OOP ein und wie sich das ganze dann in der realen welt verhalten würde ...

nun kann man dem schüler zeigen das der code einer klasse nicht einfach durchläuft ... sondern es darauf ankommt welche methoden auf ein object gecallt werden ... *in wie weit man hier a-sync mit threads und GUI einbringt sei erstmal nebensächlich*

das dann am anfang der caller *meist main()* an sich selbst wieder imperativ ist ... das womit man arbeitet aber objekt-orientiert ... lässt sich hier das wissen zu OOP vertiefen ... und dabei erklärt man im gleichen zug auch java mit ... *z.b. wenns dann um generics geht*


und diesen ablauf von anfang an mit bluej komplett durch ein ander zu würfeln ... hmm ... viel spaß beim schreiben schlechter noten
 

Kevin94

Top Contributor
Grundsätzlich finde ich dein Konzept gut irgendjemand, wie du den Lehrplan gestallten würdest, du vergisst aber, dass du das alles in einem Jahr machen musst, mit nur zwei Wochenstunden. Dein Konzpt ist vielleicht für das erste Unisemester oder einen Leistungskurs geeignet für ein normales Nebenfach ist das aber viel zu viel für ein Jahr.
 

bERt0r

Top Contributor
Naja, vielleicht kann man "Programmieren lernen" auch nicht in einen 2 Wochenstunden Kurs packen? Um programmieren mal zu lernen, muss man erstmal systematisch denken lernen.
Java ist nunmal eine OO-Programmiersprache. Damit Anfängern imperative Programmierung beibringen zu wollen macht genau die Probleme, die BlueJ angehen will. MMn eignet sich Java einfach nicht für Anfänger. Es wird zu viel in punkto Syntax zugelassen und die API ist riesig. BlueJ ist da nicht der einzige Versuch die ganze I/O Thematik zu verschleiern.
Ich verstehe sowieso nicht warum man jetzt in so vielen Bereichen Programmieren lernen muss. Meist werden da eben komplette Anfänger in so einen Kurs geschickt, durch den wird sich irgendwie durchgemogelt und von Programmieren wollen diese Menschen dann nie mehr was wissen. Ich kenne da einige Kollegen.
Welchen Sinn macht es z.B einem totalen Anfänger als nach 2 Wochen Schiffe versenken programmieren zu lassen (reales Beispiel)? Das schafft doch keiner von sich aus. Nach 2 Wochen Programmieren ist es doch schon top, wenn man mal Abfragen, Schleifen, Zuweisungen und Funktionsaufrufe richtig einsetzen kann.
 
Zuletzt bearbeitet:

Lara_B

Mitglied
Um Himmels Willen ist das kompliziert hier :noe:

Da ist mir mein Editor nano und die bash deutlich lieber und einfacher. Da kann man nicht viel verkehrt machen :)

[OT]p.s.

Ich las eben die Diskussion zu Mathematik Schule/Uni hier im Thema.

Ein Mathematik Studium muss natürlich am Anfang anfangen. Heute wissen wir ganz klar was der Anfang ist (das war früher nicht so klar wie heute). Natürlich werden da auch die Grundrechenarten wiederholt. Nicht mit Äpfel und Birnen wie in der Grundschule (was rückblickend ziemlich cool war :applaus: ), sondern durch algebraische Strukturen und dem stupiden, doch manchmal mühsamen verifizieren von Monoid, Gruppen, Ring, Körper, Vektorraum und last but not least Algebra Axiomen und den vielen Abwandlungen die es dazu gibt.

In der Mathematik muss es (im Gegensatz zu vielen anderen Disziplinen) einen roten Faden geben. Es darf nie etwas verwendet werden was nicht klar und wohldefiniert bekannt ist. Das zwingt auf, dass alles und ich meine alles was gebraucht wird extra eingeführt werden muss. Es wird also die gesamte Schule wiederholt. Allerdings in einem Tempo, dass wenn man es in der Schule nicht verstanden hat, man ... ich sage mal mehr Fleiß und Leidensbereitschaft haben muss als manch andere. :autsch: Ich hoffe es ist nun etwas klarer geworden. Ich habe by the way Mathematik und Physik studiert, kann das also beurteilen.[/OT]
 
Zuletzt bearbeitet:

Robokopp

Bekanntes Mitglied
In Python kann der Einstiegspunkt eine beliebige Funktion sein. Sowas wie eine main-Methode gibt es da nicht.

Jo hab vorher auch in Python programmiert und wäre beim Umstieg fast ausgerastet weil mir eclipse eine Fehlermeldung wegen fehlender Main um die Ohren gehauen hat. Da muss man erstmal drauf kommen. Naja mittlerweile hab ich akzeptiert dass die Methode der urknall eines jeden Java Programms ist :D

Zu bluej kann ich nur folgendes sagen:

Mir gefällt es nicht. Es ist irgendwie unübersichtlich obwohl es so einfach gehalten wurde ... Schwer zu beschreiben. Ich hab lieber viele einstellmöglichkeiten die aussagekräftig sind. Mit eclipse komm ich besser klar.

Bluej haben wir während unseres Studiums lediglich für das klassendiagramm des praktikimsprojektes genutzt. Naja wers braucht ...

Gesendet von meinem GT-I9100 mit Tapatalk
 

Paddelpirat

Bekanntes Mitglied
Jo hab vorher auch in Python programmiert und wäre beim Umstieg fast ausgerastet weil mir eclipse eine Fehlermeldung wegen fehlender Main um die Ohren gehauen hat. Da muss man erstmal drauf kommen. Naja mittlerweile hab ich akzeptiert dass die Methode der urknall eines jeden Java Programms ist :D

Ich hab umgekehrt angefangen. Begonnen habe ich mit Java (Selbststudium), später dann in der Schule und anschließend als Nebenjob. Im Studium hatte ich erst das Vergnügen mit Matlab, später dann mit Python. Das war auch nicht wirklich schwer. Nur das Einrücken ohne Editor ist da etwas mühsam.
Java hab ich damals auch nur mit Wordpad und Console gelernt, IDEs hab ich mir erst viel später angesehen, wobei ich mir schon vorstellen kann das so eine IDE wie BlueJ (auch wenn ich es mir noch nicht angesehen habe) doch einiges im Schulunterricht beschleunigt hätten.
Will man aber alles verstehen, muss man sehr viel Eigeninitiative zeigen, das kann einem keine IDE abnehmen.
 
Zuletzt bearbeitet:

Robokopp

Bekanntes Mitglied
Ich hab umgekehrt angefangen. Begonnen habe ich mit Java (Selbststudium), später dann in der Schule und anschließend als Nebenjob. Im Studium hatte ich erst das Vergnügen mit Matlab, später dann mit Python. Das war auch nicht wirklich schwer. Nur das Einrücken ohne Editor ist da etwas mühsam.
Java hab ich damals auch nur mit Wordpad und Console gelernt, IDEs hab ich mir erst viel später angesehen, wobei ich mir schon vorstellen kann das so eine IDE wie BlueJ (auch wenn ich es mir noch nicht angesehen habe) doch einiges im Schulunterricht beschleunigt hätten.
Will man aber alles verstehen, muss man sehr viel Eigeninitiative zeigen, das kann einem keine IDE abnehmen.

Naja ich hab mich ehrlich gesagt nur mit dem programmieren angefreundet wegen des Nokia n900's. Da war das mit Python kein Problem und da hab ich die Anfänge auch nur mit einem Texteditor gemacht bzw sogar direkt auf dem Handy :) (tolles teil)

Gesendet von meinem GT-I9100 mit Tapatalk
 

bERt0r

Top Contributor
Und weil ich gerade wieder einem Kollegen Java-Einstiegs-Nachhilfe gegeben habe: Java eignet sich einfach nicht für Anfänger! Ganz besonders Kurse auf der Uni sind unmöglich für Menschen die noch nie programmiert haben. Da werden Grundlagen wie Ablaufdiagramme/Struktogramme in einer Minute besprochen -.-
Programmieren lernt man nicht mit einer IDE, erstmal muss man den Denkprozess verstehen. Und das geht am besten mit Papier und Bleistift, ohne irgendeine Programmiersprache.
 

IceStore

Mitglied
Also ich habe auch mit BlueJ angefangen, aber nicht weil ich mich dafür entschieden hab, sondern weil es von der Schule vorgeschrieben wurde! BlueJ ist sehr übersichtlich etc., aber naja ich würde lieber das typische "OldSchool" empfehlen, macht auch viel mehr spaß :D. Und später auf jeden fall Eclipse, das ist sehr komfortabel ... . Letzendlich solltest Du dich aber entscheiden was du jetzt nimmst, guck dir das alles an und mach worauf du lust hast, schließlich sollst du ja spaß daran haben und dich nich durchquälen^^
 
Zuletzt bearbeitet von einem Moderator:

GUI-Programmer

Top Contributor
@IceStore: Ok, dein Beitrag ist ganz in Ordnung, aber lassen wir doch bitte Diskussionen über BlueJ, ich denke der link in meinen letzten Post ist für sich sprechend!
 
G

gassssst

Gast
Also ich würde von BlueJ abraten da die die Sprache irgendwie "verdreht" haben damit sie einfacher wirkt. BlueJ hat mit Java soviel gemeinsam wie Stift und Sand, einen Buchstaben.
In BlueJ wurde nichts an der "Sprache verdreht", BlueJ benutzt genau das selbe Java und den selben javac wie jeder/alles andere auch, ich weiß nicht wieso solche komischen Argumente immer auftauchen sobald man BlueJ in den Mund nimmt :rolleyes:
 

XHelp

Top Contributor
ich weiß nicht wieso solche komischen Argumente immer auftauchen sobald man BlueJ in den Mund nimmt

Weil in 90% der Fälle, die mit BlueJ zu tun haben, fallen solche Sätze wie "ich programmiere in BlueJ" o.ä. und gefühlte 99% wissen nicht, was eine main-Methode ist.
 

Kevin94

Top Contributor
Muss diese Diskussion eingetlich jedes mal wieder losgetreten werden, wenn über BlueJ gesprochen wird?
Natürlich birgt BlueJ Risiken, die in dem verlinkten Thread zur genüge diskutiert wurden, was es aber nicht zu einer schlechten IDE macht.

[OT]Das folgende ist meine persöhnliche Meinung:
BlueJ ist nur deshalb so verdammt, weil viele Anfänger, die von ihren unfähigen Lehrern gezwungen werden diese IDE zu nutzten, hier dämliche Fragen stellen, die sie nicht stellen müssten wenn sie mal ein richtiges Java-Buch in die Hand genommen hätten. Zum Selbststudium mit Hilfe eines (nicht auf BlueJ gestützten Buches) ist BlueJ für Anfänger mindestens genausogut geeignet.
BlueJ braucht genauso wie jedes Programm auch einen Einstiegspunkt, der muss aber nicht die main-Methode sein, sondern kann auch ein Konstruktor oder eine x-beliebige statische Methode sein. Man kann sich dadurch beim Testen bzw. während des Programmierens das schreiben einer extra TestKlasse ersparen was ich sehr sinnvoll fand.[/OT]

Ich kann nur noch zitieren was schon in dem anderen Thread gepostet wurde:
Landei hat gesagt.:
"Es ist schon alles gesagt, nur noch nicht von allen." (Karl Valentin)
 
J

JohannisderKaeufer

Gast
Nun ja,

Code:
static void main
ist auch unnötig,

wenn man
  • Applets
  • OSGI / EclipseRCP
  • JEE / Webanwendungen
programmiert.
 
G

gasssst

Gast
Seit wann braucht BlueJ denn z.B. eine Entrypoint-Methode? Auch bekannt als "static void main"?

BlueJ "braucht" genausowenig eine main Methode wie "Eclipse eine main methode braucht", ansonsten siehe JohannisderKaeufers post. Was ist dein Punkt? Was hat eine Methode mit "Sprache verdrehen" zu tun?

Manchmal kommt es mir vor als ob ich in BlueJ Threads gegen Wände rede. Was man sagt wird einfach nicht aufgenommen oder ist nach 1 Monat im nächsten Thread wieder vergessen und die selbe kaputte Argumentationskette fängt wieder von vorne an...
 

GUI-Programmer

Top Contributor
@gasssst: Was bewegt dich dazu weiter diese sinnlose Diskussion fortzusetzten, der Link speziell zu dieser habe ich bereits geposte, also hier noch mal: (IDE) BlueJ wirklich geeignet für einsteiger ?

gasssst hat gesagt.:
BlueJ "braucht" genausowenig eine main Methode wie "Eclipse eine main methode braucht", ansonsten siehe JohannisderKaeufers post.

Natürlich wird die main-Methode nicht immer benötigt, aber Anfänger fangen nun mal mit einfachen Java-Anwendungen an, die dann nun mal auch normalerweise per main gestartet werden und nich mit Applets oder OSGI / EclipseRCP oder JEE / Webanwendungenn oder sonstwas. Und bei diesen normalen Anwendungen wird auch in jeder vernünftigen IDE ala Eclipse oder NetBeans eine
Code:
public static void main(String[] args) { }
- Methode benötigt.


P.S. Falls jetzt noch irgendjemand meint, er müsste diese Diskussion fortsetzen dann soll er dies doch bitte in den verlinkten Thread tun, ruhig auch mit Zitaten von mir oder anderen, aber bitte nicht mehr hier. DANKE
 
J

JohannisderKaeufer

Gast
Hatte garnicht gesehen, dass es hier so einen schönen Thread gibt.

Sieht man von den üblichen IDEs(Eclipse,Netbeans,IntelliJ) ab, als zu komplex für Einsteiger und geht ein paar Jahre zurück, dann landet man beim JBuilder.

Der JBuilder wurde vor 8-9 Jahren verwendet um Anfängern das Programmieren beizubringen. In Schulen, Berufsschulen, etc.

Ein paar Guielemente zusammenziehen irgendwo doppelklicken und dann paar Sachen eintippen, laufen lassen.
Soll das (JBuilder) wieder zu State of the Art werden?


Und nun warum man bei 0 im Mathestudium anfängt.
[OT]
Man nimmt die 0 als einzige gegebene Zahl im Universum.
Dann fängt man an zu Rechnen.
Plus ist gut!
0 + 0 == 0
Funktioniert tadellos.

Multiplikation ist auch super! Probieren wirs aus.
0 * 0 == 0

Wow!Mit nur einer Zahl kann man schon so wahnsinnig viel machen.

Ok, aber es könnte ja noch weitere Zahlen geben.
1 ist cool!
Wir haben jetzt also 1 und 0
Probieren wir die Multiplikation
0 * 1 == 0
Wow! funktioniert.
1 * 1 == 1
Wow! ebenso.
1 * 0 == 0
Jetzt haben wir alle möglichkeiten durch.

0 + 1 == 1
Hey scheint mit Plus auch zu gehen
1 + 0 == 1
Starke sache. Bleibt nur noch eines übrig.

Schaffen wir das?
Jo, das schaffen wir!
1 + 1 == ? //F**K
1 + 1 == 0 Fühlt sich irgendwie mies an
1 + 1 == 1 Das ist jetzt auch nicht so prikelnd.

...
den Rest gibt es nur für Studenten der Mathematik, die ihre Studiengebühr rechtzeitig überwiesen haben.
[/OT]
 
T

Tomate_Salat

Gast
Nun ja,

Code:
static void main
ist auch unnötig,

wenn man
  • Applets
  • OSGI / EclipseRCP
  • JEE / Webanwendungen
programmiert.

- Android

und trotzdem verwende ich immer wieder die main-Methode. Nur weil bestimmte Systeme diese nicht benötigen, heißt das noch lange nicht, dass die main unnötig ist.

Ich habe in jedem Workspace ein Projekt wo nix anderes als Codeschnippsel drin sind zum testen. Ohne main würde mich das ziemlich nerven, jedes mal ein bundle/RCP/Applet/JEE oder Android-Anwendung schreiben zu müssen.

Außerdem: welcher Java-Anfänger beginnt mit: Osgi/RCP/Android oder gar JEE?!
 
J

JohannisderKaeufer

Gast
Nur mal als kleines Beispiel aus der scala- Welt

Java:
object Programm extends App{
println("Hallo World!")
}


Ein typisches Java Progamm läuft im?

"main-Thread"

Also warum kein Interface

Code:
interface App extends Runnable{}

Ein Programm wie HelloWorld sähe dann so aus

Java:
public class HelloWorld implements App{
  public void run(){
    System.out.println("Hallo Welt");
  }
}

Dem Programm java aka. java.exe beizubringen das anstatt einer main-Methode auszuführen, dürfte das kleinere übel sein.
Und welch Wunder, kein static mehr von nöten. args[] könnte man per annotation injecten lassen.

Ja selbst das mit dem Interface könnte man sein lassen und das ganze per annotation lösen.

Java:
public class HelloWorld {
  @ApplicationStart
  public void foo(){
    System.out.println("Hallo Welt");
  }
}

Der Nachteil mit
Code:
static void main(String[] args)
ist der, das man static verwendet. Dieses static hat zur folge, dass Methoden, die man dann anfangs schreibt auch static sind. Das Problem kommt dann später, wenn man einem Anfänger, das static wieder abgewöhnen sollte zwecks OOP.

Und genau hier setzt BlueJ zu einem gewissen Teil mit an, indem es
Code:
static void main
keine Bedeutung bemisst.

Beim Programmieren lernen geht es nicht nur darum eine Syntax zu erlernen, die einen ein Problem lösen läßt.
(Ausgenomomen natürlich der ersten Programmiersprache).
Es geht darum das Gedankenkonzept zu erlernen, warum eine Sprache genau so aussieht, wie sie aussieht. static ist Syntax nicht Gedankenkonzept, ein nebensächliches Implementierungsdetail, eine Altlast.

Vergleicht man C# und Java, dann hat man hier keine zwei Sprachen sondern eher zwei Dialekte.

Bei Java und Lisp, hat man zwei Sprachen. Java und Clojure hat man zwei verschiedene Sprachen. Clojure und Lisp sind zwei Dialekte.
 
T

Tomate_Salat

Gast
Und wenn die Bananen in Tetrapaks an Bäumen wachsen würden, würde keiner mehr auf einer Schale ausrutschen können.

Deswegen kauf ich nur Bananenmilch weil Bananen mit Schalen einfach keine Bedeutung haben.

-----

Nur weil BlueJ und ein paar andere sich an der main-Methode stören, heißt das noch lange nicht, dass diese keine Bedeutung hat.

Solange ein Java-Programm die main zum starten nimmt, hat die eine Bedeutung und zwar eine verdammt wichtige.
 
M

maki

Gast
Ich habe noch nie ein richtiges Programm mit main Methode geschrieben :)

BlueJ kenne ich nicht mal, hab darüber keine Meinung, aber die main Methode ist nicht wirklich wichtig ime, eure Erfahrungen mögen anders sein, aber falls fass das wichtigste Argument gegen BlueJ ist.. naja.
 
M

maki

Gast
"Enterprise Apps"wie zB. WebApps, EJBs, OSGi,
Eclipse RCP...
Guice soll auch eine Möglichkeit bieten.

Kann wie gesagt bei anderen anders sein ;)
Aber wer Java mal kann hat auch kein Problem main zu lernen.
 
T

Tomate_Salat

Gast
"Enterprise Apps"wie zB. WebApps, EJBs, OSGi,
Eclipse RCP...
Guice soll auch eine Möglichkeit bieten.

Und wieviele Anfänger fangen mit solchen Frameworks an? Für diese FWs hat die main vllt keine relevants (für den Entwickler, der diese benutzt), aber dennoch ist sie vorhanden Beispiel. Man sollte eben nicht vergessen, dass die main auch von den Frameworks eingesetzt werden.
 
M

maki

Gast
Und wieviele Anfänger fangen mit solchen Frameworks an?
Würdest dich wundern.. leider viel zu viele... aber das ist hier ja gar nicht relevant.

Man sollte eben nicht vergessen, dass die main auch von den Frameworks eingesetzt werden.
Von normalen Frameworks eben nicht, von Server-/Laufzeitumgebungen selber schon, aber das kann dem Entwickler der diese nutzt vollkommen egal sein.

Wollte damit nur sagen, dass ich persönlich die main nicht als so wichtig empfinde dass man Programmieranfänger (nicht Java Anfänger!) - und dafür scheint BlueJ wohl gedacht zu sein - gleich als erstes damit konfrontiert.
So wie ich mir BlueJ vorstelle, ist es für Schulen gedacht um Interesse am programmieren zu wecken, aber eben keine richtige IDE, nicht mehr und nicht weniger.

Nebenbei, Guice bietet doch keine Alternative zur Main Methode, hatte ich falsch vestanden.
 
T

Tomate_Salat

Gast
Würdest dich wundern.. leider viel zu viele... aber das ist hier ja gar nicht relevant.
Weil eben Anfänger (sowohl Programmier- als auch Javaanfänger) das Zielpublikum ist.

So wie ich mir BlueJ vorstelle, ist es für Schulen gedacht um Interesse am programmieren zu wecken
Und das ist imho der falsche Weg. Es gibt genug Sprachen die keine main (oder zumindest keine statische) haben. Da braucht man nicht Java zu vergewaltigen. Den die, die dann tatsächlich Java lernen wollen, werden Opfer dieser "IDE".

Imho lernt man eine Sprache entweder richtig, oder garnicht.
 

timbeau

Gesperrter Benutzer
Die main-Methode ist aber doch nicht JAVA, sondern nur ein möglicher Einstiegspunkt. Ich habe lange Zeit nicht verstanden, was OOP bedeutet weil wir eben alles in der Main gemacht haben.
 
G

gasssssst

Gast
Beim Programmieren lernen geht es nicht nur darum eine Syntax zu erlernen, die einen ein Problem lösen läßt.
(Ausgenomomen natürlich der ersten Programmiersprache).
Es geht darum das Gedankenkonzept zu erlernen

Jo, sorry, da redest du meistens gegen Wände wenn du versuchst manchen hier im Forum das klarzumachen, siehe mal die vorangehenden Seiten.

Mir persönlich geht das nicht in den Kopf, was Leute so faszinierend an der Kombination "public static void main" finden, dass sie es als unerlässlich für Anfänger finden so ein Implementierungsdetail einer bestimmten Sprache zum programmieren lernen zu kennen. Für mich und für Studenten ist das völlig irrelevant und hat keinen Bezug zu irgendeinem der wichtigen (Anfänger-)Themen der Programmierung oder der Informatik.

HZdGF.png
 

Noctarius

Top Contributor
Du verstehst den Punkt nicht. Es ist nicht unerlässlich für das "Programmieren lernen" sondern unerlässlich für Java. Es ist nun mal ein Teil der Sprache. Genau wie C++ Entrypoint-Methoden hat (und die sind nicht mal einheitlich - main, winmain, libmain, ...).
 
G

gasssssst

Gast
Was dann aber der falsche Umgang mit der Sprache ist.
Die Schlussfolgerung ist offensichtlich falsch, da ich den Fehler in jeder Programmiersprache machen kann, hat also nichts mit "Umgang mit der Sprache zu tun". Wenn du dein Programm komplett in ein Modul/Methode/Datei/Klasse packst kannst du eben nicht wirklich vernünftig programmieren und/oder hast objektorientierte Programmierung nicht verstanden, völlig unabhängig welche Sprache du lernst oder programmierst.
 

Noctarius

Top Contributor
Das hat doch nichts damit zu tun in Java einfach alles in static Methoden zu machen Oo Egal Glaubenskrieg. Ich bleibe bei dem Standpunkt "wenn eine Sprache dann bitte richtig oder gar nicht", aber Jedem das Seine (und bevor White... jetzt kommt, nein das ist auch für mich kein Nazispruch und wenn er an jeder KZ-Wand prangern würde...).
 
G

gassssst

Gast
Du verstehst den Punkt nicht. Es ist nicht unerlässlich für das "Programmieren lernen" sondern unerlässlich für Java.
Lol, sorry, dann bist du im falschen Thread. Hier geht es um BlueJ, und BlueJ ist ein Tool um programmieren und objektorientiertes programmieren zu lernen, genauso wie es das (ein) Ziel eines Informatikunterrichts, einer Ausbildung oder eines Studiums ist jemandem programmieren und nicht "Java" beizubringen. Java ist ein Mittel zum Zweck, in BlueJ und in einer Ausbildung, und nicht mehr. Wenn du das nicht verstanden hast ist so eine Diskussion hier mehr als überflüssig.

Das hat doch nichts damit zu tun in Java einfach alles in static Methoden zu machen Oo
Ich weiß nicht worauf sich das beziehen soll, auf solche Halbsätze kann ich dann auch nicht antworten.
 

Neue Themen


Oben