Pregunta

El paisaje matriz de la lengua, mientras que fascinante, está confundiendo a ningún extremo. ¿Hay una razón para escoger uno de J o K o APL o A? Ninguna de estas opciones parece ser de código abierto - hay abrir versiones de origen? Me gustaría ampliar mi la mente, pero me quedo aturdida.

¿Fue útil?

Solución

Las diferencias entre estas lenguas son relativamente sutil. APL "adecuada", tiene las ventajas y desventajas, de la notación simbólica originales. (Hay pequeños cambios que se han hecho al conjunto de símbolos a través de los años, pero todos son bastante cierto que la visión original.)

El lenguaje de A + está disponible de código abierto. Se aparta significativamente de las minas terrestres antipersonal "clásicos", pero es como ellos en mantener la mayor parte del juego de caracteres núcleo. Mi sensación es que no se ha mantenido al día con los cambios tecnológicos. Fue un precursor de K.

Las lenguas en la familia matriz de lenguaje que se han apartado del conjunto de caracteres APL distintivo incluyen J, K y Nial. Nial usa palabras inglesas en lugar de símbolos, y tiene un intérprete de código abierto llamado Q'Nial. K y J se basan principalmente en símbolos, pero éstos son extraídos del conjunto de caracteres ASCII. Las palabras pueden ser utilizados en lugar de los símbolos en estos idiomas, sin embargo, simplemente mediante la asignación de definiciones.

La familia de los lenguajes de programación APL han sido principalmente propietaria desde la aparición inicial de APL como un producto de IBM en 1964. lenguas matriz de propiedad parecen tener más apoyo y más rápida evolución de las nuevas capacidades que las alternativas de código abierto en este momento. No estoy seguro de cómo todos los competidores se igualan uno con otro, pero sin duda Dyalog APL ha estado trabajando activamente para promover su puesta en práctica de la lengua como la tecnología actual. ofrece productos APL2000 para Unix, Linux y Windows, incluyendo VisualAPL para .NET. MicroAPL Ltd ofrece APLX.

K es un lenguaje especializado que ya no está siendo comercializado por sí sola. Kx Systems tiene lugar la comercialización de la base de datos Kdb + y su lenguaje Q (consulta), ambos de los cuales están escritos en K. Es una poderosa herramienta especializada, diseñada para el procesamiento de alta velocidad de transmisión de datos. Se aparta significativamente del enfoque original de APL. productos Kx Systems son caros y sus usuarios trabajan sobre todo en las finanzas.

APL fue concebido y diseñado principalmente por Ken Iverson. Después de una carrera completa de la aplicación y el perfeccionamiento de APL en aplicaciones comerciales se volvió a la tarea de hacer una revisión "racionalizada", que corrige los aspectos de la lengua que había encontrado insatisfecho con el paso de los años. Esta consideración diferente sobre el tema se llama J. Las diferencias entre J y APL están esbozadas en un documento en el wiki J Software. Un cambio notable es la eliminación de la sintaxis de matrices de indexación. La característica más grande, sin embargo, es la forma tácita, en el que los programas se escriben mediante la composición de funciones sin hacer referencia a sus argumentos. Tácita J está estrechamente relacionado con el estilo "sin puntos" encontró en lenguajes de programación funcionales, pero se diferencia en que esta forma es fundamental para el lenguaje J. Los símbolos basados ??en ASCII utilizados en J pueden ser más difíciles de leer que los caracteres APL más distintivos.

Para un individuo que quieran aprender una lengua matriz, mi consejo es seleccionar entre Dyalog APL, APLX, J y Q'Nial. Dyalog APL (esp. Para Windows) o APLX (esp. Para Linux) probablemente son los mejores para alguien que quiera utilizar el simbolismo central que es tan característico de la LPA, y que quiere fuerte conexión con la comunidad APL en su conjunto. J puede ser mejor para aquellos que quieren construir aplicaciones web, o del enfoque en matemáticas (como el Proyecto Euler,) y especialmente aquellos que están fascinados por el estilo tácita destaca. Q'Nial es lo que me quedaría si mi prioridad era de código abierto, pero sólo si esa prioridad no significa también esperando el apoyo de una comunidad OS activo.


UPDATE: J 7.01 ha sido liberado con código de fuente abierta bajo GPL 3. Además hay Kona , una variante en K. Estos aumentan las opciones de idiomas de la matriz de código abierto.

ACTUALIZACIÓN por Tobia: GNU APL available bajo la GPL. Se sigue de cerca la última norma ISO publicada en el lenguaje APL extendido. Es una gran aplicación APL de código abierto y está siendo desarrollado y mantenido de forma activa. Hay otras implementaciones interesantes también, por ejemplo, NGN APL , una aplicación sorprendentemente bien equipado y moderno de la APL escrito en CoffeeScript (que compila a Javascript.) lenguas de matriz están vivos y bien en el año 2015.

Otros consejos

Para añadir algo más de información ...

Hay una versión de código abierto de K llamada Kona https://github.com/kevinlawler/kona

Para q/kdb+, hay una versión de prueba. http://kx.com/download/

Las principales limitaciones son tiempo de espera de 2 horas, la memoria de 32 bits, 3 meses caducidad de la licencia, y el certificado. Estos no deben ser demasiado molesta, si lo que desea es jugar y aprender algo.

En lo personal, he encontrado q ser el más fácil de usar desde el KX tradujo los argumentos (individual) verbos monádicos de K en palabras de inglés y hay una cantidad buena de la documentación @ http://code.kx.com . Además, el sistema de base de datos está extremadamente bien pensado y flexible.

Algo a tener en cuenta es el vocabulario de los operadores (funciones de orden superior).

APL original solamente tiene última y primera reducción eje (f/, f⌿), último y primer eje de reducción acumulativa (f\, f⍀), más producto interior y exterior (f.g, ∘.g).

más extendida MTA (por ejemplo GNU APL, APLX, APL + Win, APL2) solamente agregar la cada bucle (), y el eje especificación soporte (f[ ... ]).

J, añade un plétora (llamado adverbios y conjunciones), pero elimina soportes (tanto de eje y de indexación), la cada operador (a favor del operador más general rango), y por último eje de reducción (acumulativo).

El ahora difunto de Sharp APL (SAX) retuvo tanto la operadores última de eje y el soporte tradicional de indexación, mientras que la adición de muchos de los nuevos operadores de J.

Dyalog APL se acerca poco a poco el vocabulario de APL agudo, pero también ha incorporado operadores J-exclusiva que nunca llegaron al agudo APL.

La siguiente tabla compara J, de Sharp APL, y Dyalog APL composición vocabularios. Las entradas en gris están bajo propuesta. j, agudo APL, y Dyalog APL composiciones

J es un Mathematical Notación ejecutable que es de entrada y visualiza el uso de caracteres ASCII.

También es un hecho y derecho funcional, orientado a objetos, Lenguaje de programación.

La aplicación de JSoftware J (no sé de cualquier otro) no es de código abierto, pero es libre de utilizar.

Aunque el motor no es de código abierto, hay una biblioteca de usuario activo de código J a la que las personas pueden contribuir.

J tiene una amplia y documentación concisa http://www.jsoftware.com/help.htm miembros del foro y feliz y responder rápidamente a cualquier pregunta o problema y están dispuestos a ayudar a los nuevos usuarios queden orientados, así como con los problemas más avanzados.

En cuanto al tema de código abierto, por cierto, la documentación (especificaciones) para J es extensa y cualquiera podría, en teoría, crear un proyecto de código abierto para tratar de implementar J si querían.

ELI es un y de libre acceso, multi-plataforma, lenguaje de programación matriz recién desarrollado. Al igual que en J y K se basa en el juego de caracteres ASCII. Pone en práctica algunas de las características que (que yo sepa) eran únicos a k / q / kdb + como tipo de datos temporal y SQL incorporado subconjunto.

Mientras que A + parece (por desgracia) un proyecto muerto, hay una nueva APL intérprete de código abierto: GNU APL .

También quedo aturdida (APL siempre me ha confundido - afortunadamente ha sido 20 o más años desde la última intentado nada con ella), pero un poco de búsqueda ha encontrado A +, una versión de código abierto de A:

No tengo ni idea de que se adapta a sus necesidades (o de cualquier persona).

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