Wie wichtig ist es, für Client und Server dieselbe Sprache zu verwenden?

11

Ich habe Architekturlösungen für ein mobiles Projekt evaluiert, das neben nativen Apps auch einen Webdienst / eine Web-App enthält, und verschiedene Bibliotheken, Frameworks und Stacks wie Meteor untersucht , wobei es sich um eine Art "Open-Stack-Paket-Framework" handelt. ist eng mit Node.js verbunden .

Es wird viel über die Vorteile der Verwendung derselben Sprache auf Client- und Serverseite gesprochen, und ich verstehe das nicht. Ich könnte verstehen, ob Sie den gesamten Status einer Webanwendung sowohl auf dem Client als auch auf dem Server spiegeln möchten, aber Schwierigkeiten haben, andere Gewinne zu erzielen ... Workflow-Effizienz?

Ich versuche zu verstehen, warum die Parität der Client / Server-Sprache als heiliger Gral angesehen wird. Warum ist die Parität der Client / Server-Sprache bei der Softwareentwicklung wichtig?

Makita
quelle
12
Ich würde behaupten, dass dies nicht unbedingt eine großartige Sache ist, insbesondere wenn JavaScript die fragliche Sprache ist.
Latty
4
Ich muss zugeben, dass ich mit JS noch nicht den Moment der Offenbarung erreicht habe und daher nicht verstanden habe, warum Sie
Makita
1
Vielen Dank, dass Sie Ihren ersten Beitrag zu Stack Exchange-Programmierern verfasst haben. Weitere Informationen zum Maximieren der Aufwärtsstimmen und zum Minimieren der Abwärtsstimmen finden Sie in den FAQ. Möglicherweise wurden Sie abgelehnt, weil Ihre Frage eher ein Chat-Thema als etwas mit einer bestimmten Antwort ist. Es kann eine Weile dauern, bis Sie sich an das Format hier gewöhnt haben. Kurze Antworten ohne Details werden abgelehnt. So sind Antworten, die ein Thema diskutieren. Es gibt einen Mittelweg, auf dem eine Frage oder Antwort spezifisch, aber universell genug ist und ein Thema mit der richtigen Menge an Details trifft.
DeveloperDon
1
Ich würde sogar dagegen argumentieren. Wenn Sie für Server und Client dieselbe Sprache verwenden, besteht das Risiko von Verwicklungen und sprachspezifischen Funktionen in der Kommunikation.
Pieter B
3
@ Makita Ich denke, es ist eine gültige Frage, aber die Leute neigen dazu, mit Abstimmungen zufrieden zu sein, wenn sie nach Beispielen fragen. Ich habe bestimmte Teile der ursprünglichen Frage entfernt und Ihre Frage darauf konzentriert, warum die Parität der Client / Server-Sprache wichtig ist.
maple_shaft

Antworten:

5

Auf der PRO-Seite:

  • Wenn Schemata und Code von beiden Seiten wiederverwendet werden können, ist es sehr effizient, ähnliche Logik und Daten nur einmal zu implementieren.

Auf der CON-Seite:

  • Der Client kann in erster Linie eine Ansicht sein, die für eine Markup- oder Skriptsprache gut geeignet ist, während der Server in erster Linie eine Geschäftslogik sein kann, die für eine andere Sprache besser geeignet ist.

In der Webentwicklung haben sich die Sprachen vermehrt und leistungsstarke Tools für bestimmte Teile des Systems sowie die Notwendigkeit geschaffen, dass Entwickler oder Entwicklerteams viele Spezialgebiete erlernen müssen. In anderen Bereichen wie der Transaktionsverarbeitung oder eingebetteten Systemen, die einem Systemdesign-Ansatz folgen, können Einsparungen durch eine gemeinsame Sprache erzielt werden.

Neue Javascript-Frameworks scheinen sehr schnell bei uns zu sein, und es wird einige Arbeit geleistet, um APIs für das Back-End und Tools für das Front-End zu bündeln. Es kann klug sein, die Flexibilität und die Trennung von Bedenken zwischen clientseitigem und serverseitigem Code beizubehalten, damit Sie frei zwischen ihnen schweben können, ohne zu lange mit einem bestimmten Tool festzuhalten.

DeveloperDon
quelle
14

Vermutlich sind die wahrgenommenen Vorteile:

Das heißt, es erleichtert den Projektmanagern das Ressourcenmanagement und hat wenig oder keinen technischen Nutzen (möglicherweise sogar einen negativen technischen Nutzen, wenn Sie ein paar One-Trick-Ponys einstellen).

jk.
quelle
1
Es ist ein Vorteil, wenn Sie selbst entwickeln, da es keinen "mentalen" Wechsel zwischen Server und Client gibt. Wenn Sie etwas tun möchten und eine große Erfahrung mit JavaScript haben, erhalten Sie auf diese Weise wahrscheinlich bessere und schnellere Ergebnisse, aber das ist wahrscheinlich alles ...
K ..
Würden Sie auch sagen, dass es keinen technischen Nachteil gibt, möglicherweise einen Vorteil bei der Verwendung einer anderen Sprache für jedes einzelne Subsystem?
Michael Borgwardt
1
@MichaelBorgwardt unter der Annahme, dass jede Sprache gut zum Subsystem passt, würde ich sagen, ja, kein technischer Nachteil (vielleicht auch kein großer Vorteil), aber es könnte einen großen Einfluss auf die Teamdynamik und die Einstellung haben. Natürlich wird die Mehrheit der Subsysteme in jeder Sprache ziemlich einfach zu implementieren sein, daher würde ich nicht erwarten, dass dies extrem ist.
jk.
Die Bemerkung, dass dies eine schlechte Idee sei, ist nicht gerechtfertigt. Es gibt viele Sprachen, die mit JavaScript und einer serverseitigen Sprache kompiliert werden können, einschließlich Lisp , der Sprache, die im SICP-Kurs verwendet wird und von Joels Blogbeitrag gelobt wird.
back2dos
@ back2dos hoffentlich klärt das
jk.
2

Der Vorteil besteht darin, dass Sie das Fachwissen und den Code von Personen auf beiden Seiten (in gewissem Umfang) wiederverwenden können.

Menschen

Die Entwickler müssen eine einzige Sprache beherrschen und einen einzigen Pool bilden. Anstatt zwei Pools von Fachwissen. Dies erleichtert den Wissenstransfer zwischen ihnen und ermöglicht ihnen einen einfacheren Wechsel zwischen Client- und Serverseite. Schließlich erleichtert es die Kommunikation mit Teammitgliedern der "anderen Seite" bei der Erörterung technischer Probleme, da sie denselben technischen Hintergrund haben.

Code

Manchmal ist es nützlich, einen Status auf der Clientseite oder Algorithmen oder beides zu haben. Manchmal wird auf beiden Seiten dasselbe gemacht. Nehmen wir das Beispiel eines Multiplayer-Spiels: Sie müssen den Spielstatus sowohl auf dem Client als auch auf dem Server darstellen. Außerdem müssen Sie die Regeln auf der Clientseite (für die Reaktionsfähigkeit) und auch auf der Serverseite (um die Aktionen eines Spielers zu validieren) implementieren. Die Möglichkeit, Code für diese Dinge wiederzuverwenden, kann ein großer Vorteil sein. ... in einigen anderen Anwendungen würden Sie dies überhaupt nicht benötigen ... alles hängt vom Fall ab.

... natürlich gibt es auch Nachteile, aber das ist für einen anderen Beitrag;)

dagnelies
quelle