¿Por qué Janet? (2023)
Sintaxis, estilo lispy y legibilidad
- A muchos les gusta la nomenclatura de “Lisp modernizado” de Janet (
fn,first,do,set) y las s-expressions consistentes, especialmente para árboles/JSON/DSLs. - Otros siguen detestando fuertemente los paréntesis de Lisp, encontrándolos difíciles de leer/editar, especialmente para expresiones largas o con mucho contenido matemático.
- Algunos sostienen que las quejas sobre la sintaxis están exageradas dado que hay buenos editores (Parinfer, edición estructural) y que todos los lenguajes convencionales tienen sintaxis fea o inconsistente de distintas maneras.
- Los corchetes usados para parámetros y vectores (al estilo Clojure) son polarizantes; algunos encuentran elegante la convención una vez aprendida, otros no pueden superarla.
Rendimiento e implementación
- Se informa que Janet está aproximadamente en el territorio de Lua (PUC-Rio); algunos benchmarks muestran que es ~5–10x más rápido que Python en ejecuciones largas, ligeramente más lento que Fennel sobre LuaJIT, e incluso supera a Go para tareas pequeñas con mucho tiempo de compilación.
- Tiene una VM de bytecode con hilos; no al nivel de JIT, pero se la considera “suficientemente rápida” para scripting y herramientas pequeñas.
- El estado global es local al hilo; un
janet_init()por hilo. Se debate su idoneidad para un embedding complejo con múltiples intérpretes/hilos (p. ej., plugins de audio).
Macros, DSLs y poder en tiempo de compilación
- Las macros y la homoiconicidad son un gran atractivo. Los ejemplos incluyen DSLs de matemáticas infijas, DSLs de consultas tipo SQL/dataframe, vectorización estilo APL/J y DSLs de consultas web.
- Janet facilita trasladar trabajo pesado al tiempo de compilación (p. ej., incrustar grandes tablas de datos como estructuras literales en el binario).
- Algunos enfatizan que el “momento Lisp” viene del desarrollo guiado por REPL, la edición estructural y tratar el código como datos, no solo de las macros por sí solas.
Parseo: PEGs vs expresiones regulares
- Janet promueve el parseo de texto basado en PEG en lugar de regex.
- Quienes lo apoyan dicen que los PEG son más claros y más potentes para gramáticas complejas.
- Los críticos llaman a los PEG un “callejón sin salida evolutivo”, señalan alternativas no conmutativas y depuración complicada, y observan que las gramáticas reales pueden exponer debilidades del parser.
- Otros responden que los motores de regex también tienen comportamiento dependiente del orden y problemas de backtracking.
Integrabilidad, sandboxing y casos de uso
- La integrabilidad es un punto de venta clave; la gente usa Janet para scripting, marcado con scripts incrustados, motores de juego, servicios web y binarios pequeños.
- El sandboxing integrado (deshabilitar conjuntos de características de forma irreversible) es elogiado para incrustar código no confiable de forma segura o limitar las capacidades de utilidades.
- La red integrada y un DSL de shell lo hacen atractivo como reemplazo de
sh/Python/awk para scripts de sistema más grandes.
Ecosistema, herramientas y comparaciones
- Positivos: núcleo pequeño y simple; arranque rápido; posibilidad de construir binarios estáticos; documentación y tutoriales de la comunidad; uso real en producción (apps web, herramientas, software artístico).
- Negativos: ecosistema de bibliotecas limitado (p. ej., tooling HTTP, TLS, routing), versionado de paquetes débil y cierta confusión sobre “colecciones inmutables” que a menudo la stdlib devuelve de forma mutable.
- Se compara a menudo con Clojure (inmutabilidad, foco en datos), Lua/Fennel (integración, velocidad), Tcl (DSLs, scripting) y Babashka (scripting de shell). Las preferencias varían según la plataforma, las necesidades de procesamiento de datos y los compromisos entre arranque y rendimiento.
IA, comunidades y metadiscusión
- Un gran subhilo deriva hacia “comunidades sin IA”, defensas contra spam/bots (web-of-trust, verificación de identidad, muros de pago) y cómo la IA afecta a rankings y foros.
- Algunos elogian los espacios moderados por humanos y expresan oposición ideológica al contenido generado por LLM; otros encuentran alienantes las prohibiciones absolutas o las pruebas de pureza.