- Estudió 5 años en una escuela de informática en Francia y trabajó 20 años como desarrollador freelance
- Trabajó principalmente en proyectos de clientes con Ruby on Rails
- Al empezar a aprender Common Lisp, escribió un protocolo de administración de servidores que generaba un parser ASN.1
- Generó código C desde Common Lisp para desarrollar un servidor SNMP
- Después de eso, escribió varios proyectos basados en Common Lisp:
- cl-unix-cybernetics – el proyecto con más estrellas en GitHub
- Desarrollo de cl-streams y cffi-posix
- cl-facts – un triple store que funciona como una base de datos de grafos en Common Lisp
- Rápido, con transacciones atómicas y soporte para transacciones anidables
- Compatible con
unwind-protect
- Se puede usar aprendiendo solo 3 macros
- Presentado en el European Lisp Symposium (ELS)
- Aunque perdió clientes al enfocarse en el desarrollo con Common Lisp, mantuvo una fuerte convicción en el potencial de Lisp
Límites de las máquinas virtuales (VM) y los contenedores
- Expertos señalan problemas en las VM y los contenedores:
- Las VM desperdician CPU y ancho de banda innecesariamente
- Los contenedores basados en cgroups de Linux tienen vulnerabilidades de ejecución remota de comandos (RCE) y escalación de privilegios
- Cada año se descubren nuevas vulnerabilidades de seguridad
- Al preferir OpenBSD, evitó problemas de herramientas DevOps como Terraform y Ansible
Límites de Common Lisp y problemas de rendimiento
- En Clojure y otros entornos, surgieron problemas de rendimiento por el GC (recolector de basura):
- Hubo casos de fracaso al desarrollar juegos de estrategia que procesaban miles de unidades
- El GC de la JVM implica problemas de rendimiento y costo
Decisión de cambiar a C
- Reconoció los límites de rendimiento y portabilidad de Common Lisp:
- Linux, OpenBSD, GTK+ y GNOME están escritos en C
- Finalmente cambió a C para resolver los problemas de rendimiento y portabilidad
Desarrollo del nuevo lenguaje KC3
- Desarrollo de la biblioteca de utilidades libc3 → lenguaje C3 → renombrado a KC3
- Características de KC3:
- Tiene intérprete (ic3) y compilador (c3c)
- Crea estructuras de datos desde buffers UTF-8 y las convierte de vuelta
- Programación defensiva → minimización de bugs desde el inicio
- Sin problemas de seguridad
- Sistema de tipos basado en union etiquetadas con enum
Logros basados en KC3
- cl-facts porteado a C89:
- Desarrollo completado durante el periodo de Covid-19
- Implementación de adición de triples, borrado, sistema de consultas recursivas, transacciones, logging, persistencia, etc.
- Escritura de parser y generador para tipos algorítmicos:
- Incluye structs, listas enlazadas, maps, tablas hash, números complejos, tuplas, bloques de código, etc.
- Recibió gran inspiración de José Valim (creador de Elixir)
- ikc3 – un REPL que muestra los resultados de evaluación de KC3
- kc3_httpd – desarrollo de un servidor web basado en un framework MVC
- La página del blog actual también se sirve con kc3_httpd
- Creación de un sitio web de documentación → uso del convertidor de Markdown a HTML de KC3
Conclusión
- Cambió a C con base en la experiencia obtenida en Common Lisp
- KC3 logra resultados sobresalientes en rendimiento, seguridad y portabilidad
- Planea ofrecer más macros y ejemplos relacionados con KC3 en el futuro
1 comentarios
Comentarios en Hacker News
Estoy en desacuerdo. Usé mucho VB cuando era joven, luego aprendí Java, C y C++ en la universidad, y usé principalmente C.
NULLy condiciones de carrera.Me identifico totalmente con ese sentimiento. Durante años sentí un fuerte impulso de desarrollar algo en C puro.
Empecé a programar en C hace mucho tiempo, y todavía a veces quiero volver a esa época.
Después de leer la entrada del blog, me quedé confundido sobre lo que el autor quería transmitir.
Se dio un ejemplo de código de kc3.
C fue mi primer lenguaje, e hice aplicaciones simples de consola y juegos pequeños.
A veces programo en C como hobby. Pero hay demasiado trabajo repetitivo y se vuelve aburrido.
C tuvo éxito porque era práctico.
No entiendo nada.
Este texto se lee como una historia de advertencia sin final feliz.