Deutsche Bücher vs. englische Bücher

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

ratna_fong hat geschrieben:Deswegen möchte ich Euch nach Euren Erfahrungen bzgl. Bücher fragen, am liebsten ein GUTES Buch von einem deutschen Python-Autor/-Expert. Gibt es so was?
Dann schau Dir mal "Das Python Praxisbuch" von Farid Hajji an.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

kbr hat geschrieben:Dann schau Dir mal "Das Python Praxisbuch" von Farid Hajji an.
Der Autor ist uebrigens hin und wieder hier im Forum aktiv.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

numerix hat geschrieben:
Francesco hat geschrieben:Der ganze Stil in der Übermittlung von Wissen ist im "angelsächsischem Raum" viel besser (nicht nur auf Programmierbücher bezogen). Die deutschen sind zudem oft zu trocken und humorlos und nicht gerade motivierend, weiterzumachen. Ist nur meine persönliche Erfahrung.
Meine persönliche Erfahrung ist eine andere. Ich habe in beiden Fällen ("echt" dt. Bücher und englische bzw. deren Übersetzung) kurzweilige, gut geschriebene und effizient vermittelnde Bücher gelesen, als auch in beiden Fällen das Gegenteil erlebt: Weitschweifig, nicht auf den Punkt kommend, zu viel Gelaber. Besonders schlimm finde ich Übersetzungen aus dem amerikanischen, denen man das in jedem zweiten Satz noch anmerkt.
Hmm, ... ich sehe es einfach so: Das Angebot ist naturgemäß breitbandiger (ich weiss ja nicht, wieviel englischsprachige es gibt, aber es sind sicher >> ~120 Mio. deutschsprachige). Von daher ist es auch wahrscheinlicher, ein besseres (oder aktuelleres) Buch in Englisch zu bekommen, als in Deutsch. Ausserdem ist die Zeit nicht schlecht investiert, weil man dann auch noch Vokabeln lernt. ;)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Francesco hat geschrieben:Hmm, ... ich sehe es einfach so: Das Angebot ist naturgemäß breitbandiger (ich weiss ja nicht, wieviel englischsprachige es gibt, aber es sind sicher >> ~120 Mio. deutschsprachige). Von daher ist es auch wahrscheinlicher, ein besseres (oder aktuelleres) Buch in Englisch zu bekommen, als in Deutsch.
Wahrscheinlichkeitsrechnung ist nicht meine Staerke, aber fuer mich hoert sich das falsch an ;)
Der Grossteil der deutschen Buecher, die fuer Python relevant sind duerften allerdings Uebersetzungen sein und gerade in dem Nischengebiet sind mir haeufig schlechte Uebersetzungen untergekommen. Wie Galileo allerdings schon bewiesen hab, muessen nicht nur Uebersetzungen schlecht sein :roll:
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

cofi hat geschrieben: Wahrscheinlichkeitsrechnung ist nicht meine Staerke, aber fuer mich hoert sich das falsch an ;)
Ehm, was hoert sich da falsch an? 300 Mio. Amerikaner (vielleicht - xx Millionen spanischsprechende), 60 Mio. Briten, Australien, Südafrika, ...) dann noch wo sie häufig wichtige Zweitsprache ist, da ist einfach mehr Potential da. Oder meinst du, man kann das nicht so vergleichen, weil die einen gescheiter sind als die anderen, und das dadurch kompensieren? :twisted:
BlackJack

@Francesco: Dein Schluss ist einfach nicht haltbar. Es gibt mehr englischsprachige Bücher weil es eine grössere Zielgruppe gibt, okay, aber warum dadurch die Wahrscheinlichkeit steigen sollte ein *gutes* Buch zu erwischen ist nicht nachvollziehbar. Man könnte ja sogar gegenteilig argumentieren, dass es mehr schlechte Bücher gibt, weil bei der grossen Zielgruppe sich jeder Depp als Autor versucht. Die Qualität von Büchern hängt ja nicht von der grösse der Zielgruppe, sondern vom können der Autoren ab.

Ich finde englische Fachliteratur auch oft besser, aber ich denke das hat nicht viel mit Wahrscheinlichkeitslehre zu tun, sondern eher mit dem Verständnis von Wissensvermittlung in den entsprechenden Kulturkreisen. Deutsche Fachliteratur gibt teilweise ganz gerne damit an wie präzise, knapp, und *unverständlich* man Sachverhalte ausdrücken kann, während bei englischer Fachliteratur oft Beispiele und Analogien zusätzlich zu den knappen formelhaften Sätzen genannt werden. Also "wir sind Elite, das soll nicht jeder verstehen" vs. "Joe der Automechaniker soll das auch verstehen können wenn er nicht auf den Kopf gefallen ist."
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Francesco hat geschrieben: Ehm, was hoert sich da falsch an? 300 Mio. Amerikaner (vielleicht - xx Millionen spanischsprechende), 60 Mio. Briten, Australien, Südafrika, ...)
Warst du in Südafrika? Da kommt man häufig nicht allein mit Englisch weiter ;)
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

@Blackjack
Nun ja, es wird mehr Bücher geben (sowohl schlechte als auch gute). Was ich da an den deutschen Büchern oft bemängle, ist der trockene Stil. Wenn ich an die Schulzeit zurückdenke, was besonders in technischen Sachen zugemutet wurde, das hat mir das Lernen schon recht vermiest. Ich habe schon einige englische Programmierhandbücher gesehen, und die haben oft Abbildungen, tw. auch recht lustige. Und oft ist es so, dass es zu einem Thema gar keine deutschen Bücher gibt, weil es sich aufgrund der geringen Zielgruppe gar nicht "auszahlt". Ich denke da an wxpython in Action zb.
ratna_fong
User
Beiträge: 38
Registriert: Samstag 3. Juli 2010, 10:43

vielen lieben Dank für die gute Resonanz.

Habe fürs Buch von Michael Weigend entschieden. Ich bin aber immer wieder erstaunt, wie stark die Abhängigkeit vom Internet fürs Erlernen einer Programmiersprache ist. Trotz dem dicken Buch bin ich oft erst durch Stöbern von Informationen im Internet "zufrieden". Ganz unabhängig in welcher Sprache die Erklärungen sind, sind die unterschiedlichen Ausdrucksweise einfach hilfreich. Wenn frau auf einer Seite das Thema nicht versteht, schlägt frau ne andere Seite auf und wenn frau Glück hat, ist die Beschreibung für eine verständlicher.

Ein Beispiel bzw. eine Frage :D

das Modul codecs.

It defines the following functions:
codecs.register(search_function)
codecs.lookup(encoding)
codecs.open(filename, mode[, encoding[, errors[, buffering]]])
usw..

Wie ist codecs in z.B. codecs.lookup(encoding) gemeint? Ist codecs hier ein vordefiniertes Objekt in der gleichnamigen Klasse codecs? Also, wie cout oder cin in C?

Im nächsten Abschnitt der Doku stehen dann ein paar Methoden folgender Form:
Codec.encode(input[, errors])

Also, Codec statt codecs. Wie ist Codec hier gemeint?

Als wäre das noch nicht genug:
class codecs.StreamReader(stream[, errors])
...

nun mit einem "class" davor.

Hilfe, Jungs.. :oops:

Schönen Dank,

Eure Ratna
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ratna_fong hat geschrieben:das Modul codecs.

It defines the following functions:
codecs.register(search_function)
codecs.lookup(encoding)
codecs.open(filename, mode[, encoding[, errors[, buffering]]])
usw..

Wie ist codecs in z.B. codecs.lookup(encoding) gemeint? Ist codecs hier ein vordefiniertes Objekt in der gleichnamigen Klasse codecs? Also, wie cout oder cin in C?
Wie in der Dokumentation steht ist es das Modul ``codecs`` das die Funktionen ``register``, ``lookup``, ``open`` etc. definiert.
ratna_fong hat geschrieben:Im nächsten Abschnitt der Doku stehen dann ein paar Methoden folgender Form:
Codec.encode(input[, errors])

Also, Codec statt codecs. Wie ist Codec hier gemeint?
Steht doch direkt oben drüber, muss man nur lesen:
7.8.1.1. Codec Objects hat geschrieben:The Codec class defines these methods which also define the function interfaces of the stateless encoder and decoder:
ratna_fong hat geschrieben:Als wäre das noch nicht genug:
class codecs.StreamReader(stream[, errors])
...
Da wird der Konstruktor der StreamReader-Klasse dokumentiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ratna_fong
User
Beiträge: 38
Registriert: Samstag 3. Juli 2010, 10:43

Leonidas hat geschrieben: Wie in der Dokumentation steht ist es das Modul ``codecs`` das die Funktionen ``register``, ``lookup``, ``open`` etc. definiert.
codecs.register(search_function)
Ist codecs hier ein Objekt? Um genauer zu sein, ein vordefiniertes Objekt? Gehe ich stark davon aus.
Leonidas hat geschrieben: Steht doch direkt oben drüber, muss man nur lesen:
The Codec class defines these methods which also define the function interfaces of the stateless encoder and decoder:
Codec.encode(input[, errors])
Hier gehe ich zwar ebenfalls stark davon aus, dass Codec ein Objekt ist. Da aber im vorigen Abschnitt "codecs" statt wie hier "Codec" verwendet wird, bin ich mir unsicher, vielleicht hat diese Differenzierung eine bestimmte Bedeutung?

Zu meiner letzten Frage:
class codecs.StreamReader(stream[, errors])
Dass dies ein Konstruktor ist, ist mir sogar klar, aber der Ausdruck "class codecs.StreamReader" macht mich stutzig. Ich habe mich gefragt, "was ist das? class, codecs. codecs ist doch ein Objekt, davor noch class, häää??"
BlackJack

@ratna_fong: Natürlich ist `codecs` ein Objekt -- alles in Python was man an einen Namen binden kann ist ein Objekt. Es ist das *Modul*. Du liest doch da gerade die Dokumentation zum `codecs`-Modul.

Und auch `Codec` ist ein Objekt, nämlich ein Klassenobjekt. Im Modul `codecs`. Dessen Dokumentation Du ja gerade liest.

Das ist Dokumentation und kein Quelltext. Das `class` steht da wahrscheinlich damit man die Signatur nicht für eine Funktion hält, sondern für den "Konstruktor"-Aufruf.

Du könntest auch mal eine Python-Shell bemühen und Dir das selbst "live" anschauen.

Code: Alles auswählen

In [284]: import codecs

In [285]: codecs
Out[285]: <module 'codecs' from '/usr/lib/python2.5/codecs.pyc'>

In [286]: dir(codecs)
Out[286]:
['BOM',
 'BOM32_BE',
 'BOM32_LE',
 'BOM64_BE',
 'BOM64_LE',
 'BOM_BE',
 'BOM_LE',
 'BOM_UTF16',
 'BOM_UTF16_BE',
 'BOM_UTF16_LE',
 'BOM_UTF32',
 'BOM_UTF32_BE',
 'BOM_UTF32_LE',
 'BOM_UTF8',
 'BufferedIncrementalDecoder',
 'BufferedIncrementalEncoder',
 'Codec',
 'CodecInfo',
 'EncodedFile',
 'IncrementalDecoder',
 'IncrementalEncoder',
 'StreamReader',
 'StreamReaderWriter',
 'StreamRecoder',
 'StreamWriter',
 '__all__',
 '__builtin__',
 '__builtins__',
 '__doc__',
 '__file__',
 '__name__',
 '_false',
 'ascii_decode',
 'ascii_encode',
 'backslashreplace_errors',
 'charbuffer_encode',
 'charmap_build',
 'charmap_decode',
 'charmap_encode',
 'decode',
 'encode',
 'escape_decode',
 'escape_encode',
 'getdecoder',
 'getencoder',
 'getincrementaldecoder',
 'getincrementalencoder',
 'getreader',
 'getwriter',
 'ignore_errors',
 'iterdecode',
 'iterencode',
 'latin_1_decode',
 'latin_1_encode',
 'lookup',
 'lookup_error',
 'make_encoding_map',
 'make_identity_dict',
 'open',
 'raw_unicode_escape_decode',
 'raw_unicode_escape_encode',
 'readbuffer_encode',
 'register',
 'register_error',
 'replace_errors',
 'strict_errors',
 'sys',
 'unicode_escape_decode',
 'unicode_escape_encode',
 'unicode_internal_decode',
 'unicode_internal_encode',
 'utf_16_be_decode',
 'utf_16_be_encode',
 'utf_16_decode',
 'utf_16_encode',
 'utf_16_ex_decode',
 'utf_16_le_decode',
 'utf_16_le_encode',
 'utf_7_decode',
 'utf_7_encode',
 'utf_8_decode',
 'utf_8_encode',
 'xmlcharrefreplace_errors']

In [287]: codecs.Codec
Out[287]: <class codecs.Codec at 0xb7cd95fc>
ratna_fong
User
Beiträge: 38
Registriert: Samstag 3. Juli 2010, 10:43

vielen Dank BlackJack und Leonidas,

codecs und codec scheinen tatsächlich vordefinierte Objekte der Klasse codecs zu sein. Wirklich wie cout oder cin bei C.
cout << = cout.ausgabemethode(parameter)

Also, wie:
codecs.open(parameters)


Nun, zu dieser Struktur:
class codecs.IncrementalEncoder([errors])
Ich glaube, das besagt:
1. Die Objekte der Klasse IncrementalEncoder sind von uns Programmierern selbst zu erstellen.
2. codecs ist die Basisklasse der Klasse IncrementalEncoder.

Danke für die Methoden- bzw. Konstantenliste des Objekts codecs, BlackJack.

Eure Ratna
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ratna_fong hat geschrieben:codecs und codec scheinen tatsächlich vordefinierte Objekte der Klasse codecs zu sein. Wirklich wie cout oder cin bei C.
Erstens gibt es cout und cin nur bei C++ und zwiten ist ``codecs`` ein einfaches Modul, nicht spezielles. Und codecs.open nur eine simple Funktion in diesem Modul, auch nichts spezielles.
ratna_fong hat geschrieben:class codecs.IncrementalEncoder([errors])
Ich glaube, das besagt:
1. Die Objekte der Klasse IncrementalEncoder sind von uns Programmierern selbst zu erstellen.
2. codecs ist die Basisklasse der Klasse IncrementalEncoder.
Instanzen von IncrementalEncoder sind selbst zu erstellen, ja. Aber codecs ist nicht die Basisklasse sondern das Modul in dem die Klasse definiert ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ratna_fong
User
Beiträge: 38
Registriert: Samstag 3. Juli 2010, 10:43

Leonidas hat geschrieben: Erstens gibt es cout und cin nur bei C++ und zwiten ist ``codecs`` ein einfaches Modul, nicht spezielles. Und codecs.open nur eine simple Funktion in diesem Modul, auch nichts spezielles.
vielen Dank Leonidas, :D

mhh.. ich habe Deine Sichtweise verstanden, das Modul codecs definiert die Funktion open. Aber da man ja beim Coden folgendes schreibt:
codecs.open(...)
das erweckt einen Eindruck, codecs könnte ein Objekt sein.

Das ist jetzt für mich mal interessant, was codecs hier eigentlich ist. Wenn das tatsächlich mit "Objekt" nichts zu tun hat, dann kommt mir das sehr widersprüchlich mit dem objektorientiertem Paradigma, wie ich bisher gelernt und verstanden habe. Denn, der Bezeichner vor einem Punkt deutet eigentlich auf ein Objekt hin.

Vielleicht soll ich generell nicht all zu detailliert/kompliziert denken sondern einfach nur die Werkzeuge anwenden. Vielleicht ist dafür Python geschaffen, diese große Freiheit. :)

Gruss,

Eure Ratna :oops:
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

codecs ist ein Objekt, nur eben vom Typ module. Falls du es überlesen haben solltest: In Python ist alles was du an einen Namen binden kannst ein Objekt. Wenn es sinnvoll ist, dann bezeichnet man Dinge mit entsprechenden Namen. In den meisten Fällen wirst du ein Auto sicher "Auto" nennen und nicht "Ding", damit du weißt, dass du es zum Beispiel fahren kannst. Versuche das mal mit einem Baum-Ding ;-)

Code: Alles auswählen

>>> codecs
<module 'codecs' from '/usr/lib/python2.6/codecs.pyc'>
>>> type(codecs)
<type 'module'>
Sebastian
Das Leben ist wie ein Tennisball.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ratna_fong hat geschrieben:mhh.. ich habe Deine Sichtweise verstanden, das Modul codecs definiert die Funktion open. Aber da man ja beim Coden folgendes schreibt:
codecs.open(...)
das erweckt einen Eindruck, codecs könnte ein Objekt sein.
Natürlich ist das ein Objekt, denn Module sind auch Objekte.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

ratna_fong hat geschrieben:mhh.. ich habe Deine Sichtweise verstanden, das Modul codecs definiert die Funktion open. Aber da man ja beim Coden folgendes schreibt:
codecs.open(...)
das erweckt einen Eindruck, codecs könnte ein Objekt sein.
Ein Modul ist ein Objekt, nur wird es eben nicht instanziiert, sondern importiert. :wink:
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Vielleicht weil es schon instanziiert wurde? Wie werden Module in Python eigentlich "unter der Haube" implementiert? Warum verhalten sie sich wie Exemplare einer Klasse (wahrscheinlich weil sie auch wirklich Exemplare einer Klasse sind, aber welcher?)?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ein Modul ist ein Objekt vom Typ types.ModuleType. Man kann auch einfach types.ModuleType aufrufen und in sys.modules ablegen und andere Module können es dann importieren. Man kann selbstverständlich auch davon erben und irgendein Verhalten implementieren.
Antworten