Gibt es statisch typisierte Web-Skriptsprachen? [geschlossen]


12

Es gibt anscheinend zwei Möglichkeiten, ein Webserver-Backend einzurichten. Sie können einen LAMP-Stapel mit dem serverseitigen Code in PHP oder Python (oder Ruby oder JavaScript, die nicht mit einem P beginnen) verwenden. Diese Skriptsprachen werden in der Regel dynamisch eingegeben, mit allen Nachteilen in Leistung, Korrektheit und Wartungsfreundlichkeit, die dynamisch typisierte Sprachen mit sich bringen, aber es ist einfach, den Server zu aktualisieren, da die gesamte Seitengenerierungslogik in externen Skripten gespeichert ist.

Der andere häufig verwendete Hauptarchitekturstil ist ASP.NET, bei dem die Seitengenerierungslogik in kompiliertem Code geschrieben ist. Hierbei werden in der Regel statisch typisierte Sprachen verwendet, sodass Sie Code erhalten, der den Vorteil eines Compilers bietet. Die gesamte Seitengenerierungslogik wird jedoch auf dem Server kompiliert. Wenn Sie also etwas ändern müssen, müssen Sie den Server herunterfahren und Ersetzen Sie es durch einen neuen Build.

Das wundert mich also. Gibt es serverseitige Skriptsprachen, die statische Typisierung verwenden, um das Beste aus beiden Welten zu erreichen?


2
Haben Sie darüber nachgedacht, Go zu verwenden ?
Pswg


4
"Alle Nachteile in Bezug auf Leistung, Korrektheit und Wartbarkeit, die dynamisch typisierte Sprachen mit sich bringen". Diese Behauptungen sind bestenfalls umstritten und im schlimmsten Fall falsch (die schnellsten JITs gelten heutzutage für dynamisch typisierte Sprachen).
Javier

2
"Die Seitengenerierungslogik ist auf dem Server kompiliert. Wenn Sie also etwas ändern müssen, müssen Sie den Server herunterfahren und durch einen neuen Build ersetzen." Es gibt mehrere Serverumgebungen, die ohne Dienstunterbrechung auf eine neue Binärdatei umstellen können. dh uWSGI würdevoll nachladen
Javier

1
Für die JVM gibt es eine Reihe von Frameworks, mit denen Sie neu kompilieren und im laufenden Betrieb austauschen können.
back2dos

Antworten:


8

UPDATE: Aktuellere Lösungen umfassen AtScript

Sie sollten Google Dart ausprobieren .

Die Eingabe ist optional. Dies bedeutet, dass Sie Typanmerkungen hinzufügen können, die zur Laufzeit im "überprüften" aka Entwicklermodus aktiviert werden. Sie sind jedoch nicht erforderlich, und die Sprache bietet viele Vorteile anderer dynamischer Sprachen wie Python. Der Editor führt jedoch eine Inferenz durch, um Ihnen zu helfen, Fehler im Voraus zu finden. Die Dart-VM ist schnell und kann Schnappschüsse erstellen, was die Startzeit um das 10-fache beschleunigt. Es kompiliert auch bis zu Javascript und es ist schnell .

Der Hauptnachteil dabei ist, dass es sich um eine etwas neue Technologie handelt, daher gibt es nicht so viele Bibliotheken dafür, und ehrlich gesagt ist die Interoperabilität mit Javascript nicht so einfach, wie es sein sollte. Außerdem befindet sich die Sprache noch in der Entwicklung, sodass von Zeit zu Zeit grundlegende Änderungen vorgenommen werden.


Ich würde TypeScript eher empfehlen. Wie Dart, aber kompatibel mit JavaScript.
Knerd

4

Ihre Frage basiert auf mehreren falschen Annahmen.

Python und Ruby werden vor der Ausführung zu Bytecode kompiliert. Der Vorgang erfolgt automatisch, aber Änderungen an der Anwendung erfordern einen vollständigen Neustart. Node.JS verhält sich genauso, wird jedoch zu Maschinencode kompiliert.

ASP.NET-Code kann vorkompiliert und auf den Server kopiert oder bei Bedarf dynamisch aus dem Quellcode auf dem Server kompiliert werden. IIS verarbeitet beide Arten von Updates ohne Ausfallzeiten (die ersten Anforderungen nach dem Update sind langsam.) Mit Python und Ruby sind Updates ohne Ausfallzeiten möglich. Bei so vielen Bereitstellungsoptionen ist dies jedoch keine Selbstverständlichkeit.

Auf dieser Basis würde ich meinen, dass Sie mit jeder .NET-Sprache zufrieden sind.


3
Eine Skriptsprache ist, wenn Sie einige Teile davon in eine Datei schreiben und ausführen können. Es gibt keinen Grund, warum es nicht statisch geschrieben werden sollte.
Florian Margaine

@FlorianMargaine C ist also eine Skriptsprache?

@delnan c ++ auch.
Mikerobi

@mikerobi Eigentlich ist "meins" auch C ++ (und AFAIK der Nachfolger von CINT), ich habe es nur vermasselt.

2
@mikerobi Wenn Sie sich mit Picoc beschäftigen, werden Sie feststellen, dass es in erster Linie darum geht, eine Skriptsprache zu sein. Es ist nicht nur ein Interpreter für c, es ist ein Interpreter, der klein genug ist, um in größere Anwendungen und Geräte eingebettet zu werden und seinen Benutzern die Möglichkeit zu geben, kleine Skripte in c zu schreiben. Einige Sprachen können vielleicht besser Skripte schreiben als andere, aber eine Sprache kann nicht schlecht Skripte schreiben, nur weil sie (noch) nicht dafür verwendet wurde. Letztendlich besteht eine Sprache nur aus Syntax und Semantik. Die Implementierungen können sehr unterschiedlich sein.
Yannis

0

Es gibt keinen Grund, warum eine kompilierte Sprache stark typisiert oder schwer zu aktualisieren sein muss.

Vielleicht möchten Sie sich einige der erlangten Web-Setups wie Cowboy, Webmachine und Stickstoff ansehen. Mit Dialyzer können Sie eine sehr gute Typprüfung auf Korrektheit durchführen und Module zur Laufzeit im laufenden Betrieb neu laden, da erlang so konzipiert wurde, dass Software-Upgrades ohne Unterbrechung bestehender Benutzer durchgeführt werden können.

Außerdem kann eine Webmaschine (die ich am häufigsten benutzt habe) recht schnell sein. Ich habe gesehen, dass Webmaschinen auf API-Endpunkten von weniger als 10 ms auf einem kleinen Amazon EC2-Knoten durchschnittliche Antworten haben!

Wenn Sie eine statische Eingabe wünschen, probieren Sie das Yesod- Framework für die Haskell-Sprache aus. Haskell ist stark typisiert mit einem sehr reichen Typensystem.

Ich habe es nicht persönlich benutzt, aber die Leute, die es benutzen, lieben es.


3
Verwechseln Sie keine starken und statischen Eingaben. Haskell hat starke statische Typen, Python hat starke dynamische Typen.
Mikerobi

0

IMHO, die beste statisch typisierte Web - Skriptsprache ist D .

Wie interpretierte Skriptsprachen kann es Skripts im laufenden Betrieb und mit Blitzgeschwindigkeit kompilieren.

Die Sprache selbst fühlt sich wie ein stark typisiertes, leistungsstarkes JavaScript an, das beispielsweise viel leistungsfähiger als Go ist.

Alle parallelen Inhalte sind wie in PHP versteckt und die Vorlagen werden in nativem Code kompiliert.

Schwer zu finden, besser als das ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.