Hilfreiche Python-Tricks?
Hallo! Ich bin neu in der Szene des programmierens/hackens und habe mich für Python entschieden. Hat wer irgendwelche interessanten Pythoncommands für Anfänger?
4 Antworten
Ja klar.
Mit print kannst du bspw. erste Ergebnisse auf der Konsole ausgeben lassen oder mit int, float, str explizite Typecasts vornehmen.
Die Funktion help bietet sogar ein integriertes Hilfesystem um Informationen zu Funktionen, Modulen, u.ä. zu bekommen, ohne explizit in der Dokumentation nachschlagen zu müssen.
Learning by doing. :-) Fang einfach mit irgendwelchen (nicht zu komplizierten) Projekten an und gewöhne dir an, alles, was du nicht weißt, zu googeln ("python read string from terminal", "python round number", "python apply command to each element in list", ...). Das ist m. E. der beste Weg, sich zurechtzufinden, und man muss keine langweiligen Tutorials durcharbeiten.
Deine Frage ist Schwachsinn.
Arbeite einfach das offizielle Tutorial auf der Python-Website von vorne bis hinten durch, und lerne danach große Teile der API-Docs auswendig.
Würden das alle Python-Entwickler so machen, gäbe es weniger Fragen auf Kindergarten-Niveau im Netz, die immer wieder und wieder und wieder gestellt werden.
Also lerne Python bitte richtig, oder gar nicht. Und lass den Begriff Hacking daraus!
Ernsthaft, 99% aller Fragen zu Python hier auf GF sind Popelkram, der nicht gefragt werden müsste, wenn die Leute einfach nur das Tutorial auf python.org durchgearbeitet hätten.
Und zu den API-Docs: Mir persönlich fällt immer auf, dass ich für Probleme vor allem in C++, Java und Python meistens einen Einzeiler parat habe, wo andere zich Zeilen an Code zusammenpfuschen, der in Grenzfällen nicht gut funktioniert und natürlich auch gar nicht getesttet wurde.
Der Grund dafür ist, dass es für Entwickler unmöglich ist, die API-Docs bei einem auftretenden Problem zu durchsuchen, weil gar nicht klar ist, WONACH gesucht werden soll.
Und ich habe es auch geschafft, die STL, die Javadocs und die Python-Standardbibliothek größtenteils zu lernen, oder zumindest soweit zu kennen, dass ich sofort weiß, wonach ich suchen muss, was ich nicht oft tue.
Es wäre schön, wenn die Leute wenigstens das itertools-Modul kennen würden ... tun sie aber nicht. Weil die meisten es noch nicht mal überflogen haben.
Deshalb findet man in den meisten Projekten auch total ineffizienten und einfach nur schlechten Codebloat, wo eine einzige Standardfunktion gereiccht hätte.
Ja, die API-Docs sind viel zu lesen. Hat auch keiner etwas anderes behauptet. Aber suggeriere bitte nicht, dass es "unmöglich" ist, ist es nämlich bei weitem nicht.
Bei Python ist man da in zwei Wochen durch, wenn man sich jeden Nachmittag hinsetzt, und bei Java nach einem Monat.
Damit spart man ungeheuer viel Zeit! Denn ich muss nicht den ganzen Tag bei StackOverlfow rumhängen und nach vorgepfuschten Fertiglösungen suchen, sondern kann meinen Code aus dem Kopf tippen, einfach weil ich die Bbliotheken kenne.
Ich denke, dass Klischee vom Entwickler, der die meiste Zeit bei Google und SO nach Lösungen sucht, trifft nicht auf wirkliche Profis zu.
Falls ich doch mal auf SO nachgucke, bin ich iMMER enttäuscht, weil die Lösungen da i. d. R. schlechter als alles sind, was ich mir selbst ausgedacht habe.
Besonders lustig ist immer, wenn auf SO alle aufgeben und schreiben, XYZ sei unmöglich, und ich mache es dann einfach schnell mit ein paar Zeilen Code.
Fazit: Richtig gute Entwickler sind faul, und lernen deshalb große API-Teile auswendig! Deshalb können sie produktiver und schneeller sein, als ihre Kollegen, die erstmal Google anwerfen müssen.
Ernsthaft, hast du noch nie ein 500 Seiten starkes Buch gelesen? Umfangreicher ist die Python API auch nicht! Und wenn du dafür einen Monat Zeit hast, erzähl mir nicht, dass da nicht das meiste hängen bleibt, wenn man nicht gerade auf den Kopf gefallen ist.
Also bitte .... lern die API deiner Sprache(n) doch einfach mal. Fang mit den Klassen bei A an, und höre bei Z auf. Das ist nämlich ganz und gar KEIN Ding der Unmöglichkeit. Nur am Ende programmierst du um den Faktor 10 schneller UND besser.
Die Zeitersprarnis dadurch ist enorm. Also mach dir doch nicht soviel unnötige Arbeit, und sei doch mal ruhig etwas fauler! Es lohnt sich! :)
Ernsthaft, 99% aller Fragen zu Python hier auf GF sind Popelkram, der nicht gefragt werden müsste, wenn die Leute einfach nur das Tutorial auf python.org durchgearbeitet hätten.
Natürlich ist Anfängerkram für Fortgeschrittene einfach. Aber für Anfänger ist es das nicht. Die Probleme dabei haben, die Logik zu verstehen.
Mir persönlich fällt immer auf, dass ich für Probleme vor allem in C++, Java und Python meistens einen Einzeiler parat habe, wo andere zich Zeilen an Code zusammenpfuschen, der in Grenzfällen nicht gut funktioniert und natürlich auch gar nicht getesttet wurde.
Bei den Fragen geht es nicht darum was du kannst, sondern Anfängern zu helfen selber was zu können.
Und ich kenne einige, die Einzeiler vermeiden, für die Lesbarkeit.
Der Grund dafür ist, dass es für Entwickler unmöglich ist, die API-Docs bei einem auftretenden Problem zu durchsuchen, weil gar nicht klar ist, WONACH gesucht werden soll.
Und darauf kannst du dann hinweisen.
Dafür muss man nicht die Docs größtenteils auswendig kennen, sondern nur, dass es sie gibt.
Ja, die API-Docs sind viel zu lesen. Hat auch keiner etwas anderes behauptet. Aber suggeriere bitte nicht, dass es "unmöglich" ist, ist es nämlich bei weitem nicht.
Du legst mir Wörter in den Mund, die ich nicht benutzt habe.
Ich kann auch auswendig lernen, wo jede Datei auf meinem Computer ist. Oder ich lerne die Suchfunktion zu benutzen.
Deshalb findet man in den meisten Projekten auch total ineffizienten und einfach nur schlechten Codebloat, wo eine einzige Standardfunktion gereiccht hätte.
Wir reden über Anfänger. Ineffizienter Code ist normal.
Bei Python ist man da in zwei Wochen durch, wenn man sich jeden Nachmittag hinsetzt, und bei Java nach einem Monat.
Du schreibst mir dann nach 1,5 Monaten den Großteil der javadocs und der python docs auswendig auf?
Ich denke, dass Klischee vom Entwickler, der die meiste Zeit bei Google und SO nach Lösungen sucht, trifft nicht auf wirkliche Profis zu.
Wenn ich bei mir in der Firma Senior-Devs frage, wie man etwas macht, googeln die das häufig einfach. Man weiß wie es geht, aber wie genau das war, das kann man einfach nicht alles auswendig kennen.
Besonders lustig ist immer, wenn auf SO alle aufgeben und schreiben, XYZ sei unmöglich, und ich mache es dann einfach schnell mit ein paar Zeilen Code.
Klingt ein bisschen wie vom hohen Ross.
Falls ich doch mal auf SO nachgucke, bin ich iMMER enttäuscht, weil die Lösungen da i. d. R. schlechter als alles sind, was ich mir selbst ausgedacht habe.
Ok das klingt jetzt sehr arrogant.
Sags mir wenn ich falsch liege, aber du scheinst nicht professioneller Entwickler zu sein (oder ansonsten weit am Anfang).
Was du da empfiehlst geht für das Wissen eines Hobbyentwicklers absolut. Aber sobald du ins professionelle Umfeld kommst, wird das so nichts. Programmieren lernt man nicht durch auswendig lernen, du kannst nicht alles selber machen, du bist nicht der Beste und du hast nicht wirklich eine Vorstellung wie die Entwicklung von professioneller Software abläuft. Nicht böse gemeint.
Das Problem ist, dass wenn man außerordentlich gut ist, und alle anderen nur Mittelmaß, dass man dann zwangsweise als "arrogant" empfunden wird.
Aber egal, wir reden aneinander vorbei. Allein dein Beispiel mit der Suchfunktion des Dateisystems.
Nochmal: Wenn du nicht weißt, wie du an ein Problem heran gehen kannst, weißt du auch nicht, wonach du in den API-Docs suchen sollst.
Was hier bei GF unfassbar oft gefragt wird ist sinngemäß, wie man die n häufigsten Zeichen eines Strings ausgeben kann:
from collections import Counter as C
print(C('foo bar baz qux').most_common(3))
Sag mir nicht, dass das einen Anfänger überfordern würde.
Allgemein herrscht unter Entwicklern der Grundsatz, dass Code so einfach sein muss, dass er von jedem Anfänger versstanden werden kann.
Das ist totaler BULLSHIT und es wäre eine Katastrophe, wenn dieser Grundsatz auch in anderen Branchen über alles gestellt werden würde. Denk mal drüber nach!
Bäcker? Gibt nur noch Hefebrötchen, weil alles andere den Gesellen überfordern würde.
Chirurg? Gibt keine Bypass-Operationen mehr, da für die Frischlinge von der Uni zu kompliziert.
Polizei? Nur noch alten Leuten über die Straße helfen, aber keine Randalierer mehr verhaften, da für die Azubis zu anspruchsvoll.
Ernsthaft, außer in der Softwareentwicklung wird "Anfängerniveau" nirgends so hoch gehalten.
Normalerweise wird man zum Fachmann, weil man etwas besonderes kann, was Anfänger eben bei weitem überfordert und Fähigkeiten hat, für die man Jahre oder Jahrzehnte lernen muss.
Außer bei den Entwicklern: Nee, lassen wir die C++17 Features mal weg! Die verkürzen den Code und die Übesichtlichkeit zwar enorm und machen ihn nebenbei effizienter und sicherer, aaaaaber dann müssten die Jungentwickler sich ja hinsetzen und ne viertel Stunde neue Syntax büffeln.
In keiner Branche ist die Qualität durchgängig so mieserabel, wie in der Softwareentwicklung.
Und auch wenn ich das ursprünglich nicht sagen wollte, ich bin Chef einer Softwarebude, seit Jahrzehnten, und ich war hier früher mit dem Nicknamen TeeTier unterwegs. Vielleicht erinnerst du dich.
Und es hat nichts mit Arroganz zu tun, wenn man Anfängern den wichtigsten Hinweis gibt, um rasend schnell wirklich gut werden zu können, ohne einen Umweg über Jahrzehnte zu nehmen und Zeit zu verplempern:
Nämlich im Falle von Python das offizielle Tutorial (das den Umfang eines größeren Lehrbuches hat) durchzuarbeiten, und danach die API binnen weniger Wochen größtenteils auswendig zu lernen.
Und wenn du immer noch glaubst, dass das nicht geht - was ich deinen Worten entnehme - dann setz dich JETZT mal ran, und lese dir die Seite zu "urllib.robotparser" durch, miss die Zeit, wie lange du dafür benötigst, und teste das gelernte Übermorgen nochmal, bzw. wie viel du behalten hast.
Und dann erzähl mir nochmal, man kann die API Docs nicht größtenteils auswendig lernen.
Und um nochmal zu den itertools zu kommen: Wenn du nicht weißt, wie du eine Sequenz an Daten permutieren kannst, dann nützt dir die Suchfunktion der Python-API-Docs überhaupt nichts, weil du gar nicht weißt, WONACH du suchen sollst, bzw. dass du ÜBERHAUPT danach suchen kannst.
Die Aussage aus dem vorherigen Absatz findet sich sinngemäß in der gleichen Form in den Büchern "Weniger Schlecht Programmieren", "Clean Code" und "The Art of Beautiful Code".
So ziemlich in allen Büchern für Programmierprofis (von Herb Sutter usw.) wird immer geraten, sich die APIs der jeweiligen Sprache durchzulesen. Dass dabei das meistte hängen bleibt, ist ein guter Nebeneffekt, und selbst, wenn man am Ende nur weiß, DASS man nach etwas suchen kann, und im besten Falle WAS das genau ist.
Wie du siehst, bin ich nicht der einzige, der so arrogant ist. ;)
PS: Ab einem gewissen Level sind Antworten auf SO einfach nicht mehr gut genug, im Vergleich zu Eigenentwicklungen! Da kann ich aber nix für! Und auch DAS sehen andere berühmte Hacker ganz genauso wie ich.
Irgendwann ist man nun mal an einem Punkt angelangt, an dem einem SO nichts mehr bieten kann.
Und dafür muss ich mich auch nicht entschuldigen, weil ich - im Gegensatz zu den anderen - wirklich etwas gelernt und viel Zeit investiert habe, um Dinge zu tun, die für anddere eben schlicht nicht möglich sind.
Wenn jemand mehrere Stunden über Jahre hinweg etwas lernt, ist er logischerweise viel besser als jemand, der das nicht getan hat.
Und nochmal, dafür muss ich mich nicht entschuldigen. Auch dann nicht, wenn es arrogant klingen mag, was es nicht ist.
Ach so, und ... ich habe selbst Python an Schulen gelehrt, und ich weiß deshalb, dass Anfängercode NICHT unbedingt ineffizient und unsauber sein muss. Es geht auch von Anfang an ordentlich, einfach nur indem man sich strikt an das python.org-Tutorial hält und durcharbeitet.
Schönen Abend noch! :)
Das Problem ist, dass wenn man außerordentlich gut ist, und alle anderen nur Mittelmaß, dass man dann zwangsweise als "arrogant" empfunden wird.
Und auch DAS sehen andere berühmte Hacker ganz genauso wie ich.
Also entweder du bist ein guter Troll oder du glaubst das echt.
Du versuchst Code extra kompliziert zu machen nur um danach stolz drauf zu sein, dass man ihn nicht mehr versteht?
Alleine das du glaubst das es Entwicklern am Syntax mangeln würde.
Nein, sage ich doch gar nicht!
Man sollte nurerwarten dürfen, dass Entwickler annähernd 100% der Syntax kennen sollten, und man sich nicht künstlich auf vielleicht 20% beschränken sollte, weil das evtl. zukünftige Entwickler überfordern könnte.
Man wird ja wohl von Entwicklern erwarten dürfen, die Syntax der eigenen Sprache zu kennen.
Nur weil der Geselle zu blöd ist eine Bandschleifmaschine zu bedienen, wird der Meister die Tür nicht mit der Hand schleifen.
Mein Code ist immer sauber, effizient, sicher, defensiv und wartbar. Und wenn da einer nicht mitkommt, dann hat er sich verdammt nochmal weiterzubilden, zumal ich wirklich nichts Exotisches, sondern ausschließlich Standard-Sprachfeatures einsetze, die selbst im dünnsten Lehrbuch durchgekaut werden.
Warum soll ich so etwas schreiben ...
const auto t { foo() };
bar(get<0>(t), get<1>(t));
qux(get<2>(t));
... wenn es auch ordentlicher, effizienter und ohne Seiteneffekte so geht:
const auto [a, b, c] { foo() };
bar(a, b);
qux(c);
Diese Sprachreatures wurden nicht ohne Grund eingeführt!
Warum muss der Code so aussehen, wie im ersteren Beispiel? Damit den in 10 Jahren auch noch der Praktikant lesen kann? Wie wärs damit den Praktikanten in 10 Jahren zu feuern und durch einen anderen Praktikanten zu ersetzen, der lernwillig ist, und sich mal 5 Minuten hinsetzt um zu verstehen, wie "Structured Bindings" funktionieren.
Da bietet einem die Sprache schon solch mächtige Werkzeuge, und alles was man tun muss, ist ein bisschen lesen, aber neeee ... damit könnte man die Prinzesschen unter den Entwicklern ja überfordern, also erlauben wir nur noch eine Hand voll Sprachfeatures in den Guidelines.
Fakt ist, dass der einzige Grund, den Einsatz von höheren Sprachfeatures verhindert, unfähige Entwickler sind, die lernfaul sind, und auf die man in vorauseilendem Gehorsam Rücksicht nehmen will.
Stell dir das mal bei Romanautoren vor! Ab jetzt nur noch "Einfache Sprache", weil es ja auch Leser gibt, die nicht die hellsten sind.
Damit wären ganze Gebiete der Lyrik, Belletristik, uvm. einfach nur tot.
Warum können wir uns nicht einfach darauf einigen, dass man Softwareentwickler nicht wie geistig eingeschränkte Idioten, sondern einfach wie Erwachsene behandel? Ist das zu viel verlangt?
In meiner Firma funktioniert das jedenfalls seit über 20 Jahren. Meine Entwickler haben keine Probleme damit, sich die neuesten C++20 Features rein zu ziehen. Und unser Code ist alles andere als "schwer lesbar" oder "schlecht wartbar". Im Gegeneil.
Code kann kurz UND verständlich sein! Wenn ich Seienweise alles mit herkömmlichen Sprachmitteln ausformuliere, wird der Code dadurch NICHT leichter verständlich!
Kurz bedeutet nicht kryptisch. Und du verwechselst "primitiv" mit "einfach". Mein Code ist "einfach", aber nicht "primitiv"!
Das ist ein Unterschied! :)
Wenn du einen Entwickler einstellst der Probleme mit Syntax hat, hast du den Falschen eingestellt.
Aber ich schätze mal wir Normalsterblichen sind einfach zu doof für dich.
Man denke an:
Und auch DAS sehen andere berühmte Hacker ganz genauso wie ich.
Wer sich selber als berühmter Hacker bezeichnet ist sehr wahrscheinlich genau das eben nicht.
Der Thread hier ist über blutige Anfänger, die die ersten Sprachelemente lernen indem sie einfach mal probieren. Learning by doing. Und du erzählst mir, dass du (der hochbegabte berühmte Hacker der eine eingebe Firma leitet) ja einen Entwickler der Syntax nicht beherrscht rausschmeißen würdest.
Und empfiehlst, anstatt durch probieren zu lernen doch einfach mal vorher eine 500 Seiten lange Doku nicht nur zu lesen sondern auswendig zu lernen.
Aber natürlich ist das Problem, dass du halt so außerordentlich gut bist und dich deswegen die andren als arrogant empfinden. Denn du weißt immer eine bessere Lösung.
Aber so ist es nunmal.
https://asmartbear-wpengine.netdna-ssl.com/wp-content/uploads/2017/04/knowledge-curve.png
Jetzt häng dich doch nicht an diesem einen - etwas unglücklich formulierten - Satz auf!
Natürlich will ich damit nicht sagen, dass ich ein "berühmter Hacker" bin!
Ich wollte sagen, dass es berühmte Hacker auf der Wellt gibt (z. B. Tavis Ormandy oder Alan Cox), die sich zu dem Thema ähnlich geäußert haben, wie ich. Mehr nicht!
Also versuche bitte nicht absichtlich mich falsch zu verstehen.
Und zum Thema "Probleme mit Syntax": Frag mal unter Java-Kollegen, ob sie "Try-With-Ressources" kennen und schon mal gesehen haben. Haben die meisten nämlich nicht. Genauso wie die meisten C++ler keine Methoden definieren können, die nur aufgerufen werden, wenn das Objekt ein RValue oder RValue ist.
Das sind zwei Elementare Punkte, die in jedem besseren Lehrbuch erklärt werden. Kann aber kaum jemand. Weil kaum jemand seine Programmiersprach(en) konsequent und systematisch lernt, sondern nur mal ab und zu ein bisschen frickelt.
Und was ist dein Problem mit den 500 Seiten? Im Studium liest du locker das 20fache davon. Minimum. Warum soll das auf einmal so schlimm sein, nur weil es jetzt API-Docs sind? Ich kann deine Angst davor einfach absolut nicht nachvollziehen.
Hast du mal die Seite von "urllib.robotparser" gelesen und die Zeit gestoppt? Ging schnell, oder? Und ganz unbewusst hast du dir das meiste davon gemerk, oder? Na, sowas ...
Protipp: Das ist mit der restlichen API auch nicht anders!
Ach so, und ... natürlich empfehle ich, statt "einfach mal durch probieren zu lernen" ein paar hundert Seiten zu lesen.
Das nennt man LERNEN! Wo soll das denn bitte nicht so sein?
Du lernst Japanisch nur durch systematisches Lernen. Das gleiche gilt für Mathematik, alle Naturwissenschaften, Jura, Medizin, alles, wirklich ALLES.
Warum wird bei "Programmieren" immer so eine Ausnahme gemacht? Es ist NICHTS anderes! Natürlich sollte man das gelesene sofort nebenbei am Rechner umsetzen um es zu festigen, aber wer sich "Programmierer" nennen will, und darin auch gut sein will, der kommt doch überhaupt nicht drum herum, einige zich Bücher zu inhalieren und teilweise auch mehrfach zu lesen.
Zugegeben, die meisteen Programmierer sind Pfuscher, und deshalb ist der größte Teil der Software auch Kacke, aber es gibt auch Ausnahmen!
Warum gibt es bei JEDEM Windows Update Probleme? Warum packt Apple es nicht, funktionierende Patches zu veröffentlichen und empfiehlt eine Neuinstallation bei Problemen? Warum haben wir nicht schon seit 2 Monaten eine sichere und datenschutzrechtlich unbedenkliche Corona-App?
Weil die meisten Software-Entwickler eben einfach mieserabel sind, und denken, sie müssen in Watte gepackt werden und bloß nichts dazu lernen.
Warum hat sich Fuzzing noch nicht flächendeckend während des Build- und Testprozesses einbebürgert? Warum gibt es im Jahre 2020 fast nur GUI-Software, die nicht mit High-DPI Displays umgehen kann.
Warum haben wir sei Jahrzehnten Probleme mit Kodierungen und Fehlern bei deren Umwandlung? Warum wird sprintf() IMMER NOCH eingesetzt?
Das alles kratzt nur an der Oberfläche und ist ein Symptom für ein Geschwür in der Softwareentwicklung: Pfusch.
Und jetzt spreche ICH dieses Problem an, gebe Ratschläge, wie ein Anfänger den ganzen Mist umgehen kann um von Anfang an richtig gut sein zu können, und dann kommst DU und unterstellst mir Arroganz.
Ja, sorry, es tut mir unendlich leid, aber Tools zur statischen Codeanalyse und Memory-Leak-Checker finden leider keine richtigen Fehler in meinem Code. Schon seit Jahren nicht mehr.
Soll ich jetzt auf die Knie fallen, weil ich mir erdreistet habe, mich über Jahre intensiv so weiter zu bilden?
Ich mache Code-Audits bei anderen Firmen, und es ist bisher erst ein einziges mal vorgekommen, dass ich mir Dachte: "Wow, das ist wirklich guter Code".
Dann kommt erst mal lange gar nichts, und beim Rest denke ich mir oft nur: "Au, weia."
Du solltst mal die gleichen Erwartungen und Maßstäbe aus anderen Branchen an die Softwareentwicklung anlegen! Nirgendwo sonst gibt es soviel Bullshit, Bloat, Pfusch, Ineffizienz.
Und anstatt mir hier zu erklären, dass das nicht so ist, lerne doch bitte verdammt nochmal die API deiner Sprache größtenteils auswendig, einfach um besser zu werden.
Und hör auf, konsequent das Wort "größtenteils" bei der Aussage aus meinem vorigen Absatz zu ignorieren.
Wenn die meisten Leute die Docs zu java.util.String überflogen (nicht gelesen, nur überflogen!) hätten, dann gäbe es nicht so viele dumme Fragen zu split().
Und DAS kann man wirklich auch Anfängern zutrauen. API Docs sind nichts, was man erst lesen darf, wenn man den Rest der Sprache perfekt drauf hat.
Ich habe Schüler auch dabei begleitet, die das Tutorial von python.org gelesen haben, und die konnten nach drei Wochen eigene Generatoren schreiben und Klassen für die Verwendung mit "with" vorbereiten.
Also es geht wohl doch definitiv! Anfänger können definitiv von Anfang an recht guten Code schreiben. Geht natürlich nur, wenn man sie nicht wie Idioten behandelt. :)
Nachtrag: Hab mir gerade die Grafik hinter deinem Link angeschaut, und kann ich so unterschreiben.
Mehr noch: Ich habe GENAU DAS so gesagt, als ich hier noch als TeeTier unterwegs war.
Das Problem ist, dass du meine Aussagen "absolut" und nicht "relativ" siehst.
Natürlich weiß ich, dass ich fast nichts weiß und dass ich noch unendlich viel lernen muss. (Das habe ich als TeeTier sogar oft aus dem Buch "Weniger Schlecht Programmieren" zitiert.)
Was meine obigen Kommentare aber sagen wollen, ist etwas anderes: Ich bin besser, als die meisten anderen.
Ersteres ist eine absolute Aussage, letzteres eine relative. Beachte bitte diesen gravierenden Unterschied!
Ich kann besser sein, als die meisten anderen, und trotzdem erkannt haben, dass es noch lange lange nicht reicht.
Deine Grafik trifft übrigens nicht nur beim Programmieren den Nagel auf den Kopf, sondern bei allen anderen Gebieten auch.
Merke: Ich muss mich hier vor dir entschuldigen, wesentlich besser als der Durchschnitt zu sein, was ich daran erkenne, dass mein Code weniger Fehler hat (sage nicht ich, sondern sagen u. a. die Unittests!).
Wie gesagt, sorry dafür!
Aber dennoch weiß ich natürlich, dass da noch seeeehr viel Luft nach oben ist, was ich motivierend finde, und was mich beim Lernen antreibt.
Du schätzt micht scheinbar völlig falsch ein! ;)
Nehmen wir mal an, es gibt einen Savant, der 20 Sprachen der Welt flüssig sprechen kann. Wird dieser gefragt, wieviele Sprachen er spricht, wird er - aufgrund seiner Erfahrung - vielleicht 5 sagen, einfach weil ihm jedes mal Arroganz unterstellt wird, wenn er sich positiv zu seinen Fähigkeiten äußert. Aber das reicht garantiert auch schon aus, dass ihn andere veräppeln und nicht für voll nehmen werden. Wer spricht schon 5 Sprachen fließend? (Also Level C2!)
Wenn man also wirklich gut ist, sollte man schweigen? Oder sollten lieber die schweigen, die vorschnell "arrogant" rufen?
Ernsthaft: Fass dir bitte mal an die eigene Nase! Lern einfach die Python API-Docs auswendig, und programmiere 10 mal so schnell, oder lass es sein. Aber falls du es sein lässt, verkneife dir bitte jegliche Kritik an Leuten die das - im Gegensatz zu dir - durchgezogen haben.
Denn im Gegensatz etwas NICHT zu tun, ist es schon eine Leistung, sich zusammen zu reißen, und die Sache durch zu ziehen.
Mit deiner Nichtleistung kannst du niemanden hinterm Ofen hervor locken. Wenn mich aber jemand fragt, wie etwas geht, und ich muss nicht erst Tante Google fragen, sondern kann sofort einen Einzeiler sagen, der das Problem erschlägt, dann ist mir das nicht zugeflogen, sondern ich habe mich da vorher rein gekniet.
Etwas was du auch könntest ... aber nicht willst. Aus welchen Gründen auch immer.
Also lerne, und dann reden wir weiter, oder verkneife es dir, und schweige lieber. Nichtwissen ist nicht sonderlich beeindruckend. Echt!
Das ist so stark von der Realität entfernt, ich weiß gar nicht was ich sagen soll.
Du kannst nicht von jedem Hobbyprogrammierer das Level eines Studiums verlangen, damit er programmieren darf.
Damit nimmst du Leuten jegliche Motivation.
Ich kann deine Angst davor einfach absolut nicht nachvollziehen.
Meine Angst davor, die Python-docs auswendig zu lernen? Ich bin noch nicht mal Pythonentwicklerin. Ich arbeite im C#-Bereich als Beraterin.
Ach so, und ... natürlich empfehle ich, statt "einfach mal durch probieren zu lernen" ein paar hundert Seiten zu lesen.
Deine armen Schüler. So lernen Jugendliche und Kinder nicht.
Weil die meisten Software-Entwickler eben einfach mieserabel sind, und denken, sie müssen in Watte gepackt werden und bloß nichts dazu lernen.
Nicht böse gemeint, aber ich bin gerade echt froh nicht mit dir arbeiten zu müssen.
Wenn die meisten Leute die Docs zu java.util.String überflogen (nicht gelesen, nur überflogen!) hätten, dann gäbe es nicht so viele dumme Fragen zu split().
Und weil es nützlich ist die Docs zu strings durchzulesen, muss man auch über den ModelMBeanNotificationBroadcaster, PortableRemoteObjectDelegate und JFormattedTextField.AbstractFormatter Bescheid wissen und auswendig können.
Und das alles bevor du dein erstes eigenes Programm schreiben willst. Denn erst auswendig lernen was in der API steht.
Du hilfst Anfängern nicht, indem du ihnen einredest erst die Dokumentation zur Klasse RSAMultiPrimePrivateCrtKeySpec auswendig zulernen, bevor sie anfangen dürfen zu programmieren. Du kannst nicht mal voraussetzen das Anfänger wissen, was RSA überhaupt ist.
Um überhaupt die Begriffe in der Dokumentation alle verstehen zu können braucht man schon fast ein Informatikstudium.
Du hilfst keinem Anfänger, indem du ihn mit Fachbegriffen zuwirfst die er nicht versteht.
Man braucht Jahre an Theorie, um überhaupt alles erst zu verstehen...
Bevor du "Tricks" lernst, solltest du erstmal laufen lernen.
Komplett komische Vorstellung.
Dafür gibt es die Docs. Damit du es nicht auswendig lernen musst sondern nachschlagen kannst.
Oh der Gatekeeper von Python.