Webapplikation: Shop in welcher Sprache/Framework?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Hallo zusammen,

ich habe folgendes Anliegen, welches ich nun gerne einmal in die Runde werfen würde, um eure Meinungen dazu zuhören. Beruflich bin ich als Programmierer im Bereich PHP und MySQL täglich tätig und hatte nun mal das Bedürfnis mich etwas über den Tellerrand zu bewegen und mal in eine andere Sprache im Webbereich zu schnuppern.

Daher habe ich vor, dass ich mir ein kleines Funprojekt aufziehe: Es soll ein Shop werden. Ich gehe am Ende soweit, dass ich das Teil irgendwann mal online sehen möchte - und wenn es nur als Demo ist! Nun stellt sich für mich jedoch die Frage, in welche Richtung in schnuppern möchte und hab mir da mal einige Gedanken gemacht:

Eigenes Framework in PHP 5
Ich ziehe mir ein eigenes Framework nach MCV auf um etwas mehr mich mit der Erstellung (und nicht nur der Nutzung) eines solchen Systems auseinanderzusetzen. Eine neue Sprache würde dann natürlich nicht einspielen, jedoch wäre es sicherlich ein Erfahrungsgewinn - denke ich zumindest. Dazu ist mir PHP dann nicht neu, da ich es ja schon aus dem täglichen gebrauch kenne.

Vorteile:
- Keine neue Sprache lernen
- Gewohntes Umfeld mit all seinen Tücken und Vorzügen
- Freie Gestaltbarkeit

Nachteil:
- Gerade diese Tücken (schlechter Unicode support, nur schleppend OOP-fähig, keine Namespaces, etc.)
- Viel viel Arbeit


Zend-Framework in PHP 5
Alternativ könnte man auch noch das Zend-Framework in PHP verwenden. Dort versucht man ja etwas das MCV-Konzept umzusetzen und bietet schon eine gute Reihe an Funktionen, welche einem das leben leichter machen. Was ich persönlich nicht so doll finde, dass das Framework den Weg vertritt, dass das Model nicht genauer spezifiziert ist. Man hat es sich hier einfach gemacht und gesagt: Jedes Projekt setzt sein Model anders um, daher können wir dazu auch nix genaues sagen. Ermöglicht einem jedoch auch wieder mehr Freiheit.

Vorteile:
- Solide Basis an Grundfunktionen
- Erste Vorzüge von MCV

Nachteile:
- Schlechter Model-Konzept (meiner Meinung nach)
- Immernoch PHP als Basis, also bleiben auch die Tücken


Ruby on Rails 2.x
In letzter Zeit habe ich mich dann noch etwas mit Ruby on Rails und Ruby allgemein beschäftigt. Persönlich finde ich es eine sehr nette Sprache, auch wenn man sich an einigen Stellen noch etwas umgewöhnen muss. Es wäre bei diesem Weg sicherlich ein Mehrgewinn für mich, weil ich dadurch eine komplett neue Sprache nutze, welche auch vollkommen OO arbeitet. Mein persönlicher Nachteil, so wie ich finde, dass Ruby und RoR derzeit noch eher schlecht verbreitet ist. Einen eigenen Root finde ich eher unpassend und Hoster sind halt nicht so verbreitet.

Vorteile:
- Strikte OO Sprache
- Komplettes MCV-Konzept
- Klare Konzeption bzw. Namen

Nachteile:
- Eher schleppende Verbreitung


Python mit Django
Und dann bin ich gestern auf Python gestoßen. Grundsätzlich habe ich mich noch nie mit der Sprache beschäftigt, außer das ich gestern mal einige Sachen zu Django und Python quergelesen habe. An sich ist es ja auch eine schöne OO Sprache, welche - und das find ich sehr nett - seine Einrückung zur Syntax macht. Somit ist das komplette Projekt am Ende einheitlich vom Style. Ansonsten soll mit Django ein sehr nettes Framework für das Web geboten sein, welcher auch nach dem MCV-Konzept arbeite, jedoch nicht so strikt wie RoR, aber auch weitaus besser als PHP bzw. das Zend-Framework. Dazu ist Django ein eines Python-Framework, d.h. es benötigt keiner eigenen Installation, und Python ist schon verbreiteter als RoR 2.x

Vorteile:
- Schöne OO Sprache
- MCV-Konzept, wenn auch nicht so strikt
- Stärker verbreitet als RoR

Nachteile:
- Fallen mir derzeit keine ein?!


So und nun seid ihr gefragt, jedoch: Ich möchte hier keine Fanatiker und Glaubenskriege haben. Ich möchte nur eine sachliche Argumentation und ein sachliches Gespräch. Wer nun meint, dass seine Sprache die Beste ist und den anderen erstmal ein Flame verpassen möchte, der soll bitte woanders rumtrollen.

Was haltet ihr von meinen Aufführungen? Selbst habe ich, wie schon erwähnt, habe ich keine sehr tiefen Erfahrungen mit RoR oder Python, daher möchte man es mir verzeihen, wenn ich hier und da doch etwas falsch interpretiert habe. Ich bin jedoch gerne für eine Korrektur offen :)

Nachtrag:
Weil ich darauf angesprochen wurde: Ich habe den Beitrag noch in den entsprechenden Fachforen gepostet, damit jede Partei mal ihre Meinung aufführen kann. Solltet ihr also daran Interesse haben:

http://forum.ruby-portal.de/viewtopic.php?p=48128#48128
http://forum.ubuntuusers.de/topic/17637 ... 76#1416676
http://www.python-forum.de/topic-14731.html
Zuletzt geändert von Fallen][Angel am Dienstag 20. Mai 2008, 15:26, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo Fallen][Angel, willkommen im Forum,

Ich möchte, auch als Django/Werkzeug-Nutzer und RoR-Verweigerer dennoch anmerken, dass es IMHO wesentlich einfacher ist einen RoR-Hoster zu finden als einen Django-Hoster, Natürlich letztere gibt es auch, nur eben nicht ganz so viele. Ich bin sowohl bei einem Hoster, habe aber auch einen einenen Root-Server für so Sachen.

Zu PHP sage ich mal nichts, bis auf die Verbreitung sehe ich eigentlich keine Gründe sich damit überhaupt auseinanderzusetzen, da es es als Sprache nur eine Art auf Web angepasstes Perl ist und interessante Perl-Features sogar noch weggelassen hat. Da greif ich schon lieber mit Catalyst zum Original ;)

Was dir Python im Gegensatz zu Ruby bietet ist die Vielfalt. Jetzt nicht gerade in Django, wo du genau eine Möglichkeit hast, etwas bestimmtes zu erreichen (was ja wiederum "pythonic" ist, eigentlich) aber sonst hast du für quasi alles was du machen willst mehrere Möglichkeiten es zu erreichen. Wilst u Templates kannst du zwischen Text und XML-Templates wählen, willst du Datenbanken kannst du zwischen rohem SQL wählen, ORMs (Active Mapper und Unit of Work-Patterns) oder OODBs wählen. Willst du Webservices kannst du zwischen SOAP, XML-RPC, YAML-RPC und JSON-RPC wählen etc.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

Also wenn du den Beitrag schon in mehreren Foren postest, hättest du ihn ja wenigstens für das jeweilige Forum anpassen können...

Oder erwartest du gerade ernsthaft, dass du in einem Python-Forum etwas anderes hörst als "nimm Python"?

Zumindest PHP wird hier wohl keiner empfehlen ;)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

lunar hat geschrieben:Also wenn du den Beitrag schon in mehreren Foren postest, hättest du ihn ja wenigstens für das jeweilige Forum anpassen können...
Links:

http://forum.ubuntuusers.de/topic/176370/
http://forum.ruby-portal.de/viewtopic.php?t=7275

:lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Es stimmt schon, dass ich diesen Beitrag in andere Foren gepostet habe, um genau diese Stellen zu diesem Thema zu fragen. Mir ist natürlich klar, dass niemand in einem Ruby-Forum mir nun sagen wird, dass ich Python nutzen soll oder man mir hier sagt, dass ich Ruby nutzen soll.

Das ist auch gar nicht die Absicht des Ganzen. Was ich mir von diesem Beitrag erhoffe ist einfach die Meinung der anderen. Es kann genau so gut sein, dass ein RoR-Entwickler von Python zur RoR gewechselt ist und somit Gründe dafür nennen kann.

Auch kann man in diesem Forum expliziet auf Python eingehen und, so hoffe ich zumindest, offen über Vor- und Nachteile dieser Sprache berichten.

Da praktisch ein "großeses Forum der allvertretenen Sprachen für Webapplikationen" fehlt, gehe ich bei den einzelnen Parteien nach und nach einmal nachhorchen :)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich finde den Crosspost überhaupt nicht schlimm. Kann gut den zweck nachvollziehen... Wäre allerdings schön gewesen, wenn du direkt alle miteinander verlinkt hättest. Ist sicherlich für alle Interessant, was in anderen Foren geschrieben wurde...
btw. was ist mit Maillinglisten?

Noch ein Links:
[wiki]Web-Frameworks[/wiki]
http://www.python-forum.de/topic-7063.html
http://www.python-forum.de/topic-10152.html

EDIT: Da wir schon mal beim Thema sind, wie sieht es eigentlich z.Z. bei [wiki=Web-Frameworks#Turbogears]Turbogears[/wiki] aus? Noch vor einiger Zeit hatte es da ja einen großen Bruch gegeben...
Zuletzt geändert von jens am Dienstag 20. Mai 2008, 14:49, insgesamt 1-mal geändert.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Ich find MVC einen Fehler für Webentwicklung. Verschieben von Code in API, View Funktionen und Templates ist sinnvoll, aber nicht das was MVC ist (IMO).
TUFKAB – the user formerly known as blackbird
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Gibts eigentlich auch kostenlose hoster wo man mal mit python hantieren könnte?
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

mitsuhiko hat geschrieben:Ich find MVC einen Fehler für Webentwicklung. Verschieben von Code in API, View Funktionen und Templates ist sinnvoll, aber nicht das was MVC ist (IMO).
Wieso wenn ich mal aus Interesse fragen darf?
maxip
User
Beiträge: 61
Registriert: Dienstag 11. März 2008, 09:43

Java und Struts2

oder auch gerne CakePHP
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Fallen][Angel hat geschrieben:
mitsuhiko hat geschrieben:Ich find MVC einen Fehler für Webentwicklung. Verschieben von Code in API, View Funktionen und Templates ist sinnvoll, aber nicht das was MVC ist (IMO).
Wieso wenn ich mal aus Interesse fragen darf?
MVC wurde für GUI Anwendungen mit einem Komplexen Design entwickelt. Nimm Microsoft Word als Beispiel. Da hast du ein Dokument (Model), das man Drucken oder in verschiedenen Arten (Icon, Bearbeitungsmodus, Vollbild) anzeigen kann (View) und einen Funktionalität wie Klicken auf Icons, das reagieren auf Tastendrücke um das zu bearbeiten und, und, und (Controller).

Das hat mit dem was Webframeworks daraus gemacht haben gar nix zu tun (Gott sei Dank). in HTTP haben wir zwei Dinge: Request und Response und das wars. Was da sinnvoll ist, ist das trennen von Quelltext in kleine Teile. Da haben wir Templates die HTML darstellen, eine dispatcher Funktion die aufgerufen wird, wenn der Request kommt und das Template mit den Daten rendert und dann noch jede Menge Klassen und Funktionen, die alle möglichen Dinge tun (wie mit der Datenbank sprechen, URLs generieren, Thumbnails erzeugen etc.)

Und das kann man auch in PHP ohne Framework machen und ist ganz einfahc. Man darf nur nicht auf den Kopf gefallen sein wie das viele PHP Programmierer offensichtlich sind. Selbst phpBB2 (jetzt wirklich ein sonderlich tolles Ding) ist in dem Punkt sauber(er als das Durchschnitts-PHP Ding) entwickelt.

//EDIT: Das hier ist übrigens die MVC Beschreibung von ihrem Erfinder: http://heim.ifi.uio.no/~trygver/1979/mv ... 12-MVC.pdf
//EDIT2: Hier was ausführlichers von 2007: http://heim.ifi.uio.no/~trygver/2003/ja ... attern.pdf
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

skypa hat geschrieben:Gibts eigentlich auch kostenlose hoster wo man mal mit python hantieren könnte?
Ja, deinen lokalen Rechner. Mit SQLite und dem bei so ziemlich jedem Framework beigepackten Development-Server ist das ja auch keine Sache das einzurichten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Leonidas hat geschrieben:Hallo Fallen][Angel, willkommen im Forum,

Ich möchte, auch als Django/Werkzeug-Nutzer und RoR-Verweigerer dennoch anmerken, dass es IMHO wesentlich einfacher ist einen RoR-Hoster zu finden als einen Django-Hoster, Natürlich letztere gibt es auch, nur eben nicht ganz so viele.
Ist das so schwer? Als ich mal so über Hoster-Seiten gesurft bin, da hab ich vermehrt Python gefunden, aber im Vergleich z.B. sehr sehr selten Ruby bzw. RoR Support.

Oder ist an dieser Stelle Python ungleich Python?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wichtig ist nicht nur, das der Hoster Python anbietet, sondern wie und welche Version. Also ob er es nur als CGI oder auch mit fastCGI/mod_Python u.a. anbietet... Wobei mod_Python != mod_PHP, siehe: http://de.wikipedia.org/wiki/Mod_python und [wiki]FAQ#IchHabeProblemeMitModPython[/wiki]

Ich denke es sieht so aus: Du findest bei jedem Hoster PHP, sehr oft als mod_PHP. Danach ist am meisten noch Python verbreitet, oft aber nur als CGI. Ruby ist das Schlusslicht, denke ich. Keine Ahnung wie es mit Perl aussieht.

Zum Thema haben wir auch eine Wiki Seite: [wiki]Python Webspace[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Ich habe mir nun einmal den kompletten "Beitrag" hier durchgelesen (http://news.ycombinator.com/item?id=195423) wo es um Django vs. RoR geht.

Grundsätzlich ist viel davon natürlich wieder ein Glaubenskrieg, jedoch sind dort einige Dinge, welche hier und da bei beiden Sprachen mehrfach angekreidet werden.

Zum einen wird bei Python bzw. Django häufig das "self" angekreidet. Selbst kenne ich mich da nicht aus und daher wäre es cool, wenn jemand vielleicht erklären könnte, was es damit auf sich hat?

Ansonsten wird oft gesagt, dass django noch sehr in der Entwicklung sei und man häufig immer nur mit der svn-Version arbeiten muss, was zur folge hat, dass man oft irgendwelchen Änderungen am Framework unterlegen ist. Hacks für Bugs sollen angeblich auch öfters nötig sein.

Natürlich wird auch oft persönliches bemängelt, wo die Leute sich bei Python z.B. über den strikten Umgang mit der Formatierung und Leerzeichen aufregen. Sowas sehe ich aber eher als Geschmackssache

Aber allgemein sollten RoR und Django wohl ungefähr gleich auf liegen.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Das mit "self" ist ehr ein Witz, genauso wie manche das Einrücken als dumm ansehen.

Mit self überreicht man in Klassen Klassenweite Objekte. Blödes Beispiel:

Code: Alles auswählen

class BSP:
    def __init__(self, txt):
        self.txt = txt

    def zeigmal_txt(self):
        print self.txt

bsp = BSP("Beispieltext")
bsp.zeigmal_txt()
Zum Thema django, lies dir mal auf [wiki]Web-Frameworks#Django[/wiki]im Abschnitt django den Punk "Nachteile" durch...
Django wird leider recht wenig released. Deswegen nutzt IMHO fast niemand die alten Releases, sondern man nutzt einen SVN checkout vom trunk. Das ist aber ok, weil der trunk sehr stabil ist. Man muß nur hin und wieder auf die Seite mit den Änderungen schauen und diese einpflegen: http://code.djangoproject.com/wiki/Back ... bleChanges
Das mache ich so und fahre eigentlich ganz gut damit.

Was man vielleicht nicht anfangen sollte, irgendwelche noch nicht eingepflegte Patches in seiner App zu nutzten. Dann wird es natürlich haarig...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Fallen][Angel
User
Beiträge: 39
Registriert: Dienstag 20. Mai 2008, 12:38

Also müsste ich bei einer Klasse, wenn ich auf Variablen der Instanz zugreifen will, immer self als Übergabeparameter vorsehen?
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Grundsätzlich ist viel davon natürlich wieder ein Glaubenskrieg [...]
Zum einen wird bei Python bzw. Django häufig das "self" angekreidet.
Genau sowas ist ein Glaubenskriegsgrund. Alternativ könnte man ruby das @ ankreiden. "Sieht aus wie ein Perlsches Smileygemetzel"
Aber allgemein sollten RoR und Django wohl ungefähr gleich auf liegen.
Dem Hörensagen nach soll RoR nicht gerade gut Skalieren. Ja, kann gut ein Gerücht sein, aber wenn das self als "beitrag" zur Diskussion gilt...
lunar

keppla hat geschrieben:"Sieht aus wie ein Perlsches Smileygemetzel"
:D Den muss ich mir merken ;)
Dem Hörensagen nach soll RoR nicht gerade gut Skalieren. Ja, kann gut ein Gerücht sein, aber wenn das self als "beitrag" zur Diskussion gilt...
RoR forkt iirc eine feste, limitierte Anzahl an Request-Handler-Prozessen. Liefert man große Response wie beispielsweise Software-Downloads aus, kann man RoR-Anwendungen, sofern keine zusätzlichen Schutzmaßnahmen getroffen wurden, relativ einfach lahmlegen.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

keppla hat geschrieben:Dem Hörensagen nach soll RoR nicht gerade gut Skalieren.
Das haben einige aufgezeigt. z.b.:
http://wiki.rubyonrails.com/rails/pages ... erformance
Hatten wir hier diskutiert: http://www.python-forum.de/topic-10152.html

EDIT: Noch ein alter Artikel gefunden:
http://www.alrond.com/en/2007/jan/25/pe ... rameworks/

Vielleicht auch noch interessant: "A Rails/Django Comparison": http://docs.google.com/View?docid=dcn8282p_1hg4sr9

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten