Por lo general, los lenguajes de programación visual son lenguajes de flujo de datos como Max / MSP, LabVIEW y similares, pero voy a tocar mi propio claxon por un momento aquí y mencionaré mi primer lenguaje de programación esotérico, Spiral. No es de muy alto nivel de ninguna manera, pero la forma de los programas sugiere fuertemente su comportamiento y la naturaleza de los algoritmos subyacentes. En particular, los bucles son bucles literales de código, los condicionales se parecen mucho a los cuellos de botella protegidos a los que a menudo actúan, y la recursividad … en realidad no es algo fácil de hacer.
En un momento, tenía un intérprete interactivo de Java que le permitía adjuntar comentarios a caracteres individuales, recorrer el programa y ver todo su estado, incluidos todos los datos en deque, y generalmente tener una imagen mental completa de la ejecución del programa como yo fui. Es lo más cerca que he estado de encapsular algoritmos con mi mente.
Cualquiera, suficiente juego previo, aquí hay un programa Spiral:
- ¿Es seguro decir que las recomendaciones sociales siempre superarán a los algoritmos controlados por computadora?
- ¿Dónde se utilizan los algoritmos criptográficos en nuestras aplicaciones diarias?
- Cómo probar la profundidad del primer recorrido utilizando listas de adyacencia
- ¿Cómo ordenar una matriz de enteros proporcionados como una cadena como entrada desde la línea de comandos, usando lenguaje C?
- ¿Cuál es la forma más fácil de eliminar elementos duplicados de una matriz de derecha a izquierda?
[correo electrónico protegido] * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v
* ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^
v
^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v =
*** ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^
* *
********** v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ ##
* ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v #######################
v
^ * v ^ * v ^ * v ^ ************** v ^ * v ^ * v ^ * v ^ * v ^ * v ^ ********* * *
######### ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v * ^ v *** * *
# #
############### v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * v ^ * *
v * ^ v * ^ v * ^ v ************** ^ v
==== X @
i: vX ==: ==== [correo electrónico protegido] [correo electrónico protegido] i! == XX === v ^ ==
X vs.vuv @ === s = vv = X = $ v = v
= XX = #
[correo electrónico protegido] @X
Calcula la transformación ROT13 de la entrada. La sección superior es solo construir la tabla de traducción en la memoria. La parte inferior es la parte de traducción real. A la izquierda hay un bucle que lee un carácter, verifica si es EOF. De lo contrario, el puntero salta a la sección más a la derecha, que gira a través de la tabla de traducción para encontrar el carácter correcto para traducirlo. Esto devuelve el puntero a la izquierda donde se imprime el carácter. El puntero luego salta a la sección central donde la tabla de traducción se restaura a su estado original para que el ciclo pueda repetirse.
Puede ver fácilmente dónde están los bucles y las condiciones de ramificación, incluso si solo tiene la comprensión más rudimentaria del idioma. Es aún más fácil si tiene mi intérprete original que le muestra dónde está el puntero mientras se ejecuta, pero temo que el programa se pierda en las arenas del tiempo, a menos que alguien pueda motivarme un poco más para encontrarlo y restaurarlo. a la gloria completa.