ubuntuusers.de

Möchte etwas Programmieren.. welche Sprache wäre wäre die beste Wahl?

Status: Gelöst | Ubuntu-Version: Ubuntu 10.10 (Maverick Meerkat)
Antworten |

LoserKidJones

Anmeldungsdatum:
3. April 2008

Beiträge: 87

Hallo,

ich hoffe, dass ich hier zumindest etwas richtig bin und hoffe, dass sich hier der Eine oder Andere findet, der meine Frage beantworten kann.

ich möchte gerne etwas programmieren lernen (mehr so hobbymäßig um mir das eine oder andere Helferlein selbst schreiben zu können) und habe da PHP im Blick.

Zum Lernen habe mir folgendes Projekt vorgestellt, das bewusst etwas umfangreicher gewählt ist, zumal ich es selbst auch gut gebrauchen könnte:

Musik-Band Manager/Organizer mit Webzugang für mehrere Benutzerkonten und Benutzer-Gruppen inkl. Rechteverwaltung. Terminkalender und Erinnerungen + alle Daten/Funktionen auf einer Oberfläche im Blick.

1. Kalender für Shows und sonstige Termine:

-Eintragen, einsehen und editieren/löschen von Terminen
-Termine/Erinnerungen sollten nach Art unterschieden werden können (Probetermin, Pressetermin, Show, Bewerbungsfrist etc.)
-Warnung, wenn Termin schon vergeben ist
-Erinnerung an Termine, die zeitnah stattfinden
-Bei Auswahl eines Datensatzes von z.B. einer Location soll die Datenbank auf weitere Locations geprüft werden, die sich in der Nähe befinden, zwecks Tour-Planung

2. Adress-Verzeichnis mit Gruppenfunktion (z.B. Locations, Partner-Bands, Sponsoren etc.)sortierbar nach:
-kontaktiert
-kein Interesse
-Interesse / Demo angefordert
-Demo versendet
-Zusage
-Absage
-Rückmeldung ausstehend
-1x jährlich Hinweis für Prüfung ob Location/Veranstaltung noch existiert bzw. wurde die Prüfung durchgeführt, ja oder nein?

3. Online Zugang zu Dokumenten/Datenbanken wie Presse-Fotos, Techrider etc. inkl. Editor oder Datei-Upload zum Ändern von Anschreiben, Bestellung etc. Letztere sollten auch ausdruckbar sein

4. Sonstige Datenbanken für Notizen, ToDo-Listen, weitere Erinnerungsfunktionen etc.

Nun ist die Frage, ob das so in PHP realisierbar ist, oder ob eine andere Programmier-Sprache da mehr Sinn machen würde.

Das Ganze möchte ich auf einer LAMP Umgebung laufen lassen

Ich danke im Vorraus

Gruß

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Wenn nicht irgendwelche absolut zwingenden Gründe für PHP sprechen, sollte man eine andere Sprache wählen. Spontan fallen mir folgende Nachteile bei PHP ein:

  • inkonsistente Fehlerbehandlung (mal Exceptions, mal Fehlercodes)

  • nicht objektorientierte Standardbibliothek

  • miese Unterstützung für Unicode

  • inkonsistente Namenskonventionen

  • Namespaces erst seit PHP 5.3, werden daher in der Praxis nicht benutzt

  • Closures erst seit PHP 5.3, werden daher in der Praxis nicht benutzt

  • keine vernünftige Sammlung von Bibliotheken wie CPAN (Perl) oder PyPI (Python) (PEAR kann nicht ansatzweise mit dem Umfang von PyPI oder gar CPAN mithalten)

  • schwache Typsierung

  • ein "array" in PHP ist kein Array, sondern eine obskure Kombination aus Array und Hashtabelle

Und in dieser Liste fehlt vermutlich noch die Hälfte. Insgesamt hat man bei PHP so ziemlich alles falsch gemacht, daher empfehle ich Dir, Dir Python anzusehen. Dafür gibt es auch Webframeworks, die die komfortable Entwicklung von Webapplikationen ermöglichen, beispielsweise Pylons oder Django. Die Integration in eine Linux-Apache-MySQL-Infrastruktur stellt kein Problem dar.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Ich kann da Hello World nur zustimmen. Auch wenn es ein moderner Reflex ist, bei Web-Programmierung PHP zu schreien, sollte man sich da keinen Illusionen hingeben. Neben den Schwächen bei der Sprache selber, suggeriert einem Anfänger vieles im PHP Umfeld, dass Webprogrammierung etwas einfaches sei. Das Gegenteil ist jedoch der Fall! PHP sitzt da eben auch einfach in der Zwickmühle: Als reine Sprache für Webprogrammierung geschaffen, trauen sich Tutorials nicht, andere Wege zu beschreiten und von Realisierung von Webprojekten mit reinen Bordmitteln abzuraten. Dabei sollte man auch im PHP-Umfeld Frameworks einsetzen, um eine sichere, qualitativ gute und vor allem zuverlässige und leicht wartbare Anwendung zu entwickeln. Genau da liegt aber des Kasus Knaktus: Man muss erst einmal die Grundlage einer Sprache erlernen, um mit Frameworks klar zu kommen!

Insofern meine Empfehlung: Lerne Python, Ruby oder von mir aus auch Perl; konzentriere Dich zunächst auf eine reine Konsolenapplikation, ohne Web- oder Netzwerkkommunikation und ohne GUI. Wenn Du die Grundlagen drauf hast, suche Dir ein Webframework (full stack, wie Django oder eher micro wie flask in Python, oder RoR oder Sinatra in Ruby) in der entsprechenden Sprache. Je nachdem, wie gut Du Dein Projekt bis dato strukturiert hast, kannst Du dann sogar vieles am Code übernehmen und recyclen. Glaub mir, der Aufwand lohnt sich und macht sich bezahlt.

LoserKidJones

(Themenstarter)

Anmeldungsdatum:
3. April 2008

Beiträge: 87

Ich habe irgendwo mal aufgeschnappt, das Ruby quasi die zukunftsorientiertere Sprache sein soll.. ist dem denn so? dann wäre Ruby ja sinnvoller als Python

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Was auch immer das heißen soll, es ist auf jeden Fall nicht so. Auch als jemand der Ruby kennt und Python nicht, würde ich dir Python empfehlen. Es zwingt dich zu einigen grundsätzlich sinnvollen Herangehensweisen.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

LoserKidJones schrieb:

Ich habe irgendwo mal aufgeschnappt, das Ruby quasi die zukunftsorientiertere Sprache sein soll.. ist dem denn so? dann wäre Ruby ja sinnvoller als Python

Da sehe ich kaum einen Unterschied. Zumal der Umstieg von Ruby auf Python und vice versa relativ einfach geht. Die beiden Sprachen ähneln sich in vielen Paradigmen und Idiomen. Insofern kannst Du da wenig verkehrt machen 😉

Wichtiger ist imho das generelle Herangehen und dass man kein PHP benutzt 😈

DasIch

Avatar von DasIch

Anmeldungsdatum:
2. November 2005

Beiträge: 1130

LoserKidJones schrieb:

Ich habe irgendwo mal aufgeschnappt, das Ruby quasi die zukunftsorientiertere Sprache sein soll.. ist dem denn so? dann wäre Ruby ja sinnvoller als Python

Ruby und Python verfolgen recht unterschiedliche Ideen. Ruby ist quasi eine Kombination aus modernem Smalltalk und Perl, Python hat Einfluesse aus ABC, Dylan und einigen funktionalen Sprachen. Bei Python hat man mit dem Zen einen starken Fokus auf Design und Eleganz der Sprache der bei Ruby so nicht vorhanden ist. Desweiteren ist Python insgesamt wohl staerker verbreitet wobei beide Sprachen im Web Bereich recht nah aneinander liegen duerften.

Auf der anderen Seite zeigen Projekte wie unholy dass die Unterschiede so gewaltig nicht sind, beide sind im Prinzip leicht unterschiedliche Geschmacksrichtungen. Prinzipiell ist es daher sicherlich nicht verkehrt eine von beiden Sprachen zu kennen aber lernen der jeweils anderen bringt einem nicht sonderlich viel.

Von daher ist die Wahl zwischen Python und Ruby wirklich groesstenteils Geschmacksfrage, allerdings sind Tutorials und Pythons Dokumentation meiner Erfahrung nach fuer den Anfang besser.

rhersel

Avatar von rhersel

Anmeldungsdatum:
30. Januar 2007

Beiträge: 920

Wohnort: Zürich

Vor zwei Jahren habe ich mir die selbe Frage gestellt und mich für Python entschieden. Diese Entscheidung habe ich bis heute nicht bereut. Die wesentlichen Vorteile von Python sind für mich:

  • ist sehr verbreitet

  • ist leicht zu lernen

  • ist gut dokumentiert

  • es gibt genug Foren

  • es gibt viele Bücher

  • ist leicht zu lesen (die Syntax ist kaum kryptisch)

  • es gibt sehr viele Bibliotheken

  • man kann cross platform entwickeln

Deshalb: go for it 👍

LoserKidJones

(Themenstarter)

Anmeldungsdatum:
3. April 2008

Beiträge: 87

rhersel schrieb:

Vor zwei Jahren habe ich mir die selbe Frage gestellt und mich für Python entschieden. Diese Entscheidung habe ich bis heute nicht bereut. Die wesentlichen Vorteile von Python sind für mich:

  • ist sehr verbreitet

  • ist leicht zu lernen

  • ist gut dokumentiert

  • es gibt genug Foren

  • es gibt viele Bücher

  • ist leicht zu lesen (die Syntax ist kaum kryptisch)

  • es gibt sehr viele Bibliotheken

* man kann cross platform entwickeln

Deshalb: go for it 👍

Das es Plattformübergreifend funktioniert wäre mir schon wichtig (wie läuft das letztendlich? Jagt man den Quellcode entweder durch nen Linux-Kompiler oder eben durch einen Windows-Kompiler und gut ist?)

Primär zu meiner "Lern-Idee" soll es ja aber sowie zentral auf dem Server laufen, idealerweise über Apache mit MySQL, daher hatte ich als erstes an PHP gedacht. Wenn sowas über Python auch geht, umso besser. Servergestützt soll es aus dem Grund sein, da mein "Organizer" natürlich überall aus Web erreichbar sein soll.

Oder wäre es über Python quasi eine unabhängige Software, die ich dann auf dem Server installiere und die dann ihren eigenen Serverdienst hat und eine eigens dafür geschriebene Datenbank braucht statt MySQL?

Sorry, bin da echt ein Neuling.. bisher kann ich gerade mal das Nötigste an HTML und das soll sich eben ändern ^^

deadtronic

Anmeldungsdatum:
18. Februar 2010

Beiträge: 762

LoserKidJones schrieb:

Primär zu meiner "Lern-Idee" soll es ja aber sowie zentral auf dem Server laufen, idealerweise über Apache mit MySQL, daher hatte ich als erstes an PHP gedacht. Wenn sowas über Python auch geht, umso besser. Servergestützt soll es aus dem Grund sein, da mein "Organizer" natürlich überall aus Web erreichbar sein soll.

http://de.wikipedia.org/wiki/Mod_python Ist allerdings so, dass ein Großteil der Webhoster das nicht unterstützen.

Mehr Informationen gibts z.B. hier.

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

deadtronic schrieb:

http://de.wikipedia.org/wiki/Mod_python

mod_python ist tot, Python-Webapps bindet man per WSGI an (z. B. mit mod_wsgi).

LoserKidJones

(Themenstarter)

Anmeldungsdatum:
3. April 2008

Beiträge: 87

deadtronic schrieb:

LoserKidJones schrieb:

Primär zu meiner "Lern-Idee" soll es ja aber sowie zentral auf dem Server laufen, idealerweise über Apache mit MySQL, daher hatte ich als erstes an PHP gedacht. Wenn sowas über Python auch geht, umso besser. Servergestützt soll es aus dem Grund sein, da mein "Organizer" natürlich überall aus Web erreichbar sein soll.

http://de.wikipedia.org/wiki/Mod_python Ist allerdings so, dass ein Großteil der Webhoster das nicht unterstützen.

Mehr Informationen gibts z.B. hier.

das ist egal.. läuft wenn eh auf meiner eigenen Maschine.. kein Problem..

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

LoserKidJones

Oder wäre es über Python quasi eine unabhängige Software, die ich dann auf dem Server installiere und die dann ihren eigenen Serverdienst hat und eine eigens dafür geschriebene Datenbank braucht statt MySQL?

Nein nein, Python hat Anbindungen an alle möglichen bestehenden Software-Tools, seien es Webserver, Datenbanken o.a.

Allerdings bietet Python für die reine Entwicklung einen integrierten Webserver an, weswegen umständliches Deployen während der Entwicklung entfäält ☺

An Datenbanken kannst Du auch alles gängige wählen; bei relationalen DBs kann man z.B. auf Abstraktionslayer, wie SQLAlchemy, setzen, die einen von der dann konkret verwendeten DB weitestgehend unabhängig machen. Zudem existieren auch Anbindungen an die stark aufkommenden NoSQL-DBs, wie CouchDB oder MongoDB.

So, ich möchte aber noch mal anmerken, dass es imho keine gute Idee ist, sofort mit einem Webprojekt anzufangen 😉 Speziell, wenn Du zudem noch kompletter Neuling beim Programmieren an sich bist. Gründe habe ich ja weiter oben genannt.

LoserKidJones

(Themenstarter)

Anmeldungsdatum:
3. April 2008

Beiträge: 87

ok.. dann werd ich mir erstmal ein anderes Projekt überlegen und mich mal an Python versuchen.

Damit wären meine Fragen soweit beantwortet.

Vielen Dank ☺

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

LoserKidJones schrieb:

ok.. dann werd ich mir erstmal ein anderes Projekt überlegen und mich mal an Python versuchen.

Nee. Versuche Dich doch ruhig daran! Nur eben (noch) nicht als Webapplikation. Beginne doch einfach damit, das ganze als reine Konsolen-App zu entwickeln. Zunächst vereinfachst Du dabei auch die Persistenz in Datenbanken, sondern nutzt simple Text-/Binärdateien via pickle / json o.ä. Du wirst sehen, das motiviert schon ungemein. Danach kannst Du z.B. dann mal die Persistenz umstellen und via Template-Engine (z.B. jinja2) statische HTML-Seiten generieren lassen. Wenn Du das alles realisiert hast, sind locker mal einige Monate um und Du hast dabei viele Grundlagen und einige wunderbare Bibliotheken kennengelernt. ☺

Antworten |