¿Hay algún lenguaje de secuencias de comandos web de tipo estático? [cerrado]

12

Parece que hay dos formas principales de configurar un servidor web. Puede usar una pila LAMP, con el código del lado del servidor en algo como PHP o Python (o Ruby o JavaScript, que no comienzan con una P.) Estos lenguajes de secuencias de comandos tienden a escribirse dinámicamente, con todas las desventajas en rendimiento, corrección y capacidad de mantenimiento que aportan los idiomas escritos dinámicamente, pero es fácil actualizar el servidor porque toda la lógica de generación de páginas se almacena en scripts externos.

El otro estilo de arquitectura principal en uso amplio es ASP.NET, donde la lógica de generación de páginas se escribe en código compilado. Esto tiende a usar lenguajes tipados estáticamente, por lo que obtienes código que tiene el beneficio de un compilador, pero toda la lógica de generación de páginas se compila en el servidor, lo que significa que si necesitas cambiar algo, tienes que apagar el servidor y reemplazarlo con una nueva construcción.

Entonces eso me hace preguntarme. ¿Hay algún lenguaje de scripting del lado del servidor que use tipeo estático, para lo mejor de ambos mundos?

Mason Wheeler
fuente
2
¿Has pensado en usar Go ?
pswg
10
TypeScript ?
Oded
44
"Todas las desventajas en el rendimiento, la corrección y la capacidad de mantenimiento que traen los lenguajes escritos dinámicamente". Estas afirmaciones son discutibles en el mejor de los casos, y erróneas en el peor (los JIT más rápidos hoy en día son para lenguajes de tipo dinámico).
Javier
2
"La lógica de generación de páginas se compila en el servidor, lo que significa que si necesita cambiar algo, debe desactivar el servidor y reemplazarlo por una nueva compilación". Hay varios entornos de servidor que pueden transferirse a un nuevo binario sin interrupción del servicio. es decir. recarga elegante de uWSGI
Javier
1
Para la JVM hay un par de marcos que le permiten recompilar e intercambiar en marcha sobre la marcha.
back2dos

Respuestas:

8

ACTUALIZACIÓN: las soluciones más actuales incluyen AtScript

Deberías probar Google Dart .

Tiene una tipificación opcional, lo que significa que puede agregar anotaciones de tipo que se verificarán en el modo de desarrollador conocido como 'verificado' en tiempo de ejecución, pero no son necesarias y el idioma ofrece muchas de las ventajas de otros lenguajes dinámicos como python. Sin embargo, el editor hará inferencia de tipos para tratar de ayudarlo a encontrar errores con anticipación. La máquina virtual dart es rápida y puede producir instantáneas, lo que puede acelerar el tiempo de inicio hasta 10 veces. También se compila en JavaScript y es rápido .

El principal inconveniente aquí es que es una tecnología algo nueva, por lo que no hay tantas bibliotecas y, sinceramente, la interoperabilidad con JavaScript no es tan simple como debería ser. Además, el lenguaje todavía está en desarrollo, por lo que hay cambios importantes de vez en cuando.

Daniel Rodriguez
fuente
Prefiero recomendar TypeScript. Como dardo, pero es compatible con JavaScript.
Knerd
4

Su pregunta se basa en varios supuestos incorrectos.

Python, Ruby están compilados en bytecode antes de la ejecución. El proceso es automático, pero los cambios en la aplicación requieren un reinicio completo. Node.JS se comporta de la misma manera pero se compila en código máquina.

El código ASP.NET puede precompilarse y copiarse al servidor o compilarse dinámicamente a pedido desde el código fuente del servidor. IIS maneja ambas formas de actualizaciones sin tiempo de inactividad cero (las primeras solicitudes después de la actualización serán lentas). Las actualizaciones de tiempo de inactividad cero son posibles con Python y Ruby, pero con tantas opciones de implementación, no es algo que se dé por sentado.

Basado en eso, creo que estarías contento con cualquier lenguaje .NET.

Mikerobi
fuente
3
Un lenguaje de scripting es cuando puedes escribir algunos bits de él en un archivo y ejecutarlo. No hay razón para que no se tipee estáticamente.
Florian Margaine
@FlorianMargaine ¿Entonces C es un lenguaje de script?
@delnan c ++ también.
mikerobi
@mikerobi En realidad, "mío" también es C ++ (y AFAIK el sucesor de CINT), acabo de fastidiar ese bit.
2
@mikerobi Si exploras picoc, notarás que todo el punto en que fue escrito es, en primer lugar, un lenguaje de script. No es solo un intérprete para c, es un intérprete lo suficientemente pequeño como para integrarse en aplicaciones y dispositivos más grandes y brindar a sus usuarios la capacidad de escribir pequeños scripts en c. Algunos lenguajes pueden ser mejores en secuencias de comandos que otros, pero un lenguaje no es malo en secuencias de comandos solo porque no se ha utilizado para ello (todavía). Al final del día, un lenguaje es solo sintaxis y semántica, las implementaciones pueden variar enormemente.
Yannis
0

No hay ninguna razón por la que un lenguaje compilado deba escribirse con fuerza o sea difícil de actualizar.

Es posible que desee ver algunas de las configuraciones web de erlang como Cowboy, Webmachine y Nitrógeno. Con Dialyzer puede obtener una verificación de tipo muy agradable para la corrección y puede recargar módulos sobre la marcha en tiempo de ejecución, ya que erlang fue diseñado para poder actualizar el software en su lugar sin interrumpir a los usuarios existentes.

Además, la máquina web (la que más he usado) puede ser bastante rápida. ¡He visto que webmachine tiene respuestas promedio en puntos finales API de menos de 10 ms en un nodo pequeño EC2 de Amazon!

Si desea escribir estática, pruebe el marco Yesod que es para el lenguaje Haskell. Haskell está fuertemente tipado con un sistema de tipos muy rico.

No lo he usado personalmente, pero a las personas que conozco que lo usan les encanta.

Zachary K
fuente
3
No confundas la escritura fuerte y estática. Haskell tiene tipos estáticos fuertes, Python tiene tipos dinámicos fuertes.
mikerobi
0

En mi humilde opinión, el lenguaje de programación web mejor tipo estático es D .

Al igual que los lenguajes de scripts interpretados, puede compilar scripts sobre la marcha y a la velocidad de la luz.

El lenguaje en sí se siente como un JavaScript súper potente fuertemente tipado, mucho más poderoso que Go, por ejemplo.

Todo el material de concurrencia está oculto, como en PHP, y las plantillas se compilan en código nativo.

Difícil de encontrar mejor que eso ...

Rico Decho
fuente