Webprojekt, welche Programmiersprache?
-
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.
-
Ich verstehe nicht, wo das Problem mit PHP liegt. Es findet in den größten Webprojekten der Welt Einsatz. So schlecht kann es dann gar nicht sein...
-
CrispyTurtleAlligator schrieb:
Ich verstehe nicht, wo das Problem mit PHP liegt. Es findet in den größten Webprojekten der Welt Einsatz. So schlecht kann es dann gar nicht sein...
Hier muss man Sprache und Plattform trennen. Die PHP Plattform ist toll. Die PHP Sprache nicht.
http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
Ein paar Sachen haben sich mittlerweile überholt, PHP wird ja stetig weiter entwickelt. Aber auch Sprache ist auch PHP 5.6 ein ziemlicher graus.Das hindert PHP aber nicht daran nützlich zu sein.
PS:
Prinzipiell ist das Problem eigentlich nur, dass die Leute die PHP Entwickeln ziemlich unfähig waren. Es wird zwar besser aber es gibt soo viele Altlasten dass man PHP nie mehr sauber hinbekommen wird. Und das PHP6 Desaster spricht ja auch für sich.Zum Spaß hier ein kleines Beispiel wie unfähig die PHP Entwickler sind: http://use.perl.org/use.perl.org/_Aristotle/journal/33448.html
-
Was ist den konkret an Phyton besser als an php?
Kann dir nur aus Sicht von nem C++ Entwickler sagen, der Python eigentlich wirklich hasst ! (whitespace symantik, grässlich).
Man kann sich Python code anschauen, und meist versteht man den auf Anhieb. Und er hat auch ne gewisse eleganz. Also man kann gut mit Ihm Procedural und Objectorientiert Code schreiben, der wenig zusätzliche Doku bedarf ...Und das sag ich als C++ Entwickler ^^
schau ich mir php an, fühl ich mich sofort 30 jahre zurueckversetzt, als C Style schreiben noch eher die normalität in C++ war. Als es C++ und seine Jünger noch schwer hatten, gegen all die eingefleischten C Schreiber und mit C in der Schule bombardierten Absolventen kämpfen mussten ^^.
Und naturgemäß sträuben sich dann sofort die Nackenhaare ^^Kann aber auch sein das ich nur miesen Php code unter die Finger bekommen habe ... Ich hab allerdings auch noch nie nen richtiges PhP projet mit mehreren Modulen und So gesehen. Geht sowas ueberhaupt ?
Ist aber nur meine Ansicht .... und ja C holt einem immer wieder ein ^^ Da denkt man, man hats hinter sich, und dann darf man shader schreiben .... ^^
Am ende kommts dann aber immer auf die "Umegbung" an ...
Ich glaub so viel nehmen sich die interpretiereten Sprachen nicht ...
Aber wer hat den besseren Editor / die bessere IDE ?
Welche Sprache eigenet sich im Zusammenhang mit meiner sonstigen Tätigkeit denn noch ? Als C++ entwickler hat man dann ne Affinität zu Interpretern, die nen besonders guten runtime Library Support für C/C++ haben (Python und Lua, zumindest gibts da tonnenweise dokus und in der google suchen stehen die auch ned weit hinten ^^ )beo Php denkt man sofort immer an WebScriptSprache ... wo man fix innerhalb ner Webseite code ausführen kann was vom Browser auch unterstützt wird.
Keine Ahnung ob PhP auf anderen gebieten gut ist, warum das testen, wenn das durch andere Sprachen gut abgedeckt wird ?Ciao ...
-
Moderner PHP Code ist eigentlich nicht von Java zu unterscheiden. Also was Code lesen usw betrifft ist PHP da schon gut und die Tools (IDE und Co) sind in PHP wohl ein Eck weiter als in Python.