¿Cuáles son los pros y los contras de usar lua para el desarrollo web?

Soy un antiguo fanático de Lua para el desarrollo web. Amo el idioma y amo la velocidad.

OpenResty es una locura rápida, y contrario a la creencia popular, eso puede ser importante. Una vez vi un servicio basado en Python que costaba más de $ 10k por mes para ejecutarse, con escalado automático y asignación dinámica de recursos. Los desarrolladores estaban realmente orgullosos de ello.

Tres servidores OpenResty podrían haber manejado la carga máxima a un costo de unos cientos de dólares al mes, con mucha menos complejidad, un código mucho más limpio y simple (debido a las rutinas), y la capacidad de manejar 10 veces su carga máxima sin siquiera sudar.

Pero, como dije, soy un ex fanático. Todavía tengo un poco de código ejecutándose en OpenResty, y funciona bien, por lo que es posible que nunca lo cambie. Pero he redescubierto los beneficios de la escritura estática, y no voy a volver.

OpenResty y Lua siguen siendo rápidos, pero he hecho la transición a TypeScript y NodeJS. Los tipos estáticos le brindan protección contra categorías enteras de errores, aceleran el desarrollo en aproximadamente 2x (a menos que tenga una memoria perfecta para todas las estructuras de datos de su aplicación, y tengo una memoria realmente buena), y permiten una refactorización y una exploración de código realmente buenas en su herramientas.

Sin embargo, eso fue solo una parte de la historia. NodeJS tiene cientos de miles de bibliotecas disponibles para ello. TypeScript tiene declaraciones de tipo para más de dos mil de esas bibliotecas, por lo que puede usarlas con seguridad de tipo de competencia. El administrador de paquetes de Lua tiene alrededor de dos mil bibliotecas en total , y no todas funcionan en LuaJIT en OpenResty (que se basa en Lua 5.1, mientras que las versiones 5.2 y 5.3 tienen cambios importantes). Peor aún, he encontrado que muchas bibliotecas son deficientes o desactualizadas (algunas con solo soporte para Lua 5.0, por ejemplo).

La comunidad para NodeJS es solo un orden de magnitud mayor, por lo que hay mucho más soporte para casi todo.

Otro punto: el lenguaje Go de Google es más rápido incluso que Lua, por un buen margen, y ya tiene una gran comunidad y una increíble biblioteca incorporada. Entonces, si necesita ese último bit de velocidad, puede usar Go y obtener la velocidad y la seguridad de tipo estático. Por cierto, si compara Go con Lua, notará varias similitudes; Estoy bastante seguro de que algunas características fueron inspiradas por Lua.

Gracias por el A2A.

A diferencia de lo que dice Piotr Grzesik, hay varias personas que usan Lua para el desarrollo web. Sin embargo, no soy una referencia, ya que apenas hago desarrollo web, pero entiendo algo del ecosistema Lua.

La elegancia de Lua, la semántica agradable y nítida, la legibilidad y los mecanismos potentes lo hacen elegible para una variedad de aplicaciones, incluido el desarrollo web. Lua está siendo utilizado en producción por sitios web como TaoBao, Alibaba, Cloudflare, Rackspace, itch.io, mail.ru, Mashape / Kong, Shopify y otros. Wikipedia usa Lua para su sistema de plantillas. También está lua.space, un sitio web reciente basado en Lua.

A partir de ahora, uno puede escribir servidores web Lua como Apache, Nginx / OpenResty, Lighttpd. Incluso hay servidores puros de Lua como Xavante o Pegasus. Hay un microframeworks para Lua como Lapis (equivalente al Frasco de Pyhon o Sinatra de Ruby), marcos MVC como Sailor, Orbit o Luci (equivalente al Zend de PHP, Rails de Ruby, Django de Python), marcos controlados por eventos como Luvit o TurboLua ( equivalente de Node.js de JavaScript) e incluso CMS, wiki como Ophal, LuaPress, Sputnik. Entonces, hay materiales, de hecho. Un punto de partida muy fuerte sería KeplerProject.

Espero que esto ayude.

En muchas aplicaciones web, no importa si el lenguaje que está usando es “el más rápido” porque la mayor parte del tiempo se dedica a bloquear las operaciones de E / S. Cuando se trata de Lua, no tuve la oportunidad de usarlo para desarrolladores web, pero no creo que sea muy popular (no conozco a una sola persona que lo use para el desarrollo web).