Grundlegende und aus dem Kontext gerissene Fragen

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.
Antworten
Graf Wasserrutsche
User
Beiträge: 37
Registriert: Donnerstag 17. Juli 2008, 06:59
Wohnort: Köln
Kontaktdaten:

Hallo zusammen!

Ich habe die Suchfunktion viel bemüht und auch so einige Threads durchgelesen, nur entweder werden die absolut grundlegenden Funktionen besprochen, oder es wird zu kompliziert.

Ich würde sagen, das ich die Basis des Programmierens verstanden habe und auch kleine konsolenbasierte Programme, wie auch Spielchen schreiben kann. Hierzu bin ich leider nur bis zum MySQL-Datenbankzugriff gekommen. In Python, wie auch in anderen Programmiersprachen.

Jetzt möchte ich ein wenig tiefer ins Geschehen eintauchen, habe aber grundlegende Fragen bzw. Verständnisprobleme die vielleicht für den einen oder anderen als total unwichtig und einfach angesehen werden, oder trotzdem für jemanden noch auftreten, auch wenn er nicht mehr der total Anfänger ist.

Eventuell sind einige Fragen auch einfach total aus dem Kontext herausgerissen, interessieren mich aber trotzdem J

1. Wie werden in mehr oder minder professionellen Bereichen die eingegebenen Daten mit Python gespeichert? Ist für das Internet MySQL das non-plus-ultra, oder gibt es weitaus bessere Alternativen?
2. Sagen wir, ich möchte ein RPG programmieren. Wie speichere ich z.B. hier die Daten? Auch datenbankgestützt, oder eher auf Dateiebene? Wenn auf Dateiebene, dann wie am besten?
3. Wie kommt ihr immer auf eure Module? Habt ihr mit der Zeit einfach ausprobiert, habt ihr von anderen Empfehlungen erhalten, oder immer direkt nach den Problemen gesucht?
4. Auf welcher Basis wird z.B. ein Chat geschrieben, oder alle Programme die entweder direkte Verbindungen zulassen, oder über einen Server kommunizieren?
5. Die ersten Programme wie HangMan, eine ToDo-Liste, oder auch ein einfaches Datenbankprogramm sind schnell und einfach geschrieben. Wie kommt man zu mehr? Ich schaffe einfach den Schritt zu komplizierterem nicht, auch nicht, obwohl ich sehr lernwillig bin.

Jetzt, gerade in diesem Moment in dem ich das schreibe fällt mir nichts weiter ein, aber ich werde mit Sicherheit neu aufkommene Fragen ergänzen J

Ich danke euch schon mal herzlich für eure Antworten!
[url=http://myspace.com/deathmetalvictory][myspace][/url][url=http://grunzgewitter.blogspot.com][blog][/url][url=http://twitter.com/AgatheBauer][twitter][/url]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Graf Wasserrutsche hat geschrieben:1. Wie werden in mehr oder minder professionellen Bereichen die eingegebenen Daten mit Python gespeichert? Ist für das Internet MySQL das non-plus-ultra, oder gibt es weitaus bessere Alternativen?
Naja, da muss man nicht weit schauen, da PostgreSQL besser ist :P Im Ernst: das hängt ab. Wieviele Datensätze sind es? Mehrere Millionen? Wie komplex sind die Stukturen die du Speichern willst? Wie sehr muss es skalieren (d.h. soll es ein Datenbankcluster sein, mit HDFS und HBase?). Für kleine Sachen reicht oft Pickle, für etwas größere ist SQLite auch oft ausreichend gut.
Graf Wasserrutsche hat geschrieben:2. Sagen wir, ich möchte ein RPG programmieren. Wie speichere ich z.B. hier die Daten? Auch datenbankgestützt, oder eher auf Dateiebene? Wenn auf Dateiebene, dann wie am besten?
Hängt von den Anforderungen an. Werden die Daten gelesen? Werden die Daten häufig geschrieben? Müssen sie schnell durchsucht werden können? Mit wievielen Daten ist zu rechnen?
Graf Wasserrutsche hat geschrieben:3. Wie kommt ihr immer auf eure Module? Habt ihr mit der Zeit einfach ausprobiert, habt ihr von anderen Empfehlungen erhalten, oder immer direkt nach den Problemen gesucht?
Von allem etwas. Man liest so bischen mit was es gibt, probiert von Zeit zu Zeit etwas aus oder sucht aktiv nach einem Modul das die benötigte Funktionalität bereitstellt.
Graf Wasserrutsche hat geschrieben:4. Auf welcher Basis wird z.B. ein Chat geschrieben, oder alle Programme die entweder direkte Verbindungen zulassen, oder über einen Server kommunizieren?
IP? Oder wie meinst du das? Ich persönlich finde es nützlich für Netzwerkkommunikation asynchronen IO zu benutzen, wie es etwa asyncore&asynchat und Twisted bieten.
Graf Wasserrutsche hat geschrieben:5. Die ersten Programme wie HangMan, eine ToDo-Liste, oder auch ein einfaches Datenbankprogramm sind schnell und einfach geschrieben. Wie kommt man zu mehr? Ich schaffe einfach den Schritt zu komplizierterem nicht, auch nicht, obwohl ich sehr lernwillig bin.
Schon mal überlegt, an einem FOSS-Projekt mitzuarbeiten? Da kann man oft eine Menge lernen und die bekannteren Projekte machen sowieso Code-Reviews (Mercurial oder Twisted zum Beispiel) und Unittests, da wird man nicht sofort ins tiefe Wasser geworfen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Graf Wasserrutsche hat geschrieben:1. Wie werden in mehr oder minder professionellen Bereichen die eingegebenen Daten mit Python gespeichert? Ist für das Internet MySQL das non-plus-ultra, oder gibt es weitaus bessere Alternativen?
Tja, mir persönlich ist das verwendete DBMS ziemlich total egal. Wofür gibt schließlich ORMs? Ich nehme das, welches das günstige Verhältnis zwischen Leistung und Administrationsaufwand bietet, was bei kleinen Seiten meistens auf SQLite hinausläuft.

Für wirklich große Sachen, bei denen Performance und Ausfallsicherheit gefragt sind, muss man sich eh sehr gut auskennen, was dann zumindest im professionellen Umfeld eh darauf hinausläuft, dass man sich Systemarchitekten einkauft, die mit sowas Erfahrung haben. Für alles andere ist das verwendete DBMS mehr oder weniger egal.

Außer natürlich man steht wie Gerold auf ganz bestimmte DBMS Feature und hält ORMs für die Todsünde eines Datenbankprogrammierers ;) (nichts für ungut, gerold)
2. Sagen wir, ich möchte ein RPG programmieren. Wie speichere ich z.B. hier die Daten? Auch datenbankgestützt, oder eher auf Dateiebene? Wenn auf Dateiebene, dann wie am besten?
Bei guten Design ist das völlig irrelevant. Da ist diese Schnittstelle nämlich unabhängig von der konkreten Implementierung, so dass man alles mögliche als Speicher verwenden kann.
3. Wie kommt ihr immer auf eure Module? Habt ihr mit der Zeit einfach ausprobiert, habt ihr von anderen Empfehlungen erhalten, oder immer direkt nach den Problemen gesucht?
Hier und im Usenet mitlesen. Da bekommt man die wichtigen schon mit. Vor allem gibt es in die großen Kategorien wie GUI-Programmierung, ORMs, Webframeworks, oder XML Verarbeitung auch nicht so wirklich viele Alternativen. Bei XML sind es vielleicht eine Hand voll, brauchbare GUI Toolkits gibt es eigentlich auch nur drei.
4. Auf welcher Basis wird z.B. ein Chat geschrieben, oder alle Programme die entweder direkte Verbindungen zulassen, oder über einen Server kommunizieren?
Twisted z.B.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

MySQL war nie das nonplusultra und wird es auch nicht in absehbarer Zeit sein. Will es auch garnicht sein. Aber für den durchschnittlichen WebShop reicht MySQL und PostgreSQL in den standardversionen voll aus.

Als DB würd ich wohl immer mit PostgreSQL gehen, gerade in kombination mit python, es bietet sich an trigger und funktionen mittels python für die db zu schreiben.

Vorrausgesetzt du brauchst überhaupt eine echte DB - sqlite und pickle reicht wie schon erwähnt für vieles aus.

Ein RPG sollte seine Daten (Textures, models) imo NIE in einer ORMS speichern. Wozu auch, das lohnt einfach nicht.

Zum Thema Module, die werden bei mir verfasst je nach Problemstellung (oder gesucht). Probieren bleibt nicht aus, teilweise findest du auch keine perfekte fertiglösung, dann musst du eben erweitern oder selbst von anfang an bauen.

Einen Chat beispielsweise würde ich per TCP/IP machen, Spiele (MP) immer über UDP wie es auch die industrie macht.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mad-Marty hat geschrieben: Ein RPG sollte seine Daten (Textures, models) imo NIE in einer ORMS speichern. Wozu auch, das lohnt einfach nicht.
RPG = Role Playing Game? Wenn ja denke ich will er in diesem Kontext eine Art Web-RPG aufbauen. Dort sehe ich durchaus den Sinn, eine echte DB zu verwenden.
lunar

Vorrausgesetzt du brauchst überhaupt eine echte DB - sqlite und pickle reicht wie schon erwähnt für vieles aus.
pickle ist meines Wissens nicht atomar, und wäre somit ungeeignet für jegliche Art parallelen Datenzugriffs oder wenn die Integrität gespeicherter Daten essentiell für eine Anwendung ist.
Spiele (MP) immer über UDP wie es auch die industrie macht.
Es würde mich wundern, wenn Spiele ausschließlich UDP zur Kommunikation nutzen würden. UDP als verbindungsloses Protokoll ist imho eine reichlich wacklige Basis für Kommunikation, bei der es darauf ankommt, dass die Gegenseite auch sieht, was man selbst sendet.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

lunar hat geschrieben:
Vorrausgesetzt du brauchst überhaupt eine echte DB
Spiele (MP) immer über UDP wie es auch die industrie macht.
Es würde mich wundern, wenn Spiele ausschließlich UDP zur Kommunikation nutzen würden. UDP als verbindungsloses Protokoll ist imho eine reichlich wacklige Basis für Kommunikation, bei der es darauf ankommt, dass die Gegenseite auch sieht, was man selbst sendet.

Schau dich um ;) Ich kenne kein spiel was über TCP/IP synct.
Liegt wahrscheinlich am Speed. Packetloss ist reichlich selten mittlerweile, und selbst wenn gibt es syncpoints.

Shooter, RPG, und RTS nehmen soweit ich sie kenne alle UDP für die spieldaten ganz einfach weil das mit TCP zu lange dauert .

Ganz besonders kommt UDP zugute das die "keypresses" ohne bestätigung o.ä. wie sie kommen zum server gesendet werden.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

lunar hat geschrieben:Außer natürlich man steht wie Gerold auf ganz bestimmte DBMS Feature und hält ORMs für die Todsünde eines Datenbankprogrammierers ;) (nichts für ungut, gerold)
Hallo lunar!

:D Gut erkannt -- nur hätte ich es nie so direkt gesagt. :P
Graf Wasserrutsche hat geschrieben:3. Wie kommt ihr immer auf eure Module? Habt ihr mit der Zeit einfach ausprobiert, habt ihr von anderen Empfehlungen erhalten, oder immer direkt nach den Problemen gesucht?
http://pypi.python.org/pypi/

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Fabian Kochem
User
Beiträge: 36
Registriert: Mittwoch 5. April 2006, 14:11
Wohnort: Köln

Hallo Graf Wasserrutsche,

speziell die Datenbank-Themen sind so komplex und individuell zu beantworten, dass ich fast sagen möchte, dass du hier an falscher Stelle bist. Nicht, weil ich die Kompetenz der Benutzer hier in Frage stellen möchte, viel mehr weil du ohne viel Lesen und wahrscheinlich auch ein bisschen Praxiserfahrung keinen Nutzen aus irgendwelchen Antworten herauslesen wirst. Datenbanken und deren Aufbau sind eine eigene Welt. Die von Leonidas genannten Stichpunkte waren schon sehr gut. Du musst dir Antworten auf Fragen wie "wieviel Daten?", "was für Daten (Text, Bilder, ...)?", "müssen sie durchsucht werden?" etc. überlegen und basierend auf diesen Anforderungen eine geeignete Lösung finden. Das kann MySQL oder PostgreSQL sein, kann aber sehr wohl auch in Richtung XML gehen. Vielleicht macht sogar eine objekt-orientierte Datenbank in dem jeweiligen Fall mehr Sinn als eine relationale.

Wie du siehst, hängt die Entscheidung von so vielen Faktoren ab, dass du dir schon sehr genau überlegen musst, was du eigentlich willst. Eine eindeutige Antwort gibt es nicht. Wenn du wie geschrieben sehr lernwillig bist, würde ich dir empfehlen, viel zu lesen. Wo sind die Unterschiede der verschiedenen Datenbanken, wie verhalten sie sich unter Last, welche Möglichkeiten gibt es, um den Datenaufbau (sprich: Tabellen) und somit dessen Bearbeitung zu optimieren, und so weiter und so fort. Und lass dich von mir nicht entmutigen - das gilt nur, wenn du es wirklich richtig lernen willst. Ansonsten probier einfach mal verschiedene Systeme aus - dann wirst du über kurz oder lang schon herausfinden, was in welchem Kontext am meisten Sinn macht.
Antworten