Pregunta

Vengo de un fondo de C, Fortran, Python, R, Matlab, y algunos Lisp, y he leído algunas cosas en Haskell.¿Cuáles son algunas ideas / ejemplos ordenados en J u otros idiomas de la familia APL que son únicos y no implementados en idiomas más comunes?Siempre estoy interesado en descubrir lo que me falta ...

¿Fue útil?

Solución

j tiene un conjunto muy grande de operadores que facilitan la inclinación de programas complejos sin tener que cazar una biblioteca. Tiene capacidades de procesamiento de matriz extremadamente poderosas, así como construcciones iterativas que hacen que las estructuras de control explícitas sean irrelevantes para la mayoría de las propósitos, tanto que prefiero usar el algebra tensor para declarar un bucle explícito porque es más conveniente. J se ejecuta en un intérprete, pero un buen guión J puede ser tan rápido como un programa escrito en un idioma del compilador. (Cuando sacas los bucles explícitos, el intérprete no tiene que compilar los contenidos del bucle cada vez que se ejecute.)

Otra característica divertida de J es la programación tácita. Puede crear scripts sin referencia explícita a las variables de entrada, lo que le permite expresar una idea puramente en términos de lo que pretende hacer. Por ejemplo, podría definir la función promedio como 'sumar los términos en una lista y dividirlos por el número de entradas en la lista' así:

(+/ % #)

O yo podría hacer un script que se contrae en una matriz 2D y solo devuelve los promedios de filas que tienen promedios superiores a 10:

(10&<#])(+/%#)"1

Hay muchas otras cosas limpias que puedes hacer con J; Es una forma ejecutable de notación matemática. Las ideas generalizan fácilmente, por lo que obtiene mucho beneficio al aprender cualquier aspecto de cómo funciona el idioma.

Otros consejos

Creo que uno de los aspectos más interesantes de J es que es uno de los muy pocos idiomas que no son von-neumann, incluso remotamente principal.

uhm.J mainstream?Bueno, sí, en comparación con Otros Idiomas no von-neumann ¡Es!Solo hay muy pocos idiomas que no son von-neumann para comenzar, la mayoría de los que solo viven dentro de alguna tesis de doctorado y nunca se implementaron y aquellos que se implementaron generalmente implementados.una base de usuario de 1 si incluso eso.En general, se consideran exitosos si al menos uno de los usuarios no se sienta en el mismo piso que el tipo que lo inventó.

en comparación con que , j es principal.En particular, J se basa en el FP de John Backus de su lectura de premios de su seminal Turing " ¿Se puede liberar la programación del estilo Von Neumann? " y es afaik la única implementación trabajadora de ello.(No creo que Backus nunca haya implementado FP, por ejemplo.)

Esto quizás no es tan único como lo consigo, pero la característica superior en la que puedo pensar para J es la escritura implícita.Crea ese buen nivel de abstracción por encima de la ejecución y la gestión de la memoria para centrarse en los datos que se procesan.

Supongamos que necesita almacenar un número:

var1 =: 10

y está hecho.Matriz?

var2 =: 4 8 15 16 23 42

hecho.Oh, pero espera, ¿necesitas dividir eso por 3.7?No se moleste con el casting, solo ve por ello:

var2 % 3.7

de deshacerse de esa necesidad de lanzar y manipular y asignar es una pequeña bendición.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top