Python - Programmieraufgabe
- fat-lobyte
- Beiträge: 1398
- Registriert: Sa Jul 05, 2008 12:23 pm
- Wohnort: ::1
- Kontaktdaten:
Python - Programmieraufgabe
Hallo!
Ich habe schon viel von Python gehört, und auch unter Debian und vor allem Ubuntu ist es in regem Einsatz.
So wie ich das mitbekommen habe ist Python eine wirklich hübsche Skriptsprache, gut als Ergänzung zu C++ (manchmal doch ein Overkill...).
Jetzt habe ich mir vorgenommen diese Sprache zu lernen. Python Guru muss ich nicht sein, aber Quellcode lesen und gegebenenfalls auch mal selbst was schreiben können würd ich schon gern.
Tutorial find ich schon, da mach ich mir keine Sorgen. Was ich allerdings brauche ist ne gute Aufgabe, damit ich das richtig lerne.
Deswegen bitte ich um ein bisschen Hilfe für mein vollkommen unkreatives Gehirn:
fällt jemandem eine Programmieraufgabe ein, die man mit Python (mehr oder weniger) gut lösen könnte?
Ich bräuchte quasi 2 Aufgaben:
- Einmal die DAU Version, Dinge die jeder halbwegs begabte Programmierer über Nacht löst.
- Einmal das etwas kniffligere, wo ich dann mal schon ein paar Tage (oder ne Woche?) sitzen müsste.
Was fällt euch dazu ein?
Oder habt ihr selbst Bedarf für ein Tool das ihr benötigen würdet, von dem ihr glaubt dass es einfach zu programmieren ist und für das ihr einfach zu Faul seid?
Bitte um Input.
Es müssen sich keineswegs nur die Python-Hacker angesprochen fühlen, ganz allgemeine Informatische Probleme (in angemessenem Schwierigkeitsgrad natürlich) dürfen auch formuliert werden.
Ich werde versuch in diesem Thread über meine Erfahrungen zu bloggen.
In diesem Sinne,
import antigravity;
mfg, fat-lobyte
Ich habe schon viel von Python gehört, und auch unter Debian und vor allem Ubuntu ist es in regem Einsatz.
So wie ich das mitbekommen habe ist Python eine wirklich hübsche Skriptsprache, gut als Ergänzung zu C++ (manchmal doch ein Overkill...).
Jetzt habe ich mir vorgenommen diese Sprache zu lernen. Python Guru muss ich nicht sein, aber Quellcode lesen und gegebenenfalls auch mal selbst was schreiben können würd ich schon gern.
Tutorial find ich schon, da mach ich mir keine Sorgen. Was ich allerdings brauche ist ne gute Aufgabe, damit ich das richtig lerne.
Deswegen bitte ich um ein bisschen Hilfe für mein vollkommen unkreatives Gehirn:
fällt jemandem eine Programmieraufgabe ein, die man mit Python (mehr oder weniger) gut lösen könnte?
Ich bräuchte quasi 2 Aufgaben:
- Einmal die DAU Version, Dinge die jeder halbwegs begabte Programmierer über Nacht löst.
- Einmal das etwas kniffligere, wo ich dann mal schon ein paar Tage (oder ne Woche?) sitzen müsste.
Was fällt euch dazu ein?
Oder habt ihr selbst Bedarf für ein Tool das ihr benötigen würdet, von dem ihr glaubt dass es einfach zu programmieren ist und für das ihr einfach zu Faul seid?
Bitte um Input.
Es müssen sich keineswegs nur die Python-Hacker angesprochen fühlen, ganz allgemeine Informatische Probleme (in angemessenem Schwierigkeitsgrad natürlich) dürfen auch formuliert werden.
Ich werde versuch in diesem Thread über meine Erfahrungen zu bloggen.
In diesem Sinne,
import antigravity;
mfg, fat-lobyte
Haters gonna hate, potatoes gonna potate.
- Xin
- nur zu Besuch hier
- Beiträge: 8859
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Python - Programmieraufgabe
Ich habe mir Python vor nicht ganz zwei Jahren auf Anfänger-Niveau beigebracht.fat-lobyte hat geschrieben:Ich habe schon viel von Python gehört, und auch unter Debian und vor allem Ubuntu ist es in regem Einsatz.
So wie ich das mitbekommen habe ist Python eine wirklich hübsche Skriptsprache, gut als Ergänzung zu C++ (manchmal doch ein Overkill...).
Allerdings fehlen mir wichtige Features, wie Const-Correctness und die Überladung von Operatoren bzw. Konstruktoren ist mir unsympathisch (also die Art und Weise, wie es in Python gehandhabt wird). Ich bin kein Freund von Garbage-Collectors.
Ich wollte eigentlich auch immer mal weiterlernen, aber ich fand nichts, was mich so sehr begeistert, als dass ich es durchgehend benutzen wollte.
Fakt ist aber auch, dass Python eine schnelle Sprache ist, um "mal eben schnell" etwas zu machen.
Wenn es aber schnell laufen soll, programmiert man es wieder in C bzw. in C++ mit export "C" {}. Man kann die Sicht auf die Klassen also nicht nach Python holen, man muss also einen C-Wrapper um eine C++-Klasse, um dann einen Python-Klassen-Wrapper um die C-Funktionen zu setzen. Wrapper um Wrapper machen die Sache jetzt nicht unbedingt schneller.
Fakt ist aber auch, dass ich seitdem nichts zu tun hatte, was ich in Python hätte lösen wollen. Mir ist Genesys deutlich sympathischer und bis dahin ist mir auch C++ sympathischer. Also konzentriere ich mich lieber darauf, Genesys in Gang zu bringen, als ein Python-Guru zu werden.
Ich habe damals einen Taschenrechner mit Hilfe von wxWidgets begonnen. Ich weiß jetzt gar nicht mehr, ob ich ihn fertig gestellt habe.fat-lobyte hat geschrieben:Jetzt habe ich mir vorgenommen diese Sprache zu lernen. Python Guru muss ich nicht sein, aber Quellcode lesen und gegebenenfalls auch mal selbst was schreiben können würd ich schon gern.
Tutorial find ich schon, da mach ich mir keine Sorgen. Was ich allerdings brauche ist ne gute Aufgabe, damit ich das richtig lerne.
Das wäre wohl der Taschenrechner. ^^fat-lobyte hat geschrieben:- Einmal die DAU Version, Dinge die jeder halbwegs begabte Programmierer über Nacht löst.
Auch das kann auch der Taschenrechner sein, wenn Dir die der Aufbau eines Taschenrechners noch unbekannt ist. ^^fat-lobyte hat geschrieben:- Einmal das etwas kniffligere, wo ich dann mal schon ein paar Tage (oder ne Woche?) sitzen müsste.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Python - Programmieraufgabe
Hm, einen einfachen FTP- oder IRC-Clienten könnt man programmieren, um sich eine
neue Sprache anzugucken. Dann muss man sich nämlich auch mit Nebenläufigkeit und Netzwerk rumschlagen und kann mal sehen, was die Standardbibliothek so hergibt.
Ansonsten programmier doch mal ein Programm (z.B. mit Qt), dass einen Text und einen regulären
Ausdruck nimmt und dann alle (Sub-)Matches in Text hervorhebt und als Baum darstellt. Klick im Baum markiert natürlich die entsprechenden Stellen im Text.
neue Sprache anzugucken. Dann muss man sich nämlich auch mit Nebenläufigkeit und Netzwerk rumschlagen und kann mal sehen, was die Standardbibliothek so hergibt.
Ansonsten programmier doch mal ein Programm (z.B. mit Qt), dass einen Text und einen regulären
Ausdruck nimmt und dann alle (Sub-)Matches in Text hervorhebt und als Baum darstellt. Klick im Baum markiert natürlich die entsprechenden Stellen im Text.
- Xin
- nur zu Besuch hier
- Beiträge: 8859
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Python - Programmieraufgabe
Wenn Panke schon die alten Threads rauskramt, dann würde mich interessieren, wie weit Du, fat-lobyte, damit gekommen bist?
Ansonsten @Panke, wir haben einen Wettbewerb laufen, der sich mit Tutorials beschäftigt. Wenn Du in Python fit bist...
Ansonsten @Panke, wir haben einen Wettbewerb laufen, der sich mit Tutorials beschäftigt. Wenn Du in Python fit bist...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Python - Programmieraufgabe
Ups, der Thread war so weit oben, dass ich gar nicht gemerkt habe, was für eine Leiche ich da
auskrame.
Allgemeine Python-Tutorials gibt es mittlerweile genug im Netz. Da ein weiteres zu machen
ist irgendwie witzlos. Eventuell setz ich mich nächsten Monat an ein Tutorial für CMake. Das
hatte ich mir eh mal vorgenommen.
auskrame.
Allgemeine Python-Tutorials gibt es mittlerweile genug im Netz. Da ein weiteres zu machen
ist irgendwie witzlos. Eventuell setz ich mich nächsten Monat an ein Tutorial für CMake. Das
hatte ich mir eh mal vorgenommen.
- fat-lobyte
- Beiträge: 1398
- Registriert: Sa Jul 05, 2008 12:23 pm
- Wohnort: ::1
- Kontaktdaten:
Re: Python - Programmieraufgabe
Wie so vieles in den Mühlen der Zeit zerdrückt wordenXin hat geschrieben:Wenn Panke schon die alten Threads rauskramt, dann würde mich interessieren, wie weit Du, fat-lobyte, damit gekommen bist?
![Smile :-)](./images/smilies/icon_e_smile.gif)
Nö, python kann ich nicht und hab auch seit damals nix mehr gemacht. Wird gelernt wenn tatsächlich bedarf besteht. Also wahrscheinlich nie
![Smile :-)](./images/smilies/icon_e_smile.gif)
Haters gonna hate, potatoes gonna potate.
- Xin
- nur zu Besuch hier
- Beiträge: 8859
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Python - Programmieraufgabe
Das Forum ist stark C/C++-lastig, was mir persönlich gefällt, aber proggen.org beschäftigt sich mit Programmierung allgemein, nicht nur mit C und C++.Panke hat geschrieben:Ups, der Thread war so weit oben, dass ich gar nicht gemerkt habe, was für eine Leiche ich da
auskrame.
Allgemeines gibt es überall. Wir haben ein offenes Wiki. Jeder, der mag, darf Dinge verbessern und eigene Erfahrungen einbringen.Panke hat geschrieben:Allgemeine Python-Tutorials gibt es mittlerweile genug im Netz. Da ein weiteres zu machen
ist irgendwie witzlos.
Dafür muss man allerdings auch etwas da sein, was man verbessern kann, denn wir können kein allgemeines Tutorial pflegen.
Auch eine schöne Idee.Panke hat geschrieben:Eventuell setz ich mich nächsten Monat an ein Tutorial für CMake. Das
hatte ich mir eh mal vorgenommen.
Schade, aber mir ging es mit Python ähnlich. Mir gefallen einige Ideen in Python sehr gut, aber ich selbst habe eigentlich auch keine Anwendung dafür.fat-lobyte hat geschrieben:Wie so vieles in den Mühlen der Zeit zerdrückt wordenXin hat geschrieben:Wenn Panke schon die alten Threads rauskramt, dann würde mich interessieren, wie weit Du, fat-lobyte, damit gekommen bist?
Nö, python kann ich nicht und hab auch seit damals nix mehr gemacht. Wird gelernt wenn tatsächlich bedarf besteht. Also wahrscheinlich nie
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- fat-lobyte
- Beiträge: 1398
- Registriert: Sa Jul 05, 2008 12:23 pm
- Wohnort: ::1
- Kontaktdaten:
Python - erstes Résumé
Hallo. Nachdem ich nun in meiner Aufgabe relativ weit fortgeschritten bin, möchte ich ein kleines Résumé über meine Erfahrungen mit und meine Gefühle zu Python.
Python sieht für mich wie eine gut durchdachte Skriptsprache aus, eine die nicht einfach "gewachsen" oder entstanden ist, sondern wo von Anfang an auf grundlegende Werte geachtet wurde. (Diese sind in meinem anderen Post beschrieben)
Einige bestimmte Sprachfeatures haben mir besonders gut gefallen, und ich finde da könnten sich andere Sprachen durchaus was abschauen:
Ich bin froh es gelernt zu haben, nicht als Ersatz für andere Sprachen, sondern eher als ergänzug. Es macht sich gut in meiner Werkzeugkiste.
(Und nachdem halb gnome darin geschrieben ist, kann ich jetzt fröhlich lauter kleine Applets und Progrämmchen schreiben
)
So, das waren meine Erfahrungen, meine Meinungen.
Ende.
Python sieht für mich wie eine gut durchdachte Skriptsprache aus, eine die nicht einfach "gewachsen" oder entstanden ist, sondern wo von Anfang an auf grundlegende Werte geachtet wurde. (Diese sind in meinem anderen Post beschrieben)
Einige bestimmte Sprachfeatures haben mir besonders gut gefallen, und ich finde da könnten sich andere Sprachen durchaus was abschauen:
- Hübsche Syntax. Ich finde das ist eine sehr wichtige Eigenschaft, wenn ich mir im Vergleich dazu Bash oder Perl ansehe.
- Einfache, klare und eindeutige Verwendung von Modulen
- Elegante Wahl der Syntax und Semantik von Schleifen, die immer auf "Iteratable"-Objekten operieren.
- else-Clause bei Schleifen und try-except-Blöcken
- finally-Clause bei try-except-Blöcken. Auch wenn in anderen Sprachen diese durch Destruktoren unnötig werden, muss man trotzdem manchmal von hinten durch die Brust ins Auge. Nicht so mit Python.
- Gute Wahl von grundlegenden Datentypen: string, list, tuple, und besonders das Dictionary gefallen mir sehr. Diese sind sehr klar, schnell und ohne viel drumherum-Syntax verwendbar.
- Sehr gute und bequeme Abstraktion der Betriebssysteminterfaces. Die meisten benötigten Befehle sind vorhanden, und einfach zu verwenden.
Das macht Python übrigens auch zu einem super Ersatz für Bash-Skripte, die zwar oft zu regelrechten Programmen auswachsen, denen aber eindeutig die Sprachmächtigkeit fehlt. Außerdem killen sie mit ihren sed, grep, find, awk, ... jegliche Performance, da dazu jedes mal ein Programm aufgerufen, geladen, ein Prozess gestartet, Ein/Ausgaben umgeleitet und dann der Prozess wieder geschlossen werden muss. - Sehr reiche Standardbibliothek. Für den Normalsterblichen findet sich für so ziemlich jede Aufgabe etwas. Meine persönlichen Lieblingsmodule:
argparse, logging, queue und subprocess - Erweiterbarkeit, und zwar sowohl die Erweiterbarkeit von Python mit C/C++-Code als auch die Erweiterbarkeit von C/C++-Code mit Python finde ich toll.
- Generatorfunktionen, die ihren Wert pro iteration mit "yield" statt return zurückgeben
- try-except-finally-else- Blöcke. Oft gesehen, aber in Python gut durchdacht und angenehm verwendbar.
- Context-Manager und with-Statement. Wie ich finde ein Gelungener Ersatz für das Fehlen von Destruktoren. Die __exit__() Funktion wird innerhalb des with-Blockes immer aufgerufen, selbst wenn eine Exception geworfen wird.
- Operatorüberladung. Obwohl die Syntax zu deren Definition etwas seltsam aussieht, finde ich das Sprachfeature einfach gut.
- Klassen fühlen sich etwas seltsam an, die Unterscheidung zwischen (statischen) Klassenmembern und Objektmembern ist nicht so ganz klar, es gibt nicht (wirklich) Private Variablen, stattdessen nur ein Name-Mangling.
- Alles ist ein Objekt - Funktionen, Objekte, auch Klassen selbst, ja sogar ganze Module. Hier bin ich etwas zwiegespalten ob mir das gefallen oder missfallen soll. Auf jeden Fall ist es eine Eigenheit.
- Und natürlich etwas, was in jeder Skriptsprache ein grosses Manko ist: fehlende Typsicherheit. Und das ist für mich anscheinend ein ziemlicher Killer: Es ist ziemlich schwierig durch den Programmverlauf nachzuverfolgen, welche Attribute ein Objekt hat, das in einer Funktion generiert wurde. Deswegen häuften sich bei mir Fehler, wo auf nicht vorhandene Tupel-Elemente oder auf nicht vorhandene Attribute zugegriffen wurde.
Mir ist klar, dass Typsicherheit schwer von Skriptsprachen verlangt werden kann, und dass man auch viel Flexibilität dabei verliert, aber das ist das was mir bei grösseren Projekten am meisten Fehlen würde.
Ich bin froh es gelernt zu haben, nicht als Ersatz für andere Sprachen, sondern eher als ergänzug. Es macht sich gut in meiner Werkzeugkiste.
(Und nachdem halb gnome darin geschrieben ist, kann ich jetzt fröhlich lauter kleine Applets und Progrämmchen schreiben
![Wink ;-)](./images/smilies/icon_e_wink.gif)
So, das waren meine Erfahrungen, meine Meinungen.
Ende.
Haters gonna hate, potatoes gonna potate.
- Xin
- nur zu Besuch hier
- Beiträge: 8859
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Python - Programmieraufgabe
Wir haben einen py:-Namensraum, den Du gerne füllen darfst. *g*
Dein letztes Posting würde ich da jedenfalls schonmal für richtig halten.
Dein letztes Posting würde ich da jedenfalls schonmal für richtig halten.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Python - Programmieraufgabe
Das kann ich nur bestätigen. Ich arbeite auch damit und bin begeistertPython sieht für mich wie eine gut durchdachte Skriptsprache aus, eine die nicht einfach "gewachsen" oder entstanden ist, sondern wo von Anfang an auf grundlegende Werte geachtet wurde. (Diese sind in meinem anderen Post beschrieben)
![Smile :)](./images/smilies/icon_e_smile.gif)
Ich benutze es exakt dazu, es ist für mich hauptsächlich das Mittel der Wahl, um komplizierte und schwer zu wartende Bash Skripte zu umgehen. ich benutze zwar dennoch häufig andere Programme aus Python heraus (z.B. mount) aber hier kann ich sicher sein, dass ich bei einem Fehler alles gut abfangen kann und nicht das komplette Chaos entsteht, wie es in Bash Skripten meist der Fall ist.Sehr gute und bequeme Abstraktion der Betriebssysteminterfaces. Die meisten benötigten Befehle sind vorhanden, und einfach zu verwenden.
Das macht Python übrigens auch zu einem super Ersatz für Bash-Skripte, die zwar oft zu regelrechten Programmen auswachsen, denen aber eindeutig die Sprachmächtigkeit fehlt. Außerdem killen sie mit ihren sed, grep, find, awk, ... jegliche Performance, da dazu jedes mal ein Programm aufgerufen, geladen, ein Prozess gestartet, Ein/Ausgaben umgeleitet und dann der Prozess wieder geschlossen werden muss.
Das fehlen wirklich privater Variablen empfinde ich als eines der besten Dinge überhauptKlassen fühlen sich etwas seltsam an, die Unterscheidung zwischen (statischen) Klassenmembern und Objektmembern ist nicht so ganz klar, es gibt nicht (wirklich) Private Variablen, stattdessen nur ein Name-Mangling.
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Und zwar, weil man so nicht mit getter und setter Methoden überschwemmten Code schreiben muss.
Es erfordert allerdings auch einiges an Disziplin seitens des Entwicklers.
Und es macht es Möglich, z.B. auch aspektorientierte Ansätze einzubringen, auch wenn ich damit (noch) keine Erfahrung habe.
Super finde ich, dass man nicht einfach nur 1 Konstruktor hat, sondern dass man auf unzählige Arten in die Erstellung eines Objektes (und auch eines Klassen-Objektes selbst) eingreifen kann.
Statische Member von Objektmembern zu unterscheiden ist aber wirklich etwas schwierig... -,-
Ich finde, Python gibt hier aber gute Hilfestellung, Typüberprüfungen sind ja möglich. "Fehlende Typsicherheit" kann teilweise auch gewinnbringend angewandt werden. Es erfordert nur - wieder - Disziplin des Entwicklers.Und natürlich etwas, was in jeder Skriptsprache ein grosses Manko ist: fehlende Typsicherheit. Und das ist für mich anscheinend ein ziemlicher Killer: Es ist ziemlich schwierig durch den Programmverlauf nachzuverfolgen, welche Attribute ein Objekt hat, das in einer Funktion generiert wurde.
Den py:* Namensraum kann ich auch mit füllen, aber erstmal muss ich mich mal um Java kümmern
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!![Smile :)](./images/smilies/icon_e_smile.gif)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!
![Smile :)](./images/smilies/icon_e_smile.gif)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.