3 puntos por GN⁺ 2024-10-25 | 1 comentarios | Compartir por WhatsApp
  • Pretty C es un nuevo lenguaje de scripting compatible con C que ofrece funciones como tipado dinámico, iteración genérica y seguimiento de recursos
  • Mantiene compatibilidad retroactiva con C y con todas sus bibliotecas
  • Está inspirado en Lua, Python, JavaScript y Lisp.

Objetivos

  • Ofrecer mucha azúcar sintáctica a los desarrolladores de C para que C sea más fácil de usar.
  • Posicionarse como el lenguaje de scripting definitivo capaz de reemplazar varios lenguajes como Lua, Python, JavaScript y Ruby.
  • Convertir cualquier base de código en algo amigable para principiantes incluyendo un solo archivo de cabecera.

Primeros pasos

  • Se puede usar clonando el repositorio de GitHub o copiando el archivo pretty.h.

Funciones de conveniencia incluidas

Encabezados estándar incluidos

  • stdbool.h proporciona true, false, bool
  • stdint.h proporciona tipos enteros de ancho fijo
  • iso646.h proporciona alternativas de operadores más legibles

Macros simples

  • Proporciona macros como max, min, len, default, limit, between, divisible

Nuevos tipos

  • Proporciona alias de tipos como string, byte, bytes, any
  • Proporciona atajos enteros como uchar, ushort, uint, ulong

Nuevos alias

  • Proporciona alias de operadores como eq, is, bitnot, bitxor
  • Proporciona operadores de comparación como below, above, upto, downto
  • Proporciona predicados numéricos/de datos como even, odd, positive, negative, zero, empty
  • Proporciona alias como nil, until, elif, ifnt, repeat, done~/~finish, pass

Inferencia de tipos (GCC, Clang o C23+)

  • Permite inferencia de tipos usando las palabras clave var, let, local

Salida genérica (C11+)

  • print, println permiten imprimir datos de varios tipos

Igualdad genérica (C11+)

  • equal permite comparar datos de varios tipos

Operador ternario elegante

  • Permite usar un operador ternario más legible con palabras clave como when, then, other, otherwise, only, otherwhen

Macro for

  • Macros como foreach, forthese, fortimes, forrange, forrangeby ofrecen varios patrones de iteración

Macros de asignación

  • Macros como new, vector, delete permiten asignación y liberación de memoria de forma simple

Utilidades de bloque

  • Proporciona utilidades de bloque como lambda, with, defer, try, catch

Resumen de GN⁺

Pretty C es un proyecto que agrega varias formas de azúcar sintáctica al lenguaje C para ayudar a los desarrolladores a escribir código con mayor facilidad. En particular, mantiene compatibilidad retroactiva con C y al mismo tiempo ofrece diversas funciones inspiradas en lenguajes como Lua, Python y JavaScript. Estas funciones pueden ayudar a los desarrolladores de C a escribir código más conciso y legible. Proyectos con funciones similares incluyen Zig y Nim.

1 comentarios

 
GN⁺ 2024-10-25
Comentarios de Hacker News
  • Existe una larga tradición de crear DSL dentro de C. Stephen Bourne quiso escribir el shell para que se pareciera a ALGOL usando el preprocesador de C
  • No está claro si esto es una broma o si el autor está confundido. No es scripting, y afirma introducir tipado fuerte, pero en realidad no hace nada con los tipos. Introduce alias de operadores supuestamente inspirados en Lua y Lisp, pero no existen en ninguno de esos dos lenguajes
  • Afirma ser un lenguaje de scripting, pero hay que compilar el programa. Si se le agrega CINT, se puede tener ejecución inmediata y un REPL
  • Ofrece tanta azúcar sintáctica como para provocarle un infarto diabético a un desarrollador de C. Divertido
  • Comete el mismo error que Python 2. Las cadenas y los bytes no son el mismo tipo y no deberían tratarse como si lo fueran
  • Si esto te parece interesante, probablemente también te guste libcello.h
  • Me acordé de una vez que revisé una base de código en C++ que parecía escrita en Java. Todo tenía nombres en camelCase, había getters y setters para todas las variables de clase, e interfaces por todas partes
  • Hay algunas cosas que deberían agregarse a CNoEvil y ogw. Parece que cada vez que este proyecto reaparece cada pocos meses, siempre hay más material
  • unless se lee mejor que ifnt
  • Me pregunto si el Readme puede entrelazarse con pretty.h. Si los bloques de código del orgfile son exhaustivos. Me gustó cómo explicaron su proceso de pensamiento en el Readme