Python - Generelle Verwirrungen

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.
orossum
User
Beiträge: 4
Registriert: Mittwoch 9. Dezember 2009, 19:43

Hallo,

Python setzt ja bekanntlich auf "Explicit > Implicit" (Man denke an die Anzahl von self die man bei einem OOP-Projekt tippen muss) und versucht sich selbst klar und einfach zu halten.

Ich habe bisher viel in C++, PHP und auch Ruby programmiert.

So. Nun steht in der Schule Python auf dem Plan da wir in der Klasse eigentlich nur Anfänger haben.

Das erste was mir aufgefallen ist waren die kryptischen Fehlermeldungen. Wieso muss man sich bei Python bei jedem kleinen Syntaxfehler durch 5 Zeilen rote Schrift durchackern bis man endlich Fehlername und Zeilennummer hat?

Was ist das für ein Wahnsinn mit Floating-Point-Berechnungen?

Da Guido van Rossum, der von vielen Python-Nutzern als eine art Gott angesehen wird (wie man hier sicher weiß), ja bekanntlich Python "geschaffen" hat, ist er wohl auch derjenige, der sich mit dem Gültigkeitsbereich von Variablen ausernandergesetzt hat.

Nun, das System ansich ist meiner Meinung nach schon vollkommend fehlkonzipiert. (Variablen können von innerhalb von Funktionen ausgelesen aber nicht verändert werden, global, etc)

Schon bei einer einfachen animation mit tkinter kommt man in Python nicht um Schmutzigen Code, global Statements und wiederholten Code herum.

Dann, als ich versucht habe innerhalb einer Funktion, welche wiederum von einer anderen Funktion aufgerufen wird, auf außerhalb definierte Variablen zuzugreifen, bin ich dann nach langem überlegen draufgekommen, dass ich aus irgendeinen unerfindlichen Grund nun alle Variablen mit global angeben muss um sie aufzurufen, warum auch immer.

Ich verstehe nicht ganz wie man, wenn man kein kompletter Anfänger mehr ist, noch irgendwas mit dieser an den haaren herbeigezogenen Skriptsprache anfangen kann..

Da sind mir die vergleichsweiße kleinen Unebenheiten in PHP wesentlich lieber..

Wie kann man als mehr oder weniger fortgeschrittener Programmierer diese Sprache überhaupt aushalten?

Ja klar, für Anfänger ist das was schönes: Wenig Syntax zu lernen, Programme sind schnell gebschrieben, etc.

Aber ich fange langsam an diese Inkonsistenz und Verwirrung die offensichtlich tief in der Sprache liegt nicht mehr auszuhalten... Da schreibe ich lieber doppelt so lange an einem C++ Programm, das dann am Ende nicht wie irgentein Brei aussieht..

Nun meine Frage: War das ganze ein schlechter Scherz von Guido?
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Ich schiebe mal meinen Trollverdacht bei Seite und interessiere mich für dieses Skript in dem du globale Variablen gebraucht hast.

Ich habe in den letzten Jahren ziehmlich viel Python Code geschrieben und global kam da noch nicht einmal vor.
Die Gültigkeitsbereiche von Variablennamen sind meiner Meinung nach super umgesetzt. Ich würde mir wünschen das man in C++ immer so konsequent arbeiten würde aber leider mache ich da immer wieder die Erfahrung, dass ein Stilmittel wie Namespaces nur sehr Sparsam genutzt wird.

Die Fehlermeldungen nennt man Tracebacks und auch das ist als Feature zu verstehen weil man die Strecke vom Aufrufer bis zu dem Punkt zurück verfolgen kann an dem eine Exception aufgetreten ist.
Wen nur die Fehlermeldung interessiert, der muss einfach nur an das Ende gucken.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

orossum hat geschrieben: Was ist das für ein Wahnsinn mit Floating-Point-Berechnungen?
Was meinst Du da konkret?
Nun, das System ansich ist meiner Meinung nach schon vollkommend fehlkonzipiert. (Variablen können von innerhalb von Funktionen ausgelesen aber nicht verändert werden, global, etc)
Kapiere ich nicht? Kannst Du da mal ein kurzes Beispiel gebeben bitte?
Ich verstehe nicht ganz wie man, wenn man kein kompletter Anfänger mehr ist, noch irgendwas mit dieser an den haaren herbeigezogenen Skriptsprache anfangen kann..
Das folgende Zitat (bei Dir davor stehende ;-) ) zeigt deutlich, dass Du prinzipielle Konzepte noch nicht verstanden hast (die im übrigen nicht wirklich etwas Python spezifisches sind, sondern in Java, C und C++ durchaus genauso gehandhabt werden - ist das bei Rubys Blöcken denn wirklich anders?)
Insofern finde ich es etwas vermessen, sich dermaßen zu prodzieren und über den Afänger Status zu stellen!
Dann, als ich versucht habe innerhalb einer Funktion, welche wiederum von einer anderen Funktion aufgerufen wird, auf außerhalb definierte Variablen zuzugreifen, bin ich dann nach langem überlegen draufgekommen, dass ich aus irgendeinen unerfindlichen Grund nun alle Variablen mit global angeben muss um sie aufzurufen, warum auch immer.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Deine eigentliche Frage ist noch nicht beantwortet:
orossum hat geschrieben:Nun meine Frage: War das ganze ein schlechter Scherz von Guido?
Nein.

Aber, was soll's: Nimm einfach weiter C++ und PHP und sei glücklich damit.
BlackJack

@orossum: Ich habe keine Ahnung wie sich Python für Programmieranfänger anfühlt, aber ich fand die Sprache nach einigen anderen, in denen ich schon programmiert habe, als sehr befreiend und vor allem *benutzbar*.

Wenn Du was gegen Python-Tracebacks hast, verwendest Du in C++ wahrscheinlich keine Templates. *Die* Fehlermeldungen sind echt grausam. :-)

Falls Du mit den Fliesskommazahlen sowas hier meinst:

Code: Alles auswählen

In [115]: 0.1
Out[115]: 0.10000000000000001
C++ und Ruby sind da genauso ungenau, das liegt einfach in der Natur von Fliesskommazahlen, sie zeigens bloss normalerweise nicht bis zu dieser (Un)Genauigkeit an. Du wirst also anscheinend lieber belogen. ;-)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

numerix hat geschrieben:Aber, was soll's: Nimm einfach weiter C++ und PHP und sei glücklich damit.
Was ja auch schon tief blicken lässt ... *schauder*
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

Mh... welch ein Eifer von einem Eiferer hier...

Ich muss sagen - PHP hat schon den einen oder anderen Vorteil gegenüber Python... lass mich überlegen:
Die Dokumentation auf PHP.net ist deutlich verständlicher/ausführlicher als die von docs.python.org
Es lässt sich auf fast jedem Hoster ohne Probleme verwenden...


Ansonsten muss ich sagen: Mir gefällt Python eigentlich recht gut, auch wenn ich selbst noch nicht ganz durchkomme - wie meine ganzen Threads zeigen...

Insbesondere wenn es dann Anfängt mit Qt und der erschlagenden Vielfalt an Funktionen - die oft noch schlechter Dokumentiert sind als Python selbst, und dann anfangen richtig kompliziert zu werden.
Aber mit einiger Hilfe und mit der Zeit wird die Dokumentation auch immer klarer...


lg,
...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

... hat geschrieben: Ich muss sagen - PHP hat schon den einen oder anderen Vorteil gegenüber Python... lass mich überlegen:
Die Dokumentation auf PHP.net ist deutlich verständlicher/ausführlicher als die von docs.python.org
Zum einen ist das eine rein persönliche Aussage (ich finde die Python Doc sehr gut lesbar und strukturiert!), zum anderen macht eine gute Beschreibung kaputtes Sprachdesign auch nicht wieder wett ;-)
Es lässt sich auf fast jedem Hoster ohne Probleme verwenden...
Ok, aber ist denn der Hoster wirklich das Hindernis, wenn man eine Webapplikation entwickelt? Im übrigen ist Python doch auch sehr stark verbreitet...
Insbesondere wenn es dann Anfängt mit Qt und der erschlagenden Vielfalt an Funktionen - die oft noch schlechter Dokumentiert sind als Python selbst, ...
Qt an sich hat nichts mit Python zu tun. Die Doku zu Qt habe ich zu meine C++ Zeiten immer als sehr gut empfunden - und jetzt mit PyQt auch noch ;-)
Sich über die mangelnde Qualität eines 3rd Party moduls auszulassen ist sicher wenig sinnvoll, da sich dort für wohl so ziemlich jede Sprache leicht ein Beispiel finden ließe ;-)
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

Hallo Hyperion,

Für einen Anfänger wie mich ist die Dokumentation einfach zu schwer.

Du hast für ein Modul eine Webpage.
Darin findest du alle Funktionen die zu diesem Modul gehören, und oft nur 3 - 5 Zeilen die die Funktion der Funktion beschreiben...
In der Ersten Zeile steht wie der Aufruf ist.
Was im Aufruf verlangt wird, muss man aus den Namensgebungen versuchen herauszuziehen, mit denen man als Anfänger nicht so vertraut ist.
Oft kommen diese Namen in der Beschreibung dann garnichtmehr vor.


Das Qt != Python ist, ist mir bewusst.
Dennoch - gerade wenn man sich dann noch mit diesen Modulen beschäftigt, ist es sehr schwer.

Ansonsten gefällt mir die Sprache sehr gut, weil man den Text gut verstehen kann... zumeist.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hyperion hat geschrieben:Qt an sich hat nichts mit Python zu tun. Die Doku zu Qt habe ich zu meine C++ Zeiten immer als sehr gut empfunden - und jetzt mit PyQt auch noch ;-)
Im allgemeinen stimmt das ja, die Qt Dokumentation ist wirklich sehr gut, aber die PyQt Dokumentation hat leider wenig bis gar keine Python Beispiele, sondern schiebt das auf die Qt und damit C++ Beispiele ab. Sie ist also nur eingeschraenkt nutzbar, wenn man kein C++ kennt :roll:
yashi
User
Beiträge: 12
Registriert: Donnerstag 18. Februar 2010, 20:23

ich kann ja mal meinen senf dazu geben...als totaler py anfänger

ich beschäftige mich jetzt seit knapp 5h mit python und ich muss sagen, ich finde es richtig dass sowas nicht an unis unterrichtet wird... vom programmierer wird einfach zu wenig gefordert...das fängt schon im bei den variablen an...

Ich habe im studium mit C angefangen und was man da alles ggü. python beachten muss O.O holla ^^ und mir kam es vorher nie schlimm vor...aber man lernt dadurch halt was wirklich(mehr oder weniger) abgeht..
wenn man sich dann mal an assember ransetzt merkt man erstmal das man sich ja in C auch um nichts kümmern muss ^^

ansich gefällt mir die sprache aber ganz gut...soviel wie man in 5h davon sehen kann :P
was mir allerdings sauer aufstößt sind diese tabulatoren .... das geht imo garnicht das einrückungen einfluss auf den code haben :X
ich sitze davor und denke mir öfter mal OMG und dann wieder nein du musst offen für neues sein :P aber es fällt mir teilweise doch schwer

was passiert wenn ich merke das ich um mein komplettes projekt noch eine schleife setzen muss? muss ich dann 100zeilen einrücken? xD
klar dem guten programmieren passiert sowas natürlich nicht :P

warum will ich das überhaupt lernen?
ganz einfach. ich brauche noch etwas womit ich schnell kleinere pc programme zusammen dengeln kann, die auf hardware schnittstellen zugreifen können rs232 oä.
zum zwecke der kommunikation mit µCs
GUI will ich nicht und brauche ich nicht.

bin ich mit dem aufgabenbereich überhaupt mit python richtig? sonstige linux scripte schreiben zu können ist natürlich auch ein nicht unwichtiger plus punkt!
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Wenn ich ehrlich bin, ich wünschte die meisten Projekte wären so toll dokumentiert wie Python... oder Django oder so. Wenn man sich Projekte bei PHP anschaut ... Grausig. Hab bisher wenig gute PHP Dokumentation gelesen. Sie geht selten über API-Docs hinaus und wenn, dann ist sie nur voll mit Beispielen. Beispiele sind ... für mich zumindest, nicht alles. Sie decken immer nur einen Teil der Möglichkeiten ab.

Also, trolls.
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

yashi hat geschrieben:ich kann ja mal meinen senf dazu geben...als totaler py anfänger

ich beschäftige mich jetzt seit knapp 5h mit python und ich muss sagen, ich finde es richtig dass sowas nicht an unis unterrichtet wird... vom programmierer wird einfach zu wenig gefordert...das fängt schon im bei den variablen an...
und geht wo weiter? Auch andere Sprachen nehmen einem das ab...
Und am Ende ist das garnicht so schlimm...
Ein String ist immer mit '', ein int hat nie eine Kommastelle, und ein Float immer...

Was ist da so schlimm dran das ich nicht int foo = 0; schreiben muss,
sondern nur foo = 0?
Ich habe im studium mit C angefangen und was man da alles ggü. python beachten muss O.O holla ^^ und mir kam es vorher nie schlimm vor...aber man lernt dadurch halt was wirklich(mehr oder weniger) abgeht..
wenn man sich dann mal an assember ransetzt merkt man erstmal das man sich ja in C auch um nichts kümmern muss ^^
Ich finde es nicht schlimm das einiges Abgenommen wird. Am Ende lässt sich, wenn einem was nicht passt, das ja auch Aufbohren...
ansich gefällt mir die sprache aber ganz gut...soviel wie man in 5h davon sehen kann :P
was mir allerdings sauer aufstößt sind diese tabulatoren .... das geht imo garnicht das einrückungen einfluss auf den code haben :X
ich sitze davor und denke mir öfter mal OMG und dann wieder nein du musst offen für neues sein :P aber es fällt mir teilweise doch schwer
Das ist wirklich schade, das es das bei C++ nicht auch macht... Dafür diese ganzen unnötigen ; am Ende... pf...
was passiert wenn ich merke das ich um mein komplettes projekt noch eine schleife setzen muss? muss ich dann 100zeilen einrücken? xD
klar dem guten programmieren passiert sowas natürlich nicht :P
pydee öffnen, Block markieren, Tab drücken. -.- :D


@BlackVivi
Es ging mir nicht um die Projekte - da findest du auch bei Python gute und schlechte...
Es ging mir um die Basis. Also einfach docs.python.org vs php.net.

Für mich gewinnt da eindeutig php.net...
Für jemanden der mehr drinnen ist, ist bestimmt die python-doku besser, weil halt vieles als bekannt vorausgesetzt wird, und wenn das bekannt ist, also unnötig vom wesentlichen Ablenkt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

yashi hat geschrieben: ich beschäftige mich jetzt seit knapp 5h mit python und ich muss sagen, ich finde es richtig dass sowas nicht an unis unterrichtet wird... vom programmierer wird einfach zu wenig gefordert...das fängt schon im bei den variablen an...
Habe ich hier Ironie überlesen? Wenn nein: Gratulation, Leute wie Du sollten dringend die Lehrpläne überwachen; Du bist ja ein Zeitgenie und könntest dann Zertifikate sher viel schneller (und natürlich fundierter) erstellen, als diese langwierigen ARSIN-Prozesse... :roll:

Zum Inhalt: Eine Sprache ist also gut, wenn man gefordert wird? Ok, dann los, programmiere in Brainfuck oder Befunge...
was passiert wenn ich merke das ich um mein komplettes projekt noch eine schleife setzen muss? muss ich dann 100zeilen einrücken? xD
100 Zeilen sind natürlich schon viel für einen Block, aber prinzipiell: Wwas wäre daran ein Problem?
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

Juhu - Esoterische Sprachen an die Macht...
Ich finde ja diese Scrabblesprache ganz toll...

Und im ernst - immerhin ist mit so einer Sprache mehr anzufangen als diese Lego-Mindstorm-Roboter mit ihrer Graphischen Sprache...

Blamabel, wenn dann ein Nichtstudent die Studenten im Parkour schlägt, ob wohl er das zum ersten mal macht...
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

... hat geschrieben:@BlackVivi
Es ging mir nicht um die Projekte - da findest du auch bei Python gute und schlechte...
Es ging mir um die Basis. Also einfach docs.python.org vs php.net.
Mir ging es auch um die Basis.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

yashi hat geschrieben:was passiert wenn ich merke das ich um mein komplettes projekt noch eine schleife setzen muss? muss ich dann 100zeilen einrücken? xD
klar dem guten programmieren passiert sowas natürlich nicht :P
Shift+v, 100, > und schon sind die nächsten 100 Zeilen eingerückt. Man könnte natürlich auch versuchen guten Code zu schreiben und von Funktionen und Klassen gebrauch zu machen.
yashi
User
Beiträge: 12
Registriert: Donnerstag 18. Februar 2010, 20:23

@Hyperion
ruhig an ....

>100 Zeilen sind natürlich schon viel für einen Block, aber prinzipiell: Wwas wäre daran ein >Problem?

war nur ein beispiel...

könnte mir nur vorstellen das es irgendwann mal arg horizontal lastig wird...
klar hat auch seine vorteile ein programmierer ist an einen designstil gebunden somit sieht alles gleich aus.
wie gesagt ich bin noch gaaaanz am anfang und wage es daher noch nicht wirklich zu urteilen. das ist meine aktuelle wahrnehmung!


>Habe ich hier Ironie überlesen? Wenn nein: Gratulation, Leute wie Du sollten dringend die >Lehrpläne überwachen; Du bist ja ein Zeitgenie und könntest dann Zertifikate sher viel >schneller (und natürlich fundierter) erstellen, als diese langwierigen ARSIN-Prozesse...
ich vermute du hast nicht studiert, oder?
jedenfalls sehe ich den sinn eines studiums nicht darin dinge abzutippen sondern zuverstehen was hinter der kulisse geschieht.
einfacher kann man dann immer noch. extrem beispiele sind da wohl physik und mathe vorlesungen praxis bezug praktisch gleich null.
man bekommt das Warum vermittelt, sozusagen den quellcode. Kompilieren muss dann jeder selber :P
aber das ist für jemanden der das warum versteht kein problem...normalerweise

aus dem grund finde ich C eigentlich super als anfang ( wenn man einen lehrer hat sonst mag es hart sein)
Assembler ist imo blöd zum anfangen, da die befehle prozessor abhängig sind...und man bei einem anderen system total im regen steht

zum thema doku und python, ich bin begeistert ^ ^ man findet nicht nur quantität sondern auch qualität :o
...
User
Beiträge: 116
Registriert: Mittwoch 23. Dezember 2009, 20:22

Ich finde es wichtig zunächst die Grundlage zu lernen, wie man etwas macht, wie man Denken sollte usw... z.B. Objektorientiert zu Programmieren.
Wie man an ein Problem ran geht...

Da sind so Sachen wie C++ einfach zu sehr Ablenkend.

Später kann man dann unter die Haube schauen, um einen tieferen Einblick zu erhalten.

Zudem sind die kurzfristigen Erfolge eine gute Motivation.

Zum Thema Doku: Man kann damit leben. Die meisten die sie so toll finden sind aber keine Neuling in Python oder Programmieren allgemein.
Das ist bei mir anders. Ich denke, das sie deshalb für mich ruhig ausführlicher hätte sein können.
Und wo wir schon dabei sind: Das beste Doku-Projekt irgendeiner Sprache ist selfhtml... Aber es muss ja nicht alles Perfekt sein...
yashi
User
Beiträge: 12
Registriert: Donnerstag 18. Februar 2010, 20:23

noch ausführlicher?

ich arbeite gerade byteofpython durch :/ das ist doch "extremst" ausführlich oder nicht?

die motivation erzeugenden erfolge sind natürlich toll bzw. notwendig, wenn man nicht durchs studium oä. gezwungen ist die sprache zulernen.
Antworten