Existe-t-il des langages de script Web de type statique? [fermé]

12

Il semble y avoir deux façons principales de configurer un serveur Web principal. Vous pouvez utiliser une pile LAMP, avec le code côté serveur dans quelque chose comme PHP ou Python (ou Ruby ou JavaScript, qui ne commence pas par un P.) Ces langages de script ont tendance à être typés dynamiquement, avec tous les inconvénients de performances, exactitude et maintenabilité qu'apportent les langages typés dynamiquement, mais il est facile de mettre à jour le serveur car toute la logique de génération de page est stockée dans des scripts externes.

L'autre style d'architecture majeur largement utilisé est ASP.NET, où la logique de génération de page est écrite en code compilé. Cela a tendance à utiliser des langages typés statiquement, donc vous obtenez du code qui a l'avantage d'un compilateur, mais toute la logique de génération de page est compilée dans le serveur, ce qui signifie que si vous devez changer quelque chose, vous devez arrêter le serveur et remplacez-le par une nouvelle construction.

Cela me fait donc me demander. Existe-t-il des langages de script côté serveur qui utilisent le typage statique, pour le meilleur des deux mondes?

Mason Wheeler
la source
2
Avez-vous pensé à utiliser Go ?
pswg
10
TypeScript ?
Odé le
4
"tous les inconvénients en termes de performances, d'exactitude et de maintenabilité qu'apportent les langages typés dynamiquement". Ces assertions sont discutables au mieux, et mauvaises au pire (les JIT les plus rapides de nos jours sont pour les langages à typage dynamique).
Javier
2
"La logique de génération de page est compilée dans le serveur, ce qui signifie que si vous devez changer quelque chose, vous devez arrêter le serveur et le remplacer par une nouvelle version." Il existe plusieurs environnements de serveur qui peuvent passer à un nouveau binaire sans interruption de service. c'est à dire. uWSGI graceful reload
Javier
1
Pour la JVM, il existe quelques cadres qui vous permettent de recompiler et de remplacer à chaud à la volée.
back2dos

Réponses:

8

MISE À JOUR: Les solutions plus actuelles incluent AtScript

Vous devriez essayer Google Dart .

Il a une saisie facultative, ce qui signifie que vous pouvez ajouter des annotations de type qui seront vérifiées en mode développeur `` vérifié '' au moment de l'exécution, mais elles ne sont pas obligatoires et la langue offre de nombreux avantages d'autres langages dynamiques comme python. Cependant, l'éditeur fera l'inférence de type pour essayer de vous aider à trouver les erreurs à l'avance. La machine virtuelle dart est rapide et peut produire des instantanés, ce qui peut accélérer jusqu'à 10 fois le temps de démarrage. Il se compile également en javascript et c'est rapide .

Le principal inconvénient ici est qu'il s'agit d'une technologie quelque peu nouvelle, donc il n'y a pas autant de bibliothèques pour elle, et honnêtement, l'interopérabilité avec javascript n'est pas aussi simple qu'elle devrait l'être. De plus, le langage est toujours en développement, il y a donc des changements de rupture de temps en temps.

Daniel Rodriguez
la source
Je recommanderais plutôt TypeScript. Comme fléchette, mais il est compatible avec JavaScript.
Knerd
4

Votre question est basée sur plusieurs hypothèses incorrectes.

Python, Ruby sont tous deux compilés en bytecode avant exécution. Le processus est automatique, mais les changements d'application nécessitent un redémarrage complet. Node.JS se comporte de la même manière mais se compile en code machine.

Le code ASP.NET peut être précompilé et copié sur le serveur ou compilé dynamiquement à la demande à partir du code source sur le serveur. IIS gère les deux formes de mises à jour sans temps d'arrêt nul (les premières demandes après la mise à jour seront lentes.) Les mises à jour sans temps d'arrêt sont possibles avec Python et Ruby, mais avec autant d'options de déploiement, ne sont pas quelque chose à prendre pour acquis.

Sur cette base, je pense que vous seriez satisfait de tout langage .NET.

mikerobi
la source
3
Un langage de script, c'est quand vous pouvez en écrire quelques morceaux dans un fichier et l'exécuter. Il n'y a aucune raison pour qu'il ne soit pas typé statiquement.
Florian Margaine
@FlorianMargaine Donc C est un langage de script?
@delnan c ++ aussi.
mikerobi
@mikerobi En fait, "le mien" est aussi C ++ (et AFAIK le successeur de CINT), je viens de bousiller ce morceau.
2
@mikerobi Si vous explorez picoc, vous remarquerez que tout ce qui a été écrit en premier lieu est d'être un langage de script. Ce n'est pas seulement un interpréteur pour c, c'est un interpréteur assez petit pour être intégré dans des applications et des appareils plus grands et donner à leurs utilisateurs la possibilité d'écrire de petits scripts en c. Certains langages sont peut-être meilleurs en script que d'autres, mais un langage n'est pas mauvais en script juste parce qu'il n'a pas encore été utilisé pour cela. Au bout du compte, un langage n'est qu'une syntaxe et une sémantique, les implémentations peuvent varier énormément.
yannis
0

Il n'y a aucune raison pour qu'une langue compilée soit fortement typée ou difficile à mettre à jour.

Vous voudrez peut-être regarder certaines des configurations Web erlang comme Cowboy, Webmachine et Azote. Avec Dialyzer, vous pouvez obtenir de très bons types de vérification de l'exactitude et vous pouvez recharger les modules à la volée au moment de l'exécution, car erlang a été conçu pour pouvoir mettre à niveau le logiciel en place sans interrompre les utilisateurs existants.

De plus, la webmachine (celle que j'ai utilisée le plus souvent) peut être assez rapide. J'ai vu webmachine avoir des réponses moyennes sur les points de terminaison API de moins de 10 ms sur un petit nœud amazon EC2!

Si vous voulez un typage statique, essayez le framework Yesod qui est pour le langage Haskell. Haskell est fortement typé avec un système de type très riche.

Je ne l'ai pas utilisé personnellement, mais les gens que je connais qui l'utilisent l'adorent.

Zachary K
la source
3
Ne confondez pas la frappe forte et statique. Haskell a des types statiques forts, Python a des types dynamiques forts.
mikerobi
0

À mon humble avis, le meilleur langage de script Web est typé statiquement D .

Comme les langages de script interprétés, il peut compiler des scripts à la volée et à une vitesse fulgurante.

Le langage lui-même ressemble à un JavaScript super puissant fortement typé, beaucoup plus puissant que Go par exemple.

Tous les trucs de concurrence sont cachés, comme en PHP, et les modèles sont compilés en code natif.

Difficile de trouver mieux que ça ...

Rico Decho
la source