# (IDE) BlueJ wirklich geeignet für Einsteiger ?



## irgendjemand (4. Apr 2012)

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:
> 
> ...



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


----------



## JanHH (4. Apr 2012)

Ich kenn BlueJ zwar quasi gar nicht, aber finde eher dass das was Du schreibst SCHROTT ist, um mal bei Deiner Ausdrucksweise zu bleiben ;-). Den Quote finde ich plausibel. Ich hab auch schon häufiger (beim Versuch, Programmieranfängern bei java zu helfen) festgestellt, dass sie in der Tat genau diese Schwierigkeiten haben. Leute, die vorher noch NIE programmiert haben, müssen den Spagat hinlegen, sowohl objektorientierte Programmierung zu verstehen, als auch, sich dem erstmal von dieser eher nicht-OO-prozeduralen Seite (main-Funktion und Konsolen-I/O) zu nähern. Das führt in der Tat schnell zu Frustration und Verwirrung.

Wir haben damals an der Fachhochschule als erste Programmiersprache Smalltalk gelernt, das war gerade für die absoluten Anfänger recht gut, weil man da wirklich die OO-Denkweise ohne "prozeduralen Overhead" in einem visuellen "rumspiel-System" hat (so ähnlich scheint BlueJ ja auch zu sein). Das Erlenen der Konzepte und der grundlegenden Sachen an sich ist schon schwierig genug für viele, finde es daher sinnvoll, nicht auch noch mit unnötigem Ballast alles noch schwieriger zu machen.

Wir nicht-Anfänger hier lachen über sowas, aber für wirkliche Anfänger, vor allem fachfremde Leute (die z.B. was ganz anderes studieren und nebenbei noch einen Programmierkurs machen müssen) ist das durchaus ein grösseres Problem.

Nachtrag: Dazu kommt, dass man ja nicht wirklich oft Konsole und Main-Funktion hat, wenn man professionell mit java arbeitet. In fast allen Bereichen wo java eingesetzt wird hat man irgendwelche Frameworks und man schreibt wirklich NUR noch objektorientierte Konzepte.. sowas zu unterschlagen ist also gar nicht mal so schlimm. Wirklich eher ein überbleibsel aus der C-Welt.


----------



## ARadauer (4. Apr 2012)

Ich denke du hast spät in der nacht immer ein bisschen zu viel Zeit ;-)

Aber im Grunde hast du recht, ich halte blueJ auch für unnötig...


----------



## schalentier (4. Apr 2012)

Dem Quote kann ich mich eigentlich nur anschliessen. Um einem Anfaenger einfach nur ein Hello World Programm zu erklaeren, sind bereits mehrere Konstrukte notwendig, die man einfach nicht erklaeren kann (in diesem ersten Moment). Warum static? Warum dieses komische Array? Was ist ein Array? Ueber IO brauchen wir gar nicht erst zu reden, das geht sogar in C deutlich einfacher (besonders Input).

Ich hab mir aus Neugier neulich mal BlueJ angesehen (nur kurz), da ja hier immer mal wieder Fragen dazu kommen und ich mir gern selbst meine Meinung bilde, als nur irgendwelche Vorurteile zu hegen und anderen nachzuquatschen - und muss sagen, sooo schlecht isses auch nicht. Hat mich bissel an NakedObjects erinnert, wovon ich im Grunde ein Fan bin. Der Punkt ist einfach, zeig mal einem Anfaenger (!) Eclipse oder IntelliJ und dann BlueJ. Was wird dieser wohl eher verstaendlich finden? 
Die Console waere tatsaechlich eine Alternative, leider haben heutige Anfaenger selten jemals zuvor eine Console gesehen - und dann eine Diskussion ueber den Sinn oder Unsinn einer Console zu beginnen mit jemandem, der wahrscheinlich nur nebenbei programmieren wird, halte ich fuer eher kontraproduktiv. 

Ich rate irgendjemand mal, einfach bisschen ruhiger zu werden und nicht sinnfrei ueber alles und jeden herzuziehen, der nicht seiner Meinung ist. Das ist nicht cool, das ist dumm. Noch peinlicher ist es, wenn du nicht mal Argumente vorbringst, WAS dich nun eigentlich am BlueJ-Schrott stoert? Musst du das in deiner Schule benutzen, oder was? Dann red halt mal mit dem Lehrer, ob du nicht mal nen Vortrag halten kannst, wie man besser mit Notepad und Console arbeitet. Das ist in jedem Fall produktiver, sinnvoller und lehrreicher, als hier alberne Sprueche zu klopfen. Ansonsten kannst du es ruhig einfach ignorieren.


----------



## Paddelpirat (4. Apr 2012)

irgendjemand hat gesagt.:


> und dessweiteren : hat nicht JEDE programmiersprache irgendwo einen fest definierten einstiegspunkt ?



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


----------



## Gossi (4. Apr 2012)

langhaar! hat gesagt.:


> Das hast du anscheinend völlig falsch verstanden.
> Es ist nicht so, dass die Lehrer die main Methode nicht erklären können, weil sie sie nicht komplett verstanden haben, sondern die main Methode kann nicht erklärt werden, da die dazugehörigen Konzepte noch nicht eingeführt worden sind und zum Anfang auch noch nicht eingeführt werden sollen. Didaktik halt.



Sehe ich anders. Selber grade vor kurzem das Beispiel gehabt, ne Freund von mir fängt in der Schule mit dem Programmieren an (BlueJ) und warum? Weil der Lehrer sagt, so kann man sich erstmal auf das Grundsätzliche Konzentrieren und was kommt dabei rum?

Er weiß nicht was nen boolean ist, ein Array, Methoden Rückgabetypen etc., weil ihm das alles von BlueJ abgenommen wurde, mittlerweile helfe ich ihm nurnoch in Eclipse und zeige ihm dort wie man Programmiert, nicht ein UML Diagramm bastelt und ausführt.

Und wer erwartet denn als kompletter Neuling, dass dieses main-Konstrukt 100% erklärt werden kann?

Es reicht doch schon das ganze mal in einzelteile zu zerlegen und zu erklären was diese zu bedeuten haben, Beispiel:



> Hier habe wir die sogenannte Main-Methode, diese sieht in Java immer wie folgt aus:
> 
> public static void main(String[] args)
> 
> ...



Wo liegt da nun das Problem?
Die Neulinge sind nicht frustriert, der Lehrer hat keine Probleme es zu erklären und man weiß zumindest woran man ist und wenn die absoluten Basics stehen und man sich etwas mehr mit Methoden, Objekten und Klassen beschäftigt, erklären sich auch die letzten unklaren Schlüsselworte...


----------



## langhaar! (4. Apr 2012)

Gossi hat gesagt.:


> Sehe ich anders. Selber grade vor kurzem das Beispiel gehabt, ne Freund von mir fängt in der Schule mit dem Programmieren an (BlueJ) und warum? Weil der Lehrer sagt, so kann man sich erstmal auf das Grundsätzliche Konzentrieren und was kommt dabei rum?



Bitte zitier mich nicht, wenn du dich nicht konkret auf meinen Text beziehst.
Ich habe nur den didaktischen Ansatz beschrieben, nicht aber bewertet.
Du sagst, du sieht das anders und bewertest den Ansatz, stellst aber nicht meine Beschreibung in Frage, womit das Zitat komplett irreführend ist.


----------



## Paddelpirat (4. Apr 2012)

@Gossi
Wobei man sich so eine ?genaue? Erklärung der main-Methode auch sparen kann bei Schülern. Das public so etwas bedeutet, wie öffentlicher Zugriff erlaubt ist ja noch okay, aber dann die weitere Erklärung mit Objekt und Kopie einer Klasse etc wirft ja Unmengen neuer Fragen auf.

Oder in einem Satz zu sagen, dass jede Methode einen Rückgabewert hat, "void" mit "still" übesetzt werden kann und bedeutet, dass diese Methode keinen Rückgabewert hat, ist einfach verwirrend.

Wenn ich einfach mal ein Hello World Programm oder so den Schülern zeigen würde könnte man vielleicht erklären dass die main-Methode der Einstiegspunkt des Programms ist und öffentlich zugänglich sein muss (daher public). Außerdem könnte man das String-Array erwähnen, da dieses erlaub dem Programm beim aufrufen Parameter zu übergeben, die man dann im Programm weiter verwenden kann, aber viel mehr auch nicht.

Für alles andere braucht man mehr Wissen und sollte meiner Meinung nach Schritt für Schritt erklärt werden und wenn dieses Wissen bekannt ist, kann man noch einmal auf die main-Methode verweisen und sie genauer erklären.


----------



## Sonecc (4. Apr 2012)

langhaar! hat gesagt.:


> Bitte zitier mich nicht, wenn du dich nicht konkret auf meinen Text beziehst.
> Ich habe nur den didaktischen Ansatz beschrieben, nicht aber bewertet.
> Du sagst, du sieht das anders und bewertest den Ansatz, stellst aber nicht meine Beschreibung in Frage, womit das Zitat komplett irreführend ist.



Wow. Mit einer der krassesten Beiträge die ich hier lesen durfte...
Ich kann dir da leider nicht zustimmen. Der Quote von Gossi passte IMO und der Beitrag bezog sich erkennbar auf deinen Beitrag, den er damit korrekt zitiert hat.
Selbst wenn das anders wäre, stünde es dir nicht zu seine Vorgehensweise beim posten in dieser Form zu verbieten.

Deine Aussage, dir Gossi zitiert hat ist übrigens nicht ganz richtig.
Ich habe sowohl in der Schule, als auch im Studium mich mit Java beschäftigt und in beiden Fällen war es kein Problem die main Methode anzugehen, da alle Konzepte schon vorher besprochen worden waren.
Der Unterricht im Bereich Programmierung besteht nicht von Beginn an daraus, dass man Code schreibt. Guter Unterricht in dem Bereich beginnt mit den theoretischen Grundlagen!

Leider ist genau das heutzutage noch immer nicht überall erkannt worden.


----------



## HimBromBeere (4. Apr 2012)

> Guter Unterricht in dem Bereich beginnt mit den theoretischen Grundlagen!


Das ist nicht immer der richtige Weg, ich sag nur "learning by doing". Ich möchte auch nicht, wenn ich kochen lerne, erst einmal die Theorie der richtigen Mischung studieren, sondern einfach erstmal probieren, was so geht. Beides ist durchaus möglich, aber pauschal zu sagen, man müsse sich erstmal durch die Theorie boxen, finde ich nicht wirklich überzeugend.

Zurück zum Thema: ich mag zwar BlueJ auch nicht, aber die Argumente dafür haben mich schon ein wenig überzeugt. Ich kann mich noch gut daran erinnern, wie verwirrt ich war, als ich das erste mal eine static void gesehen hab... v.a. der Typ void machte mir anfangs sehr zu schaffen (was aber auch daran liegt, dass es in anderen Sprachen nicht nur Methoden sondern z.B. auch Prozeduren gibt).


----------



## timbeau (4. Apr 2012)

Wenn ich Lehrer wäre würde ich ähnlich wie BlueJ vorgehen, ohne vll BlueJ zu nutzen. 
Aber erstmal die reale Welt als Objekte sehen und diese dann ins Programm zu transferieren finde ich einen guten Ansatz.


----------



## Sonecc (4. Apr 2012)

HimBromBeere hat gesagt.:


> Das ist nicht immer der richtige Weg, ich sag nur "learning by doing". Ich möchte auch nicht, wenn ich kochen lerne, erst einmal die Theorie der richtigen Mischung studieren, sondern einfach erstmal probieren, was so geht.


Es geht sich ja nicht darum, was mehr spass macht. Sicher ist es spassiger direkt loszulegen. Aber sinnvoller ist es nicht. Learning by doing führt nämlich gerade in dem Umfeld oft zu halbwissen und fehlern, die man so leicht nicht mehr los wird, weil einem die Grundlagen fehlen.

Ich sag ja aber auch nicht, dass man nie was tun darf. Nur grundlegende Theroetische Grundlagen sollten schon vorher bekannt sein, bevor man mal etwas tut. Dazu gehört im Falle von Java nunmal u.a. OO und eben auch static oder void, da es elementare Bestandteile der Sprache sind.

Was den Vergleich betrifft:

Wenn ich Flugzeugbauer werden will, kann ich auch nicht einfach anfangen zu bauen, ohne erstmal die theoretischen Grundlagen zu haben.
Wenn ich Lokführer (oder auch Autofahrer) werden will, kann ich auch nicht einfach losfahren ohne die theoretischen Grundlagen zu haben.

Tut mir leid, aber der Vergleich hinkt, denn auch als Koch muss man Grundlagenwissen besitzen, bevor man die Kunden bedient.
Einfach ins kalte Wasser springen funktioniert bei keinem Beruf, erst recht nicht bei einem eher komplizierten wie dem des Entwicklers.


----------



## HimBromBeere (4. Apr 2012)

Von berufsmäßigen Programmierern war hier niemals die Rede, oder ist dieses Forum nur für ebendiese da, dann geh ich mal schnell wieder ;(... Im Übrigen war auch nie von DEM KOCH die Rede, der Vergleich hinkt also keinesfalls.
Anderes Bsp.: Viele Berufsmusiker haben - wenn überhaupt - dann nur eine mäßige theoretische Ausbildung genossen, sprich sich erst mit haufenweise Geschihte, Tonbildung, Notenfarben ... beschäftigt und sind dennoch hervorragend auf ihrem Gebiet. Aber es soll auch Musiker geben, die zunächst tatsächlich Noten gelernt und dann erst gespielt haben 
Wie dem auch sei, selbst bei vielen (wenn nicht gar allen, aber das weiß ich nicht genau) Ausbildungen steht die Praxis im Vordergrund, weswegen dort auch die ersten Tage/Wochen "gearbeitet" und nicht "gelernt" wird. Die Theorie kommt dann meist erst nach einer gewissen Zeit dazu. Beim Programmieren funktioniert das überdies auch, es gibt hier kein wirklich richtig und falsch, es ist nur eine Art, wie man lernt.


EDIT: Und wieder einmal: zurück zum Thema. BlueJ ist meines Erachtens vielmehr eine Herangehensweise an ein unbekanntes Wissensgebiet als nur eine Entwicklungsumgebung. Für Anfänger und/oder Quereinsteiger (hey, steckt das nicht im Titel dieses Unterforums sogar drin?) , die weder die Zeit noch das Verständnis für die genauen Hintergründe haben, finde ich dieses Programm entgegen meiner Erwartung doch ganz positiv.


----------



## Tomate_Salat (4. Apr 2012)

Ich gebe auch mal irgendjemand recht. Was ist der Vorteil daran, Schülern mit einer "IDE" arbeiten zu lassen, die sie nie wieder brauchen werden und im schlimmste Falle werden noch Bibliotheken verwendet, die später nie zum Einsatz kommen?

Imho hat das nichts mit Java zu tun, sondern maximal: Was könnte Programmieren sein anhand von Java-Syntax.

Als Lehrer würde man im schlimmsten Falle sagen: "das Konstrukt akzeptiert ihr einfach mal so und ihr werdet es später nachvollziehen können". 

Das ist allemal besser, als es komplett unter den Tisch fallen zu lassen. Programmieren ist nunmal keine Sache, die man von heute auf morgen lernt. Es gibt immer wieder Stellen, an denen man akzeptieren muss: wie da was funktioniert kann ich mir gegenwärtig nicht erklären. Das kommt aber nach der Zeit.


----------



## Sonecc (4. Apr 2012)

HimBromBeere hat gesagt.:


> Von berufsmäßigen Programmierern war hier niemals die Rede, oder ist dieses Forum nur für ebendiese da, dann geh ich mal schnell wieder ;(... Im Übrigen war auch nie von DEM KOCH die Rede, der Vergleich hinkt also keinesfalls..



Deswegen brachte ich auch Autofahrer als Beispiele an.


----------



## schalentier (4. Apr 2012)

Tomate_Salat hat gesagt.:


> Was ist der Vorteil daran, Schülern mit einer "IDE" arbeiten zu lassen, die sie nie wieder brauchen werden und im schlimmste Falle werden noch Bibliotheken verwendet, die später nie zum Einsatz kommen?



Die wenigstens Schueler werden Programmierer, also werden auch die wenigsten jemals wieder Eclipse & Co anfassen. 



Tomate_Salat hat gesagt.:


> Als Lehrer würde man im schlimmsten Falle sagen: "das Konstrukt akzeptiert ihr einfach mal so und ihr werdet es später nachvollziehen können".



Das ist ein didaktischer Epicfail. Was dann bei einem Schueler ankommt ist: "Also das ist alles gaanz kompliziert und ihr seit einfach noch zu dumm um es verstehen zu koennen. Wenn ihr irgendwann viel gelernt habt, werdet ihr es dann aber vielleicht verstehen". Lesen lernt man doch auch nicht mit Shakespear, sondern mit extrem einfachen Saetzen, wo eben keine ablenkenden Fragen auftauchen koennen.



Tomate_Salat hat gesagt.:


> Imho hat das nichts mit Java zu tun, sondern maximal: Was könnte Programmieren sein anhand von Java-Syntax.



Naja, darum gehts doch. 

Ich glaub, wir diskutierten hier ohne definiert zu haben, fuer wen BlueJ geeignet ist. Imho ist es eine recht gute Moeglichkeit, um einen Menschen in die Objektorientierte Programmierung einzufuehren. Es geht um die Grundkonzepte, Objekte und Klassen und deren Verknuepfung. Eine Alternative zum guten alten Pascal, fuer Informatikunterricht an der Schule, der ueber "Jetzt lernen wir Word" hinausgeht. Der muss vor allem Spass machen, so dass die Schueler nicht nach 2 Stunden sagen: "Versteh ich nich, is langweilig und nix fuer mich". 

Es ist definitiv nichts fuer jemanden, der Softwareentwicklung studiert oder eine Ausbildung zum Fachinformatiker macht.


----------



## Tomate_Salat (4. Apr 2012)

schalentier hat gesagt.:


> Die wenigstens Schueler werden Programmierer, also werden auch die wenigsten jemals wieder Eclipse & Co anfassen.



Deswegen darf man die Ausbildung von den Schülern verhunzen, die es ernst meinen? Wie sähe dann der Englisch-unterricht oder Matheunterricht aus? Sorry, das ist imho kein Argument.



schalentier hat gesagt.:


> Das ist ein didaktischer Epicfail. Was dann bei einem Schueler ankommt ist: "Also das ist alles gaanz kompliziert und ihr seit einfach noch zu dumm um es verstehen zu koennen. Wenn ihr irgendwann viel gelernt habt, werdet ihr es dann aber vielleicht verstehen". Lesen lernt man doch auch nicht mit Shakespear, sondern mit extrem einfachen Saetzen, wo eben keine ablenkenden Fragen auftauchen koennen.



Die main-Methode ist Shakespear? Ich glaube nicht, dass sich ein Schüler für zu dumm hält, wenn man in der ersten Stunde gesagt bekommt, "das lernen wir im Detail erst später". Außerdem sehe ich auch kein Problem darin, einfach zu sagen, was die Bestandteile von der main Bedeuten. Später kann man immernoch ins Detail eingehen. 



schalentier hat gesagt.:


> Es ist definitiv nichts fuer jemanden, der Softwareentwicklung studiert oder eine Ausbildung zum Fachinformatiker macht.


... hier ist es imho mit Abstand am schädlichsten und gerade hier kommt es viel zu häufig vor.


----------



## langhaar! (4. Apr 2012)

schalentier hat gesagt.:


> Imho ist es eine recht gute Moeglichkeit, um einen Menschen in die Objektorientierte Programmierung einzufuehren. Es geht um die Grundkonzepte, Objekte und Klassen und deren Verknuepfung.



Folgendes steht bei Wikipedia:


> welche speziell für Ausbildungszwecke konzipiert wurde. Insbesondere das Vermitteln von Zusammenhängen in der objektorientierten Programmierung steht im Mittelpunkt des Systems.



Es geht *nicht* darum, Java zu lernen.
Erst recht nicht um die Syntax.


----------



## timbeau (4. Apr 2012)

Als ob der Matheunterricht in der Schule etwas mit dem Mathematikstudium zu tun hätte. :lol:

Es geht darum Schüler mit Spaß ans programmieren zu kriegen.


----------



## langhaar! (4. Apr 2012)

Tomate_Salat hat gesagt.:


> Deswegen darf man die Ausbildung von den Schülern verhunzen, die es ernst meinen? Wie sähe dann der Englisch-unterricht oder Matheunterricht aus?



Wie sieht denn der Matheunterricht heute aus?
Was man in der Schule lernt, hat doch mit Mathematik wenig zu tun.
In der Schule lernt man mehr oder weniger ein paar Rechenregeln.

In der Uni fängt dann ein Mathestudium im Stoff wieder ganz von vorne an.


----------



## irgendjemand (4. Apr 2012)

lasst mich mal euren vergleich mit dem berufsleben noch mal aufgreifen

ich selbst hab mich auch mal im schlosserhandwerk versucht *zumindest nannte man das mal so als unser staat noch DDR hieß* ...
und ob ihr es glaubt oder nicht ... aber es ist eben NICHT einfach damit getan mal eben die feile in die hand zu nehmen und damit den stahl zu "vergewaltigen" ...
jeder vernünftige meister *zumindest die bei denen ich gelernt habe* haben uns erstmal ne ganze woche theorie eingefüllt bevor wir überhaupt mit der praxis angefangen haben ... weil es gibt dann doch eine ziemlich große auswahl an feilen *z.b. hieb-art und -anzahl , form , länge , richtige bezeichnungen , DIN , etc*

worauf ich damit hinaus will um es mal mit "Heute lernen wir Java mit BlueJ" zu vergleichen : man kann einen neuling nicht sofort an eine *und sry ... aber ich sehe es immer noch so* möchtegern IDE lassen ohne ihm das theoretische wissen zu vermitteln
und das beginnt nicht etwa erst bei den besonderheiten von java wie die syntax oder OOP im etwas allgemeineren sinn ... sondern sollte erstmal mit nem crash-course über programmieren allgemein beginnen ... und damit meine ich wirklich die anfänge wie der webstuhl mit seiner lochkartensteuerung ...
dann das ganze natürlich übertragen auf heutige hardware und auch lowlevel dierekt mit micro-opcode anfangen ... dann noch kurs assembler und vllt C anreißen ... und dann erst überhaupt java erwähnen ...
dafür würde ich als lehrer bzw ausbilder schon mal gut ne woche für opfern ... um es den schülern überhaupt erstmal klar zu machen was "Programmieren" eigentlich bedeutet ...

wenn man dann soweit ist das man mit java anfängt sollte man es erstmal ganz banal machen : die welt von java anhand von realen "objekten" erklären ... um überhaupt erstmal auf die besonderheiten einzugehen

und DANN kann man anfangen "Hello World!" an die tafel zu schreiben ... als ungefähr ab mitte 2. woche ...
und dann nimmt man sich erstmal die zeit seinen schülern / azubis diese eine zeile zu erklären , was Gossi schon mal ganz gut getan hat *auch wenn ich es selbst vielleicht etwas anderst formulieren würde ... aber sinngemäß stimmt es ja*

damit wäre schon mal das größte TOTSCHLAG argument von bluej widerlegt : das lehrer ihren schülern diese zeile an die tafel schreiben und sagen : "glaubt mir einfach und schreibt das mal so" *um mal bluej selbst zu zitiren*
es ist mir schon klar das dieses verhalten dann zu den genannten problemen führt ... aber warum geht man hier nur auf die probleme ein anstatt mal den grund zu hinterfragen warum viele lehrer es denn genau so machen ?
ich finde hier die sichweise von bluej ziemlich daneben und würde das *um mal mit den worten von schalentier zu sprechen* "epic self own" nennen


dann finde ich es auch ziemlich krass wie ihr den punkt I/O völlig aus dem zusammenhang reißt ...

I/O hat nicht ausschließlich was mit console zu tun und damit über diese text auszugeben und ggf einzulesen ...
I/O ist grundsätzlich alles das wo irgendwelche bytes von einem speicher in einen anderen kopiert werden ...

und auch hier finde ich die ansicht von bluej ziemlich daneben : der gesamte I/O bereich wird hier einfach nur auf simple text-ein/ausgaben auf einer console reduziert ... ohne mal andere wichtige gebiete wie z.b. network- und file-I/O auch nur ansatzweise zu nennen ...
oder auch wie bluej sich hier nur darauf fixiert das man dann die schüler gleich zu beginn mit exceptions konfrontiert ... ziemlich lächerlich diese aussage ... denn bei ALLEN I/O-ops können fehler auftreten ... und diese werden in java nunmal durch Throwable und deren sub-klassen definiert ...
und wer hier jetzt mit dem argument kommen will : ja aber dann muss der lehrer ja wieder so viel erklären ... der meinen post bis hier hin *und auch das gesamte topic* scheinbar immer noch nicht verstanden ...

bluej fixiert sich darauf das es lehrkräfte gibt die ihren schülern sagen : "hinterfragt es nicht , das klären wir später , aber jetzt schreibt es erstmal so hin" ... und genau das ist der grund warum ich mich über bluej so aufrege : weil es genau diese verhaltensweise auch noch unterstützt ...

nein ... die einzig richtig lösung ist hier bei den lehrkräften anzusetzen und zu hinterfragen WARUM sie eben diese haltung haben ... anstatt irgendwas dahingeschmiertes anzubieten und genau solchen "problem-"lehrern auch noch eine möglichkeit geben das diese sowas gar nicht erst ansprechen müssen ... und das hat in meinen augen nichts mehr mit programmieren zu tun ... und schon garnicht mit java im speziellen ... denn dinge wie exceptions bei I/O-ops gehören nun mal einfach zur sprache dazu und sind ein fundamentaler bestandteil *sonst würde der kram ja nicht in java.lang liegen* ...

und dann höre ich hier posts wie das mein thread angeblich unter aller sau wäre nur weil ich mich mal öffentlich in meiner radikalen denkweise darüber äußere wie ein projekt die unfähigkeit einiger lehrer unterstützt ... nur weil deren "entwickler" genau solche mal selbst als lehrkräfte hatten ...
ich glaube diejenigen die so über diesen thread denken haben das grundproblem nicht begriffen ... wahrscheinlich selbst mal so angefangen ... und sich wie viele andere auch auf diese in meinen augen FALSCHE lernweise festgefahren


----------



## HimBromBeere (4. Apr 2012)

Jetzt beruhig dich mal wieder, du musst dich nicht hier aufregen. Werden wir mal wieder sachlich und suchen nach Argumenten für oder gegen den Einsatz von diverser Software für einen bestimmten Anwendungsfall. Derer sind zuletzt leider viel zu wenige genannt worden.
Tragen wir also zusammen: 

*Ziel des Programmes:*
Einsteigern das Programmieren mit JAVA näher bringen. Konzipiert für Anfänger und Quereinsteiger.

*Das Mittel:*
Eine einfache übersichtliche Oberfläche, wenig Schnickschnack, geringer Funktionsumfang. V.a. visuelle Elemente werden hierbei verstärkt genutzt.


*Auf der Pro-Seite steht: *
BlueJ ist eine einfache und übersichtliche Umgebung, mit der simple Programme erstellt und lauffähig gemacht werden. 
Durch visuelle Elemente wird das Erstellen der ersten (einfachen) Programme beschleunigt.

*Dagegen spricht:*
Grundlegende Details wie main und IO werden außen vor gelassen.



Wenn jemand weitere ergänzen möchte, dann bitte... kurz und knapp und so neutral wie möglich.


EDIT: Wenn du sowieso deine feststehende Meinung hast von diesem Programm, warum startest du eigtl. überhaupt erst das Thema, Argumente scheinen dich ja kaum zu interessieren. Außerdem: nutz es doch einfach nicht, wenn´s dich so abschreckt...


----------



## timbeau (4. Apr 2012)

Ein Grundproblem ist doch, dass es viel zuwenig Lehrer gibt, die Programmieren können. Da wird BlueJ angewandt und mehr kann der Lehrer wahrscheinlich auch nicht.


----------



## irgendjemand (4. Apr 2012)

HimBromBeere hat gesagt.:


> Jetzt beruhig dich mal wieder, du musst dich nicht hier aufregen. Werden wir mal wieder sachlich und suchen nach Argumenten für oder gegen den Einsatz von diverser Software für einen bestimmten Anwendungsfall. Derer sind zuletzt leider viel zu wenige genannt worden.
> Tragen wir also zusammen:
> 
> *Ziel des Programmes:*
> ...



sorry ... aber du widersprichst dir selbst

"ziele : einsteigern das programmieren mit java näher bringen"
[...]
"contra : grunlegende details fehlen"

meinst du nicht das das im widerspruch zu sich selbst steht ?
wie willst du denn jemanden eine "sprache" beibringen wenn du grundlagen weglässt ?

*als blödes beispiel : wie bringt man jemanden z.b. russisch bei : in dem man ihm erstmal die schriftzeichen beibringt ... anstatt ihn gleich mit vokabeln zu konfrontieren *genau diesen fehler macht übrigens auch "Rosetta Stone"**

[EDIT]





timbeau hat gesagt.:


> Ein Grundproblem ist doch, dass es viel zuwenig Lehrer gibt, die Programmieren können. Da wird BlueJ angewandt und mehr kann der Lehrer wahrscheinlich auch nicht.


jop ... ich würde sagen : voll ins schwarze[/EDIT]


----------



## bone2 (4. Apr 2012)

irgendjemand hat gesagt.:


> "Heute lernen wir Java mit BlueJ"



das ist doch schon falsch, wurde oben schon gesagt, man lernt kein java mit bluej sondern bekommt eine einführung in das konzept der objektorientierung


wir haben damals im info unterrricht programmieren noch mit der steuerung eines niki-roboters gelernt. (vereinfachung von pascal und auf deutsch)
war für die meisten ganz lustig und vieles wurde rausgelassen, wie zb einsteigspunkte, parameter usw
und die die es wollten waren schon nach 2h schon auf einem niveau das das jahr  durch gereicht hat

[EDIT]er widerspricht sich nicht selber. lesen -> verstehen -> denken -> antworten[/EDIT]


----------



## HimBromBeere (4. Apr 2012)

> sorry ... aber du widersprichst dir selbst
> 
> "ziele : einsteigern das programmieren mit java näher bringen"
> [...]
> "contra : grunlegende details fehlen"


Tut mir Leid, MIR widerspreche ich keinesfalls, bestenfalls den Entwicklern des Programmes, die es demnach nicht geschafft haben, ihr ZIEL umzusetzen...


----------



## irgendjemand (4. Apr 2012)

bone2 hat gesagt.:


> das ist doch schon falsch, wurde oben schon gesagt, man lernt kein java mit bluej sondern bekommt eine einführung in das konzept der



gut ... wenn man mit BlueJ KEIN java lernt ... sondern lediglich einblicke in OOP bekommen soll ... erkläre mir mal warum das ding dann 1) Blue*J*(ava) heißt und 2) java als zugrundeliegenden sprache nutzt ...

nur um OOP zu lernen gibt es sicher bessere möglichkeiten als einen "vermurksten java-crashkurs" ...

ich finde auch diese aussage ... das man mit BlueJ angeblich eben KEIN java lernen würde ... auch ziemlich ... nun ... *missplaced* ...
denn die seite von BlueJ befasst sich ja nun wohl eindeutig damit das es anfängern angeblich erleichtert werden soll java zu lernen ... OHNE eben diese fundamentalen grundlagen wie z.b. "main" oder "I/O & Exception" zu lernen ...

[EDIT]





HimBromBeere hat gesagt.:


> Tut mir Leid, MIR widerspreche ich keinesfalls, bestenfalls den Entwicklern des Programmes, die es demnach nicht geschafft haben, ihr ZIEL umzusetzen...


ahh .. es macht so langsam KLICK beim ersten ...

denn genau das versuche ich mit diesem thread zu sagen : das die entwickler von BlueJ ihr ziel , es einsteigern einfacher zu machen , schlicht verfehlt haben weil sie wichtige grundlagen unter den tisch fallen lassen[/EDIT]


----------



## irgendjemand (4. Apr 2012)

sry .. verklcikt


----------



## bone2 (4. Apr 2012)

irgendjemand hat gesagt.:


> gut ... wenn man mit BlueJ KEIN java lernt ... sondern lediglich einblicke in OOP bekommen soll ... erkläre mir mal warum das ding dann 1) Blue*J*(ava) heißt und 2) java als zugrundeliegenden sprache nutzt ...



und wenn es BlueC heißen würde und auf C++ aufsetzen würde, wäre das Programm noch fast genauso (mmn wertlos)
es könnte jede beliebige oop sprache sein. das ding nutzt halt zufällig java


----------



## schalentier (4. Apr 2012)

Ja gut, ich glaub diese Diskussion wird sinnlos. Es gibt eben Menschen auf der einen Seite (mich z.B.) die sind der Meinung, dass man Neulingen Programmieren und Informatik am besten durch moeglichst sofortige Praxis beibringt (schwimmen lernt man auch nur im Wasser), auf der andren Seite gibt es welche, die sagen man braucht gewisse theoretische Vorkenntnisse. 

Wahrscheinlich liegt das daran, dass es bei mir so funktioniert hat (bei mir wars allerdings autodidaktisch - ich hab einfach stundenlang Listings abgetippt). Der Vorteil ist, man hat eben mehr oder weniger sofort Erfolgserlebnisse. Zudem eignet sich Informatik da besonders gut, weil man sich am Rechner schlecht verletzen kann (wie z.B an irgendwelchen Maschinen), noch kann man durch rumprobieren viel kaputt machen. 

Zudem kann ich nur nochmal sagen: BlueJ ist NICHT zum Lernen von Java, sondern zum Lernen von Objektorientieren Prinzipien. Und dafuer braucht man weder statische Methoden, noch Java's IO. 

Wenn das irgend jemand anders sieht, hab ich damit ueberhaupt kein Problem. Nur find ich es einfach albern, hier ueber irgendwelche IDEs zu meckern. Ich koennte das auch stundenlang machen (nur eben ueber Eclipse), aber ich hab gehoert, dass man vom Meckern Pickel bekommt. Also nehm ich einfach ne andre IDE, hab meine Ruhe und keine Pickel :-D


----------



## bone2 (4. Apr 2012)

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.


----------



## Kevin94 (4. Apr 2012)

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.

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.

[EDIT]@bone2: Ich finde es grausam wie du BlueJ pauschalisierst. Man kann damit auch wunderbar Java sich selbst mit Hilfe eines guten Buches beibringen.[/EDIT]


----------



## Sonecc (4. Apr 2012)

Nochmal: @irgendjemand: Nimm die Finger von der Punkt Taste. Es ist unheimlich schwierig deine Texte zu lesen.


----------



## Solgull (4. Apr 2012)

Ich halte BlueJ für einen hervorragenden Einstieg für Personen die bisher noch keinen Kontakt mit Programmierung hatten und denen daher erst einmal Grundlagen zur Programmierung beigebracht werden müssen.

In BlueJ läßt sich verhältnismäßig schnell - mit Java Syntax - ein Erfolg erzielen. Der ist aber zwingend notwendig um überhaupt ein Interesse an Programmierung zu erzeugen. (Kleine) Erfolge, Motivation und Lernleistung stehen hier im direkten Zusammenhang.

Dabei kann man eben gerade im Anfang wesentlich Teile von Java aussen vor lassen. Unter anderem auch die Objektorientierung und sich darauf konzentrieren wie denn eigentlich ein Programm abläuft.
Im weiteren Verlauf führt man dann mehr Grundlagen auch von Java ein und dann letztendlich auch eine Entwicklungsumgebung.

Bis dahin kann man aber - gerade weil vieles nicht automatisiert ist - auf besondere Punkte achten die bei einer Java Syntax wichtig sind. Sei es Formatierung, Import ...

Gebe ich den Leuten von Anfang an eine richtige Entwicklungsumgebung, dann läuft dort zu viel automatisch/unterstützt, so dass ein wichtiger Teil der Programmierung: Lesbarkeit von Code und (Syntax-) Fehlerfindung im Code zu schnell vernachlässigt wird.

Wer Java Programmieren kann, der kann im übrigen auch in BlueJ schönen Code schreiben, ist um ein vielfaches aufwendiger als mit einer Entwicklungsumgebung, bringt aber auch Chancen mit sich.

Wer nicht Programmieren kann - in keiner Sprache - dem reichen die begrenzten Möglichkeiten von BlueJ vollkommen und einen ersten Einblick in die Programmierung zu bekommen.


----------



## timbeau (4. Apr 2012)

bone2 hat gesagt.:


> 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.




Ich finde es grausam, wenn man mit Leuten zusammen arbeitet bzw Code refactorn muss, der ohne jegliche Beachtung von Konzepten/Konventionen und Softwareentwicklungsparadigmen geschrieben wurde. 

Damit will ich nicht andeuten, dass es bei dir so ist aber Theorie gehört eben dazu.


----------



## Landei (4. Apr 2012)

Wer interessiert an der Programmierung ist (egal ob professionell oder in der Schule), für den ist eine "richtige" IDE keine große Hürde. Im Gegenteil, sobald man auch nur ein klein wenig über "Hello World" hinaus ist, lernt man Features wie Autocomplete, Debugger u.s.w. schätzen.

Wer _kein_ Interesse an Programmierung hat, bei dem ist Hopfen und Malz verloren, da helfen weder BlueJ noch güldene Löffel mit vorgekautem Programmierbrei.

BlueJ ist wie eines der Japanisch-Lehrbücher, die mit lateinischer Umschrift arbeiten. Es sind nur ein paar Stunden Arbeit, das gängige Silbenalphabet (Hiragana) zu lernen, aber der Schüler soll davor erst einmal "geschützt" werden - mit dem Ergebnis, dass sich die Studenten auch nach Jahren noch mit der Schrift schwer tun und nützliches Originalmaterial nicht verwenden können, sondern lange auf die Umschrift-Krücke angewiesen sind. 

Ich denke, es ist ein konzeptioneller Fehler, Objektorientierung einzuführen, ohne die Grundlagen der imperativen Programmierung kennengelernt zu haben. Warum soll man nicht erst einmal Java als "Taschenrechner" verwenden - viele Tutorials anderer Sprachen beginnen genau damit. Nur in Java soll sofort die hehre Objektorientierung gelehrt werden - obwohl Java selbst es mit der reinen Lehre nicht so genau nimmt. Genau diese falschen Voraussetzungen führen zu den bekannten Problemen mit BlueJ: Oft sind es Beispiele für "leaking abstraction", wo die Fassade nicht ganz die Schweinereien dahinter abdecken kann. Dabei wäre es für den Schüler wichtig, einmal bewusst den Schritt von imperativ zu objekt-orientiert getan zu haben, und dadurch klarer die Ideen hinter dem OO-Paradigma erkennen zu können. Was kann mehr von OO überzeugen, als wenn man die statische Methode mit 4 Argumenten von letzter Woche jetzt in einer OO-Architektur als Instanz-Methode mit nur einem Argument schreiben kann, oder wenn man sich bei einer Distanz-Methode nicht mehr fragen muss, welche Reihenfolge jetzt die Koordinaten hatten, weil man die [c]Point[/c]-Klasse verwendet. Das ist eine Chance zum besserem Verständnis, nämlich *warum* Konzepte wie Kapselung, Entkopplung, Interfaces u.s.w. wichtig sind. Und diese Chance verbaut man sich BlueJ - aus Bequemlichkeit (um nicht zu sagen Faulheit) und falsch verstandener Rücksichtnahme,


----------



## bone2 (4. Apr 2012)

timbeau hat gesagt.:


> Damit will ich nicht andeuten, dass es bei dir so ist aber Theorie gehört eben dazu.


das theorie dazugehört würde ich niemals anzweifeln, aber ich hab lieber erst nen happen praxis vorher, bzw mein gehirn hat es so rum lieber.

Als ich in der Firma mit java und damit auch oop angefangen hab (war vorher nur pascal, html und so). kam halt die aufgabe, bau mal xyz. dann haben wir rübergeschaut und das was nich so in den tutorials rüberkam direkt korrigiert. (aka klassen groß, methoden klein, camelCase, einrücken usw). dann neue aufgabe ne nummer schwerer und andere wichtige theoretische dinge in dem zusammenhang durchgesprochen.




Kevin94 hat gesagt.:


> [EDIT]@bone2: Ich finde es grausam wie du BlueJ pauschalisierst. Man kann damit auch wunderbar Java sich selbst mit Hilfe eines guten Buches beibringen.[/EDIT]


aber für "hello world" und taschenrechner tut es auch notepad(++) 

hatte blueJ halt in der Uni und fand es, vorsichtig ausgedrückt, nicht gut.


----------



## Tecwan (4. Apr 2012)

Absolute Anfänger tun sich durchaus schwer bereits damit, "einfache" Syntax als gegeben
hinnehmen zu müssen:
a = 5    Also a erhält den Wert 5...
b = 6    ...und b wird 6...
a = b    ...und das gibt einen Fehler, weil 5 nicht 6 ist!
ist für Adigitalisten bereits das erste Problem.

Was will denn ein Lehrer, der vor einer Schülerschar mit den unterschiedlichsten Voraussetzungen
steht, in den 2 Schulstunden machen?
Seinen Cracks etwas beibringen, was sie binnen kürzester Zeit allein schon aufgrund der
investierbaren Zeit besser als ihr Lehrer hinbekommen werden?
Oder auch den Schülern, die ansonsten schon in der sechsten Klasse zwischen Dreisatz und
Dreieckssatz für sich entschieden haben, dass Mathematik nutzlos oder unverständlich ist?
Schüler der Kategorie "Mathe zwischen 4 und 5" kann man sehr wohl über die Informatik wieder
"herbeiholen", aber das funktioniert garantiert nicht über frontale Theorie.
Selber machen können - Wesentliches machen können - ohne dabei Balast (expliziten Code) aktiv
ignorieren zu müssen, ist anfangs ein Vorteil.
Und darum geht es: Konzepte - ohne vollständigen Code schreiben zu müssen - selber erfahren
zu können.

Natürlich ist eine solche didaktisch motivierte Entwicklungsumbgebung keine "produktive
Entwicklungsumgebung".
Ein Konzept anzureißen heißt nicht, eine konkrete Sprache - oder wie früher häufig: einen
proprietären Dialekt davon - lernen zu müssen.
Mit dem Konzept später zu arbeiten, allerdings schon, keine Frage.
Das Problem besteht für mich eher darin, den richtigen Zeitpunkt für den Umstieg zu erwischen,
und den kann man getrost ziemlich früh ansetzen (und manchem Didakten als verpasst unterstellen).

Aber davor wird die Aufgabe, die Schüler überhaupt zur eigenen Auseinandersetzung mit
dem Thema zu bewegen, von der abstrakteren Möglichkeit und dem eigenen Experiment
- und ohne komplizierte Syntax lesen zu müssen! - besser bewerkstelligt.

Ich sehe BlueJ als eine Möglichkeit an, die Einstiegsschwelle zu senken.
Wenn man anschließend beginnt, die Konzepte zu hinterfragen oder in ihrer Bedeutung einordnen
zu wollen, ist zweifelsohne tiefere Kenntnis nötig. Aber das ist bereits nicht mehr Einstieg.
Insofern ist die Diskussion hier ein Stück weit überflüssig.


----------



## Fab1 (4. Apr 2012)

ich bin auch der Meinung, dass man BlueJ nicht von vornherein als schlecht bezeichnen sollte. Wie bereits beschrieben enthält die IDE ein paar nützliche Funktionen um Sachen besser darzustellen wie zum Beispiel Rekursion.
Hatte mir mal eine Vorlesung darüber (im Internet) angehört und die Erklärung mithilfe von BlueJ war wirklich gut und verständlich.

Das heißt nun aber nicht, dass ich deshalb BlueJ verwenden werden, oder je ausgiebig verwendet habe. Für eine mächtige IDE wie eclipse oder Netbeans gibt es nun mal mehr Überstützung im professionellen Bereich. Daran wird sich imho in nächster Zeit auch nichts ändern.


----------



## Tomate_Salat (4. Apr 2012)

Fab1 hat gesagt.:


> ich bin auch der Meinung, dass man BlueJ nicht von vornherein als schlecht bezeichnen sollte.



Meine Meinung basiert auf den Fragen von Mitgliedern hier im Forum. Imho tut BlueJ Leuten keinen Gefallen die ernsthaftes Interesse an Java haben. BlueJ verheimlicht Dinge und man greift noch gerne zu Bibliotheken und Erweiterungen wie SuM und Greenfoot - Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.

Wie irgendjemand in seinem langen Post schon gut gesagt hat: Es braucht einfach Zeit eine Sprache zu lernen. Die Schüler bei Laune zu halten und deswegen unnötige Inhalte zu unterrichten ist imho der falsche weg. Dann sollen die Lehrer doch bitte zu einer anderen Sprache greifen, die keine Main besitzen (PHP,C,Python,JavaScript,[ts=Am besten WoW-Addons schreiben]Lua[/ts],...). Dann können die Schüler, die Interesse am Programmieren (vollkommen egal welche Sprache) haben auch auf den Kenntnissen aufbauen. 

Wie ich schonmal in einem anderen Thread dazu geschrieben habe: Wenn man einen Führerschein macht, fährt man auch nicht erst im Bobycar die Straßen ab.



langhaar! hat gesagt.:


> In der Uni fängt dann ein Mathestudium im Stoff wieder ganz von vorne an.


Cool, wende ich das Beispiel mal auf meine Erfahrungen bzgl. BlueJ-Anwender und deren erste Probleme an: Du kommst aus der Uni raus und rechnest trotzdem [c]n/0[/c] aus, weil es am Anfang zu kompliziert war, dir zu erklären, wieso man nicht durch [c]0[/c] teilen darf.


----------



## vanny (4. Apr 2012)

Wenn BlueJ für diejenigen, die die Javabasics kennen/können, nichts ist und für diejenigen, die wirklich Java lernen wollen, auch nichts ist, dann gibts da meiner Meinung nach nicht viel Spielraum für einen sinnvollen Einsatz, es sei denn einige hier gepostete schlechte Eigenschaften von Schülern und Lehrern treffen tatsächlich zu

Gruß Vanny

[EDIT]Ich beziehe mich hier nur auf den Aspekt "Java lernen" für mehr Meinung reicht mein Horizont leider nicht[/EDIT]


----------



## timbeau (4. Apr 2012)

Wer behauptet, dass in der Uni der Stoff wieder von vorne anfängt hat nie Mathe studiert. Ist einfach Quatsch. 

In der Schule gehts auch um ganz andere Sachen als wirkliche Fakten zu vermitteln. Ganz nach dem Spruch_Wer einem Manne einen Fisch schenkt, gibt ihm für einen Tag zu essen. Wer ihn das Fischen lehrt, gibt ihm ein Leben lang zu essen._, muss es auch in der Schule laufen. In der Uni ist das schon etwas anderes aber immernoch ein großer Teil. Wenn jemand sich später beschwert, dass er kein Java lernen kann, weil er BLueJ in der Schule benutzt, dann ist das Problem nicht BlueJ sondern der Schüler.


----------



## Landei (4. Apr 2012)

timbeau hat gesagt.:


> _Wer einem Manne einen Fisch schenkt, gibt ihm für einen Tag zu essen. Wer ihn das Fischen lehrt, gibt ihm ein Leben lang zu essen._



Der Spruch geht aber anders: _Gib jemandem ein Programm, dann ist er einen Tag frustriert. Lehre ihn Programmieren, dann ist er es ein Leben lang..._


----------



## gassssst (4. Apr 2012)

Wunderbar wieder ein BlueJ Thread 



Gossi hat gesagt.:


> Er weiß nicht was nen boolean ist, ein Array, Methoden Rückgabetypen etc., weil ihm das alles von BlueJ abgenommen wurde


Nur mal interessehalber, wo nimmt BlueJ einem irgendwas mit boolean, arrays oder methoden ab?
Du hast dasselbe schonmal in einem früheren BlueJ Thread behauptet, aber hast mir auch dort nicht auf die Frage antworten können.



Landei hat gesagt.:


> Ich denke, es ist ein konzeptioneller Fehler, Objektorientierung einzuführen, ohne die Grundlagen der imperativen Programmierung kennengelernt zu haben. Warum soll man nicht erst einmal Java als "Taschenrechner" verwenden


Nun eine interactive shell wie python hat java von haus aus ja leider nicht, aber - und das ist in vorherigen Beiträgen wohl nicht rübergekommen - kann ich BlueJ auch für die Lehre von imperativer Programmierung, so gut wie es mit java halt geht benutzen. Z.B. da ich meine Funktionen einfach per mausklick aufrufen/parametisieren kann.  



Tomate_Salat hat gesagt.:


> Meine Meinung basiert auf den Fragen von Mitgliedern hier im Forum. Imho tut BlueJ Leuten keinen Gefallen die ernsthaftes Interesse an Java haben. BlueJ verheimlicht Dinge und man greift noch gerne zu Bibliotheken und Erweiterungen wie SuM und Greenfoot - Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.


Nix für ungut, ich glaube dein (und zugegebenermaßen in gewissem maß ebenso mein) Problem liegt eher bei blöden Fragen von Anfängern generell. Ich kann nicht aufzählen, wie oft ich augenrollend den Browser geschlossen hab, weil wieder irgendein **** gefragt hat warum eclipse seinen code "rot unterstreicht". Das ist, wie du, wenn du nicht voreingenommen wärst, feststellen könntest, kein IDE Problem sondern ein User-Problem


----------



## Tecwan (5. Apr 2012)

Tomate_Salat hat gesagt.:


> Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.



Wenn die Aufgabe darin besteht, Schülern tatsächlich eine Sprache beizubringen: ja.



Tomate_Salat hat gesagt.:


> Die Schüler bei Laune zu halten und deswegen unnötige Inhalte zu unterrichten


Da liegt für mich der Knackpunkt: BlueJ ist Animationsmaterial, und der Nutzen liegt im Aufbau der
Motivation. Ziel ist nicht das konkrete Erlernen einer Sprache, sondern eher sowas wie ein 
symbolischer Umgang mit Konstrukten. Aus diesem Blickwinkel ist es viel weniger eine
Zeitverschwendung.

Um ein ähnliches Bild wie das des Bobbycars zu bemühen: Wie viele Schüler haben sich zB. durch
die programmierbaren Lego-Roboter dazu animieren lassen, sich mit dem "Programmieren" zu
beschäftigen. Da werden auch symbolische Aktionen grafisch zu Flussdiagrammen zusammengesetzt,
ohne dass dafür eine Sprache bemüht werden muss. Klar, die Bedienung erfordert auch eine gewisse
Einarbeitungszeit. Aber ist das Zeitverschwendung?
Außerdem fangen einige der Kids damit an, Lego-Roboter zu bauen, noch bevor in der Schule
Prozentrechnung oder Dreisatz auf dem Lehrplan stehen.
Entscheidend für eine Karriere als späterer Programmierer (ob Hobby oder zum Broterwerb spielt
dafür keine Rolle) ist da vielmehr der Spaß und die Vermittlung des Gefühls, eigene Ideen umsetzen
zu können. Der Nutzen liegt auf einer völlig anderen Ebene, es geht nicht um Fachwissen, sondern
um das Vermitteln eines Selbstvertrauens in die eigenen Fähigkeiten, wenn man sich auf die
Vorgaben einlässt - und da können die Hürden ruhig sehr niedrig liegen. Die emotionale oder
spielerische Komponente hat einen viel größeren Einfluss auf die Lernwilligkeit als beispielsweise
der Anreiz, den die intellektuelle Herausforderung bietet.
*oder lest ihr hier nicht lieber als trockenes Dozieren eine Diskussion, in der die Fetzen fliegen?*
Das eine ist Spiel, das andere Arbeit, und optimal läuft es, wenn schließlich die Arbeit ähnlich
anregend empfunden werden kann wie das Spiel.

Nur, und da stimme ich zu, darf man nicht beim mühelosen Spiel stehen bleiben, sondern muss
irgendwann die Schwelle zur Ernsthaftigkeit des "ohne Fleiß kein Preis" überschreiten.
Das ist aber nicht Aufgabe von BlueJ, und man kann auch den Entwicklern der IDE nicht
vorwerfen, dass sie versuchen, die Grenze des "Jetzt muss man aber echtes Java lernen" so
weit wie möglich herauszuschieben.
Da sind es tatsächlich eher die Lehrer, die den Zeitpunkt verpassen, an dem das "echte Zeug"
näher gebracht werden muss.

Es ist ein Bischen wie Führerschein am Simulator zu machen; vieles ist machbar, manches
aber eben auch nicht.


----------



## U2nt (5. Apr 2012)

Um mich mal an der Diskussion zu beteiligen (auch wenn ich nicht jeden einzelnen Post durchgelesen habe):
Vorweg muss ich erstmal sagen das ich BlueJ nochnicht verwendet habe und nur aus den Infos, die ich durch die Posts hier gelesen habe, "beurteile".

Als ich selbstständig angefangen habe Java zu lernen war ich schon ein wenig "verwirrt" von der main-Methode. Aber ich hatte den Ehrgeiz, es weiter zu lernen. Und genau da liegt der Punkt:

Wenn man den Ehrgeiz hat und die Sprache lernen _will_, ist BlueJ imho nicht der richtige Weg, wie hier schon beschrieben wurde verheimlicht es einfach zu viel. Wenn man sich dafür interessiert kann man sich in alles reinlesen, so komplex es seien mag.
Wenn man jedoch dazu "aufgezwungen" wurde und man nicht den Ehrgeiz mitbringt und einfach nur die Unterrichtszeit absitzt und wenigstens noch eine akzeptable Benotung haben will, dann sollte der Lehrer zu BlueJ greifen - da eben die die's nicht interessiert auch nichts weiter nach der Schule mit machen werden. (Wurde glaube ich schonmal in etwa so hier erwähnt).

Die Frage vom TO bezog sich auf Einsteiger, da muss man wieder unterteilen:

Einsteiger, die Selbstständig die Sprache erlernen wollen
Einsteiger, die die Sprache erlernen müssen
Einsteiger, die die Sprache erlernen wollen und müssen

Fazit: Wenn man dazu ausgerichtet ist, bspw. in der Uni, Leute darauf zu trainieren berufliche Entwickler zu werden, ist BlueJ imho nichts.


----------



## gasssssst (5. Apr 2012)

Das hab ich hier schon mehrmals gelesen, darum mal die Frage (an alle):


U2nt hat gesagt.:


> wie hier schon beschrieben wurde verheimlicht es einfach zu viel.


Von der Tatsache, dass eine Konsolen-Java-Anwendung arbiträrerweise mit einer public-static-void-main(String...)-Methode gestartet wird, _was denn nun_ ?


----------



## irgendjemand (5. Apr 2012)

also die vergleiche mit dem bobbycar und dem mathe-studium nach dessen beendigung man immer noch versucht n/0 zu rechnen fand ich schon sehr treffend

ums vielleicht noch mal selbst aufzugreifen : kennst du IRGENDEINEN fahrlehrer der dich sofort nach der anmeldung in ein auto setzt OHNE dir vorher auch nur IRGENDETWAS theoretisch erklärt zu haben ? ich glaube NICHT ... und ich denke auch nicht das sich ein solcher fahrlehrer auch lange wird halten können ...

zum mathe-studium : hmm ... gut .. ich habs jetzt nicht studiert ... aber war in mathe dann doch recht gut *4 jahre in folge gesamtschnitt 1,00 ... und dann prüfung mit 2 verhaun weil ich ne aufgabe überlesen habe *shame** ...
ob man jetzt im mathe-studium so richtig von 0 anfängt kann ich nicht glauben ... denn auch wenn man wie gesagt nur "grundrechenarten" lernen würde ... sind das in 10 jahren dann immerhin doch noch ne ganze menge ... selbst wenn man den ganzen geometrie-kram mal als einen kompletten teil betrachtet ... bleiben neben den 4 grundrechenarten immer noch potenzen / wurzeln , klammern / binomische formeln , brüche und noch einiges mehr ... wenn man sich dann noch 3 jahre durchs abi quält kommt dann noch mal die selbe menge neuer stoff in grade mal nem drittel der zeit auf einen zu ...

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 ?

sry ... DAS weicht dann doch sehr stark von meinem eigentlichen thema ab und lässt sich ungefähr mit dem unterschied von "schul-physik" bis zur "hochwissenschaftlichen theoretischen quanten-physik" vergleichen ... und schlägt hier voll raus ...


dann kam auch die unterscheidung zwischen verschiedenen typen von "einsteigern"

ich selbst bin autodidakt ... habe mir also alles was ich im groß-bereich IT weis selbst *großteil mit hilfe des netzes selbst* beigebracht ... weil ich den willen dazu hatte und auch immer noch den willen habe mich auf diesem gebiet sowohl hobby- als auch berufs-mäßig immer weiter zu entwickeln ...

dann gibt es noch die jenigen die es müssen , aber nicht wollen ...
bei dieser gruppe frage ich mich dann immer ernsthaft : WARUM meldet sich sojemand auch noch freiwillig zum info-kurs ?
wer dann nichts mitbekommt und daraus resultierend schlechte noten kassiert ... der ist SELBST SCHULD !

*eine sehr kleine ausnahme würde ich noch allerhöchstens für die machen welche auf grund von über-belegung anderer kurse in info MÜSSEN ... obwohl diese alles versucht haben dort eben nicht reinzukommen eben weil sie davon 0 plan haben und keine schlechten noten bekommen wollen ... aber das dürfte wohl von 1000 kursen 1 betreffen*

die letzte genannte kategorie ergibt für mich nur sehr wenig sinn ... denn entweder will ich es von vornherein und melde mich eben desshalb freiwillig zum info-kurs ... oder lass es komplett ...
für mich würde also dieser fall "ich will und ich muss auch" *oder wie auch immer du es noch ausführlicher beschreiben willst* keinen sinnhaften grund haben und daher nicht eintreten ...




> Das hab ich hier schon mehrmals gelesen, darum mal die Frage (an alle):
> 
> 
> 
> ...


und damit willst du jetzt genau WAS ausdrücken und WAS genau fragen ?
nach dem ich mir erlich gesagt erstmal das wort "arbiträr" google musste *wikipedia übersetzt "Arbitrarität" mit "willkürlichkeit"* verstehe ich deinen post immer noch nicht

java wird nicht "willkürlich an [c]public static void main(String[])[/c] gestartet" ... sondern das ist so festgelegt in der sprach-definition das genau diese signatur *vorrausgesetzt sie befindet sich in einer [c]public class[/c]* der einsprungspunkt für die VM ist ... gleich ob es davon mehrere in einem projekt geben sollte und es somit möglich ist "verschiedene" einstiegspunkte zu haben

oder was willst du jetzt wissen ?


auch der angesprochene "verheimlichung" muss ich voll und ganz zustimmen ... denn java lernt man nicht in dem man wichtige grundlagen unter den tisch fallen lässt

*um es hier noch einmal deutlich zu machen : BlueJ ist nach *eigenen* angaben dazu gedacht es *java* anfängern zu erleichter in die sprache einzusteigen ... und zwar dierekt mit OOP ohne sich vorher mit den imperativen basics zu befassen ...
wie du vom deutschen wiki-artikel , welcher deinem zitat zu folge besagt das es angeblich nur das ziel wäre OOP im allgemeinen zu vermitteln , darauf kommst das man es für alle sprachen pauschalisieren könnte weis ich nicht ... *derjenige sollte es selbst wissen wer angesprochen ist*

und wie ich bereits sagte : wer java wirklich lernen WILL ... der wird sich sicher auch mit der theorie und der erklärung genau dieser einen "standard" zeile widmen ... und diese nicht nur als "trokene beilage" beachten ...
auch finde ich es persönlich nach wie vor definitiv FALSCH erst etwas praktisch machen zu wollen und dann nebenbei oder sogar erst danach darüber zu sprechen ...

um mal den genannten beispielen zu folgen : das wirst du WEDER in der schule , NOCH im studium , NOCH in einer aus/weiterbildung finden ... du wirst grundsätzlich IMMER erst mit der theorie konfrontiert ...
falls das bei dir nicht so war tust sowohl du als auch das umfeld welches dir das angetan hat echt leid ...


----------



## Kevin94 (5. Apr 2012)

ich weiß ja nicht in welchem Bundesland du zur Schule gegangen bist irgendjemand, aber bei mir (Bayern) ist Info-Unterricht ein Pflichtfach im Gymnasium. In der 6. und 7. für alle(Word & Co. halt) und wenn man den Naturwissenschaftlichen Zweig gewählt hat auch in der 9. und 10. . Insofern macht die Unterscheidung von U2nt durchaus Sinn, denn viele wählen den Zweig nur wegen Physik oder Chemie oder auch mangelnden Alternativen.
Auserdem führt dieses relativ neue Pflichtfach zu einem gewaltigen Lehrermangel in Bayern. In der 6. und 7. darf eigentlich jeder Lehrer Info unterrichten der auch nur halbwegs erklären kann was Copy&Paste ist und vielleicht auch noch weiß wie man in Word bunte Kreise zeichnen kann.
Und für den richtigen Info Unterricht haben wir an meiner Schule erst seit diesem Jahr jemanden der Info auf Lehramt studiert hat, obwohl es das Fach schon mindestens seit Einfürhrung des G8 gibt(also seit 9 Jahren). Über die unfähigkeit des Vorgängers möchte ich garnicht reden, der hat zwar auch Info studiert, aber in einer Zeit wo OOP noch ein Schimpfwort war.

Im allgemeinen finde ich die Diskussion auserdem sinnlos. Kann mir jemand erklären, wie eine IDE einem irgendwelche Aspekte einer Sprache verheimlichen oder vorenthaten kann?
Wie soll das gehen? Lässt sie Quellcode unsichtbar werden? Weigert sie sich eine richtige Main-Methode zu compilieren?
Nicht dass ich wüsste.
Insofern ist BlueJ zum erlernen von Java *genauso gut* geeignet wie jede anderer IDE, wenn nicht sogar besser, da sie den Anfänger nicht mit unnötigen Featurs erschlägt.

Aber wie schonmal geschrieben *hilft* sie einem *unfähigen* Lehrer (oder faulen Schüler) eindeutig dabei, wichtige theoretische Grundlagen unter den Tisch fallen zu lassen. Das Problem von BlueJ ist also keineswegs ein falsches Konzept oder eine fehlerhafte Umsetzung, sondern der falsche Einsatz durch die Lehrer (bzw. dass die Lehrer es selbst nicht können). Kann mir irgendjemand einen Thread zeigen indem jemand, der Mit BlueJ programmiert, ohne diese IDE von einem Lehrer aufgezwungen bekommen zu haben oder halbwegs daran intressiert ist Java zu lernen, eine dähmliche Anfängerfrage gestellt hat, die er sich nach 10 min suchen in der Insel auch selber hätte beantworten können?

Was SuM und GreenFoot oder auch JavaKarol oder Kara und wie sie alle heißen angeht, stimme ich mit euch über ein, dass diese Frameworks reine Zeitverschwendung sind und einen nicht ans richtige Programmieren heranführen, sondern nur eine nutztlose "Pseudosprache" beibringen.


----------



## irgendjemand (5. Apr 2012)

ja .. ich weis das das schulsystem bei euch da drüben im westen und auch in berlin/brandenburg *zumindest aus meiner sicht* ziemlich chaotisch ist ...
ich selbst komme aus sachsen-anhalt ... und bei uns gibt es nur info-unterricht wenn man sich diesen auch selbst ausgesucht hat ... und das auch erst im gymnasium ab 9ter klasse ...

das man info irgendwie zu naturwissenschaften packen kann ... ja irgendwo schon ... aber das es desshalb gleich zum pflichtfach wird wenn man diesen zweig wählt ... das halte ich dann für einen großen fehler der system-verwaltung die sich diesen mist ausgedacht haben ...
denn eigentlich ist es allgemein bekannt das die unterste stufe der "informatik" erst über der höchsten des "normalen alltäglichen gebrauchst" kommt ... und damit für über die hälfte sowas also in unbezingbaren hürden endet ...
derjenige der sich diesen mist ausgedacht hat ... und auch die die das dann noch umsetzen ... gehen doch wissentlich das risiko ein eigentlich guten schülern welche für naturwissenschaften wie nun mal chemie und physik eine grüne arder haben durch das pflichtfach info in dem sie z.b. überhaupt nicht durchblicken den gesamten durchschnitt damit total zu versauen ...

aber naja ... genug über west-deutsches schulsystem aufgeregt ...

back to topic



> Im allgemeinen finde ich die Diskussion auserdem sinnlos. Kann mir jemand erklären, wie eine IDE einem irgendwelche Aspekte einer Sprache verheimlichen oder vorenthaten kann?
> Wie soll das gehen? Lässt sie Quellcode unsichtbar werden? Weigert sie sich eine richtige Main-Methode zu compilieren?


keiner hat hier je behauptet das BlueJ "public static void main(String[])" nicht compilen würde ... sondern der fakt das dies von vornherein einfach komplett unter den tisch fallen gelassen wird ... das ein frischer anfänger genau diese erfahrung eben NICHT macht das jedes java programm IMMER an genau diesem punkt anfängt ... wie man es auch in allen anderen mehr oder weniger guten anfänger- und fachbüchern meist in den erste 3 bis 4 kapiteln noch vor dem konkreten beispiel "Hello World!" lesen kann
um mich also auf das quote zu beziehen : JA ... BlueJ lässt code verschwinden / unsichtbar werden ... *oder besser : fordert den neuling NICHT damit diesen zu schreiben*
und wegen solchen dingen ist BlueJ für mich komplett am ziel vorbei ... denn guck dir doch mal n neuling an der dann da z.b. mit der Insel sitzt und sich fragt : und was wollen die jetzt mit main() ? ... solche und andere fragen dieses kalibers sind hier schon mehr als ein mal gekommen ...

persönlich bin ich eh der meinung : wenn jemand programmieren lernt ... dann soll er das gerade bei java erstmal mit nem text-editor und ner console machen ... und KEINE IDE nutzen ... *sonst kommen wieder so wunderschöne topics ala : ich programmiere seit fast nem jahr mit java und eclipse macht hier nur mist ... *anderer user* : startet doch mal über console ... *TO* : bitte was ist ne console ... das ende vom lied kennt ihr*

und wenn schon ne IDE ... dann bitte nicht so ein graphisch aufwändiges point'n'click adventure durch den JavaInselJungel ... sondern mit nacktem code und für anfänger auch erstmal mit deaktivierten features wie auto-complete oder sowas ...


die diskusion um BlueJ ist schon durchaus berechtigt ... denn es stellt sich wirklich die frage : ist es dazu geeignet einem kompletten neuling java von anfang an richtig bei zu bringen ? ... und hier ist die antwort ganz klar : NEIN ... denn elementare sprachbestandteile und grundlagen werden schlicht ignoriert und bleiben dem anfänger verborgen ...


----------



## irgendjemand (4. Apr 2012)

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:
> 
> ...



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


----------



## JanHH (4. Apr 2012)

Ich kenn BlueJ zwar quasi gar nicht, aber finde eher dass das was Du schreibst SCHROTT ist, um mal bei Deiner Ausdrucksweise zu bleiben ;-). Den Quote finde ich plausibel. Ich hab auch schon häufiger (beim Versuch, Programmieranfängern bei java zu helfen) festgestellt, dass sie in der Tat genau diese Schwierigkeiten haben. Leute, die vorher noch NIE programmiert haben, müssen den Spagat hinlegen, sowohl objektorientierte Programmierung zu verstehen, als auch, sich dem erstmal von dieser eher nicht-OO-prozeduralen Seite (main-Funktion und Konsolen-I/O) zu nähern. Das führt in der Tat schnell zu Frustration und Verwirrung.

Wir haben damals an der Fachhochschule als erste Programmiersprache Smalltalk gelernt, das war gerade für die absoluten Anfänger recht gut, weil man da wirklich die OO-Denkweise ohne "prozeduralen Overhead" in einem visuellen "rumspiel-System" hat (so ähnlich scheint BlueJ ja auch zu sein). Das Erlenen der Konzepte und der grundlegenden Sachen an sich ist schon schwierig genug für viele, finde es daher sinnvoll, nicht auch noch mit unnötigem Ballast alles noch schwieriger zu machen.

Wir nicht-Anfänger hier lachen über sowas, aber für wirkliche Anfänger, vor allem fachfremde Leute (die z.B. was ganz anderes studieren und nebenbei noch einen Programmierkurs machen müssen) ist das durchaus ein grösseres Problem.

Nachtrag: Dazu kommt, dass man ja nicht wirklich oft Konsole und Main-Funktion hat, wenn man professionell mit java arbeitet. In fast allen Bereichen wo java eingesetzt wird hat man irgendwelche Frameworks und man schreibt wirklich NUR noch objektorientierte Konzepte.. sowas zu unterschlagen ist also gar nicht mal so schlimm. Wirklich eher ein überbleibsel aus der C-Welt.


----------



## ARadauer (4. Apr 2012)

Ich denke du hast spät in der nacht immer ein bisschen zu viel Zeit ;-)

Aber im Grunde hast du recht, ich halte blueJ auch für unnötig...


----------



## schalentier (4. Apr 2012)

Dem Quote kann ich mich eigentlich nur anschliessen. Um einem Anfaenger einfach nur ein Hello World Programm zu erklaeren, sind bereits mehrere Konstrukte notwendig, die man einfach nicht erklaeren kann (in diesem ersten Moment). Warum static? Warum dieses komische Array? Was ist ein Array? Ueber IO brauchen wir gar nicht erst zu reden, das geht sogar in C deutlich einfacher (besonders Input).

Ich hab mir aus Neugier neulich mal BlueJ angesehen (nur kurz), da ja hier immer mal wieder Fragen dazu kommen und ich mir gern selbst meine Meinung bilde, als nur irgendwelche Vorurteile zu hegen und anderen nachzuquatschen - und muss sagen, sooo schlecht isses auch nicht. Hat mich bissel an NakedObjects erinnert, wovon ich im Grunde ein Fan bin. Der Punkt ist einfach, zeig mal einem Anfaenger (!) Eclipse oder IntelliJ und dann BlueJ. Was wird dieser wohl eher verstaendlich finden? 
Die Console waere tatsaechlich eine Alternative, leider haben heutige Anfaenger selten jemals zuvor eine Console gesehen - und dann eine Diskussion ueber den Sinn oder Unsinn einer Console zu beginnen mit jemandem, der wahrscheinlich nur nebenbei programmieren wird, halte ich fuer eher kontraproduktiv. 

Ich rate irgendjemand mal, einfach bisschen ruhiger zu werden und nicht sinnfrei ueber alles und jeden herzuziehen, der nicht seiner Meinung ist. Das ist nicht cool, das ist dumm. Noch peinlicher ist es, wenn du nicht mal Argumente vorbringst, WAS dich nun eigentlich am BlueJ-Schrott stoert? Musst du das in deiner Schule benutzen, oder was? Dann red halt mal mit dem Lehrer, ob du nicht mal nen Vortrag halten kannst, wie man besser mit Notepad und Console arbeitet. Das ist in jedem Fall produktiver, sinnvoller und lehrreicher, als hier alberne Sprueche zu klopfen. Ansonsten kannst du es ruhig einfach ignorieren.


----------



## Paddelpirat (4. Apr 2012)

irgendjemand hat gesagt.:


> und dessweiteren : hat nicht JEDE programmiersprache irgendwo einen fest definierten einstiegspunkt ?



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


----------



## Gossi (4. Apr 2012)

langhaar! hat gesagt.:


> Das hast du anscheinend völlig falsch verstanden.
> Es ist nicht so, dass die Lehrer die main Methode nicht erklären können, weil sie sie nicht komplett verstanden haben, sondern die main Methode kann nicht erklärt werden, da die dazugehörigen Konzepte noch nicht eingeführt worden sind und zum Anfang auch noch nicht eingeführt werden sollen. Didaktik halt.



Sehe ich anders. Selber grade vor kurzem das Beispiel gehabt, ne Freund von mir fängt in der Schule mit dem Programmieren an (BlueJ) und warum? Weil der Lehrer sagt, so kann man sich erstmal auf das Grundsätzliche Konzentrieren und was kommt dabei rum?

Er weiß nicht was nen boolean ist, ein Array, Methoden Rückgabetypen etc., weil ihm das alles von BlueJ abgenommen wurde, mittlerweile helfe ich ihm nurnoch in Eclipse und zeige ihm dort wie man Programmiert, nicht ein UML Diagramm bastelt und ausführt.

Und wer erwartet denn als kompletter Neuling, dass dieses main-Konstrukt 100% erklärt werden kann?

Es reicht doch schon das ganze mal in einzelteile zu zerlegen und zu erklären was diese zu bedeuten haben, Beispiel:



> Hier habe wir die sogenannte Main-Methode, diese sieht in Java immer wie folgt aus:
> 
> public static void main(String[] args)
> 
> ...



Wo liegt da nun das Problem?
Die Neulinge sind nicht frustriert, der Lehrer hat keine Probleme es zu erklären und man weiß zumindest woran man ist und wenn die absoluten Basics stehen und man sich etwas mehr mit Methoden, Objekten und Klassen beschäftigt, erklären sich auch die letzten unklaren Schlüsselworte...


----------



## langhaar! (4. Apr 2012)

Gossi hat gesagt.:


> Sehe ich anders. Selber grade vor kurzem das Beispiel gehabt, ne Freund von mir fängt in der Schule mit dem Programmieren an (BlueJ) und warum? Weil der Lehrer sagt, so kann man sich erstmal auf das Grundsätzliche Konzentrieren und was kommt dabei rum?



Bitte zitier mich nicht, wenn du dich nicht konkret auf meinen Text beziehst.
Ich habe nur den didaktischen Ansatz beschrieben, nicht aber bewertet.
Du sagst, du sieht das anders und bewertest den Ansatz, stellst aber nicht meine Beschreibung in Frage, womit das Zitat komplett irreführend ist.


----------



## Paddelpirat (4. Apr 2012)

@Gossi
Wobei man sich so eine ?genaue? Erklärung der main-Methode auch sparen kann bei Schülern. Das public so etwas bedeutet, wie öffentlicher Zugriff erlaubt ist ja noch okay, aber dann die weitere Erklärung mit Objekt und Kopie einer Klasse etc wirft ja Unmengen neuer Fragen auf.

Oder in einem Satz zu sagen, dass jede Methode einen Rückgabewert hat, "void" mit "still" übesetzt werden kann und bedeutet, dass diese Methode keinen Rückgabewert hat, ist einfach verwirrend.

Wenn ich einfach mal ein Hello World Programm oder so den Schülern zeigen würde könnte man vielleicht erklären dass die main-Methode der Einstiegspunkt des Programms ist und öffentlich zugänglich sein muss (daher public). Außerdem könnte man das String-Array erwähnen, da dieses erlaub dem Programm beim aufrufen Parameter zu übergeben, die man dann im Programm weiter verwenden kann, aber viel mehr auch nicht.

Für alles andere braucht man mehr Wissen und sollte meiner Meinung nach Schritt für Schritt erklärt werden und wenn dieses Wissen bekannt ist, kann man noch einmal auf die main-Methode verweisen und sie genauer erklären.


----------



## Sonecc (4. Apr 2012)

langhaar! hat gesagt.:


> Bitte zitier mich nicht, wenn du dich nicht konkret auf meinen Text beziehst.
> Ich habe nur den didaktischen Ansatz beschrieben, nicht aber bewertet.
> Du sagst, du sieht das anders und bewertest den Ansatz, stellst aber nicht meine Beschreibung in Frage, womit das Zitat komplett irreführend ist.



Wow. Mit einer der krassesten Beiträge die ich hier lesen durfte...
Ich kann dir da leider nicht zustimmen. Der Quote von Gossi passte IMO und der Beitrag bezog sich erkennbar auf deinen Beitrag, den er damit korrekt zitiert hat.
Selbst wenn das anders wäre, stünde es dir nicht zu seine Vorgehensweise beim posten in dieser Form zu verbieten.

Deine Aussage, dir Gossi zitiert hat ist übrigens nicht ganz richtig.
Ich habe sowohl in der Schule, als auch im Studium mich mit Java beschäftigt und in beiden Fällen war es kein Problem die main Methode anzugehen, da alle Konzepte schon vorher besprochen worden waren.
Der Unterricht im Bereich Programmierung besteht nicht von Beginn an daraus, dass man Code schreibt. Guter Unterricht in dem Bereich beginnt mit den theoretischen Grundlagen!

Leider ist genau das heutzutage noch immer nicht überall erkannt worden.


----------



## HimBromBeere (4. Apr 2012)

> Guter Unterricht in dem Bereich beginnt mit den theoretischen Grundlagen!


Das ist nicht immer der richtige Weg, ich sag nur "learning by doing". Ich möchte auch nicht, wenn ich kochen lerne, erst einmal die Theorie der richtigen Mischung studieren, sondern einfach erstmal probieren, was so geht. Beides ist durchaus möglich, aber pauschal zu sagen, man müsse sich erstmal durch die Theorie boxen, finde ich nicht wirklich überzeugend.

Zurück zum Thema: ich mag zwar BlueJ auch nicht, aber die Argumente dafür haben mich schon ein wenig überzeugt. Ich kann mich noch gut daran erinnern, wie verwirrt ich war, als ich das erste mal eine static void gesehen hab... v.a. der Typ void machte mir anfangs sehr zu schaffen (was aber auch daran liegt, dass es in anderen Sprachen nicht nur Methoden sondern z.B. auch Prozeduren gibt).


----------



## timbeau (4. Apr 2012)

Wenn ich Lehrer wäre würde ich ähnlich wie BlueJ vorgehen, ohne vll BlueJ zu nutzen. 
Aber erstmal die reale Welt als Objekte sehen und diese dann ins Programm zu transferieren finde ich einen guten Ansatz.


----------



## Sonecc (4. Apr 2012)

HimBromBeere hat gesagt.:


> Das ist nicht immer der richtige Weg, ich sag nur "learning by doing". Ich möchte auch nicht, wenn ich kochen lerne, erst einmal die Theorie der richtigen Mischung studieren, sondern einfach erstmal probieren, was so geht.


Es geht sich ja nicht darum, was mehr spass macht. Sicher ist es spassiger direkt loszulegen. Aber sinnvoller ist es nicht. Learning by doing führt nämlich gerade in dem Umfeld oft zu halbwissen und fehlern, die man so leicht nicht mehr los wird, weil einem die Grundlagen fehlen.

Ich sag ja aber auch nicht, dass man nie was tun darf. Nur grundlegende Theroetische Grundlagen sollten schon vorher bekannt sein, bevor man mal etwas tut. Dazu gehört im Falle von Java nunmal u.a. OO und eben auch static oder void, da es elementare Bestandteile der Sprache sind.

Was den Vergleich betrifft:

Wenn ich Flugzeugbauer werden will, kann ich auch nicht einfach anfangen zu bauen, ohne erstmal die theoretischen Grundlagen zu haben.
Wenn ich Lokführer (oder auch Autofahrer) werden will, kann ich auch nicht einfach losfahren ohne die theoretischen Grundlagen zu haben.

Tut mir leid, aber der Vergleich hinkt, denn auch als Koch muss man Grundlagenwissen besitzen, bevor man die Kunden bedient.
Einfach ins kalte Wasser springen funktioniert bei keinem Beruf, erst recht nicht bei einem eher komplizierten wie dem des Entwicklers.


----------



## HimBromBeere (4. Apr 2012)

Von berufsmäßigen Programmierern war hier niemals die Rede, oder ist dieses Forum nur für ebendiese da, dann geh ich mal schnell wieder ;(... Im Übrigen war auch nie von DEM KOCH die Rede, der Vergleich hinkt also keinesfalls.
Anderes Bsp.: Viele Berufsmusiker haben - wenn überhaupt - dann nur eine mäßige theoretische Ausbildung genossen, sprich sich erst mit haufenweise Geschihte, Tonbildung, Notenfarben ... beschäftigt und sind dennoch hervorragend auf ihrem Gebiet. Aber es soll auch Musiker geben, die zunächst tatsächlich Noten gelernt und dann erst gespielt haben 
Wie dem auch sei, selbst bei vielen (wenn nicht gar allen, aber das weiß ich nicht genau) Ausbildungen steht die Praxis im Vordergrund, weswegen dort auch die ersten Tage/Wochen "gearbeitet" und nicht "gelernt" wird. Die Theorie kommt dann meist erst nach einer gewissen Zeit dazu. Beim Programmieren funktioniert das überdies auch, es gibt hier kein wirklich richtig und falsch, es ist nur eine Art, wie man lernt.


EDIT: Und wieder einmal: zurück zum Thema. BlueJ ist meines Erachtens vielmehr eine Herangehensweise an ein unbekanntes Wissensgebiet als nur eine Entwicklungsumgebung. Für Anfänger und/oder Quereinsteiger (hey, steckt das nicht im Titel dieses Unterforums sogar drin?) , die weder die Zeit noch das Verständnis für die genauen Hintergründe haben, finde ich dieses Programm entgegen meiner Erwartung doch ganz positiv.


----------



## Tomate_Salat (4. Apr 2012)

Ich gebe auch mal irgendjemand recht. Was ist der Vorteil daran, Schülern mit einer "IDE" arbeiten zu lassen, die sie nie wieder brauchen werden und im schlimmste Falle werden noch Bibliotheken verwendet, die später nie zum Einsatz kommen?

Imho hat das nichts mit Java zu tun, sondern maximal: Was könnte Programmieren sein anhand von Java-Syntax.

Als Lehrer würde man im schlimmsten Falle sagen: "das Konstrukt akzeptiert ihr einfach mal so und ihr werdet es später nachvollziehen können". 

Das ist allemal besser, als es komplett unter den Tisch fallen zu lassen. Programmieren ist nunmal keine Sache, die man von heute auf morgen lernt. Es gibt immer wieder Stellen, an denen man akzeptieren muss: wie da was funktioniert kann ich mir gegenwärtig nicht erklären. Das kommt aber nach der Zeit.


----------



## Sonecc (4. Apr 2012)

HimBromBeere hat gesagt.:


> Von berufsmäßigen Programmierern war hier niemals die Rede, oder ist dieses Forum nur für ebendiese da, dann geh ich mal schnell wieder ;(... Im Übrigen war auch nie von DEM KOCH die Rede, der Vergleich hinkt also keinesfalls..



Deswegen brachte ich auch Autofahrer als Beispiele an.


----------



## schalentier (4. Apr 2012)

Tomate_Salat hat gesagt.:


> Was ist der Vorteil daran, Schülern mit einer "IDE" arbeiten zu lassen, die sie nie wieder brauchen werden und im schlimmste Falle werden noch Bibliotheken verwendet, die später nie zum Einsatz kommen?



Die wenigstens Schueler werden Programmierer, also werden auch die wenigsten jemals wieder Eclipse & Co anfassen. 



Tomate_Salat hat gesagt.:


> Als Lehrer würde man im schlimmsten Falle sagen: "das Konstrukt akzeptiert ihr einfach mal so und ihr werdet es später nachvollziehen können".



Das ist ein didaktischer Epicfail. Was dann bei einem Schueler ankommt ist: "Also das ist alles gaanz kompliziert und ihr seit einfach noch zu dumm um es verstehen zu koennen. Wenn ihr irgendwann viel gelernt habt, werdet ihr es dann aber vielleicht verstehen". Lesen lernt man doch auch nicht mit Shakespear, sondern mit extrem einfachen Saetzen, wo eben keine ablenkenden Fragen auftauchen koennen.



Tomate_Salat hat gesagt.:


> Imho hat das nichts mit Java zu tun, sondern maximal: Was könnte Programmieren sein anhand von Java-Syntax.



Naja, darum gehts doch. 

Ich glaub, wir diskutierten hier ohne definiert zu haben, fuer wen BlueJ geeignet ist. Imho ist es eine recht gute Moeglichkeit, um einen Menschen in die Objektorientierte Programmierung einzufuehren. Es geht um die Grundkonzepte, Objekte und Klassen und deren Verknuepfung. Eine Alternative zum guten alten Pascal, fuer Informatikunterricht an der Schule, der ueber "Jetzt lernen wir Word" hinausgeht. Der muss vor allem Spass machen, so dass die Schueler nicht nach 2 Stunden sagen: "Versteh ich nich, is langweilig und nix fuer mich". 

Es ist definitiv nichts fuer jemanden, der Softwareentwicklung studiert oder eine Ausbildung zum Fachinformatiker macht.


----------



## Tomate_Salat (4. Apr 2012)

schalentier hat gesagt.:


> Die wenigstens Schueler werden Programmierer, also werden auch die wenigsten jemals wieder Eclipse & Co anfassen.



Deswegen darf man die Ausbildung von den Schülern verhunzen, die es ernst meinen? Wie sähe dann der Englisch-unterricht oder Matheunterricht aus? Sorry, das ist imho kein Argument.



schalentier hat gesagt.:


> Das ist ein didaktischer Epicfail. Was dann bei einem Schueler ankommt ist: "Also das ist alles gaanz kompliziert und ihr seit einfach noch zu dumm um es verstehen zu koennen. Wenn ihr irgendwann viel gelernt habt, werdet ihr es dann aber vielleicht verstehen". Lesen lernt man doch auch nicht mit Shakespear, sondern mit extrem einfachen Saetzen, wo eben keine ablenkenden Fragen auftauchen koennen.



Die main-Methode ist Shakespear? Ich glaube nicht, dass sich ein Schüler für zu dumm hält, wenn man in der ersten Stunde gesagt bekommt, "das lernen wir im Detail erst später". Außerdem sehe ich auch kein Problem darin, einfach zu sagen, was die Bestandteile von der main Bedeuten. Später kann man immernoch ins Detail eingehen. 



schalentier hat gesagt.:


> Es ist definitiv nichts fuer jemanden, der Softwareentwicklung studiert oder eine Ausbildung zum Fachinformatiker macht.


... hier ist es imho mit Abstand am schädlichsten und gerade hier kommt es viel zu häufig vor.


----------



## langhaar! (4. Apr 2012)

schalentier hat gesagt.:


> Imho ist es eine recht gute Moeglichkeit, um einen Menschen in die Objektorientierte Programmierung einzufuehren. Es geht um die Grundkonzepte, Objekte und Klassen und deren Verknuepfung.



Folgendes steht bei Wikipedia:


> welche speziell für Ausbildungszwecke konzipiert wurde. Insbesondere das Vermitteln von Zusammenhängen in der objektorientierten Programmierung steht im Mittelpunkt des Systems.



Es geht *nicht* darum, Java zu lernen.
Erst recht nicht um die Syntax.


----------



## timbeau (4. Apr 2012)

Als ob der Matheunterricht in der Schule etwas mit dem Mathematikstudium zu tun hätte. :lol:

Es geht darum Schüler mit Spaß ans programmieren zu kriegen.


----------



## langhaar! (4. Apr 2012)

Tomate_Salat hat gesagt.:


> Deswegen darf man die Ausbildung von den Schülern verhunzen, die es ernst meinen? Wie sähe dann der Englisch-unterricht oder Matheunterricht aus?



Wie sieht denn der Matheunterricht heute aus?
Was man in der Schule lernt, hat doch mit Mathematik wenig zu tun.
In der Schule lernt man mehr oder weniger ein paar Rechenregeln.

In der Uni fängt dann ein Mathestudium im Stoff wieder ganz von vorne an.


----------



## irgendjemand (4. Apr 2012)

lasst mich mal euren vergleich mit dem berufsleben noch mal aufgreifen

ich selbst hab mich auch mal im schlosserhandwerk versucht *zumindest nannte man das mal so als unser staat noch DDR hieß* ...
und ob ihr es glaubt oder nicht ... aber es ist eben NICHT einfach damit getan mal eben die feile in die hand zu nehmen und damit den stahl zu "vergewaltigen" ...
jeder vernünftige meister *zumindest die bei denen ich gelernt habe* haben uns erstmal ne ganze woche theorie eingefüllt bevor wir überhaupt mit der praxis angefangen haben ... weil es gibt dann doch eine ziemlich große auswahl an feilen *z.b. hieb-art und -anzahl , form , länge , richtige bezeichnungen , DIN , etc*

worauf ich damit hinaus will um es mal mit "Heute lernen wir Java mit BlueJ" zu vergleichen : man kann einen neuling nicht sofort an eine *und sry ... aber ich sehe es immer noch so* möchtegern IDE lassen ohne ihm das theoretische wissen zu vermitteln
und das beginnt nicht etwa erst bei den besonderheiten von java wie die syntax oder OOP im etwas allgemeineren sinn ... sondern sollte erstmal mit nem crash-course über programmieren allgemein beginnen ... und damit meine ich wirklich die anfänge wie der webstuhl mit seiner lochkartensteuerung ...
dann das ganze natürlich übertragen auf heutige hardware und auch lowlevel dierekt mit micro-opcode anfangen ... dann noch kurs assembler und vllt C anreißen ... und dann erst überhaupt java erwähnen ...
dafür würde ich als lehrer bzw ausbilder schon mal gut ne woche für opfern ... um es den schülern überhaupt erstmal klar zu machen was "Programmieren" eigentlich bedeutet ...

wenn man dann soweit ist das man mit java anfängt sollte man es erstmal ganz banal machen : die welt von java anhand von realen "objekten" erklären ... um überhaupt erstmal auf die besonderheiten einzugehen

und DANN kann man anfangen "Hello World!" an die tafel zu schreiben ... als ungefähr ab mitte 2. woche ...
und dann nimmt man sich erstmal die zeit seinen schülern / azubis diese eine zeile zu erklären , was Gossi schon mal ganz gut getan hat *auch wenn ich es selbst vielleicht etwas anderst formulieren würde ... aber sinngemäß stimmt es ja*

damit wäre schon mal das größte TOTSCHLAG argument von bluej widerlegt : das lehrer ihren schülern diese zeile an die tafel schreiben und sagen : "glaubt mir einfach und schreibt das mal so" *um mal bluej selbst zu zitiren*
es ist mir schon klar das dieses verhalten dann zu den genannten problemen führt ... aber warum geht man hier nur auf die probleme ein anstatt mal den grund zu hinterfragen warum viele lehrer es denn genau so machen ?
ich finde hier die sichweise von bluej ziemlich daneben und würde das *um mal mit den worten von schalentier zu sprechen* "epic self own" nennen


dann finde ich es auch ziemlich krass wie ihr den punkt I/O völlig aus dem zusammenhang reißt ...

I/O hat nicht ausschließlich was mit console zu tun und damit über diese text auszugeben und ggf einzulesen ...
I/O ist grundsätzlich alles das wo irgendwelche bytes von einem speicher in einen anderen kopiert werden ...

und auch hier finde ich die ansicht von bluej ziemlich daneben : der gesamte I/O bereich wird hier einfach nur auf simple text-ein/ausgaben auf einer console reduziert ... ohne mal andere wichtige gebiete wie z.b. network- und file-I/O auch nur ansatzweise zu nennen ...
oder auch wie bluej sich hier nur darauf fixiert das man dann die schüler gleich zu beginn mit exceptions konfrontiert ... ziemlich lächerlich diese aussage ... denn bei ALLEN I/O-ops können fehler auftreten ... und diese werden in java nunmal durch Throwable und deren sub-klassen definiert ...
und wer hier jetzt mit dem argument kommen will : ja aber dann muss der lehrer ja wieder so viel erklären ... der meinen post bis hier hin *und auch das gesamte topic* scheinbar immer noch nicht verstanden ...

bluej fixiert sich darauf das es lehrkräfte gibt die ihren schülern sagen : "hinterfragt es nicht , das klären wir später , aber jetzt schreibt es erstmal so hin" ... und genau das ist der grund warum ich mich über bluej so aufrege : weil es genau diese verhaltensweise auch noch unterstützt ...

nein ... die einzig richtig lösung ist hier bei den lehrkräften anzusetzen und zu hinterfragen WARUM sie eben diese haltung haben ... anstatt irgendwas dahingeschmiertes anzubieten und genau solchen "problem-"lehrern auch noch eine möglichkeit geben das diese sowas gar nicht erst ansprechen müssen ... und das hat in meinen augen nichts mehr mit programmieren zu tun ... und schon garnicht mit java im speziellen ... denn dinge wie exceptions bei I/O-ops gehören nun mal einfach zur sprache dazu und sind ein fundamentaler bestandteil *sonst würde der kram ja nicht in java.lang liegen* ...

und dann höre ich hier posts wie das mein thread angeblich unter aller sau wäre nur weil ich mich mal öffentlich in meiner radikalen denkweise darüber äußere wie ein projekt die unfähigkeit einiger lehrer unterstützt ... nur weil deren "entwickler" genau solche mal selbst als lehrkräfte hatten ...
ich glaube diejenigen die so über diesen thread denken haben das grundproblem nicht begriffen ... wahrscheinlich selbst mal so angefangen ... und sich wie viele andere auch auf diese in meinen augen FALSCHE lernweise festgefahren


----------



## HimBromBeere (4. Apr 2012)

Jetzt beruhig dich mal wieder, du musst dich nicht hier aufregen. Werden wir mal wieder sachlich und suchen nach Argumenten für oder gegen den Einsatz von diverser Software für einen bestimmten Anwendungsfall. Derer sind zuletzt leider viel zu wenige genannt worden.
Tragen wir also zusammen: 

*Ziel des Programmes:*
Einsteigern das Programmieren mit JAVA näher bringen. Konzipiert für Anfänger und Quereinsteiger.

*Das Mittel:*
Eine einfache übersichtliche Oberfläche, wenig Schnickschnack, geringer Funktionsumfang. V.a. visuelle Elemente werden hierbei verstärkt genutzt.


*Auf der Pro-Seite steht: *
BlueJ ist eine einfache und übersichtliche Umgebung, mit der simple Programme erstellt und lauffähig gemacht werden. 
Durch visuelle Elemente wird das Erstellen der ersten (einfachen) Programme beschleunigt.

*Dagegen spricht:*
Grundlegende Details wie main und IO werden außen vor gelassen.



Wenn jemand weitere ergänzen möchte, dann bitte... kurz und knapp und so neutral wie möglich.


EDIT: Wenn du sowieso deine feststehende Meinung hast von diesem Programm, warum startest du eigtl. überhaupt erst das Thema, Argumente scheinen dich ja kaum zu interessieren. Außerdem: nutz es doch einfach nicht, wenn´s dich so abschreckt...


----------



## timbeau (4. Apr 2012)

Ein Grundproblem ist doch, dass es viel zuwenig Lehrer gibt, die Programmieren können. Da wird BlueJ angewandt und mehr kann der Lehrer wahrscheinlich auch nicht.


----------



## irgendjemand (4. Apr 2012)

HimBromBeere hat gesagt.:


> Jetzt beruhig dich mal wieder, du musst dich nicht hier aufregen. Werden wir mal wieder sachlich und suchen nach Argumenten für oder gegen den Einsatz von diverser Software für einen bestimmten Anwendungsfall. Derer sind zuletzt leider viel zu wenige genannt worden.
> Tragen wir also zusammen:
> 
> *Ziel des Programmes:*
> ...



sorry ... aber du widersprichst dir selbst

"ziele : einsteigern das programmieren mit java näher bringen"
[...]
"contra : grunlegende details fehlen"

meinst du nicht das das im widerspruch zu sich selbst steht ?
wie willst du denn jemanden eine "sprache" beibringen wenn du grundlagen weglässt ?

*als blödes beispiel : wie bringt man jemanden z.b. russisch bei : in dem man ihm erstmal die schriftzeichen beibringt ... anstatt ihn gleich mit vokabeln zu konfrontieren *genau diesen fehler macht übrigens auch "Rosetta Stone"**

[EDIT]





timbeau hat gesagt.:


> Ein Grundproblem ist doch, dass es viel zuwenig Lehrer gibt, die Programmieren können. Da wird BlueJ angewandt und mehr kann der Lehrer wahrscheinlich auch nicht.


jop ... ich würde sagen : voll ins schwarze[/EDIT]


----------



## bone2 (4. Apr 2012)

irgendjemand hat gesagt.:


> "Heute lernen wir Java mit BlueJ"



das ist doch schon falsch, wurde oben schon gesagt, man lernt kein java mit bluej sondern bekommt eine einführung in das konzept der objektorientierung


wir haben damals im info unterrricht programmieren noch mit der steuerung eines niki-roboters gelernt. (vereinfachung von pascal und auf deutsch)
war für die meisten ganz lustig und vieles wurde rausgelassen, wie zb einsteigspunkte, parameter usw
und die die es wollten waren schon nach 2h schon auf einem niveau das das jahr  durch gereicht hat

[EDIT]er widerspricht sich nicht selber. lesen -> verstehen -> denken -> antworten[/EDIT]


----------



## HimBromBeere (4. Apr 2012)

> sorry ... aber du widersprichst dir selbst
> 
> "ziele : einsteigern das programmieren mit java näher bringen"
> [...]
> "contra : grunlegende details fehlen"


Tut mir Leid, MIR widerspreche ich keinesfalls, bestenfalls den Entwicklern des Programmes, die es demnach nicht geschafft haben, ihr ZIEL umzusetzen...


----------



## irgendjemand (4. Apr 2012)

bone2 hat gesagt.:


> das ist doch schon falsch, wurde oben schon gesagt, man lernt kein java mit bluej sondern bekommt eine einführung in das konzept der



gut ... wenn man mit BlueJ KEIN java lernt ... sondern lediglich einblicke in OOP bekommen soll ... erkläre mir mal warum das ding dann 1) Blue*J*(ava) heißt und 2) java als zugrundeliegenden sprache nutzt ...

nur um OOP zu lernen gibt es sicher bessere möglichkeiten als einen "vermurksten java-crashkurs" ...

ich finde auch diese aussage ... das man mit BlueJ angeblich eben KEIN java lernen würde ... auch ziemlich ... nun ... *missplaced* ...
denn die seite von BlueJ befasst sich ja nun wohl eindeutig damit das es anfängern angeblich erleichtert werden soll java zu lernen ... OHNE eben diese fundamentalen grundlagen wie z.b. "main" oder "I/O & Exception" zu lernen ...

[EDIT]





HimBromBeere hat gesagt.:


> Tut mir Leid, MIR widerspreche ich keinesfalls, bestenfalls den Entwicklern des Programmes, die es demnach nicht geschafft haben, ihr ZIEL umzusetzen...


ahh .. es macht so langsam KLICK beim ersten ...

denn genau das versuche ich mit diesem thread zu sagen : das die entwickler von BlueJ ihr ziel , es einsteigern einfacher zu machen , schlicht verfehlt haben weil sie wichtige grundlagen unter den tisch fallen lassen[/EDIT]


----------



## irgendjemand (4. Apr 2012)

sry .. verklcikt


----------



## bone2 (4. Apr 2012)

irgendjemand hat gesagt.:


> gut ... wenn man mit BlueJ KEIN java lernt ... sondern lediglich einblicke in OOP bekommen soll ... erkläre mir mal warum das ding dann 1) Blue*J*(ava) heißt und 2) java als zugrundeliegenden sprache nutzt ...



und wenn es BlueC heißen würde und auf C++ aufsetzen würde, wäre das Programm noch fast genauso (mmn wertlos)
es könnte jede beliebige oop sprache sein. das ding nutzt halt zufällig java


----------



## schalentier (4. Apr 2012)

Ja gut, ich glaub diese Diskussion wird sinnlos. Es gibt eben Menschen auf der einen Seite (mich z.B.) die sind der Meinung, dass man Neulingen Programmieren und Informatik am besten durch moeglichst sofortige Praxis beibringt (schwimmen lernt man auch nur im Wasser), auf der andren Seite gibt es welche, die sagen man braucht gewisse theoretische Vorkenntnisse. 

Wahrscheinlich liegt das daran, dass es bei mir so funktioniert hat (bei mir wars allerdings autodidaktisch - ich hab einfach stundenlang Listings abgetippt). Der Vorteil ist, man hat eben mehr oder weniger sofort Erfolgserlebnisse. Zudem eignet sich Informatik da besonders gut, weil man sich am Rechner schlecht verletzen kann (wie z.B an irgendwelchen Maschinen), noch kann man durch rumprobieren viel kaputt machen. 

Zudem kann ich nur nochmal sagen: BlueJ ist NICHT zum Lernen von Java, sondern zum Lernen von Objektorientieren Prinzipien. Und dafuer braucht man weder statische Methoden, noch Java's IO. 

Wenn das irgend jemand anders sieht, hab ich damit ueberhaupt kein Problem. Nur find ich es einfach albern, hier ueber irgendwelche IDEs zu meckern. Ich koennte das auch stundenlang machen (nur eben ueber Eclipse), aber ich hab gehoert, dass man vom Meckern Pickel bekommt. Also nehm ich einfach ne andre IDE, hab meine Ruhe und keine Pickel :-D


----------



## bone2 (4. Apr 2012)

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.


----------



## Kevin94 (4. Apr 2012)

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.

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.

[EDIT]@bone2: Ich finde es grausam wie du BlueJ pauschalisierst. Man kann damit auch wunderbar Java sich selbst mit Hilfe eines guten Buches beibringen.[/EDIT]


----------



## Sonecc (4. Apr 2012)

Nochmal: @irgendjemand: Nimm die Finger von der Punkt Taste. Es ist unheimlich schwierig deine Texte zu lesen.


----------



## Solgull (4. Apr 2012)

Ich halte BlueJ für einen hervorragenden Einstieg für Personen die bisher noch keinen Kontakt mit Programmierung hatten und denen daher erst einmal Grundlagen zur Programmierung beigebracht werden müssen.

In BlueJ läßt sich verhältnismäßig schnell - mit Java Syntax - ein Erfolg erzielen. Der ist aber zwingend notwendig um überhaupt ein Interesse an Programmierung zu erzeugen. (Kleine) Erfolge, Motivation und Lernleistung stehen hier im direkten Zusammenhang.

Dabei kann man eben gerade im Anfang wesentlich Teile von Java aussen vor lassen. Unter anderem auch die Objektorientierung und sich darauf konzentrieren wie denn eigentlich ein Programm abläuft.
Im weiteren Verlauf führt man dann mehr Grundlagen auch von Java ein und dann letztendlich auch eine Entwicklungsumgebung.

Bis dahin kann man aber - gerade weil vieles nicht automatisiert ist - auf besondere Punkte achten die bei einer Java Syntax wichtig sind. Sei es Formatierung, Import ...

Gebe ich den Leuten von Anfang an eine richtige Entwicklungsumgebung, dann läuft dort zu viel automatisch/unterstützt, so dass ein wichtiger Teil der Programmierung: Lesbarkeit von Code und (Syntax-) Fehlerfindung im Code zu schnell vernachlässigt wird.

Wer Java Programmieren kann, der kann im übrigen auch in BlueJ schönen Code schreiben, ist um ein vielfaches aufwendiger als mit einer Entwicklungsumgebung, bringt aber auch Chancen mit sich.

Wer nicht Programmieren kann - in keiner Sprache - dem reichen die begrenzten Möglichkeiten von BlueJ vollkommen und einen ersten Einblick in die Programmierung zu bekommen.


----------



## timbeau (4. Apr 2012)

bone2 hat gesagt.:


> 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.




Ich finde es grausam, wenn man mit Leuten zusammen arbeitet bzw Code refactorn muss, der ohne jegliche Beachtung von Konzepten/Konventionen und Softwareentwicklungsparadigmen geschrieben wurde. 

Damit will ich nicht andeuten, dass es bei dir so ist aber Theorie gehört eben dazu.


----------



## Landei (4. Apr 2012)

Wer interessiert an der Programmierung ist (egal ob professionell oder in der Schule), für den ist eine "richtige" IDE keine große Hürde. Im Gegenteil, sobald man auch nur ein klein wenig über "Hello World" hinaus ist, lernt man Features wie Autocomplete, Debugger u.s.w. schätzen.

Wer _kein_ Interesse an Programmierung hat, bei dem ist Hopfen und Malz verloren, da helfen weder BlueJ noch güldene Löffel mit vorgekautem Programmierbrei.

BlueJ ist wie eines der Japanisch-Lehrbücher, die mit lateinischer Umschrift arbeiten. Es sind nur ein paar Stunden Arbeit, das gängige Silbenalphabet (Hiragana) zu lernen, aber der Schüler soll davor erst einmal "geschützt" werden - mit dem Ergebnis, dass sich die Studenten auch nach Jahren noch mit der Schrift schwer tun und nützliches Originalmaterial nicht verwenden können, sondern lange auf die Umschrift-Krücke angewiesen sind. 

Ich denke, es ist ein konzeptioneller Fehler, Objektorientierung einzuführen, ohne die Grundlagen der imperativen Programmierung kennengelernt zu haben. Warum soll man nicht erst einmal Java als "Taschenrechner" verwenden - viele Tutorials anderer Sprachen beginnen genau damit. Nur in Java soll sofort die hehre Objektorientierung gelehrt werden - obwohl Java selbst es mit der reinen Lehre nicht so genau nimmt. Genau diese falschen Voraussetzungen führen zu den bekannten Problemen mit BlueJ: Oft sind es Beispiele für "leaking abstraction", wo die Fassade nicht ganz die Schweinereien dahinter abdecken kann. Dabei wäre es für den Schüler wichtig, einmal bewusst den Schritt von imperativ zu objekt-orientiert getan zu haben, und dadurch klarer die Ideen hinter dem OO-Paradigma erkennen zu können. Was kann mehr von OO überzeugen, als wenn man die statische Methode mit 4 Argumenten von letzter Woche jetzt in einer OO-Architektur als Instanz-Methode mit nur einem Argument schreiben kann, oder wenn man sich bei einer Distanz-Methode nicht mehr fragen muss, welche Reihenfolge jetzt die Koordinaten hatten, weil man die [c]Point[/c]-Klasse verwendet. Das ist eine Chance zum besserem Verständnis, nämlich *warum* Konzepte wie Kapselung, Entkopplung, Interfaces u.s.w. wichtig sind. Und diese Chance verbaut man sich BlueJ - aus Bequemlichkeit (um nicht zu sagen Faulheit) und falsch verstandener Rücksichtnahme,


----------



## bone2 (4. Apr 2012)

timbeau hat gesagt.:


> Damit will ich nicht andeuten, dass es bei dir so ist aber Theorie gehört eben dazu.


das theorie dazugehört würde ich niemals anzweifeln, aber ich hab lieber erst nen happen praxis vorher, bzw mein gehirn hat es so rum lieber.

Als ich in der Firma mit java und damit auch oop angefangen hab (war vorher nur pascal, html und so). kam halt die aufgabe, bau mal xyz. dann haben wir rübergeschaut und das was nich so in den tutorials rüberkam direkt korrigiert. (aka klassen groß, methoden klein, camelCase, einrücken usw). dann neue aufgabe ne nummer schwerer und andere wichtige theoretische dinge in dem zusammenhang durchgesprochen.




Kevin94 hat gesagt.:


> [EDIT]@bone2: Ich finde es grausam wie du BlueJ pauschalisierst. Man kann damit auch wunderbar Java sich selbst mit Hilfe eines guten Buches beibringen.[/EDIT]


aber für "hello world" und taschenrechner tut es auch notepad(++) 

hatte blueJ halt in der Uni und fand es, vorsichtig ausgedrückt, nicht gut.


----------



## Tecwan (4. Apr 2012)

Absolute Anfänger tun sich durchaus schwer bereits damit, "einfache" Syntax als gegeben
hinnehmen zu müssen:
a = 5    Also a erhält den Wert 5...
b = 6    ...und b wird 6...
a = b    ...und das gibt einen Fehler, weil 5 nicht 6 ist!
ist für Adigitalisten bereits das erste Problem.

Was will denn ein Lehrer, der vor einer Schülerschar mit den unterschiedlichsten Voraussetzungen
steht, in den 2 Schulstunden machen?
Seinen Cracks etwas beibringen, was sie binnen kürzester Zeit allein schon aufgrund der
investierbaren Zeit besser als ihr Lehrer hinbekommen werden?
Oder auch den Schülern, die ansonsten schon in der sechsten Klasse zwischen Dreisatz und
Dreieckssatz für sich entschieden haben, dass Mathematik nutzlos oder unverständlich ist?
Schüler der Kategorie "Mathe zwischen 4 und 5" kann man sehr wohl über die Informatik wieder
"herbeiholen", aber das funktioniert garantiert nicht über frontale Theorie.
Selber machen können - Wesentliches machen können - ohne dabei Balast (expliziten Code) aktiv
ignorieren zu müssen, ist anfangs ein Vorteil.
Und darum geht es: Konzepte - ohne vollständigen Code schreiben zu müssen - selber erfahren
zu können.

Natürlich ist eine solche didaktisch motivierte Entwicklungsumbgebung keine "produktive
Entwicklungsumgebung".
Ein Konzept anzureißen heißt nicht, eine konkrete Sprache - oder wie früher häufig: einen
proprietären Dialekt davon - lernen zu müssen.
Mit dem Konzept später zu arbeiten, allerdings schon, keine Frage.
Das Problem besteht für mich eher darin, den richtigen Zeitpunkt für den Umstieg zu erwischen,
und den kann man getrost ziemlich früh ansetzen (und manchem Didakten als verpasst unterstellen).

Aber davor wird die Aufgabe, die Schüler überhaupt zur eigenen Auseinandersetzung mit
dem Thema zu bewegen, von der abstrakteren Möglichkeit und dem eigenen Experiment
- und ohne komplizierte Syntax lesen zu müssen! - besser bewerkstelligt.

Ich sehe BlueJ als eine Möglichkeit an, die Einstiegsschwelle zu senken.
Wenn man anschließend beginnt, die Konzepte zu hinterfragen oder in ihrer Bedeutung einordnen
zu wollen, ist zweifelsohne tiefere Kenntnis nötig. Aber das ist bereits nicht mehr Einstieg.
Insofern ist die Diskussion hier ein Stück weit überflüssig.


----------



## Fab1 (4. Apr 2012)

ich bin auch der Meinung, dass man BlueJ nicht von vornherein als schlecht bezeichnen sollte. Wie bereits beschrieben enthält die IDE ein paar nützliche Funktionen um Sachen besser darzustellen wie zum Beispiel Rekursion.
Hatte mir mal eine Vorlesung darüber (im Internet) angehört und die Erklärung mithilfe von BlueJ war wirklich gut und verständlich.

Das heißt nun aber nicht, dass ich deshalb BlueJ verwenden werden, oder je ausgiebig verwendet habe. Für eine mächtige IDE wie eclipse oder Netbeans gibt es nun mal mehr Überstützung im professionellen Bereich. Daran wird sich imho in nächster Zeit auch nichts ändern.


----------



## Tomate_Salat (4. Apr 2012)

Fab1 hat gesagt.:


> ich bin auch der Meinung, dass man BlueJ nicht von vornherein als schlecht bezeichnen sollte.



Meine Meinung basiert auf den Fragen von Mitgliedern hier im Forum. Imho tut BlueJ Leuten keinen Gefallen die ernsthaftes Interesse an Java haben. BlueJ verheimlicht Dinge und man greift noch gerne zu Bibliotheken und Erweiterungen wie SuM und Greenfoot - Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.

Wie irgendjemand in seinem langen Post schon gut gesagt hat: Es braucht einfach Zeit eine Sprache zu lernen. Die Schüler bei Laune zu halten und deswegen unnötige Inhalte zu unterrichten ist imho der falsche weg. Dann sollen die Lehrer doch bitte zu einer anderen Sprache greifen, die keine Main besitzen (PHP,C,Python,JavaScript,[ts=Am besten WoW-Addons schreiben]Lua[/ts],...). Dann können die Schüler, die Interesse am Programmieren (vollkommen egal welche Sprache) haben auch auf den Kenntnissen aufbauen. 

Wie ich schonmal in einem anderen Thread dazu geschrieben habe: Wenn man einen Führerschein macht, fährt man auch nicht erst im Bobycar die Straßen ab.



langhaar! hat gesagt.:


> In der Uni fängt dann ein Mathestudium im Stoff wieder ganz von vorne an.


Cool, wende ich das Beispiel mal auf meine Erfahrungen bzgl. BlueJ-Anwender und deren erste Probleme an: Du kommst aus der Uni raus und rechnest trotzdem [c]n/0[/c] aus, weil es am Anfang zu kompliziert war, dir zu erklären, wieso man nicht durch [c]0[/c] teilen darf.


----------



## vanny (4. Apr 2012)

Wenn BlueJ für diejenigen, die die Javabasics kennen/können, nichts ist und für diejenigen, die wirklich Java lernen wollen, auch nichts ist, dann gibts da meiner Meinung nach nicht viel Spielraum für einen sinnvollen Einsatz, es sei denn einige hier gepostete schlechte Eigenschaften von Schülern und Lehrern treffen tatsächlich zu

Gruß Vanny

[EDIT]Ich beziehe mich hier nur auf den Aspekt "Java lernen" für mehr Meinung reicht mein Horizont leider nicht[/EDIT]


----------



## timbeau (4. Apr 2012)

Wer behauptet, dass in der Uni der Stoff wieder von vorne anfängt hat nie Mathe studiert. Ist einfach Quatsch. 

In der Schule gehts auch um ganz andere Sachen als wirkliche Fakten zu vermitteln. Ganz nach dem Spruch_Wer einem Manne einen Fisch schenkt, gibt ihm für einen Tag zu essen. Wer ihn das Fischen lehrt, gibt ihm ein Leben lang zu essen._, muss es auch in der Schule laufen. In der Uni ist das schon etwas anderes aber immernoch ein großer Teil. Wenn jemand sich später beschwert, dass er kein Java lernen kann, weil er BLueJ in der Schule benutzt, dann ist das Problem nicht BlueJ sondern der Schüler.


----------



## Landei (4. Apr 2012)

timbeau hat gesagt.:


> _Wer einem Manne einen Fisch schenkt, gibt ihm für einen Tag zu essen. Wer ihn das Fischen lehrt, gibt ihm ein Leben lang zu essen._



Der Spruch geht aber anders: _Gib jemandem ein Programm, dann ist er einen Tag frustriert. Lehre ihn Programmieren, dann ist er es ein Leben lang..._


----------



## gassssst (4. Apr 2012)

Wunderbar wieder ein BlueJ Thread 



Gossi hat gesagt.:


> Er weiß nicht was nen boolean ist, ein Array, Methoden Rückgabetypen etc., weil ihm das alles von BlueJ abgenommen wurde


Nur mal interessehalber, wo nimmt BlueJ einem irgendwas mit boolean, arrays oder methoden ab?
Du hast dasselbe schonmal in einem früheren BlueJ Thread behauptet, aber hast mir auch dort nicht auf die Frage antworten können.



Landei hat gesagt.:


> Ich denke, es ist ein konzeptioneller Fehler, Objektorientierung einzuführen, ohne die Grundlagen der imperativen Programmierung kennengelernt zu haben. Warum soll man nicht erst einmal Java als "Taschenrechner" verwenden


Nun eine interactive shell wie python hat java von haus aus ja leider nicht, aber - und das ist in vorherigen Beiträgen wohl nicht rübergekommen - kann ich BlueJ auch für die Lehre von imperativer Programmierung, so gut wie es mit java halt geht benutzen. Z.B. da ich meine Funktionen einfach per mausklick aufrufen/parametisieren kann.  



Tomate_Salat hat gesagt.:


> Meine Meinung basiert auf den Fragen von Mitgliedern hier im Forum. Imho tut BlueJ Leuten keinen Gefallen die ernsthaftes Interesse an Java haben. BlueJ verheimlicht Dinge und man greift noch gerne zu Bibliotheken und Erweiterungen wie SuM und Greenfoot - Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.


Nix für ungut, ich glaube dein (und zugegebenermaßen in gewissem maß ebenso mein) Problem liegt eher bei blöden Fragen von Anfängern generell. Ich kann nicht aufzählen, wie oft ich augenrollend den Browser geschlossen hab, weil wieder irgendein **** gefragt hat warum eclipse seinen code "rot unterstreicht". Das ist, wie du, wenn du nicht voreingenommen wärst, feststellen könntest, kein IDE Problem sondern ein User-Problem


----------



## Tecwan (5. Apr 2012)

Tomate_Salat hat gesagt.:


> Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.



Wenn die Aufgabe darin besteht, Schülern tatsächlich eine Sprache beizubringen: ja.



Tomate_Salat hat gesagt.:


> Die Schüler bei Laune zu halten und deswegen unnötige Inhalte zu unterrichten


Da liegt für mich der Knackpunkt: BlueJ ist Animationsmaterial, und der Nutzen liegt im Aufbau der
Motivation. Ziel ist nicht das konkrete Erlernen einer Sprache, sondern eher sowas wie ein 
symbolischer Umgang mit Konstrukten. Aus diesem Blickwinkel ist es viel weniger eine
Zeitverschwendung.

Um ein ähnliches Bild wie das des Bobbycars zu bemühen: Wie viele Schüler haben sich zB. durch
die programmierbaren Lego-Roboter dazu animieren lassen, sich mit dem "Programmieren" zu
beschäftigen. Da werden auch symbolische Aktionen grafisch zu Flussdiagrammen zusammengesetzt,
ohne dass dafür eine Sprache bemüht werden muss. Klar, die Bedienung erfordert auch eine gewisse
Einarbeitungszeit. Aber ist das Zeitverschwendung?
Außerdem fangen einige der Kids damit an, Lego-Roboter zu bauen, noch bevor in der Schule
Prozentrechnung oder Dreisatz auf dem Lehrplan stehen.
Entscheidend für eine Karriere als späterer Programmierer (ob Hobby oder zum Broterwerb spielt
dafür keine Rolle) ist da vielmehr der Spaß und die Vermittlung des Gefühls, eigene Ideen umsetzen
zu können. Der Nutzen liegt auf einer völlig anderen Ebene, es geht nicht um Fachwissen, sondern
um das Vermitteln eines Selbstvertrauens in die eigenen Fähigkeiten, wenn man sich auf die
Vorgaben einlässt - und da können die Hürden ruhig sehr niedrig liegen. Die emotionale oder
spielerische Komponente hat einen viel größeren Einfluss auf die Lernwilligkeit als beispielsweise
der Anreiz, den die intellektuelle Herausforderung bietet.
*oder lest ihr hier nicht lieber als trockenes Dozieren eine Diskussion, in der die Fetzen fliegen?*
Das eine ist Spiel, das andere Arbeit, und optimal läuft es, wenn schließlich die Arbeit ähnlich
anregend empfunden werden kann wie das Spiel.

Nur, und da stimme ich zu, darf man nicht beim mühelosen Spiel stehen bleiben, sondern muss
irgendwann die Schwelle zur Ernsthaftigkeit des "ohne Fleiß kein Preis" überschreiten.
Das ist aber nicht Aufgabe von BlueJ, und man kann auch den Entwicklern der IDE nicht
vorwerfen, dass sie versuchen, die Grenze des "Jetzt muss man aber echtes Java lernen" so
weit wie möglich herauszuschieben.
Da sind es tatsächlich eher die Lehrer, die den Zeitpunkt verpassen, an dem das "echte Zeug"
näher gebracht werden muss.

Es ist ein Bischen wie Führerschein am Simulator zu machen; vieles ist machbar, manches
aber eben auch nicht.


----------



## U2nt (5. Apr 2012)

Um mich mal an der Diskussion zu beteiligen (auch wenn ich nicht jeden einzelnen Post durchgelesen habe):
Vorweg muss ich erstmal sagen das ich BlueJ nochnicht verwendet habe und nur aus den Infos, die ich durch die Posts hier gelesen habe, "beurteile".

Als ich selbstständig angefangen habe Java zu lernen war ich schon ein wenig "verwirrt" von der main-Methode. Aber ich hatte den Ehrgeiz, es weiter zu lernen. Und genau da liegt der Punkt:

Wenn man den Ehrgeiz hat und die Sprache lernen _will_, ist BlueJ imho nicht der richtige Weg, wie hier schon beschrieben wurde verheimlicht es einfach zu viel. Wenn man sich dafür interessiert kann man sich in alles reinlesen, so komplex es seien mag.
Wenn man jedoch dazu "aufgezwungen" wurde und man nicht den Ehrgeiz mitbringt und einfach nur die Unterrichtszeit absitzt und wenigstens noch eine akzeptable Benotung haben will, dann sollte der Lehrer zu BlueJ greifen - da eben die die's nicht interessiert auch nichts weiter nach der Schule mit machen werden. (Wurde glaube ich schonmal in etwa so hier erwähnt).

Die Frage vom TO bezog sich auf Einsteiger, da muss man wieder unterteilen:

Einsteiger, die Selbstständig die Sprache erlernen wollen
Einsteiger, die die Sprache erlernen müssen
Einsteiger, die die Sprache erlernen wollen und müssen

Fazit: Wenn man dazu ausgerichtet ist, bspw. in der Uni, Leute darauf zu trainieren berufliche Entwickler zu werden, ist BlueJ imho nichts.


----------



## gasssssst (5. Apr 2012)

Das hab ich hier schon mehrmals gelesen, darum mal die Frage (an alle):


U2nt hat gesagt.:


> wie hier schon beschrieben wurde verheimlicht es einfach zu viel.


Von der Tatsache, dass eine Konsolen-Java-Anwendung arbiträrerweise mit einer public-static-void-main(String...)-Methode gestartet wird, _was denn nun_ ?


----------



## irgendjemand (5. Apr 2012)

also die vergleiche mit dem bobbycar und dem mathe-studium nach dessen beendigung man immer noch versucht n/0 zu rechnen fand ich schon sehr treffend

ums vielleicht noch mal selbst aufzugreifen : kennst du IRGENDEINEN fahrlehrer der dich sofort nach der anmeldung in ein auto setzt OHNE dir vorher auch nur IRGENDETWAS theoretisch erklärt zu haben ? ich glaube NICHT ... und ich denke auch nicht das sich ein solcher fahrlehrer auch lange wird halten können ...

zum mathe-studium : hmm ... gut .. ich habs jetzt nicht studiert ... aber war in mathe dann doch recht gut *4 jahre in folge gesamtschnitt 1,00 ... und dann prüfung mit 2 verhaun weil ich ne aufgabe überlesen habe *shame** ...
ob man jetzt im mathe-studium so richtig von 0 anfängt kann ich nicht glauben ... denn auch wenn man wie gesagt nur "grundrechenarten" lernen würde ... sind das in 10 jahren dann immerhin doch noch ne ganze menge ... selbst wenn man den ganzen geometrie-kram mal als einen kompletten teil betrachtet ... bleiben neben den 4 grundrechenarten immer noch potenzen / wurzeln , klammern / binomische formeln , brüche und noch einiges mehr ... wenn man sich dann noch 3 jahre durchs abi quält kommt dann noch mal die selbe menge neuer stoff in grade mal nem drittel der zeit auf einen zu ...

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 ?

sry ... DAS weicht dann doch sehr stark von meinem eigentlichen thema ab und lässt sich ungefähr mit dem unterschied von "schul-physik" bis zur "hochwissenschaftlichen theoretischen quanten-physik" vergleichen ... und schlägt hier voll raus ...


dann kam auch die unterscheidung zwischen verschiedenen typen von "einsteigern"

ich selbst bin autodidakt ... habe mir also alles was ich im groß-bereich IT weis selbst *großteil mit hilfe des netzes selbst* beigebracht ... weil ich den willen dazu hatte und auch immer noch den willen habe mich auf diesem gebiet sowohl hobby- als auch berufs-mäßig immer weiter zu entwickeln ...

dann gibt es noch die jenigen die es müssen , aber nicht wollen ...
bei dieser gruppe frage ich mich dann immer ernsthaft : WARUM meldet sich sojemand auch noch freiwillig zum info-kurs ?
wer dann nichts mitbekommt und daraus resultierend schlechte noten kassiert ... der ist SELBST SCHULD !

*eine sehr kleine ausnahme würde ich noch allerhöchstens für die machen welche auf grund von über-belegung anderer kurse in info MÜSSEN ... obwohl diese alles versucht haben dort eben nicht reinzukommen eben weil sie davon 0 plan haben und keine schlechten noten bekommen wollen ... aber das dürfte wohl von 1000 kursen 1 betreffen*

die letzte genannte kategorie ergibt für mich nur sehr wenig sinn ... denn entweder will ich es von vornherein und melde mich eben desshalb freiwillig zum info-kurs ... oder lass es komplett ...
für mich würde also dieser fall "ich will und ich muss auch" *oder wie auch immer du es noch ausführlicher beschreiben willst* keinen sinnhaften grund haben und daher nicht eintreten ...




> Das hab ich hier schon mehrmals gelesen, darum mal die Frage (an alle):
> 
> 
> 
> ...


und damit willst du jetzt genau WAS ausdrücken und WAS genau fragen ?
nach dem ich mir erlich gesagt erstmal das wort "arbiträr" google musste *wikipedia übersetzt "Arbitrarität" mit "willkürlichkeit"* verstehe ich deinen post immer noch nicht

java wird nicht "willkürlich an [c]public static void main(String[])[/c] gestartet" ... sondern das ist so festgelegt in der sprach-definition das genau diese signatur *vorrausgesetzt sie befindet sich in einer [c]public class[/c]* der einsprungspunkt für die VM ist ... gleich ob es davon mehrere in einem projekt geben sollte und es somit möglich ist "verschiedene" einstiegspunkte zu haben

oder was willst du jetzt wissen ?


auch der angesprochene "verheimlichung" muss ich voll und ganz zustimmen ... denn java lernt man nicht in dem man wichtige grundlagen unter den tisch fallen lässt

*um es hier noch einmal deutlich zu machen : BlueJ ist nach *eigenen* angaben dazu gedacht es *java* anfängern zu erleichter in die sprache einzusteigen ... und zwar dierekt mit OOP ohne sich vorher mit den imperativen basics zu befassen ...
wie du vom deutschen wiki-artikel , welcher deinem zitat zu folge besagt das es angeblich nur das ziel wäre OOP im allgemeinen zu vermitteln , darauf kommst das man es für alle sprachen pauschalisieren könnte weis ich nicht ... *derjenige sollte es selbst wissen wer angesprochen ist*

und wie ich bereits sagte : wer java wirklich lernen WILL ... der wird sich sicher auch mit der theorie und der erklärung genau dieser einen "standard" zeile widmen ... und diese nicht nur als "trokene beilage" beachten ...
auch finde ich es persönlich nach wie vor definitiv FALSCH erst etwas praktisch machen zu wollen und dann nebenbei oder sogar erst danach darüber zu sprechen ...

um mal den genannten beispielen zu folgen : das wirst du WEDER in der schule , NOCH im studium , NOCH in einer aus/weiterbildung finden ... du wirst grundsätzlich IMMER erst mit der theorie konfrontiert ...
falls das bei dir nicht so war tust sowohl du als auch das umfeld welches dir das angetan hat echt leid ...


----------



## Kevin94 (5. Apr 2012)

ich weiß ja nicht in welchem Bundesland du zur Schule gegangen bist irgendjemand, aber bei mir (Bayern) ist Info-Unterricht ein Pflichtfach im Gymnasium. In der 6. und 7. für alle(Word & Co. halt) und wenn man den Naturwissenschaftlichen Zweig gewählt hat auch in der 9. und 10. . Insofern macht die Unterscheidung von U2nt durchaus Sinn, denn viele wählen den Zweig nur wegen Physik oder Chemie oder auch mangelnden Alternativen.
Auserdem führt dieses relativ neue Pflichtfach zu einem gewaltigen Lehrermangel in Bayern. In der 6. und 7. darf eigentlich jeder Lehrer Info unterrichten der auch nur halbwegs erklären kann was Copy&Paste ist und vielleicht auch noch weiß wie man in Word bunte Kreise zeichnen kann.
Und für den richtigen Info Unterricht haben wir an meiner Schule erst seit diesem Jahr jemanden der Info auf Lehramt studiert hat, obwohl es das Fach schon mindestens seit Einfürhrung des G8 gibt(also seit 9 Jahren). Über die unfähigkeit des Vorgängers möchte ich garnicht reden, der hat zwar auch Info studiert, aber in einer Zeit wo OOP noch ein Schimpfwort war.

Im allgemeinen finde ich die Diskussion auserdem sinnlos. Kann mir jemand erklären, wie eine IDE einem irgendwelche Aspekte einer Sprache verheimlichen oder vorenthaten kann?
Wie soll das gehen? Lässt sie Quellcode unsichtbar werden? Weigert sie sich eine richtige Main-Methode zu compilieren?
Nicht dass ich wüsste.
Insofern ist BlueJ zum erlernen von Java *genauso gut* geeignet wie jede anderer IDE, wenn nicht sogar besser, da sie den Anfänger nicht mit unnötigen Featurs erschlägt.

Aber wie schonmal geschrieben *hilft* sie einem *unfähigen* Lehrer (oder faulen Schüler) eindeutig dabei, wichtige theoretische Grundlagen unter den Tisch fallen zu lassen. Das Problem von BlueJ ist also keineswegs ein falsches Konzept oder eine fehlerhafte Umsetzung, sondern der falsche Einsatz durch die Lehrer (bzw. dass die Lehrer es selbst nicht können). Kann mir irgendjemand einen Thread zeigen indem jemand, der Mit BlueJ programmiert, ohne diese IDE von einem Lehrer aufgezwungen bekommen zu haben oder halbwegs daran intressiert ist Java zu lernen, eine dähmliche Anfängerfrage gestellt hat, die er sich nach 10 min suchen in der Insel auch selber hätte beantworten können?

Was SuM und GreenFoot oder auch JavaKarol oder Kara und wie sie alle heißen angeht, stimme ich mit euch über ein, dass diese Frameworks reine Zeitverschwendung sind und einen nicht ans richtige Programmieren heranführen, sondern nur eine nutztlose "Pseudosprache" beibringen.


----------



## irgendjemand (5. Apr 2012)

ja .. ich weis das das schulsystem bei euch da drüben im westen und auch in berlin/brandenburg *zumindest aus meiner sicht* ziemlich chaotisch ist ...
ich selbst komme aus sachsen-anhalt ... und bei uns gibt es nur info-unterricht wenn man sich diesen auch selbst ausgesucht hat ... und das auch erst im gymnasium ab 9ter klasse ...

das man info irgendwie zu naturwissenschaften packen kann ... ja irgendwo schon ... aber das es desshalb gleich zum pflichtfach wird wenn man diesen zweig wählt ... das halte ich dann für einen großen fehler der system-verwaltung die sich diesen mist ausgedacht haben ...
denn eigentlich ist es allgemein bekannt das die unterste stufe der "informatik" erst über der höchsten des "normalen alltäglichen gebrauchst" kommt ... und damit für über die hälfte sowas also in unbezingbaren hürden endet ...
derjenige der sich diesen mist ausgedacht hat ... und auch die die das dann noch umsetzen ... gehen doch wissentlich das risiko ein eigentlich guten schülern welche für naturwissenschaften wie nun mal chemie und physik eine grüne arder haben durch das pflichtfach info in dem sie z.b. überhaupt nicht durchblicken den gesamten durchschnitt damit total zu versauen ...

aber naja ... genug über west-deutsches schulsystem aufgeregt ...

back to topic



> Im allgemeinen finde ich die Diskussion auserdem sinnlos. Kann mir jemand erklären, wie eine IDE einem irgendwelche Aspekte einer Sprache verheimlichen oder vorenthaten kann?
> Wie soll das gehen? Lässt sie Quellcode unsichtbar werden? Weigert sie sich eine richtige Main-Methode zu compilieren?


keiner hat hier je behauptet das BlueJ "public static void main(String[])" nicht compilen würde ... sondern der fakt das dies von vornherein einfach komplett unter den tisch fallen gelassen wird ... das ein frischer anfänger genau diese erfahrung eben NICHT macht das jedes java programm IMMER an genau diesem punkt anfängt ... wie man es auch in allen anderen mehr oder weniger guten anfänger- und fachbüchern meist in den erste 3 bis 4 kapiteln noch vor dem konkreten beispiel "Hello World!" lesen kann
um mich also auf das quote zu beziehen : JA ... BlueJ lässt code verschwinden / unsichtbar werden ... *oder besser : fordert den neuling NICHT damit diesen zu schreiben*
und wegen solchen dingen ist BlueJ für mich komplett am ziel vorbei ... denn guck dir doch mal n neuling an der dann da z.b. mit der Insel sitzt und sich fragt : und was wollen die jetzt mit main() ? ... solche und andere fragen dieses kalibers sind hier schon mehr als ein mal gekommen ...

persönlich bin ich eh der meinung : wenn jemand programmieren lernt ... dann soll er das gerade bei java erstmal mit nem text-editor und ner console machen ... und KEINE IDE nutzen ... *sonst kommen wieder so wunderschöne topics ala : ich programmiere seit fast nem jahr mit java und eclipse macht hier nur mist ... *anderer user* : startet doch mal über console ... *TO* : bitte was ist ne console ... das ende vom lied kennt ihr*

und wenn schon ne IDE ... dann bitte nicht so ein graphisch aufwändiges point'n'click adventure durch den JavaInselJungel ... sondern mit nacktem code und für anfänger auch erstmal mit deaktivierten features wie auto-complete oder sowas ...


die diskusion um BlueJ ist schon durchaus berechtigt ... denn es stellt sich wirklich die frage : ist es dazu geeignet einem kompletten neuling java von anfang an richtig bei zu bringen ? ... und hier ist die antwort ganz klar : NEIN ... denn elementare sprachbestandteile und grundlagen werden schlicht ignoriert und bleiben dem anfänger verborgen ...


----------



## irgendjemand (4. Apr 2012)

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:
> 
> ...



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


----------



## JanHH (4. Apr 2012)

Ich kenn BlueJ zwar quasi gar nicht, aber finde eher dass das was Du schreibst SCHROTT ist, um mal bei Deiner Ausdrucksweise zu bleiben ;-). Den Quote finde ich plausibel. Ich hab auch schon häufiger (beim Versuch, Programmieranfängern bei java zu helfen) festgestellt, dass sie in der Tat genau diese Schwierigkeiten haben. Leute, die vorher noch NIE programmiert haben, müssen den Spagat hinlegen, sowohl objektorientierte Programmierung zu verstehen, als auch, sich dem erstmal von dieser eher nicht-OO-prozeduralen Seite (main-Funktion und Konsolen-I/O) zu nähern. Das führt in der Tat schnell zu Frustration und Verwirrung.

Wir haben damals an der Fachhochschule als erste Programmiersprache Smalltalk gelernt, das war gerade für die absoluten Anfänger recht gut, weil man da wirklich die OO-Denkweise ohne "prozeduralen Overhead" in einem visuellen "rumspiel-System" hat (so ähnlich scheint BlueJ ja auch zu sein). Das Erlenen der Konzepte und der grundlegenden Sachen an sich ist schon schwierig genug für viele, finde es daher sinnvoll, nicht auch noch mit unnötigem Ballast alles noch schwieriger zu machen.

Wir nicht-Anfänger hier lachen über sowas, aber für wirkliche Anfänger, vor allem fachfremde Leute (die z.B. was ganz anderes studieren und nebenbei noch einen Programmierkurs machen müssen) ist das durchaus ein grösseres Problem.

Nachtrag: Dazu kommt, dass man ja nicht wirklich oft Konsole und Main-Funktion hat, wenn man professionell mit java arbeitet. In fast allen Bereichen wo java eingesetzt wird hat man irgendwelche Frameworks und man schreibt wirklich NUR noch objektorientierte Konzepte.. sowas zu unterschlagen ist also gar nicht mal so schlimm. Wirklich eher ein überbleibsel aus der C-Welt.


----------



## ARadauer (4. Apr 2012)

Ich denke du hast spät in der nacht immer ein bisschen zu viel Zeit ;-)

Aber im Grunde hast du recht, ich halte blueJ auch für unnötig...


----------



## schalentier (4. Apr 2012)

Dem Quote kann ich mich eigentlich nur anschliessen. Um einem Anfaenger einfach nur ein Hello World Programm zu erklaeren, sind bereits mehrere Konstrukte notwendig, die man einfach nicht erklaeren kann (in diesem ersten Moment). Warum static? Warum dieses komische Array? Was ist ein Array? Ueber IO brauchen wir gar nicht erst zu reden, das geht sogar in C deutlich einfacher (besonders Input).

Ich hab mir aus Neugier neulich mal BlueJ angesehen (nur kurz), da ja hier immer mal wieder Fragen dazu kommen und ich mir gern selbst meine Meinung bilde, als nur irgendwelche Vorurteile zu hegen und anderen nachzuquatschen - und muss sagen, sooo schlecht isses auch nicht. Hat mich bissel an NakedObjects erinnert, wovon ich im Grunde ein Fan bin. Der Punkt ist einfach, zeig mal einem Anfaenger (!) Eclipse oder IntelliJ und dann BlueJ. Was wird dieser wohl eher verstaendlich finden? 
Die Console waere tatsaechlich eine Alternative, leider haben heutige Anfaenger selten jemals zuvor eine Console gesehen - und dann eine Diskussion ueber den Sinn oder Unsinn einer Console zu beginnen mit jemandem, der wahrscheinlich nur nebenbei programmieren wird, halte ich fuer eher kontraproduktiv. 

Ich rate irgendjemand mal, einfach bisschen ruhiger zu werden und nicht sinnfrei ueber alles und jeden herzuziehen, der nicht seiner Meinung ist. Das ist nicht cool, das ist dumm. Noch peinlicher ist es, wenn du nicht mal Argumente vorbringst, WAS dich nun eigentlich am BlueJ-Schrott stoert? Musst du das in deiner Schule benutzen, oder was? Dann red halt mal mit dem Lehrer, ob du nicht mal nen Vortrag halten kannst, wie man besser mit Notepad und Console arbeitet. Das ist in jedem Fall produktiver, sinnvoller und lehrreicher, als hier alberne Sprueche zu klopfen. Ansonsten kannst du es ruhig einfach ignorieren.


----------



## Paddelpirat (4. Apr 2012)

irgendjemand hat gesagt.:


> und dessweiteren : hat nicht JEDE programmiersprache irgendwo einen fest definierten einstiegspunkt ?



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


----------



## Gossi (4. Apr 2012)

langhaar! hat gesagt.:


> Das hast du anscheinend völlig falsch verstanden.
> Es ist nicht so, dass die Lehrer die main Methode nicht erklären können, weil sie sie nicht komplett verstanden haben, sondern die main Methode kann nicht erklärt werden, da die dazugehörigen Konzepte noch nicht eingeführt worden sind und zum Anfang auch noch nicht eingeführt werden sollen. Didaktik halt.



Sehe ich anders. Selber grade vor kurzem das Beispiel gehabt, ne Freund von mir fängt in der Schule mit dem Programmieren an (BlueJ) und warum? Weil der Lehrer sagt, so kann man sich erstmal auf das Grundsätzliche Konzentrieren und was kommt dabei rum?

Er weiß nicht was nen boolean ist, ein Array, Methoden Rückgabetypen etc., weil ihm das alles von BlueJ abgenommen wurde, mittlerweile helfe ich ihm nurnoch in Eclipse und zeige ihm dort wie man Programmiert, nicht ein UML Diagramm bastelt und ausführt.

Und wer erwartet denn als kompletter Neuling, dass dieses main-Konstrukt 100% erklärt werden kann?

Es reicht doch schon das ganze mal in einzelteile zu zerlegen und zu erklären was diese zu bedeuten haben, Beispiel:



> Hier habe wir die sogenannte Main-Methode, diese sieht in Java immer wie folgt aus:
> 
> public static void main(String[] args)
> 
> ...



Wo liegt da nun das Problem?
Die Neulinge sind nicht frustriert, der Lehrer hat keine Probleme es zu erklären und man weiß zumindest woran man ist und wenn die absoluten Basics stehen und man sich etwas mehr mit Methoden, Objekten und Klassen beschäftigt, erklären sich auch die letzten unklaren Schlüsselworte...


----------



## langhaar! (4. Apr 2012)

Gossi hat gesagt.:


> Sehe ich anders. Selber grade vor kurzem das Beispiel gehabt, ne Freund von mir fängt in der Schule mit dem Programmieren an (BlueJ) und warum? Weil der Lehrer sagt, so kann man sich erstmal auf das Grundsätzliche Konzentrieren und was kommt dabei rum?



Bitte zitier mich nicht, wenn du dich nicht konkret auf meinen Text beziehst.
Ich habe nur den didaktischen Ansatz beschrieben, nicht aber bewertet.
Du sagst, du sieht das anders und bewertest den Ansatz, stellst aber nicht meine Beschreibung in Frage, womit das Zitat komplett irreführend ist.


----------



## Paddelpirat (4. Apr 2012)

@Gossi
Wobei man sich so eine ?genaue? Erklärung der main-Methode auch sparen kann bei Schülern. Das public so etwas bedeutet, wie öffentlicher Zugriff erlaubt ist ja noch okay, aber dann die weitere Erklärung mit Objekt und Kopie einer Klasse etc wirft ja Unmengen neuer Fragen auf.

Oder in einem Satz zu sagen, dass jede Methode einen Rückgabewert hat, "void" mit "still" übesetzt werden kann und bedeutet, dass diese Methode keinen Rückgabewert hat, ist einfach verwirrend.

Wenn ich einfach mal ein Hello World Programm oder so den Schülern zeigen würde könnte man vielleicht erklären dass die main-Methode der Einstiegspunkt des Programms ist und öffentlich zugänglich sein muss (daher public). Außerdem könnte man das String-Array erwähnen, da dieses erlaub dem Programm beim aufrufen Parameter zu übergeben, die man dann im Programm weiter verwenden kann, aber viel mehr auch nicht.

Für alles andere braucht man mehr Wissen und sollte meiner Meinung nach Schritt für Schritt erklärt werden und wenn dieses Wissen bekannt ist, kann man noch einmal auf die main-Methode verweisen und sie genauer erklären.


----------



## Sonecc (4. Apr 2012)

langhaar! hat gesagt.:


> Bitte zitier mich nicht, wenn du dich nicht konkret auf meinen Text beziehst.
> Ich habe nur den didaktischen Ansatz beschrieben, nicht aber bewertet.
> Du sagst, du sieht das anders und bewertest den Ansatz, stellst aber nicht meine Beschreibung in Frage, womit das Zitat komplett irreführend ist.



Wow. Mit einer der krassesten Beiträge die ich hier lesen durfte...
Ich kann dir da leider nicht zustimmen. Der Quote von Gossi passte IMO und der Beitrag bezog sich erkennbar auf deinen Beitrag, den er damit korrekt zitiert hat.
Selbst wenn das anders wäre, stünde es dir nicht zu seine Vorgehensweise beim posten in dieser Form zu verbieten.

Deine Aussage, dir Gossi zitiert hat ist übrigens nicht ganz richtig.
Ich habe sowohl in der Schule, als auch im Studium mich mit Java beschäftigt und in beiden Fällen war es kein Problem die main Methode anzugehen, da alle Konzepte schon vorher besprochen worden waren.
Der Unterricht im Bereich Programmierung besteht nicht von Beginn an daraus, dass man Code schreibt. Guter Unterricht in dem Bereich beginnt mit den theoretischen Grundlagen!

Leider ist genau das heutzutage noch immer nicht überall erkannt worden.


----------



## HimBromBeere (4. Apr 2012)

> Guter Unterricht in dem Bereich beginnt mit den theoretischen Grundlagen!


Das ist nicht immer der richtige Weg, ich sag nur "learning by doing". Ich möchte auch nicht, wenn ich kochen lerne, erst einmal die Theorie der richtigen Mischung studieren, sondern einfach erstmal probieren, was so geht. Beides ist durchaus möglich, aber pauschal zu sagen, man müsse sich erstmal durch die Theorie boxen, finde ich nicht wirklich überzeugend.

Zurück zum Thema: ich mag zwar BlueJ auch nicht, aber die Argumente dafür haben mich schon ein wenig überzeugt. Ich kann mich noch gut daran erinnern, wie verwirrt ich war, als ich das erste mal eine static void gesehen hab... v.a. der Typ void machte mir anfangs sehr zu schaffen (was aber auch daran liegt, dass es in anderen Sprachen nicht nur Methoden sondern z.B. auch Prozeduren gibt).


----------



## timbeau (4. Apr 2012)

Wenn ich Lehrer wäre würde ich ähnlich wie BlueJ vorgehen, ohne vll BlueJ zu nutzen. 
Aber erstmal die reale Welt als Objekte sehen und diese dann ins Programm zu transferieren finde ich einen guten Ansatz.


----------



## Sonecc (4. Apr 2012)

HimBromBeere hat gesagt.:


> Das ist nicht immer der richtige Weg, ich sag nur "learning by doing". Ich möchte auch nicht, wenn ich kochen lerne, erst einmal die Theorie der richtigen Mischung studieren, sondern einfach erstmal probieren, was so geht.


Es geht sich ja nicht darum, was mehr spass macht. Sicher ist es spassiger direkt loszulegen. Aber sinnvoller ist es nicht. Learning by doing führt nämlich gerade in dem Umfeld oft zu halbwissen und fehlern, die man so leicht nicht mehr los wird, weil einem die Grundlagen fehlen.

Ich sag ja aber auch nicht, dass man nie was tun darf. Nur grundlegende Theroetische Grundlagen sollten schon vorher bekannt sein, bevor man mal etwas tut. Dazu gehört im Falle von Java nunmal u.a. OO und eben auch static oder void, da es elementare Bestandteile der Sprache sind.

Was den Vergleich betrifft:

Wenn ich Flugzeugbauer werden will, kann ich auch nicht einfach anfangen zu bauen, ohne erstmal die theoretischen Grundlagen zu haben.
Wenn ich Lokführer (oder auch Autofahrer) werden will, kann ich auch nicht einfach losfahren ohne die theoretischen Grundlagen zu haben.

Tut mir leid, aber der Vergleich hinkt, denn auch als Koch muss man Grundlagenwissen besitzen, bevor man die Kunden bedient.
Einfach ins kalte Wasser springen funktioniert bei keinem Beruf, erst recht nicht bei einem eher komplizierten wie dem des Entwicklers.


----------



## HimBromBeere (4. Apr 2012)

Von berufsmäßigen Programmierern war hier niemals die Rede, oder ist dieses Forum nur für ebendiese da, dann geh ich mal schnell wieder ;(... Im Übrigen war auch nie von DEM KOCH die Rede, der Vergleich hinkt also keinesfalls.
Anderes Bsp.: Viele Berufsmusiker haben - wenn überhaupt - dann nur eine mäßige theoretische Ausbildung genossen, sprich sich erst mit haufenweise Geschihte, Tonbildung, Notenfarben ... beschäftigt und sind dennoch hervorragend auf ihrem Gebiet. Aber es soll auch Musiker geben, die zunächst tatsächlich Noten gelernt und dann erst gespielt haben 
Wie dem auch sei, selbst bei vielen (wenn nicht gar allen, aber das weiß ich nicht genau) Ausbildungen steht die Praxis im Vordergrund, weswegen dort auch die ersten Tage/Wochen "gearbeitet" und nicht "gelernt" wird. Die Theorie kommt dann meist erst nach einer gewissen Zeit dazu. Beim Programmieren funktioniert das überdies auch, es gibt hier kein wirklich richtig und falsch, es ist nur eine Art, wie man lernt.


EDIT: Und wieder einmal: zurück zum Thema. BlueJ ist meines Erachtens vielmehr eine Herangehensweise an ein unbekanntes Wissensgebiet als nur eine Entwicklungsumgebung. Für Anfänger und/oder Quereinsteiger (hey, steckt das nicht im Titel dieses Unterforums sogar drin?) , die weder die Zeit noch das Verständnis für die genauen Hintergründe haben, finde ich dieses Programm entgegen meiner Erwartung doch ganz positiv.


----------



## Tomate_Salat (4. Apr 2012)

Ich gebe auch mal irgendjemand recht. Was ist der Vorteil daran, Schülern mit einer "IDE" arbeiten zu lassen, die sie nie wieder brauchen werden und im schlimmste Falle werden noch Bibliotheken verwendet, die später nie zum Einsatz kommen?

Imho hat das nichts mit Java zu tun, sondern maximal: Was könnte Programmieren sein anhand von Java-Syntax.

Als Lehrer würde man im schlimmsten Falle sagen: "das Konstrukt akzeptiert ihr einfach mal so und ihr werdet es später nachvollziehen können". 

Das ist allemal besser, als es komplett unter den Tisch fallen zu lassen. Programmieren ist nunmal keine Sache, die man von heute auf morgen lernt. Es gibt immer wieder Stellen, an denen man akzeptieren muss: wie da was funktioniert kann ich mir gegenwärtig nicht erklären. Das kommt aber nach der Zeit.


----------



## Sonecc (4. Apr 2012)

HimBromBeere hat gesagt.:


> Von berufsmäßigen Programmierern war hier niemals die Rede, oder ist dieses Forum nur für ebendiese da, dann geh ich mal schnell wieder ;(... Im Übrigen war auch nie von DEM KOCH die Rede, der Vergleich hinkt also keinesfalls..



Deswegen brachte ich auch Autofahrer als Beispiele an.


----------



## schalentier (4. Apr 2012)

Tomate_Salat hat gesagt.:


> Was ist der Vorteil daran, Schülern mit einer "IDE" arbeiten zu lassen, die sie nie wieder brauchen werden und im schlimmste Falle werden noch Bibliotheken verwendet, die später nie zum Einsatz kommen?



Die wenigstens Schueler werden Programmierer, also werden auch die wenigsten jemals wieder Eclipse & Co anfassen. 



Tomate_Salat hat gesagt.:


> Als Lehrer würde man im schlimmsten Falle sagen: "das Konstrukt akzeptiert ihr einfach mal so und ihr werdet es später nachvollziehen können".



Das ist ein didaktischer Epicfail. Was dann bei einem Schueler ankommt ist: "Also das ist alles gaanz kompliziert und ihr seit einfach noch zu dumm um es verstehen zu koennen. Wenn ihr irgendwann viel gelernt habt, werdet ihr es dann aber vielleicht verstehen". Lesen lernt man doch auch nicht mit Shakespear, sondern mit extrem einfachen Saetzen, wo eben keine ablenkenden Fragen auftauchen koennen.



Tomate_Salat hat gesagt.:


> Imho hat das nichts mit Java zu tun, sondern maximal: Was könnte Programmieren sein anhand von Java-Syntax.



Naja, darum gehts doch. 

Ich glaub, wir diskutierten hier ohne definiert zu haben, fuer wen BlueJ geeignet ist. Imho ist es eine recht gute Moeglichkeit, um einen Menschen in die Objektorientierte Programmierung einzufuehren. Es geht um die Grundkonzepte, Objekte und Klassen und deren Verknuepfung. Eine Alternative zum guten alten Pascal, fuer Informatikunterricht an der Schule, der ueber "Jetzt lernen wir Word" hinausgeht. Der muss vor allem Spass machen, so dass die Schueler nicht nach 2 Stunden sagen: "Versteh ich nich, is langweilig und nix fuer mich". 

Es ist definitiv nichts fuer jemanden, der Softwareentwicklung studiert oder eine Ausbildung zum Fachinformatiker macht.


----------



## Tomate_Salat (4. Apr 2012)

schalentier hat gesagt.:


> Die wenigstens Schueler werden Programmierer, also werden auch die wenigsten jemals wieder Eclipse & Co anfassen.



Deswegen darf man die Ausbildung von den Schülern verhunzen, die es ernst meinen? Wie sähe dann der Englisch-unterricht oder Matheunterricht aus? Sorry, das ist imho kein Argument.



schalentier hat gesagt.:


> Das ist ein didaktischer Epicfail. Was dann bei einem Schueler ankommt ist: "Also das ist alles gaanz kompliziert und ihr seit einfach noch zu dumm um es verstehen zu koennen. Wenn ihr irgendwann viel gelernt habt, werdet ihr es dann aber vielleicht verstehen". Lesen lernt man doch auch nicht mit Shakespear, sondern mit extrem einfachen Saetzen, wo eben keine ablenkenden Fragen auftauchen koennen.



Die main-Methode ist Shakespear? Ich glaube nicht, dass sich ein Schüler für zu dumm hält, wenn man in der ersten Stunde gesagt bekommt, "das lernen wir im Detail erst später". Außerdem sehe ich auch kein Problem darin, einfach zu sagen, was die Bestandteile von der main Bedeuten. Später kann man immernoch ins Detail eingehen. 



schalentier hat gesagt.:


> Es ist definitiv nichts fuer jemanden, der Softwareentwicklung studiert oder eine Ausbildung zum Fachinformatiker macht.


... hier ist es imho mit Abstand am schädlichsten und gerade hier kommt es viel zu häufig vor.


----------



## langhaar! (4. Apr 2012)

schalentier hat gesagt.:


> Imho ist es eine recht gute Moeglichkeit, um einen Menschen in die Objektorientierte Programmierung einzufuehren. Es geht um die Grundkonzepte, Objekte und Klassen und deren Verknuepfung.



Folgendes steht bei Wikipedia:


> welche speziell für Ausbildungszwecke konzipiert wurde. Insbesondere das Vermitteln von Zusammenhängen in der objektorientierten Programmierung steht im Mittelpunkt des Systems.



Es geht *nicht* darum, Java zu lernen.
Erst recht nicht um die Syntax.


----------



## timbeau (4. Apr 2012)

Als ob der Matheunterricht in der Schule etwas mit dem Mathematikstudium zu tun hätte. :lol:

Es geht darum Schüler mit Spaß ans programmieren zu kriegen.


----------



## langhaar! (4. Apr 2012)

Tomate_Salat hat gesagt.:


> Deswegen darf man die Ausbildung von den Schülern verhunzen, die es ernst meinen? Wie sähe dann der Englisch-unterricht oder Matheunterricht aus?



Wie sieht denn der Matheunterricht heute aus?
Was man in der Schule lernt, hat doch mit Mathematik wenig zu tun.
In der Schule lernt man mehr oder weniger ein paar Rechenregeln.

In der Uni fängt dann ein Mathestudium im Stoff wieder ganz von vorne an.


----------



## irgendjemand (4. Apr 2012)

lasst mich mal euren vergleich mit dem berufsleben noch mal aufgreifen

ich selbst hab mich auch mal im schlosserhandwerk versucht *zumindest nannte man das mal so als unser staat noch DDR hieß* ...
und ob ihr es glaubt oder nicht ... aber es ist eben NICHT einfach damit getan mal eben die feile in die hand zu nehmen und damit den stahl zu "vergewaltigen" ...
jeder vernünftige meister *zumindest die bei denen ich gelernt habe* haben uns erstmal ne ganze woche theorie eingefüllt bevor wir überhaupt mit der praxis angefangen haben ... weil es gibt dann doch eine ziemlich große auswahl an feilen *z.b. hieb-art und -anzahl , form , länge , richtige bezeichnungen , DIN , etc*

worauf ich damit hinaus will um es mal mit "Heute lernen wir Java mit BlueJ" zu vergleichen : man kann einen neuling nicht sofort an eine *und sry ... aber ich sehe es immer noch so* möchtegern IDE lassen ohne ihm das theoretische wissen zu vermitteln
und das beginnt nicht etwa erst bei den besonderheiten von java wie die syntax oder OOP im etwas allgemeineren sinn ... sondern sollte erstmal mit nem crash-course über programmieren allgemein beginnen ... und damit meine ich wirklich die anfänge wie der webstuhl mit seiner lochkartensteuerung ...
dann das ganze natürlich übertragen auf heutige hardware und auch lowlevel dierekt mit micro-opcode anfangen ... dann noch kurs assembler und vllt C anreißen ... und dann erst überhaupt java erwähnen ...
dafür würde ich als lehrer bzw ausbilder schon mal gut ne woche für opfern ... um es den schülern überhaupt erstmal klar zu machen was "Programmieren" eigentlich bedeutet ...

wenn man dann soweit ist das man mit java anfängt sollte man es erstmal ganz banal machen : die welt von java anhand von realen "objekten" erklären ... um überhaupt erstmal auf die besonderheiten einzugehen

und DANN kann man anfangen "Hello World!" an die tafel zu schreiben ... als ungefähr ab mitte 2. woche ...
und dann nimmt man sich erstmal die zeit seinen schülern / azubis diese eine zeile zu erklären , was Gossi schon mal ganz gut getan hat *auch wenn ich es selbst vielleicht etwas anderst formulieren würde ... aber sinngemäß stimmt es ja*

damit wäre schon mal das größte TOTSCHLAG argument von bluej widerlegt : das lehrer ihren schülern diese zeile an die tafel schreiben und sagen : "glaubt mir einfach und schreibt das mal so" *um mal bluej selbst zu zitiren*
es ist mir schon klar das dieses verhalten dann zu den genannten problemen führt ... aber warum geht man hier nur auf die probleme ein anstatt mal den grund zu hinterfragen warum viele lehrer es denn genau so machen ?
ich finde hier die sichweise von bluej ziemlich daneben und würde das *um mal mit den worten von schalentier zu sprechen* "epic self own" nennen


dann finde ich es auch ziemlich krass wie ihr den punkt I/O völlig aus dem zusammenhang reißt ...

I/O hat nicht ausschließlich was mit console zu tun und damit über diese text auszugeben und ggf einzulesen ...
I/O ist grundsätzlich alles das wo irgendwelche bytes von einem speicher in einen anderen kopiert werden ...

und auch hier finde ich die ansicht von bluej ziemlich daneben : der gesamte I/O bereich wird hier einfach nur auf simple text-ein/ausgaben auf einer console reduziert ... ohne mal andere wichtige gebiete wie z.b. network- und file-I/O auch nur ansatzweise zu nennen ...
oder auch wie bluej sich hier nur darauf fixiert das man dann die schüler gleich zu beginn mit exceptions konfrontiert ... ziemlich lächerlich diese aussage ... denn bei ALLEN I/O-ops können fehler auftreten ... und diese werden in java nunmal durch Throwable und deren sub-klassen definiert ...
und wer hier jetzt mit dem argument kommen will : ja aber dann muss der lehrer ja wieder so viel erklären ... der meinen post bis hier hin *und auch das gesamte topic* scheinbar immer noch nicht verstanden ...

bluej fixiert sich darauf das es lehrkräfte gibt die ihren schülern sagen : "hinterfragt es nicht , das klären wir später , aber jetzt schreibt es erstmal so hin" ... und genau das ist der grund warum ich mich über bluej so aufrege : weil es genau diese verhaltensweise auch noch unterstützt ...

nein ... die einzig richtig lösung ist hier bei den lehrkräften anzusetzen und zu hinterfragen WARUM sie eben diese haltung haben ... anstatt irgendwas dahingeschmiertes anzubieten und genau solchen "problem-"lehrern auch noch eine möglichkeit geben das diese sowas gar nicht erst ansprechen müssen ... und das hat in meinen augen nichts mehr mit programmieren zu tun ... und schon garnicht mit java im speziellen ... denn dinge wie exceptions bei I/O-ops gehören nun mal einfach zur sprache dazu und sind ein fundamentaler bestandteil *sonst würde der kram ja nicht in java.lang liegen* ...

und dann höre ich hier posts wie das mein thread angeblich unter aller sau wäre nur weil ich mich mal öffentlich in meiner radikalen denkweise darüber äußere wie ein projekt die unfähigkeit einiger lehrer unterstützt ... nur weil deren "entwickler" genau solche mal selbst als lehrkräfte hatten ...
ich glaube diejenigen die so über diesen thread denken haben das grundproblem nicht begriffen ... wahrscheinlich selbst mal so angefangen ... und sich wie viele andere auch auf diese in meinen augen FALSCHE lernweise festgefahren


----------



## HimBromBeere (4. Apr 2012)

Jetzt beruhig dich mal wieder, du musst dich nicht hier aufregen. Werden wir mal wieder sachlich und suchen nach Argumenten für oder gegen den Einsatz von diverser Software für einen bestimmten Anwendungsfall. Derer sind zuletzt leider viel zu wenige genannt worden.
Tragen wir also zusammen: 

*Ziel des Programmes:*
Einsteigern das Programmieren mit JAVA näher bringen. Konzipiert für Anfänger und Quereinsteiger.

*Das Mittel:*
Eine einfache übersichtliche Oberfläche, wenig Schnickschnack, geringer Funktionsumfang. V.a. visuelle Elemente werden hierbei verstärkt genutzt.


*Auf der Pro-Seite steht: *
BlueJ ist eine einfache und übersichtliche Umgebung, mit der simple Programme erstellt und lauffähig gemacht werden. 
Durch visuelle Elemente wird das Erstellen der ersten (einfachen) Programme beschleunigt.

*Dagegen spricht:*
Grundlegende Details wie main und IO werden außen vor gelassen.



Wenn jemand weitere ergänzen möchte, dann bitte... kurz und knapp und so neutral wie möglich.


EDIT: Wenn du sowieso deine feststehende Meinung hast von diesem Programm, warum startest du eigtl. überhaupt erst das Thema, Argumente scheinen dich ja kaum zu interessieren. Außerdem: nutz es doch einfach nicht, wenn´s dich so abschreckt...


----------



## timbeau (4. Apr 2012)

Ein Grundproblem ist doch, dass es viel zuwenig Lehrer gibt, die Programmieren können. Da wird BlueJ angewandt und mehr kann der Lehrer wahrscheinlich auch nicht.


----------



## irgendjemand (4. Apr 2012)

HimBromBeere hat gesagt.:


> Jetzt beruhig dich mal wieder, du musst dich nicht hier aufregen. Werden wir mal wieder sachlich und suchen nach Argumenten für oder gegen den Einsatz von diverser Software für einen bestimmten Anwendungsfall. Derer sind zuletzt leider viel zu wenige genannt worden.
> Tragen wir also zusammen:
> 
> *Ziel des Programmes:*
> ...



sorry ... aber du widersprichst dir selbst

"ziele : einsteigern das programmieren mit java näher bringen"
[...]
"contra : grunlegende details fehlen"

meinst du nicht das das im widerspruch zu sich selbst steht ?
wie willst du denn jemanden eine "sprache" beibringen wenn du grundlagen weglässt ?

*als blödes beispiel : wie bringt man jemanden z.b. russisch bei : in dem man ihm erstmal die schriftzeichen beibringt ... anstatt ihn gleich mit vokabeln zu konfrontieren *genau diesen fehler macht übrigens auch "Rosetta Stone"**

[EDIT]





timbeau hat gesagt.:


> Ein Grundproblem ist doch, dass es viel zuwenig Lehrer gibt, die Programmieren können. Da wird BlueJ angewandt und mehr kann der Lehrer wahrscheinlich auch nicht.


jop ... ich würde sagen : voll ins schwarze[/EDIT]


----------



## bone2 (4. Apr 2012)

irgendjemand hat gesagt.:


> "Heute lernen wir Java mit BlueJ"



das ist doch schon falsch, wurde oben schon gesagt, man lernt kein java mit bluej sondern bekommt eine einführung in das konzept der objektorientierung


wir haben damals im info unterrricht programmieren noch mit der steuerung eines niki-roboters gelernt. (vereinfachung von pascal und auf deutsch)
war für die meisten ganz lustig und vieles wurde rausgelassen, wie zb einsteigspunkte, parameter usw
und die die es wollten waren schon nach 2h schon auf einem niveau das das jahr  durch gereicht hat

[EDIT]er widerspricht sich nicht selber. lesen -> verstehen -> denken -> antworten[/EDIT]


----------



## HimBromBeere (4. Apr 2012)

> sorry ... aber du widersprichst dir selbst
> 
> "ziele : einsteigern das programmieren mit java näher bringen"
> [...]
> "contra : grunlegende details fehlen"


Tut mir Leid, MIR widerspreche ich keinesfalls, bestenfalls den Entwicklern des Programmes, die es demnach nicht geschafft haben, ihr ZIEL umzusetzen...


----------



## irgendjemand (4. Apr 2012)

bone2 hat gesagt.:


> das ist doch schon falsch, wurde oben schon gesagt, man lernt kein java mit bluej sondern bekommt eine einführung in das konzept der



gut ... wenn man mit BlueJ KEIN java lernt ... sondern lediglich einblicke in OOP bekommen soll ... erkläre mir mal warum das ding dann 1) Blue*J*(ava) heißt und 2) java als zugrundeliegenden sprache nutzt ...

nur um OOP zu lernen gibt es sicher bessere möglichkeiten als einen "vermurksten java-crashkurs" ...

ich finde auch diese aussage ... das man mit BlueJ angeblich eben KEIN java lernen würde ... auch ziemlich ... nun ... *missplaced* ...
denn die seite von BlueJ befasst sich ja nun wohl eindeutig damit das es anfängern angeblich erleichtert werden soll java zu lernen ... OHNE eben diese fundamentalen grundlagen wie z.b. "main" oder "I/O & Exception" zu lernen ...

[EDIT]





HimBromBeere hat gesagt.:


> Tut mir Leid, MIR widerspreche ich keinesfalls, bestenfalls den Entwicklern des Programmes, die es demnach nicht geschafft haben, ihr ZIEL umzusetzen...


ahh .. es macht so langsam KLICK beim ersten ...

denn genau das versuche ich mit diesem thread zu sagen : das die entwickler von BlueJ ihr ziel , es einsteigern einfacher zu machen , schlicht verfehlt haben weil sie wichtige grundlagen unter den tisch fallen lassen[/EDIT]


----------



## irgendjemand (4. Apr 2012)

sry .. verklcikt


----------



## bone2 (4. Apr 2012)

irgendjemand hat gesagt.:


> gut ... wenn man mit BlueJ KEIN java lernt ... sondern lediglich einblicke in OOP bekommen soll ... erkläre mir mal warum das ding dann 1) Blue*J*(ava) heißt und 2) java als zugrundeliegenden sprache nutzt ...



und wenn es BlueC heißen würde und auf C++ aufsetzen würde, wäre das Programm noch fast genauso (mmn wertlos)
es könnte jede beliebige oop sprache sein. das ding nutzt halt zufällig java


----------



## schalentier (4. Apr 2012)

Ja gut, ich glaub diese Diskussion wird sinnlos. Es gibt eben Menschen auf der einen Seite (mich z.B.) die sind der Meinung, dass man Neulingen Programmieren und Informatik am besten durch moeglichst sofortige Praxis beibringt (schwimmen lernt man auch nur im Wasser), auf der andren Seite gibt es welche, die sagen man braucht gewisse theoretische Vorkenntnisse. 

Wahrscheinlich liegt das daran, dass es bei mir so funktioniert hat (bei mir wars allerdings autodidaktisch - ich hab einfach stundenlang Listings abgetippt). Der Vorteil ist, man hat eben mehr oder weniger sofort Erfolgserlebnisse. Zudem eignet sich Informatik da besonders gut, weil man sich am Rechner schlecht verletzen kann (wie z.B an irgendwelchen Maschinen), noch kann man durch rumprobieren viel kaputt machen. 

Zudem kann ich nur nochmal sagen: BlueJ ist NICHT zum Lernen von Java, sondern zum Lernen von Objektorientieren Prinzipien. Und dafuer braucht man weder statische Methoden, noch Java's IO. 

Wenn das irgend jemand anders sieht, hab ich damit ueberhaupt kein Problem. Nur find ich es einfach albern, hier ueber irgendwelche IDEs zu meckern. Ich koennte das auch stundenlang machen (nur eben ueber Eclipse), aber ich hab gehoert, dass man vom Meckern Pickel bekommt. Also nehm ich einfach ne andre IDE, hab meine Ruhe und keine Pickel :-D


----------



## bone2 (4. Apr 2012)

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.


----------



## Kevin94 (4. Apr 2012)

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.

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.

[EDIT]@bone2: Ich finde es grausam wie du BlueJ pauschalisierst. Man kann damit auch wunderbar Java sich selbst mit Hilfe eines guten Buches beibringen.[/EDIT]


----------



## Sonecc (4. Apr 2012)

Nochmal: @irgendjemand: Nimm die Finger von der Punkt Taste. Es ist unheimlich schwierig deine Texte zu lesen.


----------



## Solgull (4. Apr 2012)

Ich halte BlueJ für einen hervorragenden Einstieg für Personen die bisher noch keinen Kontakt mit Programmierung hatten und denen daher erst einmal Grundlagen zur Programmierung beigebracht werden müssen.

In BlueJ läßt sich verhältnismäßig schnell - mit Java Syntax - ein Erfolg erzielen. Der ist aber zwingend notwendig um überhaupt ein Interesse an Programmierung zu erzeugen. (Kleine) Erfolge, Motivation und Lernleistung stehen hier im direkten Zusammenhang.

Dabei kann man eben gerade im Anfang wesentlich Teile von Java aussen vor lassen. Unter anderem auch die Objektorientierung und sich darauf konzentrieren wie denn eigentlich ein Programm abläuft.
Im weiteren Verlauf führt man dann mehr Grundlagen auch von Java ein und dann letztendlich auch eine Entwicklungsumgebung.

Bis dahin kann man aber - gerade weil vieles nicht automatisiert ist - auf besondere Punkte achten die bei einer Java Syntax wichtig sind. Sei es Formatierung, Import ...

Gebe ich den Leuten von Anfang an eine richtige Entwicklungsumgebung, dann läuft dort zu viel automatisch/unterstützt, so dass ein wichtiger Teil der Programmierung: Lesbarkeit von Code und (Syntax-) Fehlerfindung im Code zu schnell vernachlässigt wird.

Wer Java Programmieren kann, der kann im übrigen auch in BlueJ schönen Code schreiben, ist um ein vielfaches aufwendiger als mit einer Entwicklungsumgebung, bringt aber auch Chancen mit sich.

Wer nicht Programmieren kann - in keiner Sprache - dem reichen die begrenzten Möglichkeiten von BlueJ vollkommen und einen ersten Einblick in die Programmierung zu bekommen.


----------



## timbeau (4. Apr 2012)

bone2 hat gesagt.:


> 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.




Ich finde es grausam, wenn man mit Leuten zusammen arbeitet bzw Code refactorn muss, der ohne jegliche Beachtung von Konzepten/Konventionen und Softwareentwicklungsparadigmen geschrieben wurde. 

Damit will ich nicht andeuten, dass es bei dir so ist aber Theorie gehört eben dazu.


----------



## Landei (4. Apr 2012)

Wer interessiert an der Programmierung ist (egal ob professionell oder in der Schule), für den ist eine "richtige" IDE keine große Hürde. Im Gegenteil, sobald man auch nur ein klein wenig über "Hello World" hinaus ist, lernt man Features wie Autocomplete, Debugger u.s.w. schätzen.

Wer _kein_ Interesse an Programmierung hat, bei dem ist Hopfen und Malz verloren, da helfen weder BlueJ noch güldene Löffel mit vorgekautem Programmierbrei.

BlueJ ist wie eines der Japanisch-Lehrbücher, die mit lateinischer Umschrift arbeiten. Es sind nur ein paar Stunden Arbeit, das gängige Silbenalphabet (Hiragana) zu lernen, aber der Schüler soll davor erst einmal "geschützt" werden - mit dem Ergebnis, dass sich die Studenten auch nach Jahren noch mit der Schrift schwer tun und nützliches Originalmaterial nicht verwenden können, sondern lange auf die Umschrift-Krücke angewiesen sind. 

Ich denke, es ist ein konzeptioneller Fehler, Objektorientierung einzuführen, ohne die Grundlagen der imperativen Programmierung kennengelernt zu haben. Warum soll man nicht erst einmal Java als "Taschenrechner" verwenden - viele Tutorials anderer Sprachen beginnen genau damit. Nur in Java soll sofort die hehre Objektorientierung gelehrt werden - obwohl Java selbst es mit der reinen Lehre nicht so genau nimmt. Genau diese falschen Voraussetzungen führen zu den bekannten Problemen mit BlueJ: Oft sind es Beispiele für "leaking abstraction", wo die Fassade nicht ganz die Schweinereien dahinter abdecken kann. Dabei wäre es für den Schüler wichtig, einmal bewusst den Schritt von imperativ zu objekt-orientiert getan zu haben, und dadurch klarer die Ideen hinter dem OO-Paradigma erkennen zu können. Was kann mehr von OO überzeugen, als wenn man die statische Methode mit 4 Argumenten von letzter Woche jetzt in einer OO-Architektur als Instanz-Methode mit nur einem Argument schreiben kann, oder wenn man sich bei einer Distanz-Methode nicht mehr fragen muss, welche Reihenfolge jetzt die Koordinaten hatten, weil man die [c]Point[/c]-Klasse verwendet. Das ist eine Chance zum besserem Verständnis, nämlich *warum* Konzepte wie Kapselung, Entkopplung, Interfaces u.s.w. wichtig sind. Und diese Chance verbaut man sich BlueJ - aus Bequemlichkeit (um nicht zu sagen Faulheit) und falsch verstandener Rücksichtnahme,


----------



## bone2 (4. Apr 2012)

timbeau hat gesagt.:


> Damit will ich nicht andeuten, dass es bei dir so ist aber Theorie gehört eben dazu.


das theorie dazugehört würde ich niemals anzweifeln, aber ich hab lieber erst nen happen praxis vorher, bzw mein gehirn hat es so rum lieber.

Als ich in der Firma mit java und damit auch oop angefangen hab (war vorher nur pascal, html und so). kam halt die aufgabe, bau mal xyz. dann haben wir rübergeschaut und das was nich so in den tutorials rüberkam direkt korrigiert. (aka klassen groß, methoden klein, camelCase, einrücken usw). dann neue aufgabe ne nummer schwerer und andere wichtige theoretische dinge in dem zusammenhang durchgesprochen.




Kevin94 hat gesagt.:


> [EDIT]@bone2: Ich finde es grausam wie du BlueJ pauschalisierst. Man kann damit auch wunderbar Java sich selbst mit Hilfe eines guten Buches beibringen.[/EDIT]


aber für "hello world" und taschenrechner tut es auch notepad(++) 

hatte blueJ halt in der Uni und fand es, vorsichtig ausgedrückt, nicht gut.


----------



## Tecwan (4. Apr 2012)

Absolute Anfänger tun sich durchaus schwer bereits damit, "einfache" Syntax als gegeben
hinnehmen zu müssen:
a = 5    Also a erhält den Wert 5...
b = 6    ...und b wird 6...
a = b    ...und das gibt einen Fehler, weil 5 nicht 6 ist!
ist für Adigitalisten bereits das erste Problem.

Was will denn ein Lehrer, der vor einer Schülerschar mit den unterschiedlichsten Voraussetzungen
steht, in den 2 Schulstunden machen?
Seinen Cracks etwas beibringen, was sie binnen kürzester Zeit allein schon aufgrund der
investierbaren Zeit besser als ihr Lehrer hinbekommen werden?
Oder auch den Schülern, die ansonsten schon in der sechsten Klasse zwischen Dreisatz und
Dreieckssatz für sich entschieden haben, dass Mathematik nutzlos oder unverständlich ist?
Schüler der Kategorie "Mathe zwischen 4 und 5" kann man sehr wohl über die Informatik wieder
"herbeiholen", aber das funktioniert garantiert nicht über frontale Theorie.
Selber machen können - Wesentliches machen können - ohne dabei Balast (expliziten Code) aktiv
ignorieren zu müssen, ist anfangs ein Vorteil.
Und darum geht es: Konzepte - ohne vollständigen Code schreiben zu müssen - selber erfahren
zu können.

Natürlich ist eine solche didaktisch motivierte Entwicklungsumbgebung keine "produktive
Entwicklungsumgebung".
Ein Konzept anzureißen heißt nicht, eine konkrete Sprache - oder wie früher häufig: einen
proprietären Dialekt davon - lernen zu müssen.
Mit dem Konzept später zu arbeiten, allerdings schon, keine Frage.
Das Problem besteht für mich eher darin, den richtigen Zeitpunkt für den Umstieg zu erwischen,
und den kann man getrost ziemlich früh ansetzen (und manchem Didakten als verpasst unterstellen).

Aber davor wird die Aufgabe, die Schüler überhaupt zur eigenen Auseinandersetzung mit
dem Thema zu bewegen, von der abstrakteren Möglichkeit und dem eigenen Experiment
- und ohne komplizierte Syntax lesen zu müssen! - besser bewerkstelligt.

Ich sehe BlueJ als eine Möglichkeit an, die Einstiegsschwelle zu senken.
Wenn man anschließend beginnt, die Konzepte zu hinterfragen oder in ihrer Bedeutung einordnen
zu wollen, ist zweifelsohne tiefere Kenntnis nötig. Aber das ist bereits nicht mehr Einstieg.
Insofern ist die Diskussion hier ein Stück weit überflüssig.


----------



## Fab1 (4. Apr 2012)

ich bin auch der Meinung, dass man BlueJ nicht von vornherein als schlecht bezeichnen sollte. Wie bereits beschrieben enthält die IDE ein paar nützliche Funktionen um Sachen besser darzustellen wie zum Beispiel Rekursion.
Hatte mir mal eine Vorlesung darüber (im Internet) angehört und die Erklärung mithilfe von BlueJ war wirklich gut und verständlich.

Das heißt nun aber nicht, dass ich deshalb BlueJ verwenden werden, oder je ausgiebig verwendet habe. Für eine mächtige IDE wie eclipse oder Netbeans gibt es nun mal mehr Überstützung im professionellen Bereich. Daran wird sich imho in nächster Zeit auch nichts ändern.


----------



## Tomate_Salat (4. Apr 2012)

Fab1 hat gesagt.:


> ich bin auch der Meinung, dass man BlueJ nicht von vornherein als schlecht bezeichnen sollte.



Meine Meinung basiert auf den Fragen von Mitgliedern hier im Forum. Imho tut BlueJ Leuten keinen Gefallen die ernsthaftes Interesse an Java haben. BlueJ verheimlicht Dinge und man greift noch gerne zu Bibliotheken und Erweiterungen wie SuM und Greenfoot - Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.

Wie irgendjemand in seinem langen Post schon gut gesagt hat: Es braucht einfach Zeit eine Sprache zu lernen. Die Schüler bei Laune zu halten und deswegen unnötige Inhalte zu unterrichten ist imho der falsche weg. Dann sollen die Lehrer doch bitte zu einer anderen Sprache greifen, die keine Main besitzen (PHP,C,Python,JavaScript,[ts=Am besten WoW-Addons schreiben]Lua[/ts],...). Dann können die Schüler, die Interesse am Programmieren (vollkommen egal welche Sprache) haben auch auf den Kenntnissen aufbauen. 

Wie ich schonmal in einem anderen Thread dazu geschrieben habe: Wenn man einen Führerschein macht, fährt man auch nicht erst im Bobycar die Straßen ab.



langhaar! hat gesagt.:


> In der Uni fängt dann ein Mathestudium im Stoff wieder ganz von vorne an.


Cool, wende ich das Beispiel mal auf meine Erfahrungen bzgl. BlueJ-Anwender und deren erste Probleme an: Du kommst aus der Uni raus und rechnest trotzdem [c]n/0[/c] aus, weil es am Anfang zu kompliziert war, dir zu erklären, wieso man nicht durch [c]0[/c] teilen darf.


----------



## vanny (4. Apr 2012)

Wenn BlueJ für diejenigen, die die Javabasics kennen/können, nichts ist und für diejenigen, die wirklich Java lernen wollen, auch nichts ist, dann gibts da meiner Meinung nach nicht viel Spielraum für einen sinnvollen Einsatz, es sei denn einige hier gepostete schlechte Eigenschaften von Schülern und Lehrern treffen tatsächlich zu

Gruß Vanny

[EDIT]Ich beziehe mich hier nur auf den Aspekt "Java lernen" für mehr Meinung reicht mein Horizont leider nicht[/EDIT]


----------



## timbeau (4. Apr 2012)

Wer behauptet, dass in der Uni der Stoff wieder von vorne anfängt hat nie Mathe studiert. Ist einfach Quatsch. 

In der Schule gehts auch um ganz andere Sachen als wirkliche Fakten zu vermitteln. Ganz nach dem Spruch_Wer einem Manne einen Fisch schenkt, gibt ihm für einen Tag zu essen. Wer ihn das Fischen lehrt, gibt ihm ein Leben lang zu essen._, muss es auch in der Schule laufen. In der Uni ist das schon etwas anderes aber immernoch ein großer Teil. Wenn jemand sich später beschwert, dass er kein Java lernen kann, weil er BLueJ in der Schule benutzt, dann ist das Problem nicht BlueJ sondern der Schüler.


----------



## Landei (4. Apr 2012)

timbeau hat gesagt.:


> _Wer einem Manne einen Fisch schenkt, gibt ihm für einen Tag zu essen. Wer ihn das Fischen lehrt, gibt ihm ein Leben lang zu essen._



Der Spruch geht aber anders: _Gib jemandem ein Programm, dann ist er einen Tag frustriert. Lehre ihn Programmieren, dann ist er es ein Leben lang..._


----------



## gassssst (4. Apr 2012)

Wunderbar wieder ein BlueJ Thread 



Gossi hat gesagt.:


> Er weiß nicht was nen boolean ist, ein Array, Methoden Rückgabetypen etc., weil ihm das alles von BlueJ abgenommen wurde


Nur mal interessehalber, wo nimmt BlueJ einem irgendwas mit boolean, arrays oder methoden ab?
Du hast dasselbe schonmal in einem früheren BlueJ Thread behauptet, aber hast mir auch dort nicht auf die Frage antworten können.



Landei hat gesagt.:


> Ich denke, es ist ein konzeptioneller Fehler, Objektorientierung einzuführen, ohne die Grundlagen der imperativen Programmierung kennengelernt zu haben. Warum soll man nicht erst einmal Java als "Taschenrechner" verwenden


Nun eine interactive shell wie python hat java von haus aus ja leider nicht, aber - und das ist in vorherigen Beiträgen wohl nicht rübergekommen - kann ich BlueJ auch für die Lehre von imperativer Programmierung, so gut wie es mit java halt geht benutzen. Z.B. da ich meine Funktionen einfach per mausklick aufrufen/parametisieren kann.  



Tomate_Salat hat gesagt.:


> Meine Meinung basiert auf den Fragen von Mitgliedern hier im Forum. Imho tut BlueJ Leuten keinen Gefallen die ernsthaftes Interesse an Java haben. BlueJ verheimlicht Dinge und man greift noch gerne zu Bibliotheken und Erweiterungen wie SuM und Greenfoot - Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.


Nix für ungut, ich glaube dein (und zugegebenermaßen in gewissem maß ebenso mein) Problem liegt eher bei blöden Fragen von Anfängern generell. Ich kann nicht aufzählen, wie oft ich augenrollend den Browser geschlossen hab, weil wieder irgendein **** gefragt hat warum eclipse seinen code "rot unterstreicht". Das ist, wie du, wenn du nicht voreingenommen wärst, feststellen könntest, kein IDE Problem sondern ein User-Problem


----------



## Tecwan (5. Apr 2012)

Tomate_Salat hat gesagt.:


> Es wird also Ausbildungszeit damit verschwendet Schülern Bibliotheken und eine "Pseudeosprache" nahezubringen.



Wenn die Aufgabe darin besteht, Schülern tatsächlich eine Sprache beizubringen: ja.



Tomate_Salat hat gesagt.:


> Die Schüler bei Laune zu halten und deswegen unnötige Inhalte zu unterrichten


Da liegt für mich der Knackpunkt: BlueJ ist Animationsmaterial, und der Nutzen liegt im Aufbau der
Motivation. Ziel ist nicht das konkrete Erlernen einer Sprache, sondern eher sowas wie ein 
symbolischer Umgang mit Konstrukten. Aus diesem Blickwinkel ist es viel weniger eine
Zeitverschwendung.

Um ein ähnliches Bild wie das des Bobbycars zu bemühen: Wie viele Schüler haben sich zB. durch
die programmierbaren Lego-Roboter dazu animieren lassen, sich mit dem "Programmieren" zu
beschäftigen. Da werden auch symbolische Aktionen grafisch zu Flussdiagrammen zusammengesetzt,
ohne dass dafür eine Sprache bemüht werden muss. Klar, die Bedienung erfordert auch eine gewisse
Einarbeitungszeit. Aber ist das Zeitverschwendung?
Außerdem fangen einige der Kids damit an, Lego-Roboter zu bauen, noch bevor in der Schule
Prozentrechnung oder Dreisatz auf dem Lehrplan stehen.
Entscheidend für eine Karriere als späterer Programmierer (ob Hobby oder zum Broterwerb spielt
dafür keine Rolle) ist da vielmehr der Spaß und die Vermittlung des Gefühls, eigene Ideen umsetzen
zu können. Der Nutzen liegt auf einer völlig anderen Ebene, es geht nicht um Fachwissen, sondern
um das Vermitteln eines Selbstvertrauens in die eigenen Fähigkeiten, wenn man sich auf die
Vorgaben einlässt - und da können die Hürden ruhig sehr niedrig liegen. Die emotionale oder
spielerische Komponente hat einen viel größeren Einfluss auf die Lernwilligkeit als beispielsweise
der Anreiz, den die intellektuelle Herausforderung bietet.
*oder lest ihr hier nicht lieber als trockenes Dozieren eine Diskussion, in der die Fetzen fliegen?*
Das eine ist Spiel, das andere Arbeit, und optimal läuft es, wenn schließlich die Arbeit ähnlich
anregend empfunden werden kann wie das Spiel.

Nur, und da stimme ich zu, darf man nicht beim mühelosen Spiel stehen bleiben, sondern muss
irgendwann die Schwelle zur Ernsthaftigkeit des "ohne Fleiß kein Preis" überschreiten.
Das ist aber nicht Aufgabe von BlueJ, und man kann auch den Entwicklern der IDE nicht
vorwerfen, dass sie versuchen, die Grenze des "Jetzt muss man aber echtes Java lernen" so
weit wie möglich herauszuschieben.
Da sind es tatsächlich eher die Lehrer, die den Zeitpunkt verpassen, an dem das "echte Zeug"
näher gebracht werden muss.

Es ist ein Bischen wie Führerschein am Simulator zu machen; vieles ist machbar, manches
aber eben auch nicht.


----------



## U2nt (5. Apr 2012)

Um mich mal an der Diskussion zu beteiligen (auch wenn ich nicht jeden einzelnen Post durchgelesen habe):
Vorweg muss ich erstmal sagen das ich BlueJ nochnicht verwendet habe und nur aus den Infos, die ich durch die Posts hier gelesen habe, "beurteile".

Als ich selbstständig angefangen habe Java zu lernen war ich schon ein wenig "verwirrt" von der main-Methode. Aber ich hatte den Ehrgeiz, es weiter zu lernen. Und genau da liegt der Punkt:

Wenn man den Ehrgeiz hat und die Sprache lernen _will_, ist BlueJ imho nicht der richtige Weg, wie hier schon beschrieben wurde verheimlicht es einfach zu viel. Wenn man sich dafür interessiert kann man sich in alles reinlesen, so komplex es seien mag.
Wenn man jedoch dazu "aufgezwungen" wurde und man nicht den Ehrgeiz mitbringt und einfach nur die Unterrichtszeit absitzt und wenigstens noch eine akzeptable Benotung haben will, dann sollte der Lehrer zu BlueJ greifen - da eben die die's nicht interessiert auch nichts weiter nach der Schule mit machen werden. (Wurde glaube ich schonmal in etwa so hier erwähnt).

Die Frage vom TO bezog sich auf Einsteiger, da muss man wieder unterteilen:

Einsteiger, die Selbstständig die Sprache erlernen wollen
Einsteiger, die die Sprache erlernen müssen
Einsteiger, die die Sprache erlernen wollen und müssen

Fazit: Wenn man dazu ausgerichtet ist, bspw. in der Uni, Leute darauf zu trainieren berufliche Entwickler zu werden, ist BlueJ imho nichts.


----------



## gasssssst (5. Apr 2012)

Das hab ich hier schon mehrmals gelesen, darum mal die Frage (an alle):


U2nt hat gesagt.:


> wie hier schon beschrieben wurde verheimlicht es einfach zu viel.


Von der Tatsache, dass eine Konsolen-Java-Anwendung arbiträrerweise mit einer public-static-void-main(String...)-Methode gestartet wird, _was denn nun_ ?


----------



## irgendjemand (5. Apr 2012)

also die vergleiche mit dem bobbycar und dem mathe-studium nach dessen beendigung man immer noch versucht n/0 zu rechnen fand ich schon sehr treffend

ums vielleicht noch mal selbst aufzugreifen : kennst du IRGENDEINEN fahrlehrer der dich sofort nach der anmeldung in ein auto setzt OHNE dir vorher auch nur IRGENDETWAS theoretisch erklärt zu haben ? ich glaube NICHT ... und ich denke auch nicht das sich ein solcher fahrlehrer auch lange wird halten können ...

zum mathe-studium : hmm ... gut .. ich habs jetzt nicht studiert ... aber war in mathe dann doch recht gut *4 jahre in folge gesamtschnitt 1,00 ... und dann prüfung mit 2 verhaun weil ich ne aufgabe überlesen habe *shame** ...
ob man jetzt im mathe-studium so richtig von 0 anfängt kann ich nicht glauben ... denn auch wenn man wie gesagt nur "grundrechenarten" lernen würde ... sind das in 10 jahren dann immerhin doch noch ne ganze menge ... selbst wenn man den ganzen geometrie-kram mal als einen kompletten teil betrachtet ... bleiben neben den 4 grundrechenarten immer noch potenzen / wurzeln , klammern / binomische formeln , brüche und noch einiges mehr ... wenn man sich dann noch 3 jahre durchs abi quält kommt dann noch mal die selbe menge neuer stoff in grade mal nem drittel der zeit auf einen zu ...

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 ?

sry ... DAS weicht dann doch sehr stark von meinem eigentlichen thema ab und lässt sich ungefähr mit dem unterschied von "schul-physik" bis zur "hochwissenschaftlichen theoretischen quanten-physik" vergleichen ... und schlägt hier voll raus ...


dann kam auch die unterscheidung zwischen verschiedenen typen von "einsteigern"

ich selbst bin autodidakt ... habe mir also alles was ich im groß-bereich IT weis selbst *großteil mit hilfe des netzes selbst* beigebracht ... weil ich den willen dazu hatte und auch immer noch den willen habe mich auf diesem gebiet sowohl hobby- als auch berufs-mäßig immer weiter zu entwickeln ...

dann gibt es noch die jenigen die es müssen , aber nicht wollen ...
bei dieser gruppe frage ich mich dann immer ernsthaft : WARUM meldet sich sojemand auch noch freiwillig zum info-kurs ?
wer dann nichts mitbekommt und daraus resultierend schlechte noten kassiert ... der ist SELBST SCHULD !

*eine sehr kleine ausnahme würde ich noch allerhöchstens für die machen welche auf grund von über-belegung anderer kurse in info MÜSSEN ... obwohl diese alles versucht haben dort eben nicht reinzukommen eben weil sie davon 0 plan haben und keine schlechten noten bekommen wollen ... aber das dürfte wohl von 1000 kursen 1 betreffen*

die letzte genannte kategorie ergibt für mich nur sehr wenig sinn ... denn entweder will ich es von vornherein und melde mich eben desshalb freiwillig zum info-kurs ... oder lass es komplett ...
für mich würde also dieser fall "ich will und ich muss auch" *oder wie auch immer du es noch ausführlicher beschreiben willst* keinen sinnhaften grund haben und daher nicht eintreten ...




> Das hab ich hier schon mehrmals gelesen, darum mal die Frage (an alle):
> 
> 
> 
> ...


und damit willst du jetzt genau WAS ausdrücken und WAS genau fragen ?
nach dem ich mir erlich gesagt erstmal das wort "arbiträr" google musste *wikipedia übersetzt "Arbitrarität" mit "willkürlichkeit"* verstehe ich deinen post immer noch nicht

java wird nicht "willkürlich an [c]public static void main(String[])[/c] gestartet" ... sondern das ist so festgelegt in der sprach-definition das genau diese signatur *vorrausgesetzt sie befindet sich in einer [c]public class[/c]* der einsprungspunkt für die VM ist ... gleich ob es davon mehrere in einem projekt geben sollte und es somit möglich ist "verschiedene" einstiegspunkte zu haben

oder was willst du jetzt wissen ?


auch der angesprochene "verheimlichung" muss ich voll und ganz zustimmen ... denn java lernt man nicht in dem man wichtige grundlagen unter den tisch fallen lässt

*um es hier noch einmal deutlich zu machen : BlueJ ist nach *eigenen* angaben dazu gedacht es *java* anfängern zu erleichter in die sprache einzusteigen ... und zwar dierekt mit OOP ohne sich vorher mit den imperativen basics zu befassen ...
wie du vom deutschen wiki-artikel , welcher deinem zitat zu folge besagt das es angeblich nur das ziel wäre OOP im allgemeinen zu vermitteln , darauf kommst das man es für alle sprachen pauschalisieren könnte weis ich nicht ... *derjenige sollte es selbst wissen wer angesprochen ist*

und wie ich bereits sagte : wer java wirklich lernen WILL ... der wird sich sicher auch mit der theorie und der erklärung genau dieser einen "standard" zeile widmen ... und diese nicht nur als "trokene beilage" beachten ...
auch finde ich es persönlich nach wie vor definitiv FALSCH erst etwas praktisch machen zu wollen und dann nebenbei oder sogar erst danach darüber zu sprechen ...

um mal den genannten beispielen zu folgen : das wirst du WEDER in der schule , NOCH im studium , NOCH in einer aus/weiterbildung finden ... du wirst grundsätzlich IMMER erst mit der theorie konfrontiert ...
falls das bei dir nicht so war tust sowohl du als auch das umfeld welches dir das angetan hat echt leid ...


----------



## Kevin94 (5. Apr 2012)

ich weiß ja nicht in welchem Bundesland du zur Schule gegangen bist irgendjemand, aber bei mir (Bayern) ist Info-Unterricht ein Pflichtfach im Gymnasium. In der 6. und 7. für alle(Word & Co. halt) und wenn man den Naturwissenschaftlichen Zweig gewählt hat auch in der 9. und 10. . Insofern macht die Unterscheidung von U2nt durchaus Sinn, denn viele wählen den Zweig nur wegen Physik oder Chemie oder auch mangelnden Alternativen.
Auserdem führt dieses relativ neue Pflichtfach zu einem gewaltigen Lehrermangel in Bayern. In der 6. und 7. darf eigentlich jeder Lehrer Info unterrichten der auch nur halbwegs erklären kann was Copy&Paste ist und vielleicht auch noch weiß wie man in Word bunte Kreise zeichnen kann.
Und für den richtigen Info Unterricht haben wir an meiner Schule erst seit diesem Jahr jemanden der Info auf Lehramt studiert hat, obwohl es das Fach schon mindestens seit Einfürhrung des G8 gibt(also seit 9 Jahren). Über die unfähigkeit des Vorgängers möchte ich garnicht reden, der hat zwar auch Info studiert, aber in einer Zeit wo OOP noch ein Schimpfwort war.

Im allgemeinen finde ich die Diskussion auserdem sinnlos. Kann mir jemand erklären, wie eine IDE einem irgendwelche Aspekte einer Sprache verheimlichen oder vorenthaten kann?
Wie soll das gehen? Lässt sie Quellcode unsichtbar werden? Weigert sie sich eine richtige Main-Methode zu compilieren?
Nicht dass ich wüsste.
Insofern ist BlueJ zum erlernen von Java *genauso gut* geeignet wie jede anderer IDE, wenn nicht sogar besser, da sie den Anfänger nicht mit unnötigen Featurs erschlägt.

Aber wie schonmal geschrieben *hilft* sie einem *unfähigen* Lehrer (oder faulen Schüler) eindeutig dabei, wichtige theoretische Grundlagen unter den Tisch fallen zu lassen. Das Problem von BlueJ ist also keineswegs ein falsches Konzept oder eine fehlerhafte Umsetzung, sondern der falsche Einsatz durch die Lehrer (bzw. dass die Lehrer es selbst nicht können). Kann mir irgendjemand einen Thread zeigen indem jemand, der Mit BlueJ programmiert, ohne diese IDE von einem Lehrer aufgezwungen bekommen zu haben oder halbwegs daran intressiert ist Java zu lernen, eine dähmliche Anfängerfrage gestellt hat, die er sich nach 10 min suchen in der Insel auch selber hätte beantworten können?

Was SuM und GreenFoot oder auch JavaKarol oder Kara und wie sie alle heißen angeht, stimme ich mit euch über ein, dass diese Frameworks reine Zeitverschwendung sind und einen nicht ans richtige Programmieren heranführen, sondern nur eine nutztlose "Pseudosprache" beibringen.


----------



## irgendjemand (5. Apr 2012)

ja .. ich weis das das schulsystem bei euch da drüben im westen und auch in berlin/brandenburg *zumindest aus meiner sicht* ziemlich chaotisch ist ...
ich selbst komme aus sachsen-anhalt ... und bei uns gibt es nur info-unterricht wenn man sich diesen auch selbst ausgesucht hat ... und das auch erst im gymnasium ab 9ter klasse ...

das man info irgendwie zu naturwissenschaften packen kann ... ja irgendwo schon ... aber das es desshalb gleich zum pflichtfach wird wenn man diesen zweig wählt ... das halte ich dann für einen großen fehler der system-verwaltung die sich diesen mist ausgedacht haben ...
denn eigentlich ist es allgemein bekannt das die unterste stufe der "informatik" erst über der höchsten des "normalen alltäglichen gebrauchst" kommt ... und damit für über die hälfte sowas also in unbezingbaren hürden endet ...
derjenige der sich diesen mist ausgedacht hat ... und auch die die das dann noch umsetzen ... gehen doch wissentlich das risiko ein eigentlich guten schülern welche für naturwissenschaften wie nun mal chemie und physik eine grüne arder haben durch das pflichtfach info in dem sie z.b. überhaupt nicht durchblicken den gesamten durchschnitt damit total zu versauen ...

aber naja ... genug über west-deutsches schulsystem aufgeregt ...

back to topic



> Im allgemeinen finde ich die Diskussion auserdem sinnlos. Kann mir jemand erklären, wie eine IDE einem irgendwelche Aspekte einer Sprache verheimlichen oder vorenthaten kann?
> Wie soll das gehen? Lässt sie Quellcode unsichtbar werden? Weigert sie sich eine richtige Main-Methode zu compilieren?


keiner hat hier je behauptet das BlueJ "public static void main(String[])" nicht compilen würde ... sondern der fakt das dies von vornherein einfach komplett unter den tisch fallen gelassen wird ... das ein frischer anfänger genau diese erfahrung eben NICHT macht das jedes java programm IMMER an genau diesem punkt anfängt ... wie man es auch in allen anderen mehr oder weniger guten anfänger- und fachbüchern meist in den erste 3 bis 4 kapiteln noch vor dem konkreten beispiel "Hello World!" lesen kann
um mich also auf das quote zu beziehen : JA ... BlueJ lässt code verschwinden / unsichtbar werden ... *oder besser : fordert den neuling NICHT damit diesen zu schreiben*
und wegen solchen dingen ist BlueJ für mich komplett am ziel vorbei ... denn guck dir doch mal n neuling an der dann da z.b. mit der Insel sitzt und sich fragt : und was wollen die jetzt mit main() ? ... solche und andere fragen dieses kalibers sind hier schon mehr als ein mal gekommen ...

persönlich bin ich eh der meinung : wenn jemand programmieren lernt ... dann soll er das gerade bei java erstmal mit nem text-editor und ner console machen ... und KEINE IDE nutzen ... *sonst kommen wieder so wunderschöne topics ala : ich programmiere seit fast nem jahr mit java und eclipse macht hier nur mist ... *anderer user* : startet doch mal über console ... *TO* : bitte was ist ne console ... das ende vom lied kennt ihr*

und wenn schon ne IDE ... dann bitte nicht so ein graphisch aufwändiges point'n'click adventure durch den JavaInselJungel ... sondern mit nacktem code und für anfänger auch erstmal mit deaktivierten features wie auto-complete oder sowas ...


die diskusion um BlueJ ist schon durchaus berechtigt ... denn es stellt sich wirklich die frage : ist es dazu geeignet einem kompletten neuling java von anfang an richtig bei zu bringen ? ... und hier ist die antwort ganz klar : NEIN ... denn elementare sprachbestandteile und grundlagen werden schlicht ignoriert und bleiben dem anfänger verborgen ...


----------

