Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[geteilt] C-Diskussion
Der Doktor Offline
%0|%0

Beiträge: 7.869
Registriert seit: Dec 2008
Beitrag #31
RE: Der Unnötige Informationen Thread
(15.12.2012 15:16)friedrichheinze schrieb:  
(15.12.2012 13:26)Marley schrieb:  Ich kenne hier niemanden der ,wenn man es ihm gut beigebracht (oder das Buch gut ist), es nicht verstanden hat.

Halt bis zur Klausur. OOP und speziell Java wirft so viele Fragen auf, das kann man nicht einfach mal schnell erklären. Warum sollte ich nicht alles static machen? Warum sollte ich nicht alles public machen? Warum brauche ich Inheritance wenn ich auch einfach ein Feld machen kann mit der Superklasse und darauf die Methoden aufrufen? Warum geht Inheritance nur mit einer Klasse? Wozu brauche ich Konstruktoren, kann ich nicht einfach eine init()-Methode machen? Was sollte ich dann in den Konstruktor packen und was in Methoden? Ganz abgesehen davon wenn man mal generics braucht, die sind konstruktionsbedingt in Java irre.
Java ist einfach komplizierter zu lernen als C weil es viel mehr Zeug hat. Und wenn man schnelle, motivierende Ergebnisse haben will ist es auch nix, dann sollte man weder C noch Java, sondern lieber Ruby lernen. Java ist überhaupt keine Einsteigersprache, sondern eine für grosse Industrieprojekte die zur Hälfte nach Indien outgesourcet werden. Warum der Kram an Schulen gelehrt wird ist ziemlich unverständlich, aber an schulischem Informatikunterricht ist ja vieles ziemlich unverständlich...

Die Klausuren fallen nicht schlecht aus...
Warum nicht alles static machen? Z.B wenn man ein grafisches Spiel machen will, ist ein Spieler ein Objekt, dass könnte man mit Spieler.gehe() animieren bzw. dessen position verändern.
Warum nicht alles public? Nehmen wir an du programmierst eine mathesuit .... willst du dann das andere Methoden oder gar andere programme die Daten manipulieren körnnen? Nein sicherlich nicht....
Die Vererbung ist eine recht coole Sache und die damit zusammenhänge Polymorphie, es hilft den Code weiterzuverwenden und man kann einen Code auf Referenzen aufbauen, somit kann man den code in vielen Projekten einsetzen.
Vererbung ist eine Spezialisierung! Hast du eine Klasse Rechner und eine Klasse Netzwerkrechner ,die von Rechner erbt, hat sie vielleicht ganz spezielle Methoden und übernimmt die Methoden der Superklasse und natürlich die Felder. Das erspart eine ganze Menge Code, und ist nützlich. Ich wende es z.B bei meinem Turing Maschinen Simulator an.
Die Konstruktoren sind zum initialisieren eines Objekts beim Aufruf. Z.b bei einer Patientenqueue . Wenn du ein neues Patientenobjekt machst kannst du dann z.b mit den Konstruktor es direkt mit einen Namen , einer Steuernummer und so weiter initialisieren und schon Methoden aufrufen. GANZ EINFACH.
Genercis sind kein großes Ding.
Und wenn man Java benutzt kriegt man sofort Ergebnisse. Wir hatten z.B ein kleines Spiel programmiert , dass hatte nur ein paar Schulstunden gedauert. Damals noch mit Greenfoot. Mit Krabben und Fischen... Manche gingen dann weiter und haben sogar ein wirklich gutes Star Wars spiel programmiert mit ein paar Tausend Zeilen Code. Naja das wäre mir zu dumm gewesen.
Java ist extrem Einsteigerfreundlich

Es ist besser nicht zu moderieren als falsch zu moderieren
15.12.2012 16:19
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PacMani
Unregistered

 
Beitrag #32
RE: Der Unnötige Informationen Thread
(15.12.2012 15:16)friedrichheinze schrieb:  
(15.12.2012 13:26)Marley schrieb:  Ich kenne hier niemanden der ,wenn man es ihm gut beigebracht (oder das Buch gut ist), es nicht verstanden hat.

Halt bis zur Klausur. OOP und speziell Java wirft so viele Fragen auf, das kann man nicht einfach mal schnell erklären. Warum sollte ich nicht alles static machen? Warum sollte ich nicht alles public machen? Warum brauche ich Inheritance wenn ich auch einfach ein Feld machen kann mit der Superklasse und darauf die Methoden aufrufen? Warum geht Inheritance nur mit einer Klasse? Wozu brauche ich Konstruktoren, kann ich nicht einfach eine init()-Methode machen? Was sollte ich dann in den Konstruktor packen und was in Methoden? Ganz abgesehen davon wenn man mal generics braucht, die sind konstruktionsbedingt in Java irre.
Java ist einfach komplizierter zu lernen als C weil es viel mehr Zeug hat. Und wenn man schnelle, motivierende Ergebnisse haben will ist es auch nix, dann sollte man weder C noch Java, sondern lieber Ruby lernen. Java ist überhaupt keine Einsteigersprache, sondern eine für grosse Industrieprojekte die zur Hälfte nach Indien outgesourcet werden. Warum der Kram an Schulen gelehrt wird ist ziemlich unverständlich, aber an schulischem Informatikunterricht ist ja vieles ziemlich unverständlich...

Soll ich dir die Fragen mal beantworten? Oder war das einfach nur mal schnell ein Beispiel was Neulinge für Fragen haben könnten?
15.12.2012 16:49
Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.838
Registriert seit: Jul 2008
Beitrag #33
RE: Der Unnötige Informationen Thread
(15.12.2012 16:19)Marley schrieb:  Die Klausuren fallen nicht schlecht aus...
Meinte bis nach der Klausur. Man kriegt so viel beigebracht dass man die Klausur besteht.
(15.12.2012 16:19)Marley schrieb:  Warum nicht alles static machen? Z.B wenn man ein grafisches Spiel machen will, ist ein Spieler ein Objekt, dass könnte man mit Spieler.gehe() animieren bzw. dessen position verändern.
Das erklärt genau garnix wenn ich nur einen Spieler habe
(15.12.2012 16:19)Marley schrieb:  Warum nicht alles public? Nehmen wir an du programmierst eine mathesuit .... willst du dann das andere Methoden oder gar andere programme die Daten manipulieren körnnen? Nein sicherlich nicht....
Information hiding ist definitiv keine Möglichkeit um Daten zu schützen
(15.12.2012 16:19)Marley schrieb:  Die Vererbung ist eine recht coole Sache und die damit zusammenhänge Polymorphie
Vererbung ist nicht Polymorphie, das sind zwei verschiedene Konzepte, du kannst Polymorphie ohne Vererbung haben
(15.12.2012 16:19)Marley schrieb:  , es hilft den Code weiterzuverwenden
Kann man auch mit Instanzen
(15.12.2012 16:19)Marley schrieb:  und man kann einen Code auf Referenzen aufbauen
Was?
(15.12.2012 16:19)Marley schrieb:  somit kann man den code in vielen Projekten einsetzen.
Kann man auch mit Instanzen
(15.12.2012 16:19)Marley schrieb:  Vererbung ist eine Spezialisierung! Hast du eine Klasse Rechner und eine Klasse Netzwerkrechner ,die von Rechner erbt, hat sie vielleicht ganz spezielle Methoden und übernimmt die Methoden der Superklasse und natürlich die Felder. Das erspart eine ganze Menge Code, und ist nützlich.
Wie gesagt, du kannst auch einfach 'ne Instanz machen und die Methoden eines Objekts der Superklasse aufrufen.
(15.12.2012 16:19)Marley schrieb:  Die Konstruktoren sind zum initialisieren eines Objekts beim Aufruf. Z.b bei einer Patientenqueue . Wenn du ein neues Patientenobjekt machst kannst du dann z.b mit den Konstruktor es direkt mit einen Namen , einer Steuernummer und so weiter initialisieren und schon Methoden aufrufen. GANZ EINFACH.
Und warum mach ich das nicht mit einer setData-Methode oder so?
(15.12.2012 16:19)Marley schrieb:  Genercis sind kein großes Ding.
lol
(15.12.2012 16:19)Marley schrieb:  Und wenn man Java benutzt kriegt man sofort Ergebnisse. Wir hatten z.B ein kleines Spiel programmiert , dass hatte nur ein paar Schulstunden gedauert. Damals noch mit Greenfoot. Mit Krabben und Fischen... Manche gingen dann weiter und haben sogar ein wirklich gutes Star Wars spiel programmiert mit ein paar Tausend Zeilen Code. Naja das wäre mir zu dumm gewesen.
Java ist extrem Einsteigerfreundlich
Wie lange hast du schon mit Java gearbeitet und wie lange mit anderen Sprachen?

Du bist genau das perfekte Beispiel für das was ich meine. OOP ist unglaublich komplex und eigentlich wissen sehr wenige richtig wie es funktioniert und wie man damit arbeiten sollte, mich eingeschlossen. Man erklärt es dann mit so bekloppten real life Analogien à la "Baum ist eine Klasse und der Baum vor der Tür ist ein Objekt". Das führt zwangsläufig dazu dass wenn man das in der Schule lernt man irgendeinen Dreckscode hinfrickelt weil man eigentlich Jahre bräuchte um OOP und dann erst Java auch nur ansatzweise zu verstehen.

(15.12.2012 16:49)PacMani schrieb:  Soll ich dir die Fragen mal beantworten? Oder war das einfach nur mal schnell ein Beispiel was Neulinge für Fragen haben könnten?
Eigentlich wars 'n Beispiel, aber du darfst es gerne probieren ;)
15.12.2012 16:55
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Der Doktor Offline
%0|%0

Beiträge: 7.869
Registriert seit: Dec 2008
Beitrag #34
RE: Der Unnötige Informationen Thread
(15.12.2012 16:49)PacMani schrieb:  Soll ich dir die Fragen mal beantworten? Oder war das einfach nur mal schnell ein Beispiel was Neulinge für Fragen haben könnten?

Ich weiß, was Neulinge wohl für fragen stellen würden, ich habe die Fragen selbst gefragt. Und der Lehrer hatte sie ,weil er sich auskannte, gut beantwortet und wer etwas Sinn für Informatik hat, der versteht das... Java ist da recht simpel!
Java ist auch eine Insel erklärt das auch gut.
Als ob C jetzt so viel einfacherer wäre? Wie willst du denn da einsteigen? Natürlich mit Konsolen, wir konnten wenigstens noch mit etwas zum Anfassen anfangen, wir sind dann auch zu konsolen übergegangen. Und wenn ich mir hier im C Buch mal ansehe, was man alles für Code schreiben muss, für ein bescheuertes Windows Fenster. Da sag mal, dass wäre so toll einfach. Da ist Swing zwar noch buggy, aber da kann man schneller ein einfaches Fenster machen.

Es ist besser nicht zu moderieren als falsch zu moderieren
15.12.2012 16:56
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.950
Registriert seit: Jul 2008
Beitrag #35
RE: [geteilt] C-Diskussion
Erstmal: Irgendwelche kleine Spiele kriegen Kinder auch in Python hin. Oder früher in Basic oder Pascal. Das ist keine Leistung die Java neu erbracht hat.

Glaube du hast den Punkt von heinzes Beitrag nicht ganz verstanden. Die Antworten auf heinzes Frage klingen einfach, und du hast irgendwelche Antworten aus Einsteigerbüchern gegeben, in Wirklichkeit steckt da aber viel mehr dahinter.

Nur ein Beispiel:

Die Aussage " Genercis sind kein großes Ding" ist nämlich so schlicht falsch. Klar sind Generics auf den ersten Blick trivial. Dann aber lernst du mal über Ko- und Kontra-Varianz, und merkst dass während man in ein Array von Tieren auch ein Array von Enten packen kann (Tier[] ts = new Ente[10]; ), dass das bei einer "List<Tier> ts = new LinkedList<Ente>(10);" nicht geht und dass Generics in Java das wohl komplizierteste an der ganzen Sprache ist.

Java mag furchtbar einfach aussehen. Die Details sind aber haarig, und werden von vielen Neulingen total unterschätzt. Dann wird irgendwie .equals() überschrieben, und die Leute wundern sich warum die HashMap plötzlich nicht mehr funktioniert. Oder man macht eine Factory mit inneren Klassen und hat plötzlich Memory Leaks durch die ganzen impliziten this-Referenzen. Da hilft der Garbage Collector dann auch nicht mehr.

C hingegen sieht kompliziert aus, die Details sind aber eigentlich ganz simpel.
(Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2012 17:02 von gandro.)
15.12.2012 16:57
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Der Doktor Offline
%0|%0

Beiträge: 7.869
Registriert seit: Dec 2008
Beitrag #36
RE: Der Unnötige Informationen Thread
(15.12.2012 16:55)friedrichheinze schrieb:  
(15.12.2012 16:19)Marley schrieb:  Die Vererbung ist eine recht coole Sache und die damit zusammenhänge Polymorphie
Vererbung ist nicht Polymorphie, das sind zwei verschiedene Konzepte, du kannst Polymorphie ohne Vererbung haben
(15.12.2012 16:19)Marley schrieb:  , es hilft den Code weiterzuverwenden
Kann man auch mit Instanzen
(15.12.2012 16:19)Marley schrieb:  und man kann einen Code auf Referenzen aufbauen
Was?
(15.12.2012 16:19)Marley schrieb:  somit kann man den code in vielen Projekten einsetzen.
Kann man auch mit Instanzen
Und warum mach ich das nicht mit einer setData-Methode oder so?
(15.12.2012 16:19)Marley schrieb:  Genercis sind kein großes Ding.
lol
(15.12.2012 16:19)Marley schrieb:  Und wenn man Java benutzt kriegt man sofort Ergebnisse. Wir hatten z.B ein kleines Spiel programmiert , dass hatte nur ein paar Schulstunden gedauert. Damals noch mit Greenfoot. Mit Krabben und Fischen... Manche gingen dann weiter und haben sogar ein wirklich gutes Star Wars spiel programmiert mit ein paar Tausend Zeilen Code. Naja das wäre mir zu dumm gewesen.
Java ist extrem Einsteigerfreundlich
Wie lange hast du schon mit Java gearbeitet und wie lange mit anderen Sprachen?

Du bist genau das perfekte Beispiel für das was ich meine. OOP ist unglaublich komplex und eigentlich wissen sehr wenige richtig wie es funktioniert und wie man damit arbeiten sollte, mich eingeschlossen. Man erklärt es dann mit so bekloppten real life Analogien à la "Baum ist eine Klasse und der Baum vor der Tür ist ein Objekt". Das führt zwangsläufig dazu dass wenn man das in der Schule lernt man irgendeinen Dreckscode hinfrickelt weil man eigentlich Jahre bräuchte um OOP und dann erst Java auch nur ansatzweise zu verstehen.
Ich habe nie gesagt ,dass Vererbung Polymorphie sei. Aber Polymorphie hängt mit der Vererbung zusammen und kann nur in Vererbungsbäumen auftreten.
Eine Referenz ist eine Variable, die auf ein Objekt im Stack verweist.
Beispiel neu = new Beispiel(); -> neu ist eine Referenz...

Was ist wohl einfacher?
zu schreiben: Patient foo = new Patient ("foorius", 1,89, 2917283);
oder
Patient foo = new Patient();
foo.setName("foorius");
foo.setGroesse("1,89);
...
Das spart doch total viele Zeilen.
Mit C habe ich mich ein Jahr beschäftigt, seit 2 mache ich Java und genau so lange eigentlich C#.
...
Und ein Leher der etwas so erklärt: "Baum ist eine Klasse und der Baum vor der Tür ist ein Objekt"
Den kannst du sowieso in die tonne kloppen

Es ist besser nicht zu moderieren als falsch zu moderieren
(Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2012 17:07 von DosAmp.)
15.12.2012 17:05
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
friedrichheinze Offline
...und Kondensatoren.

Beiträge: 2.838
Registriert seit: Jul 2008
Beitrag #37
RE: Der Unnötige Informationen Thread
(15.12.2012 17:05)Marley schrieb:  Ich habe nie gesagt ,dass Vererbung Polymorphie sei. Aber Polymorphie hängt mit der Vererbung zusammen und kann nur in Vererbungsbäumen auftreten.
Nö.
(15.12.2012 17:05)Marley schrieb:  Eine Referenz ist eine Variable, die auf ein Objekt im Stack verweist.
Beispiel neu = new Beispiel(); -> neu ist eine Referenz...
Nö das is definitiv nicht aufm Stack und hat auch garnix mit Vererbung und reusability zu tun

(15.12.2012 17:05)Marley schrieb:  Was ist wohl einfacher?
zu schreiben: Patient foo = new Patient ("foorius", 1,89, 2917283);
oder
Patient foo = new Patient();
foo.setName("foorius");
foo.setGroesse("1,89);
...
Das spart doch total viele Zeilen.
Aha, Konstruktoren sind dazu da Zeilen zu sparen?
(15.12.2012 17:05)Marley schrieb:  Mit C habe ich mich ein Jahr beschäftigt, seit 2 mache ich Java und genau so lange eigentlich C#.
Oh dear...
15.12.2012 17:15
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
oreissig Offline
Maître Modérateur

Beiträge: 11.991
Registriert seit: Jul 2008
Beitrag #38
RE: Der Unnötige Informationen Thread
(15.12.2012 17:05)Marley schrieb:  Was ist wohl einfacher?
zu schreiben: Patient foo = new Patient ("foorius", 1,89, 2917283);
oder
Patient foo = new Patient();
foo.setName("foorius");
foo.setGroesse("1,89);
...
Das spart doch total viele Zeilen.
das "spart Zeilen"-argument ist quatsch, du könntest auch eine methode setAllData("foorious", 1.89) machen und das in einem rutsch setzen, trotzdem hat der Konstruktur eine andere Semantik, denn er kann nur 1x aufgerufen werden im gegensatz zu set-methoden, mit denen man so sachen auch während des Lebenszykluses eines Objektes ändern kann, was aber u.U. gar nicht erwünscht ist
(Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2012 17:18 von oreissig.)
15.12.2012 17:18
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Der Doktor Offline
%0|%0

Beiträge: 7.869
Registriert seit: Dec 2008
Beitrag #39
RE: [geteilt] C-Diskussion
Wie soll Polymorphie denn sonst funktionieren, wenn das Objekt keine is-a Beziehung hat?
Und warum soll das denn nicht stimmen? neu ist eine Referenzvariable, und die verweist einfach auf ein Objekt was im Speicher liegt, wir hatten da noch gelernt, dass das im Stack liegt. Und natürlich sind Konstruktoren nicht nur zum Zeilensparen, es ist einfach eine Methode die bestimmte Sachen ausführt, wenn ein Objekt erstellt wird.

Es ist besser nicht zu moderieren als falsch zu moderieren
15.12.2012 17:18
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
thosch97 Offline
All things have a right to grow

Beiträge: 9.820
Registriert seit: Feb 2010
Beitrag #40
RE: [geteilt] C-Diskussion
RISC-Assembler ist am einfachsten ihr Faggots.

PGP-Key E384 009D 3B54 DCD3 21BF 9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
„Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
“Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
„Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
„Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“
15.12.2012 17:31
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste