2012-05-17 5 views

Respuesta

3

Hay varios de alto rendimiento Haskell marcos web que hacen hincapié en una fuerte corrección estática:

El objetivo es apoyarse en el sistema de tipos de proporciona un código altamente optimizado y cero posibilidades de falla en el tiempo de ejecución.

Para citar el sitio web Yesod:

errores de tiempo de ejecución en la curva errores en tiempo de compilación

Yesod cree en la filosofía de hacer el compilador su aliado, no tu enemigo. Nosotros usamos el tipo de sistema para hacer cumplir tanto como sea posible, desde la generación de enlaces adecuados , para evitar los ataques XSS, para hacer frente a la codificación de caracteres problemas. En general, si su código se compila, funciona. Y en lugar de declarando tipos en cualquier lugar, deje que el compilador los resuelva para con la inferencia de tipo.

+0

Estos son completamente nuevos para mí, ¡gracias por la información! Sin embargo, soy escéptico acerca de la observación del "fallo en el tiempo de ejecución cero". ¿Podrían dar más detalles al respecto? La tipificación estática no elimina errores de comportamiento ... –

+1

Debo aclarar: El * objetivo * es codificar tantas propiedades como sea posible en el sistema de tipos, para aproximar a cero la posibilidad de falla en el tiempo de ejecución, en el límite. No significa que tenga una aplicación web formalmente verificada, pero es un paso adelante. –

+0

Impresionante, actualmente estoy usando verificación formal en .NET a través de contratos de código. Estos suenan como mis idiomas :) :) –

1

creo Ruby se escribe cenaseis, por lo Ruby on Rails ser una buena opción para esto.

+0

¿Estás seguro de que Ruby está fuertemente tipado? Wikipedia parece pensar lo contrario ... –

+4

Sí, pero ruby ​​no está ** estáticamente estátizado **. Fuertemente tipeado significa que el sistema de programación rechaza expresiones/operaciones donde los tipos no coinciden. Pero esto podría aplicarse en tiempo de ejecución, como en Ruby. –

+0

Ah, sí, por supuesto, gracias por limpiar eso. ¡Actualizaré la pregunta! –

4

Puede utilizar un lenguaje único para las partes tanto de cliente y servidor:

  1. Java
  2. C#
  3. de Google Ir
  4. Scala
  5. GWT (marco de Java)
  6. Haskell Web marcos
+0

PHP y Python no son lenguajes tipados estáticamente. Por lo tanto, sus marcos no evitan que los errores de tipo en el tiempo de ejecución rompan el servidor. –

+0

Está mezclando marcos e idiomas. GWT es un marco que usa Java. Esto puede ser engañoso en mi humilde opinión. –

+0

@MikeMyers Oh, sin dudas voté por enumerarlas todas, pero pensé que el OP era bastante claro sobre el deseo de idiomas, no una lista de marcos que usan el mismo lenguaje. La pregunta resalta las opciones limitadas de lenguajes tipados estáticamente para desarrolladores web. Sería bueno ver la versión estáticamente tipada de nodejs. –

2

Si te refieres a tipado estático, desafortunadamente no hay mucha opción. El idioma Go de Google parece comenzar a crecer en el espacio de aplicaciones web (hay soporte Go para Google App Engine y proyectos como GoWeb), pero estos esfuerzos probablemente aún no sean muy maduros.

Scala podría ser otra opción posible. Si bien también se ejecuta en JVM, sus marcos web son muy diferentes debido a las características avanzadas del lenguaje (ver, por ejemplo, Lift) y podría valer la pena examinarlo por separado.

2

Además de Java y C# (a través de mono), también se puede utilizar (moderna) C++ en la forma de la
Wt (C++ Web Toolkit). Ahora la parte C de compatibilidad con versiones anteriores de C++ no está fuertemente tipada, pero de lo contrario los programas C++ son seguros.

Si desea seguridad de tipo realmente fuerte, puede usar Haskell con Yesod. El objetivo de Yesod es utilizar tipos fuertes para evitar errores comunes en la programación de aplicaciones web. Las URL, por ejemplo, son tipo verificadas. No puede construir un enlace dentro de la aplicación sin proporcionar los parámetros correctos. El escapado del contenido del usuario al representar la página web es otra situación en la que el compilador Haskell se utiliza para garantizar que las cadenas se escapen correctamente antes de ser incluidas en una página renderizada.

Cuestiones relacionadas