PDA

View Full Version : [Frage] Bücher für Eprog


bassist
08-09-2004, 20:24
Hi!!

In der Literaturliste für EPROG stehen so 4 Bücher. Hab aber keine Lust, mir alle zuzulegen, einfach zu teuer. Reicht es, wenn ich mir "Beginning Java 2" kaufe (das erste in der Liste)?

Will mir jetzt bald ein Java Buch kaufen, en bisschen einlesen und ausprobieren, will daher nicht auf die Vorbesprechung und so warten, bin also für ein paar Antworten von erfahrenen Javaprogammierern dankebar :-))

Das Buch ist in Englisch. Steh zwar mit Englisch nicht auf dem Kriegsfuß, bin aber sicher auch nicht der absolute Englisch-Guru. Sprachlich gesehen, muss ich bei "Beginning Java 2" bei jedem 3. Wort ein Wörterbuch zu Rate ziehen, oder erklärt sich dann das eh irgendwie von selbst :-))

Vielen Dank scho mal im voraus

gelbasack
08-09-2004, 20:40
www.javabuch.de
und dann noch die API von Sun
das war's, was ich verwendete... deckte eigentlich alles ab, was ich brauchte...

Bruno
08-09-2004, 20:59
nein, du mußt nicht alle bücher aus der liste haben. die liste ist nur eine reihe an empfohlenen büchern aus denen man nach der meinung vom professor gut java lernen kann. eines reicht da voll und ganz, inhaltlich steht ja eh meistens so ziemlich das selbe drin.
beginning java 2 ist find ich schon recht verständlich geschrieben und man muß nicht immer ein wörterbuch zur hand haben um daraus schlau zu werden. java in 21 tagen ist auch sehr gut (und auf deutsch). was du probieren kannst ist folgendes:
in der tu bibliothek haben sie einen ganzen haufen bücher zum java lernen, unter anderem eben beginning java 2, java in 21 tagen, usw... schau da mal hin, blätter dir die ganzen bücher durch und dann kannst du dir das raussuchen, welches dir am ehesten zusagt.

schurli
08-09-2004, 21:03
java in 21 tagen gibts auch online:
http://download.pearsoned.de/leseecke/java2_21Tg/data/start.htm
habs damit gelernt - hat ganz gut funktioniert.

JohnFoo
08-09-2004, 21:57
Wenn du dir ein Buch kaufst, dann doch am Besten "Beginning Java 2", da sich der Lehrinhalt meines Wissens nach diesem Buch richtet (oder richten sollte ..). Vom Englisch im Buch solltest du dich nicht abschrecken lassen, als Informatiker wirst du es noch öfters brauchen .. Und "einlesen" ist gut gesagt. Du wirst bald feststellen, dass du großteils auf dich alleine gestellt bist beim Java lernen, also besser nicht darauf warten, dass jemand kommt und dir sagt, was genau du lernen solltest ..

a9bejo
08-09-2004, 22:35
java in 21 tagen gibts auch online:
http://download.pearsoned.de/leseecke/java2_21Tg/data/start.htm
habs damit gelernt - hat ganz gut funktioniert.

das buch scheint mir aber veraltet und wenig seriös zu sein:

zunächst einmal ist die aktuelle version von Java laut buch 1.2. ,die meisten beispiele sind sogar für 1.0.2.
Der unterschied zwischen diesen versionen und der aktuellen(1.4/5) ist vergleichbar mit dem von windows 3.11 und windows 2003 server.

Dann dreht sich das halbe buch über die erstellung von Java applets. Kaum jemand verwendet heute noch applets.

Laut einer studie von Gardner können 2/3 aller Javaprogrammierer kein Java.
Nach einer weiteren Studie braucht schon es allein 6 monate praktischer erfahrung, bis man die konzepte der objektorientierten programmierung _wirklich_ verstanden hat. Das letzte was die welt braucht ist ein buch, das programmierer in 21 Tagen auszubilden verspricht.

Vor allem, wenn sich dort alles um Applets und Swingapplikationen dreht. Solche Bibliotheken lernen macht überhaupt keinen Sinn: es ist gut möglich, das man sie später nie wieder braucht.

Die einzige java-apis, die man zum lernen braucht, sind java.lang (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/package-summary.html) und java.util (http://java.sun.com/j2se/1.4.2/docs/api/java/util/package-summary.html). Bei EPROG verlangen sie auch nicht mehr, zumindest was ich so mitbekommen habe. (naja, bis vielleicht auf dieses eprog package ;) )

Ich kenne 'Beginning Java 2' zwar nicht, aber da sich laut JohnFoo der lehrstoff danach richtet, würde ich das ebenfalls tun.

Das englisch training wird dir gut tun: gutes english, vor allem beim lesen, ist (nicht nur) für die softwareentwicklung wichtiger als eine programmiersprache.

JohnFoo
08-09-2004, 22:55
Laut einer studie von Gardner können 2/3 aller Javaprogrammierer kein Java.
Klingt interessant. Wie ist das genau gemeint? Hast du vielleicht einen Verweis auf diese Studie?

Die einzige java-apis, die man zum lernen braucht, sind java.lang (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/package-summary.html) und java.util (http://java.sun.com/j2se/1.4.2/docs/api/java/util/package-summary.html). [..]
Ich kenne 'Beginning Java 2' zwar nicht, aber da sich laut JohnFoo der lehrstoff danach richtet, würde ich das ebenfalls tun.
Dies zwei von dir genannten Packages reichen aus. Obligat ist "Beginning Java 2" nicht. "Das Java Handbuch" ist ein gutes, dickes, billiges deutsches Buch zu Java. Auch keine schlechte Wahl. Sicher kann man auch mit Online-Versionen arbeiten. Wenn man aber mit Java anfängt ist es sicher nicht falsch, ein Buch zu haben, das über das nötige für die LVA hinaus geht und einen Überblick über die Sprache und ihre Bibliotheken schafft.

rck
08-09-2004, 23:35
Will mir jetzt bald ein Java Buch kaufen, en bisschen einlesen und ausprobieren, will daher nicht auf die Vorbesprechung und so warten, bin also für ein paar Antworten von erfahrenen Javaprogammierern dankebar :-))

Programmieren lernst Du Ansich durch programmieren am besten. Das von EPROG verlangte Stoffgebiet ist prinzipiell in so ziemlich jedem Einsteiger-JAVA-Buch abgedeckt, mehr als zwei (wenn überhaupt) täte ich da aber nicht ansehen.

Zwei sind vielleicht ok zum Vergleichen. Am besten, Du schaust in die Lehrmittelstelle und siehst dort die Bücher durch. Dass, das Dir am sympathischten ist, kaufst Du dann. Alternativ: Bibliothek, ist eh gleich daneben.

Davon abgesehen würde ich, wenn ich mir genau ein Buch zum Programmieren kaufen würde, eines ganz, ganz unbedingt kaufen, welches mir teilweise drastisch die Augen geöffnet hat. Es ist zwar für C geschrieben und schon ein paar Jahre alt, wodurch ein paar Tips obsolet sind. Andererseits ist es echt lehrreich, enthält ein paar nette Anekdoten und ist sehr flüssig zu lesen. Es heißt "Writing Solid Code" von Steve Maguire (Microsoft Press), ist aus dem Jahr 1993 und hat die ISBN 1556155514. Ist auch auf Deutsch erhältlich.

Du findest drei fertige Eprog-Beispiele, sehr ausführlich kommentiert, auf meiner Homepage. Sieh Dir zB http://www.kiesler.at/article69.html an, auf der rechten Seite / unten sind dann die anderen Artikel unter "Verwandte Einträge" aufgelistet.

Happy Learning // René!

rck
08-09-2004, 23:41
Wenn Du von programmieren generell keine Ahnung hast (oder sehr wenig): Zieh Dir mal Don't fear the OOP! (http://www.kiesler.at/linkman~LMN_op~visitLink~LMN_id~272.html) rein. Der Artikel vergleicht JAVA-Programmieren mit dem schreiben von einem Western und ist mindestens lustig, wenn nicht lehrreich.

Trilimanski
08-09-2004, 23:59
Ich fand Ivor Hortons "Beginning Java 2" von allen Büchern am besten und
hilfreichsten.

Aus allen anderen Büchern bin ich einfach nicht schlau geworden, vor allem
weil sie zu trivial waren.("Sprechen sie Java?" z.B)

Ein großes Plus sind die Beispiele im Java-Code, welche es in jedem Kapitel gibt, danach gleich eine Erläuterung zum Code, so geht es das ganze Buch hindurch.

Der für EPROG relevante Stoff ist ungefähr bis seite ca. 465.
Und die Lektionen in Relation Folien-Buch sind fasst gleich.
Der Rest ist für das weitere Studium auch verdammt hilfreich.

Ergo, meine Empfehlung, Horton. :coolsmile

Viel Erfolg!

Ein Tipp noch, falls du noch nie programmiert hast,
ließ zuerst die ersten 200 Seiten gründlich durch, probier die
Beispiele aus, compilieren etc. bevor du die erste Runde abholst.
Sonst ist man schnell frustriert.

Wings-of-Glory
09-09-2004, 00:17
Ich lese gerade "thinking in c++" und es gefällt mir recht gut...
Schau dir mal "thinking in java (http://www.mindview.net/Books/TIJ/) " an, das dürfte auch nicht schlecht sein.

@horton: Eventuell nettes Nachschlagewerk, aber bestimmt kein Buch, das man mit sich herum schleppen möchte. :D

a9bejo
09-09-2004, 00:18
Klingt interessant. Wie ist das genau gemeint? Hast du vielleicht einen Verweis auf diese Studie?


Der artikel von dem ich die info habe ist hier:

http://www.itweb.co.za/sections/software/2004/0403191257.asp?A=APD&S=Software%20Development&O=FPT

ausserdem wurde das ganze noch auf slashdot diskutiert:

http://developers.slashdot.org/article.pl?sid=04/03/20/1222224

sowie auf theserverside.com:

http://www.theserverside.com/news/thread.tss?thread_id=24627


Und weil ich in diesem thread bisher nur destruktiv war ;) , hier auch eine buchempfehlung von mir:

How to think like a computer scientist (http://www.ibiblio.org/obp/thinkCS/) , von Allen B. Downey.

ich hab das buch selbst leider viel zu spät entdeckt und daher nicht vollständig gelesen. Es scheint mir aber eine sehr gute und leicht verständliche einführung ins programmieren zu sein.

Auch dieses buch ist schon etwas in die jahre gekommen.Das stört aber hier nicht so sehr, weil es sich in den späteren kapiteln nicht so sehr in bibliotheken verläuft, sondern sich eher mit strukturen und algorithmen beschäftigt:Heaps und Hashtabellen anstatt swing und applets. Dieses wissen kann man dann im zweiten semester in algodat I sehr gut gebrauchen.

interressant finde ich auch, dass es dieses buch nicht nur für Java, sondern auch für C++, Logo und Python gibt.

a9bejo
09-09-2004, 00:45
Ich lese gerade "thinking in c++" und es gefällt mir recht gut...
Schau dir mal "thinking in java (http://www.mindview.net/Books/TIJ/) " an, das dürfte auch nicht schlecht sein.

@horton: Eventuell nettes Nachschlagewerk, aber bestimmt kein Buch, das man mit sich herum schleppen möchte. :D

Ich habe Thinking in Java, Thinking in Patterns & Thinking in Python gelesen (Wobei das letzte nur eine Neuauflage von T.I.Patterns für Python ist), und kann alle Bücher von Bruce Eckel ebenfalls weiterempfehlen, ebenso seinen weblog (http://www.mindview.net/WebLog).

Allerdings muss man ein wenig achtgeben, das man sich nicht von ihm beschwatzen lässt. Eckel ist ein eiserner python-fan und lässt auch keine gelegenheit aus, dafür werbung zu machen. Achja, ich übrigens auch nicht (http://kafka.pdi.at:8091/PythonLanguage). ;). Da Java und Python aber im Grunde recht unterschiedliche Anwendungsgebiete haben, wirken diese vergleiche doch recht deplaziert und nerven auf die dauer auch ein wenig.

Es gibt auf seinem blog ein video (http://mindview.net/WebLog/log-0055) , wo er einen vortrag in Berkeley hält und über javas schwachstellen redet. Das meiste davon fand ich super interressant. Nur bei den neuen Features von Java 1.5 hat er meiner meinung nach einiges verwechselt (zum beispiel scheint er nicht ganz kapiert zu haben, das java generics keine c++ templates sind)

bassist
09-09-2004, 01:11
Wollt mich nur kurz bei allen bedanken, die auf meinen Eintrag geantwortet haben, hat mir echt weitergeholfen. Diese Community ist sowieso ein Wahnsinn, wenn ich das so mal sagen darf :thumb:
So viele Antworten in so kurzer Zeit, echt cool.

Freu mich schon, wenn ich mich ein bisschen auskenne und auch mal was konstruktives posten zB jemanden helfen kann.

Trilimanski
09-09-2004, 16:06
@horton: Eventuell nettes Nachschlagewerk, aber bestimmt kein Buch, das man mit sich herum schleppen möchte. :D

Damit hast du schon recht, das Buch ist mit mir insgesammt mehr als 2500km gereist, war echt gar nicht hilfreich, nur schwer.
Man sollte es am besten im Zimmer lesen, zumindest solange es nicht
im Taschenbuchformat erscheint.

rck
12-09-2004, 06:34
Nur bei den neuen Features von Java 1.5 hat er meiner meinung nach einiges verwechselt (zum beispiel scheint er nicht ganz kapiert zu haben, das java generics keine c++ templates sind)

Also die Unterschiede zwischen JAVA Generics und C++ Templates halten sich imho aus Programmierersicht ziemlich in Grenzen... ;-)

JohnFoo
12-09-2004, 11:16
Also die Unterschiede zwischen JAVA Generics und C++ Templates halten sich imho aus Programmierersicht ziemlich in Grenzen... ;-)
Laut Eckel's Blog können Java Generics nur existente Interfaces als Parameter empfangen, er meint der einzige Vorteil der Generics wäre das automatische Casting ..

rck
12-09-2004, 14:37
Laut Eckel's Blog können Java Generics nur existente Interfaces als Parameter empfangen, er meint der einzige Vorteil der Generics wäre das automatische Casting ..

Das ist dann allerdings ein bisserl sehr verkürzt!

JohnFoo
12-09-2004, 14:45
Das ist dann allerdings ein bisserl sehr verkürzt!
Haha, na eh ;). Wollte ja keinen Roman schreiben. Naja, wer will kann's ja eh nachlesen auf der Website :D

a9bejo
12-09-2004, 23:03
Generics sind in Java fürs casten gut, und das man einen container auf einen typ beschränken kann. Wenn ich eine Collection voller Pflaumen hab, sollen da keine Orangen rein dürfen.

Eckel ist aus irgendeinem grund kein fan von statisch typisierten sprachen. Warum verstehe ich überhaupt nicht.

Was er gerne machen würde ist das hier:


class University:
def __init__(self,address):
self.address = address

def getAddress(self):
return self.address

def decay(self):pass

class Student:
def __init__(self,address):
self.address = address

def getAddress(self):
return self.address

def study(self):pass

class Mailman:
def deliver_mail(self,someObject):
print "deliver mail to %s"%someObject.getAddress()

tu = University('Karlsplatz 13')
a9bejo = Student('Kirchengasse 11')
mailman = Mailman()

mailman.deliver_mail(a9bejo)
mailman.deliver_mail(tu)


der mailman kann hier jedem und allem ein briefchen liefern, solange es eine methode getAddress() hat.

Also ich mache ja selber gerne viel mit python (http://kafka.pdi.at:8091/kafkaesk/?w=PythonLanguage), unter anderem auch gerade weil dynamic typing sehr viel zeit beim programmieren spaart. Aber das das in Java nicht geht, hat doch einen guten Grund:

Wenn ich dem mailman ein objekt übergebe, das keine methode getAddress() besitzt, kann python das erst zur laufzeit erkennen. Java würde das erst gar nicht kompilieren, da die methode deliver_mail in java ja etwa so aussehen würde:

public void deliverMail(Addressable addressable){
adress = addressable.getAddress();
...
}

und es somit zwingend eine solche methode geben muss.

das Interface kann hier aber noch viel mehr:
angenommen der code von oben gehört zu einem 1 000 000 zeilen projekt. da kommt dann irgendwann ein neuer mitarbeiter ins projekt und macht das hier:

class TcpClient:
def __init__(self,address):
self.address = address

def getAddress(self):
return self.address

def getDomain(self):pass


client = TcpClient('212.47.162.12')
mailman = Mailman()
mailman.deliver_mail(client)


und das geht wunderbar, da TcpClient ja die richtige Methode besitzt. Solche Fehler sind dann meistens sauschwer zu finden, weil das program hier unter umständen weiterläuft und dann an ganz anderer stelle einen bug verursacht.

In Java oder C# kann das nicht passieren, wieder dank interface.

Wundert mich sehr, das Eckel das anders sieht. Alle seine Bücher beweisen, das er sich total gut auskennt. Vielleicht verstehe ich ihn auch nur falsch.

Irgendwo in dem Vortrag sagt er sehr schön, das Javas grösstes problem ist, das es von kommerziellen unternehmen gefördert wird und die nichts schlechtes über die sprache sagen. Er betont da den Entwickler von Ruby, der als erstes ein dokument mit dem namen 'Why ruby sucks' rausgebracht hat, und warum das java auch nicht geschadet hätte.

Lieber Herr Eckel: Python ist auch keine eierlegende Wollmilchsau.

Aber ich für meinen Teil würde ein wirklich grosses projekt nur mit einer statisch typisierten sprache machen. Lieber kurzfristig etwas mehr arbeit reinstecken und dafür mein haus auf ein stabiles fundament bauen.

Für kleinere bis mittelgrosse projekte, scripte oder prototyping finde ich python dann wiederum viel besser (und nicht nur wegen des typings).

a9bejo
12-09-2004, 23:04
.... Wollte ja keinen Roman schreiben. ...
puhh. das hätte ich mir auch vornehmen sollen ;)

JohnFoo
13-09-2004, 00:40
Ich finde den Java-Ansatz auch sinnvoller für große Programme ..

python
Kannst ein vielelicht ein nettes Phyton-Tutorial empfehlen? Wollte mir die Sprache ohnehin schon länger ansehen, aber mein Buch lesen is mir zu mühsam ;).

a9bejo
13-09-2004, 00:54
Ich finde den Java-Ansatz auch sinnvoller für große Programme ..


Kannst ein vielelicht ein nettes Phyton-Tutorial empfehlen? Wollte mir die Sprache ohnehin schon länger ansehen, aber mein Buch lesen is mir zu mühsam ;).
klar kann ich: ;)

also wenn man bereits programmiererfahrung hat, ist die beste literatur meiner meinung nach eindeutig
Dive Into Python (http://diveintopython.org/), von Mark Pilgrim.
Das buch ist wirklich gut: Er beginnt jedes kapitel zunächst mit einem kleinen programmcode, und erklährt den dann schritt für schritt.

ausserdem habe ich noch einen Überblick über Pythonresourcen auf meinem Wiki (http://kafka.pdi.at:8091/PythonLanguage).
Wenn du noch andere tutorials oder links findest, bist du herzlich eingeladen die dort dazuzuschreiben.

rck
13-09-2004, 07:51
Das buch ist wirklich gut: Er beginnt jedes kapitel zunächst mit einem kleinen programmcode, und erklährt den dann schritt für schritt.

You know, how other books go on and on about programming fundamentals and finally work up to building a complete, working program? Let's skip all that.

Kommt mir ja sehr bekannt vor (http://www.kiesler.at/article~view~41~page_num~2.html) ;-)

rck
20-09-2004, 22:02
Schon damals war Python aktuell!