Webprojekt, welche Programmiersprache?
-
Ich gebe euch nur mal einen Tipp, überlegt nicht zu lange. Hier greift der Klassiker - Viele Wege führen nach Rom.
Einige Projekte scheitern schon weil sich die Initiatoren zuviel Gedanken um die "richtige" Basis machen. Natürlich macht das Sinn sich zu Informieren aber man muss auch Wissen wann es genug ist. Wenn das Projekt einmal läuft kann man es immer noch umbauen falls nötig. klingt doof aber... Realität.
Fangt doch einfach mal rein mit NodeJS an.
-
Nehmt die Sprache, mit der ihr euch am wohlsten fühlt. Besser nach einem Jahr zu wechseln, als vor lauter Vorbereitung nicht aus den Startlöchern zu kommen und nach einem Jahr alles neu schreiben zu müssen, weil der Code von Anfängern kommt, die die Sprache extra für das Projekt gelernt haben.
Entwickler findet ihr für jede Sprache und Performance gibt es auch mit jeder Sprache. Wenn ihr numerisch aufwändige Berechnungen habt, dann müsst ihr die ja ohnehin nicht in der Sprache eures Webinterface laufen lassen. In der Praxis laufen solche Berechnungen ja ohnehin nicht synchron in der Webapp, sondern werden entweder von eurem Webinterface nur angestoßen oder laufen in einem Cronjob oä, dh. es tut auch nicht weh, wenn z.B. ein PHP-Webinterface eine Fortran-Binary anstößt.
-
Es ist richtig das die "richtige" Wahl der Umgebung schon enorm Zeit und Aufwand sparen kann ... wenn !!! man sie überhaupt im vorhinein denn treffen kann !
Als Webprojekt habt Ihr aber einen riessen Vorteil, Ihr seid nicht an einen Bestimmten Rechner und damit OS und so gebunden.
Definiert eure 1-level Architektur Implementations-Neutral, also Web geeigneten Schnittstellen ((HTTP)REST, (XML)RPC, oder was auch immer) und vor allem Modular. Dann könnt Ihr die Module in den Sprachen umsetzen die dafür am geeignetsten sind.
Jede Sprache hat Ihre Vorteile ....
Und wenn später Programmierer sucht und mit der Sprache variabel ist, ist das auch nen Vorteil ^^Bei größeren gemanagten Web Projekten hat sich aber mittlerweile Java + nen Web Container (jetty, tomcat, glassfish) so als quasi standard in der Industrie gebildet. Da bekommt man den meisten Support (Plugins, IDE's, Tools, Bibliotheken), gut modularisierbar und hat mächtige Verwaltungs tools, aka für größere Projekte gut geeignet. Und es gibt fast alles frei ....
Auch da kann man erst mal klein anfangen, und performancekritische dinge auch später auslagern (CGI schnittstellen + C/c++ module) wenn man sich das durch bescheuertes Design nicht verbaut hat ^^Wenn das Projekt einmal läuft kann man es immer noch umbauen falls nötig. klingt doof aber... Realität.
Leider zu oft ist das nicht Realitaet !
Das liegt aber nicht an der Sprache sondern entweder an der Architektur und/oder dem Auftraggeber ^^Ciao ....
-
Für das Frontend kann ich PHP sehr empfehlen. Sehr einfach zu lernen und es ist genau für diesen Zweck erschaffen worden und macht da seinen Zweck besser als jede andere Sprache, wenn das Frontend selbst kompliziert sehr komplex sein sollte, sollte man noch ein php-Framework zur Hilfe nehmen, damit kann man am schnellsten und besten Entwickeln, hier wäre meine Empfehlung phalcon, das ist einfach am schnellsten.
Das Rechnen selbst würde ich dann in C++ implementieren, die Schnittstelle kann man über Sockets machen, am besten Unix Domain Sockets.
-
Ich empfehle IMMER Frameworks zu verwenden.
Wenn man aber das Backend eh in C++ schreibt, dann am besten eine simple REST API anbieten und das Frontend komplett in JavaScript schreiben.
-
Javascript dann aber auch mit framework, wie angular JS. jQuery nennt sich zwar auch Framework ist aber mit angular nicht zu vergleichen.
-
Guten Morgen und vielen Dank für die vielen Beiträge!
Insbesondere zu den letzten Beiträgen:
Wir sind bisher so verfahren, dass wir das Frontend (Javascript/jQuery) klar vom Backend über ein HTTP-Request (?) durch JSON getrennt haben. Das Frontend wird im Zuge unserer Programmierung schmal gehalten, da das Frontend zu gegebener Zeit durch einen Profi erstellt werden soll.
Wir möchten/werden also auf eine entsprechende Schnittstelle achten.Ich habe gelesen, dass es zwei Möglichkeiten gibt, um im Backend unterschiedliche Sprachen zu verknüpfen.
A:
Über die Schnittstelle spricht das Frontend direkt z.B. C++ an.B:
Über die Schittstelle wird z.B. PHP angesprochen welches die Aufgaben weiter z.B. an C++ verteilt.Stimmt das soweit? Gibt es gravierende Nachteile bei einer der Varianten?
Wir haben uns nun überlegt, (über Variante A/B) mit Python zu programmieren. Python ist gegenüber PHP deutlich schneller und es gibt im wissenschaftlichen Bereich schon viel fertig.
Die mathematischen Löser gibt es häufig in C/C++/Fortran, die Schnittstellen von Python zu den Lösern existieren häufig schon (weniger Programmieraufwand).Gibt es gegenüber dem Vorgehen große Bedenken?
Ist es problematisch, insbesondere Fortran Module auf dem Server laufen zu lassen? Ist man hier auf einen Windows-Server angewiesen?Vielen Dank Euch und einen sonnigen Freitag!
-
Dein als Version B beschriebenes Vorgehen macht nur Sinn, wenn dein Programm (backend in dem Falle) wiederum aus min. 2 Teilproblemen besteht, die durch unterschiedliche Programmiersprachen oder Entwicklerverteilung effizienter zu Lösen sind ....
Delegieren von einer Interpretersprache zu einer anderen, bzw. zu Binärcode, erzeugt immer Aufwand beim programmieren und frisst Ressourcen.
D.h. die Trennung macht wirklich nur Sinn, wenn man Handfeste Vorteile hat ...In deinem Fall:
Python mag schneller als php sein ... aber gegenüber c++ ???
Math. Bibliotheken in python sind sicher toll ... aber gegenüber c++ ?Also rein technisch und performancetechnisch wirst da nicht viel argumentation pro python finden.
Aber wenn viel verwaltungskram hast, der leicht und easy in python geht und damit selber/vom Praktikanten realisierbar ist, während für c++ teuer Spezialisten fremdeinkaufen muesstest ... dann ist das wiederum nen gutes Argument dafür ^^Also wie du siehst, so feingranulare Entscheidungen kann und will keiner hier für dich treffen ^^ Weil wir einfach auch den Background nicht so kennen ....
Und es haben immer beide Seiten Vor und Nachteile ...Und wenn Du einen auf Projektmanager und Systemarchitekt machen willst, dann ist genau das Dein täglich Brot! Du musst das also wirklich lernen zu entscheiden, und mit der entscheidung zu leben ^^
Wenn du hier im Forum fragst, kommt heute das als Favourit raus weil 25 mal empfohlen ... fragst 2 wochen später genau das selbe, kommt was ganz anderes raus ^^
Wenn man es nicht kann, und das lernen will, kein problem. Dann sollt man am Anfang aber keine Umfangreichen Projekte machen, keine wo was definiertes in definierter Zeit bei rumkommen muss, und man sollte nen kompletten Mißerfolg einplanen ... oder Sich professionelle Hilfe einkaufen und lernen, das solches wissen und die notwendige Risikobereitschaft nicht umsonst einigermassen gut Geld wert ist ^^
Ciao ...
-
RHBaum schrieb:
Aber wenn viel verwaltungskram hast, der leicht und easy in python geht und damit selber/vom Praktikanten realisierbar ist, während für c++ teuer Spezialisten fremdeinkaufen muesstest ... dann ist das wiederum nen gutes Argument dafür ^^
In dem Fall lohnt sich ja auch die Ueberlegung den C++ Code einfach als Python Modul zu erstellen um so das zusammenfuegen der 2 Backend Teile zu erleichtern. (Das gilt auch fuer PHP, Ruby, etc. man kann durchaus die Performance relevanten Teile in C++ schreiben und als Modul in diesen Sprachen einbinden)
Ich empfehle als Frontend aber etwas komplexeres als jQuery. jQuery ist quasi die Standard Library von JavaScript. Da will man aber schon mindestens Backbone haben oder gleich Angular. bzw: eines von denen hier: http://todomvc.com/
-
Phyton ist nicht schneller als php (vielleicht vor 2 Jahren), und ich sehe wirklich keine Vorteile in der Sprache und gegen C++ in Sachen mathemtisches rechnen, haben beide keine Chance.
Rechnen würde ich deshalb auf jeden Fall in C++ machen. Wenn du die REST-API nicht in C++ machen willst, kannst du das in php machen, aber das geht auch in C++, man sollte sich dann nur etwas über Webserver informiern.
-
Bengo schrieb:
Phyton ist nicht schneller als php
Deswegen hat er doch vorgeschlagen, ein Python Modul in C++ zu schreiben.
-
Mechanics schrieb:
Bengo schrieb:
Phyton ist nicht schneller als php
Deswegen hat er doch vorgeschlagen, ein Python Modul in C++ zu schreiben.
Es ging mir da eher um die Aussage, dass Phyton schneller als php sei. Und wenn das nicht zutreffen sollte, gibt es absolut überhaupt keine Notwendigkeit oder Vorteile von Phyton. Und auch keine Module für Phyton.
-
Ich hab den Thread nicht so mitgelesen, aber ich finds etwas komisch, dass du auf PHP rumreitest. Das hat auch überhaupt keine Vorteile. Die Sprache ist schon ziemlich übel, ich würde dafür jetzt nicht unbedingt Werbung machen. Python gefällt mir persönlich zwar auch nicht so, aber viel besser als PHP ist es allemal.
-
Mechanics schrieb:
Ich hab den Thread nicht so mitgelesen, aber ich finds etwas komisch, dass du auf PHP rumreitest. Das hat auch überhaupt keine Vorteile. Die Sprache ist schon ziemlich übel, ich würde dafür jetzt nicht unbedingt Werbung machen. Python gefällt mir persönlich zwar auch nicht so, aber viel besser als PHP ist es allemal.
Es hängt hier vor allem davon ab was die Anforderungen sind. PHP mit Symfony ist wie Java Programmieren und läuft halt überall. Python im Web ist nicht immer ideal.
Aber im Endeffekt ist es eigentlich egal ob man PHP, Perl, Python, Ruby oder NodeJS verwendet.
-
Shade Of Mine schrieb:
Aber im Endeffekt ist es eigentlich egal ob man PHP, Perl, Python, Ruby oder NodeJS verwendet.
Ja, es ist ziemlich egal. Und man kann auch mit PHP leben, hatte damit auch schon zu tun. Aber man sollte eine Sprache und Technologie nehmen, die einen nach Möglichkeit unterstützt und hilft Fehler zu vermeiden. Und allein schon wegen den ganzen Inkonsistenzen und Sachen, die man irgendwie anders erwartet, ist PHP einfach sehr suboptimal und meiner Meinung nach so gut wie immer die schlechteste Wahl.
-
Wann habt ihr eigentlich das letze mal wirklich mit php gearbeitet?
Die Sprache entwickelt sich enorm schnell und mit php 7 hat sie Phyton, Perl, Ruby und co als Websprache längst überhohlt.
Schon mit dem jetztigen php 5.6 kann man typsicher programmieren und ist damit im Prinzip mit Java zu vergleichen. Hat aber den Vorteil, dass man mit php viel einfacher Webanwendungen schreiben kann. Es hat seinen Grund warum Facebook verdammt viel Geld in die Entwicklung von php gesteckt hat, bzw. in HHVM.
-
Mechanics schrieb:
Shade Of Mine schrieb:
Aber im Endeffekt ist es eigentlich egal ob man PHP, Perl, Python, Ruby oder NodeJS verwendet.
Ja, es ist ziemlich egal. Und man kann auch mit PHP leben, hatte damit auch schon zu tun. Aber man sollte eine Sprache und Technologie nehmen, die einen nach Möglichkeit unterstützt und hilft Fehler zu vermeiden. Und allein schon wegen den ganzen Inkonsistenzen und Sachen, die man irgendwie anders erwartet, ist PHP einfach sehr suboptimal und meiner Meinung nach so gut wie immer die schlechteste Wahl.
Dafür hat PHP aber auch (von Rails mal abgesehen) die komplettesten und besten Frameworks die dir alle Arbeit abnehmen und einfach Rock Solid sind. Der Sprachkern selber ist eigentlich irrelevant - die Toolchain ist wichtig und die ist bei PHP für Webanwendungen halt ziemlich gut.
@Bengo:
Äh, nein. Python oder Ruby sind als Sprache unendlich viel besser als PHP. Die Stärke von PHP liegt in den Tools die es als Platform bietet. Und PHP7 ist noch nicht raus. Darüber was mit PHP6 ist rede ich ja gar nicht malNein, ich finde PHP ist eine gute Platform. Ich denke auch in vielen Situationen ist PHP Python und Perl um Dimensionen überlegen. Aber die Sprache Ansich ist ein Graus.
Zum Glück ist die Sprache ansich, wenn es darum geht effektiv zu sein, nahezu komplett irrelevant. Da ist die Platform als solches relevant und da ist PHP top.
-
Was ist den konkret an Phyton besser als an php?
Den einzigen Kritikpunkt den ich finden würde, ist das die Standartbiliothek von php leider nicht besonders modern und konsistet ist. Dafür aber sehr gut dokumentiert, was das mehr oder weniger ausgleicht.
-
Frontend: Javascript + jQuery (wenn es simpel ist), ansonsten eines der großen Frameworks
REST-API: Python mit Django oder NodeJS (ihr werdet weniger Fehler als mit C++ machen)
Backend (hier die heftigen Berechnungen): Das richtige Tool für euren Job, z.B. C++, Python, OCaml, Haskell whatever!
Idee: Frontend nimmt User-Eingaben, macht einen Request an die REST-API. Diese kommuniziert mit dem Backend z.B. über MessageQueues (Lastverteilung, Parallelisierung etc) und schickt das Ergebnis aus eurem Backend (vielleicht sogar Cluster) wieder an das Frontend.
Auf diese Weise habt ihr eine super Modularisierung: Die Berechnungen (also euer eigentliches Gut) ist stark von dem ganzen anderen Kram getrennt und ihr könnt da viel rum experimentieren. Das Backend und Frontend wird die meiste Zeit wahrscheinlich recht stabil bleiben.
Ich bin dabei jetzt immer ein bisschen von einem wissenschaftlichen Kontext ausgegangen. Da ist so eine Trennung besonders nützlich, weil beispielsweise mehrere Studienarbeiten parallel stattfinden können (Programmierpraktikum am Frontend, Masterarbeit in der Optimierung der Backend-Berechnungen, ...).
-
Da fragt sich natürlich, zu was du Python/Node/etc. hier einführen willst - das erhöht die Komplexität enorm und bringt ja eigentlich nur "weniger Komplexität bei der HTTP handhabung". Einfach eine fertige C++ library dafür verwenden, zB civetweb oder tntnet und du hast es deutlich einfacher.