7

He estado aprendiendo los lenguajes Factor y J para experimentar con la programación sin puntos. La mecánica básica de los lenguajes parece clara, pero tener una idea de cómo abordar el diseño de algoritmos es un desafío.¿Jugando con código sin puntos?

Una fuente particular de confusión para mí es cómo se debe estructurar el código para que sea fácil experimentar con diferentes parámetros. Con esto, me refiero al tipo de cosas en las que Mathematica y Matlab son tan buenos; configura un algoritmo, luego manipula las variables y observa lo que sucede.

¿Cómo se hace esto sin variables explícitas? Tal vez estoy pensando en todo esto mal. ¿Cómo debería abordar esto en una programación sin puntos?

Respuesta

9

Aquí hay tres consejos importantes que he encontrado muy útil en el trato con el paradigma de concatenación (aplicada al lenguaje de programación Factor en mi caso):

  • Factor de su código de piedad. Escribe funciones extremadamente pequeñas: si hay más de 3-4 parámetros de pila, tal vez podrías dividirla en partes más pequeñas.
  • Invierta su tiempo en aprender los combinadores de flujo de datos (bi, tri, escisión, propagación, ...). Permiten expresar patrones de flujo de datos comunes a la vez que eliminan la necesidad de barajar complejas.
  • Aprenda a crear presupuestos de otras citas. Use técnicas de currículum (curry, con, ...) para construir citas simples a partir de los parámetros de la pila, y cuando las cosas se vuelvan demasiado complejas, utilice las citas fritas (el vocabulario "frito"). Permiten crear fácilmente citas anidadas complejas a partir de patrones, sin ningún cambio de pila.

Y como siempre, lea y "Camine" en el código existente. En Factor es bastante fácil explorar el tiempo de ejecución y ver cómo funcionan las cosas.

Para su fuente específica de confusión, si tiene muchos parámetros de entrada en su algoritmo, lo más importante que debe hacer es estudiar cómo se usarán. Cosecha de patrones de flujo de datos. Realmente debe PENSAR sobre la mejor manera de "programar" operaciones en el conjunto más pequeño de parámetros relacionados.

Es una experiencia bastante difícil, pero también es muy gratificante cuando tiene éxito. Nos sentimos como un compilador humano después de eso ..

¡Buena suerte!

Cuestiones relacionadas