APL

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

APL (A Programing Language) es un lenguaje de programación que se originó a partir de una notación matemática desarrollada por Kenneth Iverson en 1957, quien lo implemento en 1962 cuando fue contratado por IBM ese mismo año.

Características[editar]

El APL es un lenguaje aplicativo, parecido a un lenguaje funcional, pero con asignación se podría decir que es un lenguaje para aplicar algo.

Utiliza operadores parametrizables por lo que es muy conciso; su sintaxis, aunque sencilla, está basada en (pocos) "operadores", y utiliza un conjunto especial de caracteres no presentes en el código ASCII. Básicamente [1] guage, debido a que su conjunto de operaciones se fundamente en un álgebra lineal abstracta. Por lo que es un lenguaje idóneo para trabajar con vectores y matrices. Cuenta con un repertorio de operadores que le permite componer nuevas operaciones lógicas o matemáticas.

Al contar con productos cruz y puntos generalizados, una sola sentencia puede traducirse en muchas líneas de otros lenguajes, como Fortran, Basic, PL1, C, etc. ya que, en esos, estas operaciones y otras se implementan mediante loops o ciclos iterativos.

Un ejemplo de ello, es el lenguaje de simulación de circuitos, SIAL, el cual ocupaba cerca de 25 000 sentencias en Fortran-Assembler y, al ser reescrito en APL, todo el programa podía ser impreso en dos folios.[2] Por otra parte, a pesar de ser un lenguaje de tan alto nivel, también es capaz de manipular a escala de bits y tiene interfaces con lenguajes de programación de bajo nivel (C, ensamblador, etc) mediante los llamados procesadores auxiliares.

Tiene la propiedad de que desde una rutina se puede (en tiempo de ejecución) crear, compilar y ejecutar, otras, lo que lo hace también muy apropiado para la elaboración automática de compiladores e intérpretes.

Algunas dificultades prácticas radican en que:

  1. Necesita pegatinas (o marcar con rotulador permanente) en el teclado, para poder ver los operadores (símbolos propios de APL) que se asignan a cada tecla (pueden re-definirse por el usuario cuando y como guste).
  2. Los programas escritos en APL son muy concisos y ello puede hacer que sean prolijos de documentar y de comprender para los principiantes. Sin embargo, para los iniciados, su brevedad y el orden de ejecución (cada sentencia siempre se ejecuta de derecha a izquierda), les facilita enormemente su seguimiento.
  3. Al ser interpretado (en tiempo de ejecución), su velocidad es típicamente algo más lenta que la de las aplicaciones con lenguajes de programación compilados. Por lo cual, hoy en día, con las grandes velocidades de los procesadores, no supone una desventaja apreciable, en la mayor parte de las aplicaciones. Por contra, facilita su prueba y revisión interactiva inmediata.
  4. Aunque existe una versión libre disponible en el catálogo de la "Free Software Fundation", la mayoría de los intérpretes o compiladores de APL, son de código cerrado y sus usuarios no comparten su código, lo que impide que se extienda su uso, al nivel que tienen otros lenguajes para hacer cálculos aritméticos como Matlab, Mathematica, SAGE, Maxima, Octave entre otros.

Ejemplos de APL[editar]

APL puede resolver un sistema de ecuaciones en una sola sentencia si lo aplicamos a un sistema de ecuaciones concreto. Verbi gratia:

7x + 4y + 2z = 4

6x + 8y + 9z = 7

4x + 2y + 1z = 2

Basta ejecutar UNA ÚNICA sentencia de APL, cuya sintaxis es:

4 7 2 [÷] 3 3 ρ 7 4 2 6 8 9 4 2 1

Donde el operador ρ (rho) formatea la lista de números en una matriz de 33 Para obtener. El operador de [÷] calcula la inversa de la matriz y la multiplica por el vector 4 7 2, generando la solución para cada variable (x, y, z):

0 1.1 -0.2

El programa anterior, podría utilizar bibliotecas para las operaciones con matrices, Fortran permite arreglos redimensionables, y es adecuado para el cómputo en paralelo. Pero se necesitan algunas declaraciones para los arreglos y llamar a las sub-rutinas, y en otros lenguajes poco flexibles para crear sub-rutinas con arreglos, todavía es más complicado porque se tienen que codificar mediante loops la inversión de la matriz y el producto, mínimo unas 20 líneas.

El APL, permite pensar directamente en las operaciones algebraicas que se pueden expresar de manera muy concisa, por ello permite tiempos de desarrollo y pruebas muy cortos. Por ello es un lenguaje muy adecuado para campos muy variados, tales como los de Matemáticas, Estadística, Negocios, Inteligencia artificial, Desarrollo de prototipos, etc.

APL en la cultura popular[editar]

Entre sus aplicaciones más conocidas está su uso en la película Tron, de Walt Disney, para la generación de los efectos especiales,[3] y en el sistema Deep Blue, de IBM, que venció a Kasparov en ajedrez.[cita requerida].[4]

Como curiosidad, en la novela Cheap Complex Devices, de J. C. Sundman, el autor afirma que el contenido del libro ha sido escrito automáticamente por un ordenador, usando código generado en APL, lo que le valió el premio Douglas R. Hofstadter, de creación de novelas por ordenador, en 1997.[5] Todo ello, naturalmente, es un artificio literario.

Sucesores del APL[editar]

Kenneth Iverson, posteriormente, estuvo al frente del desarrollo de un lenguaje de programación, que presentaban como el sucesor de APL, llamado J. Una de las características particulares de J es lo que se ha dado en denominar programación funcional tácita, en que se considera que, para expresar programas, no es necesario nombrar variables, ni parámetros a funciones (Estos conceptos de programación tácita han sido incorporados al lenguaje Logo en la biblioteca LogoFE). En J, la variedad de las rutinas (que en APL se llaman "operadores"), es mucho mayor.

Influencia en otros lenguajes[editar]

John Backus en la cátedra que dio al recibir el premio Turing, presentó FP/FFP. FP es un lenguaje funcional y FFP son formas funcionales, que se basaron en el lenguaje aplicativo APL. Un ejemplo de las formas funcionales en APL es la operación reduce op/vector que reduce un vector aplicando el operador. +/1 2 3 4 computa 1 + 2 + 3 + 4 , en algunos lenguajes como algunos dialectos de Lisp conservó el nombre reduce, que se heredó a otros lenguajes funcionales.

Referencias[editar]

  1. hola mi todo
  2. M. Alfonseca, "SIAL/71, a Continuous Simulation Compiler", in "Advances in Cybernetics and Systems", Ed. J. Rose, Gordon and Breach, London, Vol. 3, 1974, 1319-1340.
  3. David Selby, "Jottings from the business intelligence jungle". In APL '02: Proceedings of the 2002 conference on APL, 2002, páginas 190-197.
  4. Javier Cordero Fernández - Ajedrez de ataque. «Kasparov vs Deep Blue, Filadelfia 1996 y Nueva York 1997». 
  5. «Wetmachine». Consultado el 2009. 

Enlaces externos[editar]

  • APL - Mi Universo HACT Breve introducción en español a las convenciones sintácticas del lenguaje y biografía de K. E. Iverson