miércoles, 5 de junio de 2013

LENGUAJES DE PROGRAMACION

LENGUAJES DE PROGRAMACION


ABC
ABC fue desarrollado a principios de los 80 en el Centrum voor Wiskunde en Informatica (CWI) (un centro de investigación holandés de carácter oficial que, entre otras cosas, actualmente alberga la oficina central del W3C) como una alternativa al BASIC. Como éste, fue pensado para principiantes, aunque su evolución posterior lo hace también adecuado para programadores avanzados. Es muy fácil de aprender y de usar, y el código es compacto pero legible.
Tipos de datos
Este lenguaje tiene también interés histórico, ya que es el principal antecedente de Python. En esta entrevista, Guido Van Rossum, creador de Python, explica la influencia de ABC en Python así como algunos de sus puntos débiles. ABC tiene sólo cinco tipos de datos básicos:
·         Números (enteros exactos de cualquier tamaño y números no exactos)
·         Textos (strings de cualquier longitud)
·         Listas (sus elementos tienen que ser del mismo tipo y siempre están ordenados)
·         Compuestos (equivalentes a registros sin nombres de campo)
·         Tablas (son listas con índices o claves).
Como sucede con otros intérpretes, ABC es, además de un lenguaje de programación, un entorno interactivo de trabajo. No requiere de declaraciones de variables, cuenta con el apoyo de la programación top-down. Proporciona una precisión aritmética infinita, ilimitada listas de cadenas, y otras características que da gran facilidad al uso de los principiantes. Sus diseñadores afirman que los programas de ABC son típicamente alrededor de una cuarta parte del tamaño de los programas equivalentes en Pascal o C, y además es más legible.
Originalmente fue una aplicación monolítica, dando lugar a una incapacidad para adaptarse a las nuevas exigencias, como la creación de una interfaz gráfica de usuario. Con ABC no se podía acceder directamente al sistema de archivos subyacente y el sistema operativo.Incluye un entorno de programación con sintaxis de edición-dirigida, sugerencias, variables persistentes y múltiples espacios de trabajo.
ABC está disponible como un intérprete / compilador, actualmente en la versión 1.05.02. Además ha sido portado a Unix, DOS, Atari, y Apple Macintosh.ABC también tuvo una gran influencia en el diseño del lenguaje de programación Python, Guido van Rossum, quien desarrolló Python, que anteriormente trabajó durante varios años en el sistema ABC a principios de los años 1980.
Ada
Ada es un lenguaje de programaciónorientado a objetos y fuertemente tipado de forma estática que fue diseñado por Jean Ichbiah de CII Honeywell Bull por encargo del Departamento de Defensa de los Estados Unidos. Es un lenguaje multipropósito, orientado a objetos y concurrente, pudiendo llegar desde la facilidad de Pascal hasta la flexibilidad de C++. Fue diseñado con la seguridad en mente y con una filosofía orientada a la reducción de errores comunes y difíciles de descubrir. Para ello se basa en un tipado muy fuerte y en chequeos en tiempo de ejecución (desactivables en beneficio del rendimiento). La sincronización de tareas se realiza mediante la primitiva rendezvous. Ada se usa principalmente en entornos en los que se necesita una gran seguridad y fiabilidad como la defensa, la aeronáutica (Boeing o Airbus), la gestión del tráfico aéreo (como Indra en España) y la industria aeroespacial entre otros.
Historia
El lenguaje fue diseñado bajo encargo del Departamento de Defensa de los Estados Unidos (DoD). Durante los años 1970, este departamento tenía proyectos en una infinidad de lenguajes y estaba gastando mucho dinero en software. Para solucionarlo se buscó un lenguaje único que cumpliese unas ciertas normas recogidas en el documento Steelman. Después de un estudio de los lenguajes existentes en la época se decidió que ninguno las cumplía totalmente, por lo que se hizo un concurso público al que se presentaron cuatro equipos, cuyas propuestas se nombraron con un color: Rojo (Intermetrics), Verde (CII Honeywell Bull), Azul (SofTEch) y Amarillo (SRI International). Finalmente en mayo d1979 se seleccionó la propuesta Verde diseñada por Jean Ichbiah de CII Honeywell Bull, y se le dio el nombre de Ada. Esta propuesta era un sucesor de un lenguaje anterior de este equipo llamado LIS y desarrollado durante los años 1970.
El nombre se eligió en conmemoración de lady Ada Augusta Byron (1815-1852) Condesa de Lovelace, hija del poeta Lord George Byron, a quien se considera la primera programadora de la Historia, por su colaboración y relación con Charles Babbage, creador de la máquina analítica. El lenguaje se convirtió en un estándar de ANSI en 1983 (ANSI/MIL-STD 1815) y un estándar ISO en 1987 (ISO-8652:1987). El DoD y los ministerios equivalentes de varios países de la OTAN exigían el uso de este lenguaje en los proyectos que contrataban (el Ada mandate). La obligatoriedad en el caso de Estados Unidos terminó en 1997, cuando el DoD comenzó a usar productos COTS (commercial off the shelf). Ada ha sido utilizado por la NASA en sistemas VAX.
Compiladores
Un compilador de Ada muy usado es GNAT, originalmente desarrollado por la Universidad de Nueva York bajo patrocinio del DoD. Está basado en la tecnología de GCC y es software libre. Actualmente está mantenido por AdaCore (antes llamada Ada Core Technologies), empresa que ofrece soporte y servicios sobre el compilador. Existen otros compiladores comerciales.
Características
La sintaxis, inspirada en Pascal, es bastante legible incluso para personas que no conozcan el lenguaje. Es un lenguaje que no escatima en la longitud de las palabras clave, en la filosofía de que un programa se escribe una vez, se modifica decenas de veces y se lee miles de veces (legibilidad es más importante que rapidez de escritura).Es indiferente el uso de mayúsculas y minúsculas en los identificadores y palabras claves, es decir es un lenguaje case-insensitive.En Ada, todo el programa es un único procedimiento, que puede contener subprogramas (procedimientos o funciones).Cada sentencia se cierra con endqué_cerramos. Es un modo de evitar errores y facilitar la lectura. No es necesario hacerlo en el caso de subprogramas, aunque todos los manuales lo aconsejan y casi todos los programadores de Ada lo hacen.
El operador de asignación es :=, el de igualdad =. A los programadores de C y similares les puede confundir este rasgo inspirado en Pascal.La sintaxis de atributos predefinidos es Objeto'Atributo (o Tipo'Atributo) (nota: esto sólo aplica a atributos predefinidos por el lenguaje, ya que no es el concepto de atributo típico de OOP).Se distingue entre "procedimientos" (subrutinas que no devuelven ningún valor pero pueden modificar sus parámetros) y "funciones" (subrutinas que devuelven un valor y no modifican los parámetros). Muchos lenguajes de programación no hacen esta distinción. Las funciones de Ada favorecen la seguridad al reducir los posibles efectos colaterales, pues no pueden tener parámetros in out.
AIML
El AIML, o Artificial Intelligence Mark-up Language es un lenguaje de programación basado en XML. Fue diseñado específicamente para ayudar en la creación de la primera entidad chatbot informática de lenguaje artificial online o A.L.I.C.E., en sus siglas en inglés de Artificial Linguistic Internet Computer Entity Chatterbot ((en inglés) Alice). Aunque descrito muy ampliamente, el lenguaje AIML está especializado en la creación de agentes software con lenguaje natural, conocidos como Alicebots.
Historia
El lenguaje de programación AIML fue desarrollado por el Dr. Richard Wallace y la comunidad de código abierto Alicebot entre los años 1995 y 2000. Con él se crearon las bases del primer Alicebot, A.L.I.C.E, que ha ganado ahora el concurso Loebner Prize Contest y también The most human o El más humano tres veces, al igual de ser ganador en el Campeonato de Chatbot en 2004. Desde sus comienzos en internet, gracias a que el lenguaje AIML y los programas Alicebot son código-abierto, se han creado numerosos clones de Alicebot basados en la implementación original del programa y de la base de conocimiento AIML. El desarrollo de este lenguaje continua, y en el otoño de 2004 se ha creado una nueva versión del conjunto ALICE AIML. La implementación más activa hoy en día es pandorabots.com, un hosting de bots online y compañía de desarrollo que permite el alojamiento gratuito de Alicebots programa Z.
Componentes de AIML
AIML contiene muchos elementos. Los más importantes están descritos a continuación:
·         Categorías: son las unidades fundamentales de conocimiento. Una categoría consiste en al menos dos elementos más, que son los componentes patrón o pattern y plantilla o template, que normalmente se codifican en ese orden.
·         Patrones: los Alicebots se describen como chatbot de comparación de patrones o pattern-matching. Esto significa que el programa buscará patrones que el usuario haya introducido y responderá de acuerdo a lo que se le haya preguntado.
·         Plantillas: si un patrón coincide con una categoría, y si es ése el patrón que más concuerda, entonces a la respuesta del chatbot se añade una plantilla específica de la categoría. Esta plantilla puede contener otros componentes de AIML, que permiten personalizar dicha respuesta.
AutoLISP
AutoLISP es un lenguaje de programación derivado del lenguaje Lisp. Es utilizado para generar rutinas orientadas al uso específico de AutoCAD y sus derivados. Permite desarrollar programas y funciones para el manejo de entidades del tipo gráfico.Los programas hechos en Autolisp amplían los comandos y aplicaciones de AutoCAD, creando así una solución óptima para cada problema en particular, desde el simple trazo de una línea hasta el diseño de un plano o pieza, llegando a cálculos complejos, convirtiéndose en gran ayuda para las aplicaciones de ingeniería.
Entre las aplicaciones más notables de Autolisp se pueden citar:
·         Dibujo de figuras bidimensionales con características específicas.
·         Creación de objetos tridimensionales.
·         Generación de gráficas de funciones basándose en ecuaciones.
·         Cálculos de áreas y tablas de datos, combinación de comandos de dibujo para realizar determinados tipos de tareas.
Historia
AutoLISP se derivó de una versión muy temprana de XLISP, que fue creado por David Betz. El lenguaje fue introducido en AutoCAD versión 2.18 en enero de 1986, y siguió mejorando en sucesivas versiones hasta la etapa 13 en febrero de 1995. Después de eso, su desarrollo fue descuidado por Autodesk en favor de los entornos de desarrollo más de moda como VBA , .NET y ObjectARX. Sin embargo, se ha mantenido el idioma principal de AutoCAD para la personalización del usuario.
Vital-LISP, una versión mejorada considerablemente de AutoLISP incluyendo una IDE, depurador y compilador, y el soporte ActiveX, se ha desarrollado y vendido por tercera parte de desarrolladores de Software. Vital LISP fue una conjunción del lenguaje AutoLISP existente que agregó VBA -como el acceso al modelo de objetos de AutoCAD, reactores (el control de eventos para los objetos de AutoCAD), general ActiveX de apoyo, y algunos otras funciones generales de Lisp. Autodesk compró este, cambió el nombre de Visual LISP, y brevemente se vende como un complemento para AutoCAD 14 lanzado en mayo de 1997. Fue incorporado en AutoCAD 2000 lanzado en marzo de 1999, en sustitución de AutoLISP. Desde entonces, Autodesk ha elegido para poner fin a importantes mejoras en Visual LISP en favor de centrarse más esfuerzo en VBA y .NET y C++. Hay miles de utilidades y aplicaciones que se han desarrollado utilizando Visual LISP o AutoLISP (extensiones de archivos .LSP, .FAS y .VLX).
BC
BC es un lenguaje de programación de cálculo numérico con precisión arbitraria, con una sintaxis similar a la del lenguaje de programación C.El lenguaje y su intérprete son una herramienta estandarizada de los sistemas UNIX. El intérprete de bc puede ser usado de forma interactiva, escribiendo expresiones como (1 + 3) * 2 que son evaluadas y su valor escrito en la salida estándar (8 en el ejemplo anterior).Hay actualmente dos dialectos principales: el rigurosamente definido POSIX bc y un descendiente directo suyo, GNU bc, que incorpora numerosas extensiones. BC permite la definición de funciones matemáticas. Además las implementaciones de bc incorporan una biblioteca matemática con funciones predefinidas (y estandarizadas) tales como coseno o función de Bessel.También posee estructuras que permiten la programación estructurada tales como bucles o decisiones condicionales.
BCLP
El lenguaje BCLP es un lenguaje de programación desarrollado por Martin Richards, del cual deriva el lenguaje B. De este último deriva el famoso lenguaje C. Este lenguaje supuso el más temprano desarrollo de un lenguaje importante para el software portátil.
B
B es el nombre de un lenguaje de programación desarrollado en los Bell Labs, predecesor del lenguaje de programación C. Fue mayoritariamente un trabajo de Kenneth L. Thompson con contribuciones de Dennis M. Ritchie publicado por primera vez en el año 1969
Historia
B fue esencialmente una simplificación del lenguaje BCPL, eliminando cualquier componente que Thompson considerase prescindible de forma que cupiese en la memoria de las minicomputadoras de la época. El lenguaje también incluyó algunos cambios de acuerdo con las preferencias de Thompson (la mayoría para reducir el número de caracteres de un programa típico).
Nombre
B fue enormemente influido por BCPL, y su nombre fue probablemente una contracción de "BCPL". Sin embargo es posible que su nombre se hubiera basado en el lenguaje de programación Bon, un lenguaje más antiguo y no relacionado con B, diseñado por Thompson para su uso en MULTICS.
C
C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. Se trata de un lenguaje débilmente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portátil entre plataformas y/o arquitecturas.
Filosofía
Uno de los objetivos de diseño del lenguaje C es que sólo sean necesarias unas pocas instrucciones en lenguaje máquina para traducir cada elemento del lenguaje, sin que haga falta un soporte intenso en tiempo de ejecución. Es muy posible escribir C a bajo nivel de abstracción; de hecho, C se usó como intermediario entre diferentes lenguajes.
En parte a causa de ser de relativamente bajo nivel y de tener un modesto conjunto de características, se pueden desarrollar compiladores de C fácilmente. En consecuencia, el lenguaje C está disponible en un amplio abanico de plataformas (seguramente más que cualquier otro lenguaje). Además, a pesar de su naturaleza de bajo nivel, el lenguaje se desarrolló para incentivar la programación independiente de la máquina. Un programa escrito cumpliendo los estándares e intentando que sea portátil puede compilarse en muchos computadores. C se desarrolló originalmente (conjuntamente con el sistema operativo Unix, con el que ha estado asociado mucho tiempo) por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programación de sistemas, para la que se diseñó originalmente.
Propiedades
Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).
Un sistema de tipos que impide operaciones sin sentido.Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente.Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros.Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.
Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable "empleado").
Carencias
Recolección de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.Soporte para programación orientada a objetos, aunque la implementación original de C++ fue un preprocesador que traducía código fuente de C++ a C.
Funciones anidadas, aunque GCC tiene esta característica como extensión.Polimorfismo en tiempo de código en forma de sobrecarga, sobrecarga de operadores y sólo dispone de un soporte rudimentario para la programación genérica.Soporte nativo para programación multihilo y redes de computadores.Aunque la lista de las características útiles de las que carece C es larga, este factor ha sido importante para su aceptación, porque escribir rápidamente nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control directo del programador, y permite implementar la solución más natural para cada plataforma. Ésta es la causa de que a menudo C sea más eficiente que otros lenguajes. Típicamente, sólo la programación cuidadosa en lenguaje ensamblador produce un código más rápido, pues da control total sobre la máquina, aunque los avances en los compiladores de C y la complejidad creciente de los microprocesadores modernos han reducido gradualmente esta diferencia.
En algunos casos, una característica inexistente puede aproximarse. Por ejemplo, la implementación original de C++ consistía en un preprocesador que traducía código fuente C++ a C. La mayoría de las funciones orientadas a objetos incluyen un puntero especial, que normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la función. Mediante el paso de este puntero como un argumento de función, esta funcionalidad puede desempeñarse en C.
Historia
Desarrollo inicial
El desarrollo inicial de C se llevó a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973; según Ritchie, el periodo más creativo tuvo lugar en 1972. Se le dio el nombre "C" porque muchas de sus características fueron tomadas de un lenguaje anterior llamado "B". Hay muchas leyendas acerca del origen de C y el sistema operativo con el que está íntimamente relacionado, Unix. Algunas de ellas son:
El desarrollo de C fue el resultado del deseo de los programadores de jugar con Space Travel. Habían estado jugando en el mainframe de su compañía, pero debido a su poca capacidad de proceso y al tener que soportar 100 usuarios, Thompson y Ritchie no tenían suficiente control sobre la nave para evitar colisiones con los asteroides. Por ese motivo decidieron portar el juego a un PDP-7 de la oficina que no se utilizaba; pero esa máquina no tenía sistema operativo, así que decidieron escribir uno. Finalmente decidieron portar el sistema operativo del PDP-11 que había en su oficina, pero era muy costoso, pues todo el código estaba escrito en lenguaje ensamblador. Entonces decidieron usar un lenguaje de alto nivel y portátil para que el sistema operativo se pudiera portar fácilmente de un ordenador a otro. Consideraron usar B, pero carecía de las funcionalidades necesarias para aprovechar algunas características avanzadas del PDP-11. Entonces empezaron a crear un nuevo lenguaje, C.
La justificación para obtener el ordenador original que se usó para desarrollar Unix fue crear un sistema que automatizase el archivo de patentes. La versión original de Unix se desarrolló en lenguaje ensamblador. Más tarde, el lenguaje C se desarrolló para poder reescribir el sistema operativo.En 1973, el lenguaje C se había vuelto tan potente que la mayor parte del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. Éste fue uno de los primeros núcleos de sistema operativo implementados en un lenguaje distinto al ensamblador. (Algunos casos anteriores son el sistema Multics, escrito en PL/I, y Master Control Program para el B5000 de Burroughs, escrito en ALGOL en 1961).
El C de Kernighan y Ritchie
En 1978, Ritchie y Brian Kernighan publicaron la primera edición de El lenguaje de programación C, también conocido como La biblia de C. Este libro fue durante años la especificación informal del lenguaje. El lenguaje descrito en este libro recibe habitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R C" (La segunda edición del libro cubre el estándar ANSI C, descrito más abajo.)
Kernighan y Ritchie introdujeron las siguientes características al lenguaje:
·         El tipo de datos struct.
·         El tipo de datos long int.
·         El tipo de datos unsigned int.
·         Los operadores =+ y =- fueron sustituidos por += y -= para eliminar la ambigüedad sintáctica de expresiones como i=-10, que se podría interpretar bien como i =- 10 o bien como i = -10.
El C de Kernighan y Ritchie es el subconjunto más básico del lenguaje que un compilador debe de soportar. Durante muchos años, incluso tras la introducción del ANSI C, fue considerado "el mínimo común denominador" en el que los programadores debían programar cuando deseaban que sus programas fueran transportables, pues no todos los compiladores soportaban completamente ANSI, y el código razonablemente bien escrito en K&R C es también código ANSI C válido. En estas primeras versiones de C, las únicas funciones que necesitaban ser declaradas si se usaban antes de la definición de la función eran las que retornaban valores no enteros. Es decir, se presuponía que una función que se usaba sin declaración previa (prototipo) devolvería un entero.
Ceylon
Ceylon es un lenguaje de programaciónorientado a objetos, desarrollado por Red Hat. El lenguaje en sí mismo toma mucha de su sintaxis de Lenguaje de programación Java. Gavin escribe en su blog que el Lenguaje Java ha quedado un poco viejo; por lo tanto el diseño un lenguaje llamado Ceylon que tiene como principal objetivo actualizar el lenguaje Java.
Los objetivos de Ceylon incluyen:
·         Ser fácil de aprender tanto para desarrolladores Java como C#
·         Eliminar la verbosidad de Java pero manteniendo la legibilidad
·         Mejorar el tipado estático de Java
·         Proveer una expresión declarativa para eliminar dependencias con xml
·         Apoyar y fomentar un estilo de programación más funcional.
·         Proveer soporte para meta-programación
·         Proveer construcción modular.
Cg
Cg o C for Graphics es un lenguaje de alto nivel desarrollado por Nvidia en colaboración con Microsoft para la programación de vertex y pixel shaders. Es similar al lenguaje de MicrosoftHLSL.
El lenguaje está basado en lenguaje de programación C y comparte varias de sus características aunque existen diferencias notables y elementos añadidos para adaptarlos a cuestiones concretas y especiales de la programación de las GPU (Graphics Processing Unit o Unidad de Procesamiento de Gráfico).Este lenguaje fue diseñado específicamente para las acelaradoras y API gráficas, no pretende ser utilizado como lenguaje de propósito general. Por el contrario, el lenguaje CUDA (también orientado a programación de GPU) si puede ser utilizado para aplicaciones de propósito general.
Descripción general
En un primer momento, las aceleradoras se programaban en bajo nivel, utilizando directamente el repertorio de instrucciones de los procesadores de GPU. Cg surge como alternativa para facilitar la labor al programador. El lenguaje suele consistir de dos tipos de programas completamente diferentes que interactúan entre sí. El primero es un programa de manipulación de vértices (modificar el modelo tridimensional) directamente desde la aceleradora, sin gastar recursos de la CPU principal. Por otra parte, la función del segundo tipo de programa es especificar el color de cada píxel en función de múltiples factores. Algunas de las ventajas de usar Cg son:
·         Un lenguaje de alto nivel es más fácil de programar, aprender, leer y mantener
·         Es fácil para depurar errores.
·         Puede funcionar en un amplio rango de hardware y plataformas (Es menos dependiente del hardware concreto y sus versiones que el lenguaje assembler)
El compilador de Cg puede optimizar el código en función de la versión de hardware concreta y otras características disponibles en el momento de ejecutar el programa.
Perfiles
En el lenguaje utiliza la noción de perfiles (Cg Profiles) para facilitar la portabilidad. Cada uno de ellos establece capacidades mínimas y requisitos. De esta forma, un programador puede desarrollar un programa (o varias versiones) con la seguridad de que se ejecutará correctamente en aquellos sistemas que acepten ese perfil. El establecimiento de los perfiles es una forma de asegurar la compatibilidad sin tener que implementar estrategias más complejas como la Compatibilidad hacia atrás.Los Tipos de datos, operadores, funciones, estructuras, entre otros varían de acuerdo al perfil que se en el que se trabaje.
Tipos de datos
C for Graphics tiene seis tipos básicos de datos, algunos específicos para la programación de las GPU:


·         float - número de 32bit en coma flotante
·         half - número de 16bit en coma flotante
·         int - número de 32bit entero
·         fixed - número de 12bit en coma fija
·         bool - valor booleano
·         sampler* - un objeto de textura


También existen algunos tipos compuestos como vectores de 3 floats y matrices como 4x4 float.
Chip-8
CHIP-8 es un lenguaje de programación interpretado, desarrollado por Joseph Weisbecker. Fue inicialmente usado en los microcomputadores de 8-bit COSMAC VIP y Telmac 1800 a mediados de 1970. Los programas de CHIP-8 corren sobre una máquina virtual de CHIP-8. Esto se hizo así para que los video juegos fueran más fáciles de programar en otros computadores. Aproximadamente 20 años después el CHIP-8 reapareció, pero esta vez, aparecieron diversos intérpretes para algunos modelos de calculadoras gráficas. Como era de esperar, desde finales de 1980 en adelante, esos dispositivos de mano tienen mucho más poder de cálculo que los microcomputadores de mediados de 1970.
Aplicaciones en CHIP-8
Hay un número no pequeño de video juegos clásicos portados a CHIP-8, como Pong, Space Invaders, Tetris y Pac-Man. También hay disponible un generador aleatorio de laberintos. Esos programas están en dominio público y pueden ser encontrador fácilmente en Internet.
El CHIP-8 hoy en día:
Hay una implementación de CHIP-8 para casi todas las plataformas imaginables, así como algunas herramientas de desarrollo. A pesar de eso, solo hay un pequeño número de juegos para CHIP-8.
CHIP-8 tiene un descendiente llamado SCHIP (Super Chip), presentado por Erik Bryntse. En 1990, un interprete de CHIP-8 llamado CHIP-48 fue hecho para la calculadora gráficaHP-48 de esta forma los juegos podían ser programados más fácilmente. Estas extensiones para CHIP-8 fueron conocidas como SCHIP. Este nuevo interprete cuenta con una mayor resolución y varios opcodes adicionales que permiten programarlo más fácilmente. Si no fuera por el desarrollo del intérprete de CHIP-48, el CHIP-8 no sería conocido en nuestros días.
ChucK
Chuck es un nuevo lenguaje de programación orientado a sonido, que permite generar, grabar, sintetizar sonido en tiempo real. Creado por Ge Wang y Perry Cook, en la Universidad de Princeton. Interactivo, es posible añadir y modificar, el código de programa, mientras chuck está aun en funcionamiento. Entre sus características más relevantes se puede encontrar, una sintáxis peculiar, en la que 'to chuck' (arrojar/conectar) se hace especialmente notable. Además puesto que su mayor funcionalidad es el tiempo real, la sincronización y el control del sonido digital al nivel de las muestras, están explícitamente expresadas en el lenguaje. Funciona en Mac OsX, GNU/Linux y Ms-Windows. En el segundo, puede compilarse para correr bajo jack, lo cual permite sincronizar fácilmente chuck con otros programas.
Clipper
Clipper es un lenguaje de programación procedural e imperativo creado en 1985 por Nantucket Corporation y vendido posteriormente a Computer Associates, la que lo comercializó como CA-Clipper. En un principio Clipper se creó como un compilador para el sistema gestor intérprete de bases de datos dBase III (de hecho las versiones estacionales de Nantucket incluían una etiqueta que lo indicaba así), pero con el tiempo el producto evolucionó y maduró, convirtiéndose en un lenguaje compilado más poderoso que el original, no sólo por sus propias implementaciones sino también por las ampliaciones desarrolladas por terceros en C, Ensamblador y Pascal, de los que fue heredando características. Esto lo convirtió en la herramienta líder de desarrollo de aplicaciones de bases de datos relacionales bajo sistema operativo MS-DOS, sobre todo programas de gestión, contabilidad y facturación (SAGE-SP, líder del mercado español, lo usa para ContaPlus y FacturaPlus), agendas comerciales y programas de tarificación (aproximadamente el 80% de las compañías de seguros de España lo utilizaron en los programas de sus agentes).
Características
A diferencia de otros lenguajes xBase, Clipper nunca contó con un modo intérprete, similar al de dBase. Sus utilidades para manejo de base de datos, tales como la de creación de tablas (DBU), se entregaban con el código fuente escrito en Clipper e incluido, el usuario podía adaptarlas a sus necesidades si quería. Se aportaban también muchas rutinas escritas en C y Ensamblador a las que el usuario podía acudir, incluso ampliar y crear bibliotecas de pre-enlace completas.
Clipper trabaja en modo compilador puro generando un código objeto binario; el paquete proveía también un enlazador (RTLINK o DLINK) que con el módulo objeto y las librerías de pre-enlace generaba un módulo ejecutable directo. Esto último le otorgaba a las aplicaciones Clipper una velocidad que otros manejadores de bases de datos no poseían, y, como desventaja, la necesidad de recompilar y enlazar nuevamente cada vez que se corregía algún error en el código fuente (la depuración era lenta).
Posee características que fueron muy atractivas para su época y su entorno de trabajo (DOS), tales como: manejo propio de memoria virtual (RAM en disco); manejo de memoria extendida, las aplicaciones podían superar la barrera de los 640Kb de RAM impuesta por MS-DOS; rutinas y librerías pueden cargarse sólo cuando son necesarias y se descargan de RAM cuando ya no hacen falta (enlace y overlays dinámicos); la cantidad de registros por tablas estaba sólo limitada a la capacidad del disco; gran robustez en las aplicaciones, particularmente en las diseñadas para cliente-servidor (red LAN), etc. Si bien no poseía prácticamente funciones de cálculo tales como las trigonométricas, que otros lenguajes como FoxPro sí incorporaron; el usuario las podía fácilmente elaborar en C y utilizarlas como cualquier otra función de librería propia del paquete, ventaja que devenía de que el compilador Clipper y muchas de sus librerías estaban casi completamente desarrolladas en C.
Su forma, administración, almacenamiento e intercambio de pantallas era sencillo, efectivo y veloz; lo que otorgaba buen dinamismo a las aplicaciones desarrolladas con Clipper. El lenguaje en sí era poderoso, contando con una gran cantidad de sentencias, funciones, administración de memoria y variables que permitían al programador desarrollos muy flexibles y eficientes; en forma razonablemente rápida. También el paquete incluía un completo "manual en línea navegable", que se cargaba en memoria RAM, a requerimiento del programador, y se accedía por la sola presión de un par de teclas.En su larga época dorada, ha sido, probablemente, el lenguaje gestor de bases de datos relacionales de "bajo y mediano porte" más utilizado en el mundo. Aun hoy existen muchos desarrolladores Clipper (algunos agrupados comunidades y con foros en Internet), que elaboran aplicaciones, incluso estilo Windows, usando sus propias librerías gráficas escritas en C y Ensamblador.
Las primeras versiones
Las primeras versiones se denominan versiones estacionales por hacer referencia a una estación del año en sus nombres oficiales. Todas ellas se nominaban como compiladores dBase. Estas fueron:
·         Nantucket Clipper Winter'84 - lanzada el 25 de mayo de 1985
·         Nantucket Clipper Summer'85 - lanzada en 1985
·         Nantucket Clipper Winter'85 - lanzada el 29 de enero de 1986
·         Nantucket Clipper Autumn'86 - lanzada el 31 de octubre de 1986
·         Nantucket Clipper Summer'87 - lanzada el 21 de diciembre de 1987
·         Gatsoft Clipper Summer'88 - lanzada el 16 de marzo de 1988
CLU
CLU es un lenguaje de programación creado por el instituto de tecnología de Massachusetts (MIT) por Barbara Liskov y sus estudiantes entre 1974 y 1975. Usaba constructores para los tipos de datos abstractos que se incluyeron en el código, un paso adelante en la programación orientada a objetos (POO). No obstante, muchas otras de las características de POO estaban incompletas o necesitaban un mayor desarrollo. Por otra parte, el lenguaje se obstaculiza por una sintaxis que en ocasiones puede resultar engorrosa. CLU y Alphard parecen ser ambos lenguajes orientados a objetos completos, sin serlo en realidad.La sintaxis de CLU esta basada en ALGOL, un punto de partida para el diseño de la mayoría de nuevos lenguajes. La incorporación más importante es el concepto de cluster, CLU's type extension system and the root of the language's name (CLUster), que viene a significar, "tipo de extensión del sistema del CLU y de la raíz de los nombres de los lenguajes". Los clusters corresponden generalmente al concepto de "objeto" en un lenguaje orientado a objetos, y tienen una sintaxis muy similar.
Mientras que los clusters ofrecieron un sistema entonces-avanzado para los programas de estructuración, CLU no ofreció ninguna clase de estructura para los clusters. Los nombres de los clusters son globales, y no se proporcionó ningún mecanismo a los clusters para agruparlos o permitir que sean creados "localmente" dentro de otros clusters. Este problema no se da solo en CLU, ya que sorprendentemente muchos lenguajes han carecido de esta característica - el problema se encuentra centralizado en ALGOL, de dar alcance a las variables. Parece ser, que dar alcance a los nombres del cluster/objeto sería una expansión obvia.CLU no realiza conversiones de tipo implícito. En un cluster, las conversiones tipo explícito "up" y "down" cambian entre el tipo abstracto y la representación. Hay un tipo universal "any", y un procedimiento force[] para comprobar que un objeto es de un tipo correcto. Los objetos pueden ser mutable o inmutables, este ultimo "tipos base" por ejemplo números enteros.
Otras características
Otra característica importante del tipo sistema de CLU son los iteradores (patrones de diseño), que devuelven objetos de un conjunto, uno detrás de otro. Los iteradores son como "cajas negras" que ofrecen una interfaz de programación de aplicacionesAPI donde no importaba el tipo de datos que estuvieran usando. Así, el iterador para un conjunto de números complejos sería idéntico que para un array de números enteros. Los iteradores son ahora una característica común de la mayoría de los lenguajes modernos.
Una característica distintiva final en CLU es la asignación múltiple, donde puede aparecer más de una variable en el lado izquierdo de un operador de asignación. Por ejemplo, escribiendo x, y = y, x los valores de intercambio de x y de Y. De la misma forma, las funciones podrían retornar varios valores, como x, y, z = f (t).Todos los objetos en un programa de CLU se declaran al principio, siendo así, la reserva de memoria automática.
COBOL
El lenguajeCOBOL (acrónimo de COmmon Business-Oriented Language, Lenguaje Común Orientado a Negocios) fue creado en el año 1959 con el objetivo de crear un lenguaje de programación universal que pudiera ser usado en cualquier ordenador, ya que en los años 1960 existían numerosos modelos de ordenadores incompatibles entre sí, y que estuviera orientado principalmente a los negocios, es decir, a la llamada informática de gestión.
Historia
En la creación de este lenguaje participó la comisión CODASYL, compuesta por fabricantes de ordenadores, usuarios y el Departamento de Defensa de Estados Unidos en mayo de 1959. La definición del lenguaje se completó en poco más de seis meses, siendo aprobada por la comisión en enero de 1959. El lenguaje COBOL fue diseñado inspirándose en el lenguaje Flow-Matic de Grace Hopper y el IBM COMTRAN de Bob Bemer, ya que ambos formaron parte de la comisión.
Gracias a la ayuda de los usuarios COBOL evolucionó rápidamente y fue revisado de 1961 a 1965 para añadirle nuevas funcionalidades. En 1968 salió la primera versión ANSI del lenguaje, siendo revisada posteriormente en 1974 (COBOL ANS-74), 1985 (COBOL ANS-85, ampliado en 1989 con funciones matemáticas, finalizando el estándar actual más usado, conocido como COBOL-ANSI), y en 2002 (COBOL ANS-2002). Desde el año 2007 se viene preparando una nueva revisión del lenguaje. Además, existe una versión conocida como COBOL ENTERPRISE, actualizada regularmente y lanzada en 1991, usada generalmente en sistemas Host. En el 2011 se actualizó con Visual COBOL.
Características
COBOL fue dotado de unas excelentes capacidades de autodocumentación Una buena gestión de archivos y una excelente gestión de los tipos de datos para la época, a través de la conocida sentencia PICTURE para la definición de campos estructurados. Para evitar errores de redondeo en los cálculos que se producen al convertir los números a binario y que son inaceptables en temas comerciales, COBOL puede emplear y emplea por defecto números en base diez. Para facilitar la creación de programas en COBOL, la sintaxis del mismo fue creada de forma que fuese parecida al idioma inglés, evitando el uso de símbolos que se impusieron en lenguajes de programación posteriores.Pese a esto, a comienzos de los ochenta se fue quedando anticuado respecto a los nuevos paradigmas de programación y a los lenguajes que los implementaban. En la revisión de 1985 se solucionó, incorporando a COBOL variables locales, recursividad, reserva de memoria dinámica y programación estructurada. En la revisión de 2002 se le añadió orientación a objetos, aunque desde la revisión de 1974 se podía crear un entorno de trabajo similar a la orientación a objetos, y un método de generación de pantallas gráficas estandarizado.
Antes de la inclusión de las nuevas características en el estándar oficial, muchos fabricantes de compiladores las añadían de forma no estándar. En la actualidad este proceso se está viendo con la integración de COBOL con Internet. Existen varios compiladores que permiten emplear COBOL como lenguaje de scripting y de servicio web. También existen compiladores que permiten generar código COBOL para la plataforma .NET y EJB.
COMAL
COMAL (COMmon Algorithmic Language) es un lenguaje de programación desarrollado en Dinamarca por Benedict Løfstedt y Børge Christensen en 1973.COMAL fue creado como una mezcla de los lenguajes BASIC y Pascal, al objeto de introducir fácilmente a los estudiantes en el paradigma de la programación estructurada.
COMAL está disponible para plataformas de 8, 16 y 32 bits:


·         BBC Micro
·         Commodore PET/Commodore
·         Compis / Scandis
·         CP/M
·         IBM PC
·         Tiki 100
·         ZX Spectrum


COMIT
El COMIT es el primer lenguaje de programación para la manipulación de cadenas y de reconocimiento de patrones. Se basa en la traducción automática de máquina, donde se pueden sustituir cadenas de símbolos por otras cadenas. Fue desarrollado por Yngve del MIT. Cada enunciado de programa es muy parecido a una producción libre de contexto y representa el conjunto de sustituciones que se pueden hacer si se encuentra esa cadena en los datos.Como Yngve mantuvo patentado su código, un grupo de los Laboratorios Bell de AT&T decidió desarrollar su propio lenguaje, lo cual dio por resultado el SNOBOL.
R
R es un lenguaje y entorno de programación para análisis estadístico y gráfico.Se trata de un proyecto de software libre, resultado de la implementación GNU del premiado lenguaje S. R y S-Plus -versión comercial de S- son, probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística, siendo además muy populares en el campo de la investigación biomédica, la bioinformática y las matemáticas financieras. A esto contribuye la posibilidad de cargar diferentes bibliotecas o paquetes con finalidades específicas de cálculo o gráfico. R se distribuye bajo la licencia GNU GPL y está disponible para los sistemas operativosWindows, Macintosh, Unix y GNU/Linux.
Historia
Fue desarrollado inicialmente por Robert Gentleman y Ross Ihaka del Departamento de Estadística de la Universidad de Auckland en 1993.1 Su desarrollo actual es responsabilidad del R Development Core Team.
A continuación se enumeran algunos hitos en el desarrollo de R:
·         Versión 0.16: Es la última versión alfa desarrollada esencialmente por Ihaka y Gentleman, que incluye gran parte de las características descritas en el "White Book". La lista de correo comenzó su andadura el 1 de abril de 1997.
·         Versión 0.49 del 23 de abril de 1997: Es la versión más antigua de la que se conserva el código (que todavía compila en algunas plataformas UNIX). En esta fecha arrancó también CRAN con tres espejos que albergaban 12 paquetes. Poco después aparecieron las versiones alfa para Windows y Mac OS.
·         Versión 0.60 del 5 de diciembre de 1997: R se integra oficialmente en el Proyecto GNU. El código se versiona a través de CVS.
·         Versión 1.0.0 del 29 de febrero de 2000: Los desarrolladores lo consideran suficientemente estable para su uso en producción.2
·         Versión 1.4.0: Se introducen los métodos S4 y aparece la primera versión para Mac OS X.
·         Versión 2.0.0: Introduce el lazy loading, que permite una carga rápida de datos con un coste de memoria mínimo.
·         Versión 2.1.0: Aparece el soporte para UTF-8 y comienzan los esfuerzos de internacionalización para distintos idiomas.
·         Versión 2.9.0: El paquete 'Matrix' se incluye en la distribución básica de R.
Características
R proporciona un amplio abanico de herramientas estadísticas (modelos lineales y no lineales, tests estadísticos, análisis de series temporales, algoritmos de clasificación y agrupamiento, etc.) y gráficas.Al igual que S, se trata de un lenguaje de programación, lo que permite que los usuarios lo extiendan definiendo sus propias funciones. De hecho, gran parte de las funciones de R están escritas en el mismo R, aunque para algoritmos computacionalmente exigentes es posible desarrollar bibliotecas en C, C++ o Fortran que se cargan dinámicamente. Los usuarios más avanzados pueden también manipular los objetos de R directamente desde código desarrollado en C. R también puede extenderse a través de paquetes desarrollados por su comunidad de usuarios.
R hereda de S su orientación a objetos. La tarea de extender R se ve facilitada por su permisiva política de lexical scoping.Además, R puede integrarse con distintas bases de datos y existen bibliotecas que facilitan su utilización desde lenguajes de programación interpretados como Perl y Python.Otra de las características de R es su capacidad gráfica, que permite generar gráficos con alta calidad. R posee su propio formato para la documentación basado en LaTeX.
R también puede usarse como herramienta de cálculo numérico, campo en el que puede ser tan eficaz como otras herramientas específicas tales como GNU Octave y su versión comercial, MATLAB.4 Se ha desarrollado una interfaz, RWeka5 para interactuar con Weka que permite leer y escribir ficheros en el formato arff y enriquecer R con los algoritmos de minería de datos de dicha plataforma.
Curry
Curryes un lenguaje experimental de programación en lógica funcional, basado en el lenguaje Haskell, que combina elementos de programación funcional y programación lógica. El programa es expresado a través de un conjunto de funciones expresados bajo ecuaciones o reglas.
Cython
Cython es un lenguaje de programación para simplificar la escritura de módulos de extensión para Python en C y C++. Siendo estrictos, la sintaxis de Cython es la misma de Python pero con algunos agregados:
*Se pueden llamar funciones en C, o funciones/métodos de C++, directamente desde el código en Cython.
*Es posible usar tipos estáticos en las variables (enteros, flotantes, o cualquier tipo de dato).
Cython compila a código en C o C++ desde Python, y el resultado puede ser usado desde Python como un "Modulo de extensión", o como una aplicación embebida en el intérprete CPython.Cython es un proyecto derivado de Pyrex, pero implementa más funcionalidades y optimizaciones que este.1
Ventajas
La ventaja esencial de este enfoque, es que al entremezclar perfectamente código Python/C (es decir, C usando <python.h>) es que el código Python existente se puede ajustar a casi la velocidad de C con sólo añadir unos pocos tipos estáticos a las declaraciones y haciendo algunas adaptaciones en los bucles críticos -sin necesidad de una interfaz complicada o muy invasiva del código. La velocidad de codificación y la legibilidad del código sigue siendo bastante Pythonica. Debido a reducción del consumo general en las estructuras de control (especialmente los bucles), las optimizaciones optimistas y la (limitada) inferencia de tipos, el código Python compilado con Cython normalmente se ejecuta más rápido que en el intérprete CPython 2.6.x, aunque las mejoras absolutas dependen en gran medida el código. Con las declaraciones de tipos estáticos, la aceleración típica en cálculos numéricos/matriciales es de 100x-1000x2 En comparación a la típica optimización con Psyco (Python JIT compiler) qué es entre 4x-100x.
Dart
Dart (originalmente llamado Dash) es un lenguaje de programación desarrollado por Google. Fue revelado en la Conferencia en Aarhus, Dinamarca, el 12 Octubre de 2011. El objetivo de Dart no es reemplazar JavaScript como el principal lenguaje de programación web en los navegadores web, sino ofrecer una alternativa más moderna. El espíritu del lenguaje puede verse reflejado en las declaraciones de Lars Bak, ingeniero de software de Google, que define a Dart como un “lenguaje estructurado pero flexible para programación Web”.
La razón para un nuevo lenguaje
Dart está pensado para resolver los problemas de JavaScript y ofrecer unos mejores resultados, pese a que en su presentación no se hicieron referencias explícitas a JavaScript. Tiene la capacidad de ser una herramienta sencilla para proyectos más grandes y ofrece una mejor seguridad. Los ingenieros de Google desarrollaron desde 2011 un programa desde Internet para el desarrollo de aplicaciones llamado Brightly, que quizás podrá ser la primera aplicación creada con Dart. Google ofrecerá una herramienta para compilar Dart a ECMAScript 3 en el instante, para ser compatible con los navegadores que no utilicen Dart. Google también integrará una máquina virtual nativa en Google Chrome y facilitará a sus competidores lo mismo para sus navegadores. La MV de Dart y el Compilador de Dart estarán disponibles a finales de 2011.
Data Language/Interface
Data Language/Interface (abreviado DL/1 o DL/I) es el lenguaje de programación para acceder a las bases de datos de IMSy a su sistema de comunicación. Se implementa desde cualquier lenguaje existente realizando llamadas a un programa puente llamado DFSLI000. Este software contiene puntos de entrada para gestionar varios lenguajes de programación, por ejemplo, para llamar a PLITODLI desde un programa PL/1 o CBLTDLI desde un programa COBOL. El programa DFSLI00 se enlaza desde el programa real, pasa la información a IMS y posteriormente devuelve datos y un código de retorno.En cualquier base de datos IMS full-function, el elemento más pequeño que se puede consultar es el segmento. Cada segmento se compone de campos, donde normalmente uno de ellos será un campo clave. Los segmentos en la base de datos están organizados de forma jerárquica, al segmento del nivel más alto se denomina segmento raíz. Existen restricciones en cuanto al número de segmentos distintos: un máximo de 255 segmentos diferentes en 15 niveles. Sin embargo, no hay ningún limite en el número de ocurrencias de cada tipo de segmento, más allá de los limites físicos del espacio de almacenamiento.
La estructura de la base de datos se presenta a la aplicación mediante PCB (Bloque de Control de Programa, o Program Control Block), este es uno de los parámetros que se pasan al DFSLI000. Además de PCB para acceso a bases de datos, existes PCB para mensajería y acceso a bases de datos en ficheros secuenciales.
DRAKON
DRAKON es un lenguaje de programación algorítmico visual ideado para el proyecto espacial soviético del transbordador Buran. Su desarrollo, iniciado en 1986, fue dirigido por Vladimir Parondzhanov. El objetivo era reemplazar los varios lenguajes especializados, como PROL2, DIPOL y LAKS usados hasta entonces en el proyecto Buran, por un único sistema general. El trabajo finalizó en 1998 (5 años después de que el proyecto Buran fuera oficialmente cancelado), con el desarrollo de un sistema de programación llamado "Grafit-Floks".
Dylan
Dylan es un lenguaje de programación funciónal y orientado a objetos. Fue creado a principios de los años 1990 por iniciativa de Apple Computer.Dylan es, en esencia, una versión depurada y simplificada de CLOS, un sistema de programación orientado a objetos desarrollado en Common Lisp. En Dylan, la mayoría de las entidades (incluyendo los tipos de datos primitivos, métodos y clases) son objetos de “primera clase”. Los programas pueden ser escritos desde una forma fuertemente tipeada a una forma débilmente tipeada. Dylan soporta herencia múltiple, polimorfismo, palabras clave, macros, y muchas otras características avanzadas.La meta de Dylan es ser un lenguaje apropiado para el desarrollo de software comercial.
Historia
Dylan fue creado a principios de los años 90 por iniciativa de Apple Computer. Durante el desarrollo, se intentó usarlo con los ordenadores de Apple Newton, pero la implementación del lenguaje no estuvo listo a tiempo, y Newton usó una combinación de C y el lenguaje de programación NewtonScript (desarrollado por Walter Smith) en su lugar. Apple concluyó su desarrollo de Dylan en 1995.
Otros dos grupos contribuyeron al diseño del lenguaje y desarrollaron implementaciones: la compañía de software ‘’’Harlequin’’’ lanzó un entorno de desarrollo integrado para Microsoft Windows y ‘’’Carnegie Mellon University’’’ lanzó un compilador para sistemas Unix. Ambas implementaciones son hoy en día de código abierto y son mantenidas por un grupo de voluntarios.El lenguaje Dylan tuvo como nombre en clave ‘Ralph’. James Joaquin eligió el nombre Dylan por “DYnamic LANguage” (lenguaje dinámico).
Lenguaje ensamblador
Lenguaje de máquina del Intel 8088. El código de máquina en hexadecimal se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el código, en azul. Abajo se ve un texto en hexadecimal y ASCII. El lenguaje ensamblador, o assembler (assembly language en inglés) es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria, y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico a cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que, idealmente son portables.
Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuración. Particularmente, la mayoría de los ensambladores modernos incluyen una facilidad de macro (descrita más abajo), y son llamados macro ensambladores.
Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, altos rendimientos, o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados.
Características
El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho más rápidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes de alto nivel. También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución.
Programa ensamblador
Típicamente, un programa ensamblador (assembler en inglés) moderno crea código objeto traduciendo instrucciones mnemónicas de lenguaje ensamblador en opcodes, y resolviendo los nombres simbólicos para las localizaciones de memoria y otras entidades.1 El uso de referencias simbólicas es una característica clave del lenguaje ensamblador, evitando tediosos cálculos y actualizaciones manuales de las direcciones después de cada modificación del programa. La mayoría de los ensambladores también incluyen facilidades de macros para realizar sustitución textual - ej. generar cortas secuencias de instrucciones como expansión en línea en vez de llamar a subrutinas.
Los ensambladores son generalmente más simples de escribir que los compiladores para los lenguajes de alto nivel, y han estado disponibles desde los años 1950. Los ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, así como también para el x86 (-64), optimizan la planificación de instrucciones para explotar la segmentación del CPU eficientemente. En los compiladores para lenguajes de alto nivel, son el último paso antes de generar el código ejecutable.
El lenguaje ensamblador refleja directamente la arquitectura y las instrucciones en lenguaje de máquina de la CPU, y pueden ser muy diferentes de una arquitectura de CPU a otra. Cada arquitectura de microprocesador tiene su propio lenguaje de máquina, y en consecuencia su propio lenguaje ensamblador ya que este se encuentra muy ligado al la estructura del hardware para el cual se programa. Los microprocesadores difieren en el tipo y número de operaciones que soportan; también pueden tener diferente cantidad de registros, y distinta representación de los tipos de datos en memoria. Aunque la mayoría de los microprocesadores son capaces de cumplir esencialmente las mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes ensamblador reflejan tal diferencia.
Instrucciones de CPU
La mayoría de los CPU tienen más o menos los mismos grupos de instrucciones, aunque no necesariamente tienen todas las instrucciones de cada grupo. Las operaciones que se pueden realizar varían de un CPU a otro. Un CPU particular puede tener instrucciones que no tenga otro y viceversa. Los primeros microprocesadores de 8 bits no tenían operaciones para multiplicar o dividir números, por ejemplo, y había que hacer subrutinas para realizar esas operaciones. Otros CPU puede que no tengan operaciones de punto flotante y habría que hacer o conseguir bibliotecas que realicen esas operaciones.
Ensamblado
La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador, y la traducción inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad necesaria y simplificar la programación. Por ejemplo, para un código máquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor que", y "si = 0" sobre el resultado de la condición anterior. Los Ensambladores más completos también proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de datos.Para el mismo procesador y el mismo conjunto de instrucciones de CPU, diferentes programas ensambladores pueden tener, cada uno de ellos, variaciones y diferencias en el conjunto de mnemónicos o en la sintaxis de su lenguaje ensamblador. Por ejemplo, en un lenguaje ensamblador para la arquitectura x86, se puede expresar la instrucción para mover 5 al registro AL de la siguiente manera: MOV AL, 5, mientras que para otro ensamblador para la misma arquitectura se expresaría al revés: MOV 5, AL. Ambos lenguajes ensambladores harían exactamente lo mismo, solo que está expresado de manera diferente. El primero usa la sintaxis de Intel, mientras que el segundo usa la sintaxis de AT&T
El uso del ensamblador no resuelve definitivamente el problema de cómo programar un sistema basado en microprocesador de modo sencillo ya que para hacer un uso eficiente del mismo, hay que conocer a fondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas más referentes a su estructura básica de funcionamiento.
ECMAScript
ECMAScript es una especificación de lenguaje de programación publicada por ECMA International. El desarrollo empezó en 1996 y estuvo basado en el popular lenguaje JavaScript propuesto como estándar por Netscape Communications Corporation. Actualmente está aceptado como el estándar ISO 16262. ECMAScript define un lenguaje de tipos dinámicos ligeramente inspirado en Java y otros lenguajes del estilo de C. Soporta algunas características de la programación orientada a objetos mediante objetos basados en prototipos y pseudoclases.
La mayoría de navegadores de Internet incluyen una implementación del estándar ECMAScript, al igual que un acceso al Document Object Model para manipular páginas web. JavaScript está implementado en la mayoría de navegadores, y el Internet Explorer de Microsoft usa JScript. El navegador Opera tiene su propio intérprete de ECMAScript con extensiones para soportar algunas características de JavaScript y JScript. Cada navegador tiene extensiones propias al estándar ECMAScript, pero cualquier código que se adecue al estándar debería funcionar en todos ellos.ActionScript, para Adobe Flash, también está basado en el estándar ECMAScript, con mejoras que permiten mover, crear y analizar dinámicamente objetos, mientras la película está en ejecución.
Erlang
Erlang es un lenguaje de programación concurrente y un sistema de ejecución que incluye una máquina virtual y bibliotecas.El subconjunto de programación secuencial de Erlang es un lenguaje funcional, con evaluación estricta, asignación única, y tipado dinámico. Fue diseñado en la compañía Ericsson para realizar aplicaciones distribuidas, tolerantes a fallos, soft-real-time y de funcionamiento ininterrumpido. Proporciona el cambio en caliente de código de forma que éste se puede cambiar sin parar el sistema. Originalmente, Erlang era un lenguaje propietario de Ericsson, pero fue cedido como software de código abierto en 1998. La implementación de Ericsson es, principalmente interpretada pero también incluye un compilador HiPE (sólo soportado en algunas plataformas).
La creación y gestión de procesos es trivial en Erlang, mientras que, en muchos lenguajes, los hilos se consideran un apartado complicado y propenso a errores. En Erlang toda concurrencia es explícita. Erlang recibe el nombre de A. K. Erlang. A veces se piensa que el nombre es una abreviación de ERicsson LANGuage, debido a su uso intensivo en Ericsson. Según Bjarne Däcker -quien fue el jefe del Computer Science Lab en su día-, esta dualidad es intencional.
Euler
Euler es un lenguaje de programación creado por Niklaus Wirth y Helmut Weber, concebido como una extensión y generalización de ALGOL 60. La meta de sus diseñadores era crear un lenguaje:
·         más simple y sencillo que ALGOL 60
·         que fuese útil y al mismo tiempo eficiente
·         que pudiese ser definido rigurosamente con herramientas formales
Euler usa un concepto de tipo general. En Euler, los arrays, procedimientos y condiciones múltiples no son entidades con nombre: al contrario que en ALGOL, no están al mismo nivel que las variables. En cambio, se comportan al nivel de constantes booleanas y numéricas. Por tanto, aparte del tradicional tratamiento de dichas constantes, Euler presenta los siguientes nuevos tipos de datos:


·         Referencia
·         Etiqueta
·         Símbolo
·         lista (array)
·         procedimiento
·         indefinido


Todas las constantes pueden ser asignadas a variables, que tienen la misma forma que en ALGOL, pero que no tienen tipo fijo: Euler es un lenguaje de programación con tipos dinámicos. Es más, un procedimiento puede devolver un valor de cualquier tipo, y este tipo puede ser distinto en distintas llamadas al mismo procedimiento.
Similarmente, los elementos de una lista pueden tener valores de cualquier tipo, incluso dentro de la misma lista. Así que si los elementos de la lista son etiquetas o procedimientos, tenemos una condición múltiple (switch) o una lista de procedimientos, respectivamente. La creación de listas de listas es en esencia un tipo de datos árbol. Como era de esperar, Euler proporciona operadores generales de comprobación y conversión de tipos.
Extended ML
Extended ML es un lenguaje de programación creado por Kahrs, Sannella y Tarlecki basado en ML. Extiende la sintaxis de ML para incluir axiomas de semántica, los cuales pueden no ser ejecutables pero que sirven para especificar rigurosamente el comportamiento de un programa. Con esta extensión el lenguaje puede utilizarse para aplicar técnicas de refinamiento de programas para, a partir de una especificación formal, producir un programa en el lenguaje Standard ML que cumple con la especificación. Extended ML se utiliza para la enseñanza de desarrollo formal de programas, especificación de programas y para investigación en verificación automatizada de programas.
FLOW-MATIC
Es el primer lenguaje de alto nivel orientado al ámbito de gestión. Fue creado por Grace Murray Hopper (1906 – 1992) en 1955 para UNIVAC. Estableció el concepto de lenguajes de programación basados en palabras del lenguaje natural; también desarrolló los primeros compiladores de la historia, el A-0 (Math Matic) y el B-0, y en 1960 presentó su primera versión del lenguaje COBOL (Common Business-Oriented Language).
Fortran
Fortran (previamente FORTRAN) (contracción del inglésFormula Translating System) es un lenguaje de programaciónalto nivel de propósito general, procedimental e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica.
Desarrollado originalmente por IBM en 1957 para el equipo IBM 704, y usado para aplicaciones científicas y de ingeniería, el FORTRAN vino a dominar esta área de la programación desde el principio y ha estado en uso continuo por más de medio siglo en áreas de cómputo intensivo tales como la predicción numérica del tiempo, análisis de elementos finitos, dinámica de fluidos computacional (CFD), física computacional, y química computacional. Es una de los lenguajes más populares en el área de la computación de alto rendimiento y es el lenguaje usado para programas que evalúan el desempeño (benchmark) y el ranking de los supercomputadoresmás rápidos del mundo.
El FORTRAN (una palabra compuesta, derivada de The IBM Mathematical Formula Translating System) abarca un linaje de versiones, cada una de las cuales evolucionó para añadir extensiones al lenguaje mientras que usualmente retenía compatibilidad con las versiones previas. Versiones sucesivas han añadido soporte para procesamiento de datos basados en caracteres (FORTRAN 77), programación de arreglos, programación modular y programación orientada a objetos (Fortran 90/95), y programación genérica (Fortran 2003).
Historia


A finales de 1953, John W. Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar el computador centralIBM 704. El histórico equipo FORTRAN de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.A mediados de 1954 fue terminada una especificación del borrador para The IBM Mathematical Formula Translating System. El primer manual para el FORTRAN apareció en octubre de 1956, porque los clientes eran reacios a usar un lenguaje de programación de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador.Mientras que la comunidad era escéptica en que este nuevo método pudiera posiblemente superar la codificación a mano, éste redujo por un factor de 20 al número de sentencias de programación necesarias para operar una máquina, y rápidamente ganó aceptación. Durante una entrevista en 1979 con Think, la revista de los empleados de IBM, el creador, John Backus, dijo, "Mucho de mi trabajo ha venido de ser perezoso. No me gustaba escribir programas, y por eso, cuando estaba trabajando en el IBM 701 escribiendo programas para computar trayectorias de misiles, comencé el trabajo sobre un sistema de programación para hacer más fácil escribir programas".
El lenguaje fue ampliamente adoptado por los científicos para escribir programas numéricamente intensivos, que incentivó a los escritores de compiladores a producir compiladores que pudieran generar un código más rápido y más eficiente. La inclusión en el lenguaje de un tipo de datos y de la aritmética de números complejos amplió la gama de aplicaciones para las cuales el lenguaje se adaptaba especialmente e hizo al FORTRAN especialmente adecuado para aplicaciones técnicas tales como la ingeniería eléctrica.
Hacia 1960, las versiones de FORTRAN estaban disponibles para los computadors IBM 709, 650, 1620, y 7090. Significativamente, la cada vez mayor popularidad del FORTRAN estimuló a fabricantes de computadores de la competencia a proporcionar compiladores FORTRAN para sus máquinas, así que por 1963 existían más de 40 compiladores FORTRAN. Por estas razones, el FORTRAN es considerado ser el primer lenguaje de programación ampliamente usado soportado a través de una variedad de arquitecturas de computador.El desarrollo del FORTRAN fue paralelo a la temprana evolución de la tecnología del compilador. De hecho, muchos avances en la teoría y el diseño de compiladores fueron motivados específicamente por la necesidad de generar código eficiente para los programas en FORTRAN. Versiones
Algunas otras versiones subsiguientes fueron:


FORTRAN IV
FORTRAN 77
FORTRAN 90
FORTRAN 95
FORTRAN 2003
FORTRAN 2008
FORTRAN 2010


Principales características
El lenguaje fue diseñado teniendo en cuenta que los programas serían escritos en tarjetas perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única alteración posible en el orden de ejecución era producida con la instrucción goto. Estas características han evolucionado de versión en versión. Las actuales contienen subprogramas, recursión y una variada gama de estructuras de control.
Ventajas e inconvenientes de su sintaxis
Lo que fue la primera tentativa de proyección de un lenguaje de programación de alto nivel, tiene una sintaxis considerada arcaica por muchos programadores que aprenden lenguajes más modernos. Es difícil escribir un bucle "for", y errores en la escritura de sólo un carácter pueden llevar a errores durante el tiempo de ejecución en vez de errores de compilación, en el caso de que no se usen las construcciones más frecuentes. Algunas de las versiones anteriores no poseían facilidades que son consideradas como útiles en las máquinas modernas, como la asignación dinámica de memoria.
Se debe tener en cuenta que la sintaxis de Fortran fue afinada para el uso en trabajos numéricos y científicos. Muchas de sus deficiencias han sido abordadas en revisiones recientes del lenguaje. Por ejemplo, Fortran 95 posee comandos mucho más breves para efectuar operaciones matemáticas con matrices y dispone de tipos. Esto no sólo mejora mucho la lectura del programa sino que además aporta información útil al compilador. Por estas razones Fortran no es muy usado fuera de los campos de la informática y el análisis numérico, pero permanece como el lenguaje a escoger para desempeñar tareas de computación numérica de alto rendimiento.
FoxPro 2
FoxPro (acrónimo de FoxBASE Professional) es un lenguaje de programación orientado a objetos, que a la vez es un Sistema Gestor de Bases de datos o Database Management System (DBMS), publicado originalmente por Fox Software y posteriormente por Microsoft, para los sistemas operativos MS-DOS, MS Windows, Mac OS y UNIX. Aunque FoxPro es un DBMS y como tal soporta relaciones entre las tablas, no se le considera como un Sistema administrador de bases de datos relacionales (o RDBMS), por no soportar las transacciones.
FP
FP (abreviación de Functional Programming) es un lenguaje de programación creado por John Backus para apoyar la diseminación del paradigma de Programación a nivel funcional.
Componentes del lenguaje
Valores
Las principales estructuras de datos del lenguaje son los valores de base y las secuencias:
Si x1,...,xn son valores, también lo es la secuenciax1,...,xn.
Estos valores se construyen a partir de cualquier conjunto de valores atómicos: booleanos, enteros, reales, caracteres, etc.
booleanos  : {T, F}
enteros  : {0,1,2,...,∞}
caracteres  : {'a', 'b', 'c',...}
símbolos  : {x, y,...}
El símbolo representa el valor indefinido. Las secuencias preservan el valor indefinido:
        x1,...,,...,xn =
Funciones
Los programas en FP son funcionesf tales que cada una hace corresponder un valorx en otro :f:x representa el valor resultante de aplicar la función f a x.
Game Maker Language
Game Maker Languaje (GML) es un lenguaje de programación interpretado, desarrollado para usarse como complemento de la aplicación de desarrollo de juegos Game Maker. El lenguaje es utilizado en el programa para dar mayor potenciación al desarrollo de juegos u otros sistemas dentro de tal. El lenguaje fue codificadoo usando el lenguaje Delphi. Es un lenguaje de programación muy flexible, su sintaxis es comparable con la de C++, aunque también se ve influenciado por la sintaxis de otros lenguajes como Pascal. La estructura general del código GML puede tomar diferentes formas de sintaxis, ya que no se ve sujeta a una sintaxis estricta como la de C. Es capaz de trabajar con números, cadenas de texto y demás de manera nativa.
Funciones
El lenguaje GML por ende ya tiene un gran número de funciones y sistemas implementados dentro del mismo programa en el que trabaja, es decir, no necesita de librerías externas como en otros lenguajes (C++ por ejemplo), aun así, también cabe la posibilidad de poder usar librerías externas en formato DLL para potenciar ciertos campos del sistema.
Variables
GML no necesita de la declaración compulsiva de variables para trabajarlas, es decir, basta con asignarle un valor fijo una vez en cualquier sitio. En este caso, la variable ya está declarada y puede usarse de forma general, aun así, GML también incluye un bloque "var" imitando las declaraciones de variables de otros lenguajes, pudiendo declarar un sin número de variables en el programa sin necesidad de asignarles un valor (si no que este automáticamente es 0, como en C++).
Game Maker también trabaja con constantes, las cuales se pueden asignar desde una función del programa (más las que ya existen por ende). Dentro del código GML existen dos tipos de variables de trabajo, las variables locales y variables globales. Las variables locales trabajan únicamente dentro de un "objeto", es decir, no es existente fuera del "objeto" o bloque de código que la trabaje (lo cual permite usar el mismo nombre de la variable en otro objeto). Por otro lado están las variables globales, las cuales usan el prefijo global.antes del nombre de la variable.
Las variables globales tienen uso en todo el programa, por lo cual solo puede existir una sola variable global con el mismo nombre, y su valor puede verse afectado desde cualquier parámetro del programa/código.
Gemix
Gemix es uno de los lenguajes de programación que podemos encontrar en la suite de creación de videojuegos Gemix Studio. El lenguaje, al igual que el propio producto en general, se encuentra en desarrollo. Se podría decir que es una evolución del lenguaje DIV ya que en la actualidad es totalmente compatible con este (a excepción de las funcionalidades de red y modo 8), compartiendo su misma estructura y filosofía. Es una evolución de DIV ya que a todo lo que este es, añade numerosas funcionalidades.
Características
A continuación se lista una serie de características tanto a nivel de estructura de lenguaje como a nivel de funcionalidades: Lenguaje interpretado. El compilador de Gemix convierte el código fuente en un código intermedio que posteriormente es ejecutado por el intérprete. Su estructura es una mezcla de C y Pascal y heredera integral de la de DIV.
Incorpora una novedad, ya presente en DIV: el tratamiento de procedimientos de manera muy similar a los procesos de Linux, pero de forma automática. Normalmente, cada proceso representa un objeto en pantalla, aunque estos también pueden ser usados de manera similar a funciones tradicionales. Los procesos aportan en cierta medida uno de los principios de la programación orientada a objetos, el encapsulamiento. Esto es posible gracias a la incorporación de las variables locales que se declaran una vez, y están presentes en cada proceso en forma de una copia independiente. Existen variables locales predefinidas que el sistema usa para almacenar parámetros tales como la posición horizontal y vertical, el gráfico asignado al proceso, el ángulo de rotación, etc.
Motor 2D de renderizado por software. Esto permite la visualización, escalado y rotado, entre otras, de sprites, texto y primitivas gráficas. Además Gemix añade a esto un potente sistema de efectos y modos de fusión de los gráficos.
Genie
Genie es un lenguaje de programación de alto nivel, moderno, y de propósito general en desarrollo activo desde el año 2008.1 Fue diseñado como un dialecto alternativo más simple y limpio para el compilador Vala, preservando al mismo tiempo la misma funcionalidad del lenguaje Vala. La sintaxis de Genie se deriva de numerosos lenguajes modernos como Python, Boo, D y Delphi.
Al igual que Vala, Genie usa el sistema de tipos GObject para crear clases e interfaces declaradas en el código fuente de Genie, sin imponer requisitos adicionales de tiempo de ejecución (es decir, a diferencia de Python, Java o Mono, este no requiere una máquina virtual).Genie permite el acceso a las bibliotecas de C, especialmente las basadas en GObject (como GTK+), sin necesidad de utilizar otro API. Durante la compilación, el código se traduce primero a código fuente y cabeceras de C, que se compilan entonces al código de máquina con cualquier compilador C disponible como GCC, lo cual permite el desarrollo de software multi-plataforma.Aunque tanto Vala como Genie son desarrollados y promovidos por el proyecto Gnome, los programas desarrollados en Genie no dependen del entorno de escritorio Gnome, y usualmente requieren sólo de GLib.
Go
Go es un lenguaje de programaciónconcurrente y compilado inspirado en la sintaxis de C. Ha sido desarrollado por Google y sus diseñadores iniciales son Robert Griesemer, Rob Pike y Ken Thompson. Actualmente sólo está disponible para los sistemas operativosGNU/Linux y Mac OS X.En el día de la publicación del lenguaje, Francis McCabe, desarrollador del lenguaje de programación Go!, solicitó que se le cambiase el nombre al lenguaje de Google para evitar confusiones con su lenguaje. McCabe creó Go! en el año 2003; sin embargo, aún no ha registrado el nombre.
Gobstones
Gobstones es un lenguaje de programación diseñado para la enseñanza de ideas básicas de programación. Fue utilizado por primera vez en una materia de introducción a la programación de la Universidad Nacional de Quilmes. Se diferencia de otros lenguajes dedicados a tal fin, como puede ser Logo, debido a que el pasaje de este lenguaje a otros utilizados en la industria resulta más sencillo, por la utilización de una sintaxis similar a la de éstos. La sintaxis del lenguaje fue diseñada para ser similar a lenguajes como C y Java (posee bloques de código encerrados por llaves).
Su primera implementación fue hecha en el lenguaje Haskell, para ser usado en el intérprete Hugs. Existen implementaciones en otros lenguajes como Python y C++. Gobstones posee tipos primitivos que intentan ser intuitivos, pertenecientes a un universo de discurso diseñado especialmente para este lenguaje. Presenta un tablero que posee un cabezal que apunta en todo momento a una celda del mismo. El cabezal puede poner y sacar bolitas de diferentes colores, y además moverse a otras celdas del tablero. Si el cabezal se mueve a una celda no existente o intenta sacar bolitas de una celda vacía, el programa finaliza de forma anormal.
El lenguaje además posee una diferenciación clara entre comandos y expresiones puras. Los comandos describen acciones que realiza el cabezal sobre el tablero, y por lo tanto generan efectos. Las expresiones se limitan sólo a denotar valores (no poseen efectos laterales). El usuario puede definir procedimientos (que dan nombre a comandos nuevos) y funciones puras.
El lenguaje no posee entrada y salida de datos. Al final de la ejecución de un programa Gobstones, se visualiza un tablero final que resulta de los efectos descritos en el programa.
Gödel
Gödel es un lenguaje de programación declarativo, de propósito general que adhiere al paradigma de la programación lógica. Es un lenguaje fuertemente tipado, con un sistema de tipos basado en many-sorted logic con polimorfismo parametrizado. Se le dio ese nombre en honor al lógico Kurt Gödel.
Características
Gödel tiene un sistema de módulos; permite enteros y racionales de precisión arbitraria y números de punto flotante. Puede resolver restricciones sobre dominios finitos de enteros así como restricciones lineales racionales. Admite procesamiento de conjuntos finitos. Tiene también una regla flexible de cómputo que admite el operador de poda, que es una generalización del operador commit de los lenguajes de programación concurrentes.
Las facilidades meta lógicas de Gödel dan cabida a meta programas que realizan análisis, transformación, compilación, verificación y puesta a punto entre muchas otras tareas.
Gofer
Gofer es una implementación del lenguaje de programaciónHaskell desarrollado por Mark Jones en Oxford, con fines educativos. Gofer es el acrónimo de G(ood) F(or) E(quational) R(easoning) en español: Adecuado para razonar ecuaciones. Ha sido substituido por Hugs (Haskell User's Gofer System).
Haskell
Haskell es un lenguaje de programación puramente funcional de propósito general y fuertemente tipado. Su nombre proviene del lógico Haskell Curry. En los años 1980 se constituyó un comité cuyo objetivo era crear un lenguaje funcional que reuniera las características de los múltiples lenguajes funcionales de la época, el más notable Miranda, y resolviera la confusión creada por la proliferación de los mismos. El lenguaje evoluciona rápidamente con y (ver más abajo) como los representantes actuales del estándar de facto. El último estándar semi-oficial es Haskell 98, con la intención de especificar una versión mínima y compatible del lenguaje como base para futuras extensiones y para su enseñanza.
Las características más interesantes de Haskell incluyen el soporte para tipos de datos y funciones recursivas, listas, tuplas, guardas y calce de patrones. La combinación de las mismas pueden resultar en algunas funciones casi triviales cuya versión en lenguajes imperativos pueden llegar a resultar extremadamente tediosas de programar. Haskell es, desde 2002, uno de los lenguajes funcionales sobre los que más se ha investigado. Se han desarrollado muchas variantes:
Versiones paralelas del MIT y Glasgow, ambas denominadas Parallel Haskell.
·         Más versiones paralelas y distribuidas de Haskell llamadas Distributed Haskell (anteriormente Goffin) y Eden
·         Una versión con ejecución especulativa: Eager Haskell
·         Varias versiones orientadas a objetos: Haskell++, O'Haskell y Mondrian.
·         Una versión educativa llamada Gofer desarrollada por Mark Jones que fue suplantada por Hugs (ver abajo).
Para información más detallada, referirse al sitio oficial o a los links al final de este artículo.
Historia
A partir de la publicación de Miranda, en 1985, los lenguajes funcionales proliferaron. En 1987, existían compitiendo entre éllos más de una docena de lenguajes de programación puros funcionales no estrictos. Durante la conferencia sobre Lenguajes de Programación Funcional y Arquitecturas de Ordenador (FPCA '87) en Portland, Oregón, se mantuvo un meeting durante el cual se alcanzó un fuerte consenso entre sus participantes para formar un comité que definiese un estándar abierto para tales lenguajes. Esto se hizo con el propósito expreso de consolidar los lenguajes existentes en uno único que sirviera como base para la investigación futura en diseño de lenguajes.
La primera versión de Haskell ("Haskell 1.0") se definió en 1990. Los esfuerzos del comité resultaron en una serie de definiciones del lenguaje, que culminaron a finales de 1997 en Haskell 98, que se intentó fuera una versión del lenguaje mínima, estable y portable, junto con una biblioteca estándar asociada para la enseñanza, y como base de futuras extensiones. El comité expresamente aprobó la creación de extensiones y variantes de Haskell 98 mediante la adición e incorporación de características experimentales.
En enero de 1999, el estándar del lenguaje Haskell 98 se publicó en "The Haskell 98 Report". En enero de 2003, se publicó una versión revisada en "Haskell 98 Language and Libraries: The Revised Report".3 El lenguaje continúa evolucionando rápidamente, con las implementaciones de Hugs y de GHC (véase más adelante), que representan el actual estándar de facto. A principios del 2006 comenzó el proceso de definición de un sucesor del estándar de Haskell 98, llamado informalmente Haskell′ ("Haskell Prime").4 Este proceso intenta producir una revisión menor de Haskell 98.
Tipos simples predefinidos
El tipo Bool:Los valores con este tipo representan expresiones lógicas cuyo resultado puede ser True o False.
Funciones y operadores
(&&) :: Bool -> Bool -> Bool. Conjunción lógica.
(||) :: Bool -> Bool -> Bool. Disyunción lógica.
not :: Bool -> Bool. Negación lógica.
otherwise :: Bool. Función constante que devuelve el valor True.
El tipo Int:Los valores de este tipo son números enteros de precisión limitada que cubren al menos el intervalo [-2^29, 2^29 - 1] ([minBound, maxBound]).
El tipo Integer: Los valores de este tipo son números enteros de precisión ilimitada que tienen las mismas funciones y operadores del tipo Int.
El tipo Float: Los valores de este tipo son números reales. ( 2010, 23.4 , 5.7 )
El tipo Double: Los valores de este tipo son números reales, de mayor rango y con aproximaciones más precisas que los de tipo Float.
El tipo Char: Los valores de este tipo son caracteres que se encuentran en una masa de alta complejidad de en una suma de caracteres dados con su alta definición
Antes de utilizar esta función en hugs debemos utilizar IMPORT CHAR antes de nuestro algoritmo
HQ9+
HQ9+ es un lenguaje de programación esotérico que consiste en sólo cuatro instrucciones, cada una de un solo carácter: H, Q, 9, y + (de ahí el nombre). No es Turing completo, pero es muy eficaz para hacer ciertos tipos de programas.
Propósito del lenguaje
En el invierno de 2000, Cliff L. Biffle creó el lenguaje HQ9+ como una broma. Lo basó en los ejemplos más comunes de código fuente en los lenguajes de programación. Esos ejemplos eran los programas "hola mundo", los quines, y los programas que imprimen la letra de la canción inglesa 99 Bottles of Beer ("99 botellas de cerveza"). Para hacer estos tipos de programas, HQ9+ es el mejor. Sin embargo, es completamente inútil para todos los otros tipos de programas.Además, este programa incrementaría el acumulador tres veces. Nota que un programa que contiene algo más que instrucciones + y una sola instrucción Q imprime más que su código fuente, y por tanto no es un auténtico quine.
HyperCard
HyperCard fue una aplicación informática de Apple Computer que se contó entre los primeros sistemas hipermedia con éxito anteriores a la World Wide Web. Conceptualmente se acerca a una base de datos, pues almacena información, siendo además gráfico, flexible y capaz de crear ficheros fáciles de modificar. También incluía HyperTalk, un lenguaje de programación potente y relativamente fácil de usar, para manipular los datos y la interfaz de usuario. Los usuarios de HyperCard lo usaban a menudo como un sistema de programación para el desarrollo rápido de aplicaciones más que como base de datos.
HyperCard fue lanzado originalmente con el System Software 6 en 1987 y retirado definitivamente del mercado en marzo de 2004, aunque para entonces hacía muchos años que no se actualizaba. HyperCard corre nativamente sólo en Mac OS versiones 9 y anteriores, pero puede usarse aún en el modo Classic de Mac OS X.
Descripción
HyperCard está basado en el concepto de una «pila» de «tarjetas» virtuales. Las tarjetas contienen datos, como lo harían en un rolodex. El motor de presentación era parecido en concepto a un «formulario» de los usados en la mayoría de los entornos de desarrollo rápido de aplicaciones (RAD), como Borland Delphi o Visual Basic. Una pila especial «home» estaba disponible como lanzador, repositorio de scripts compartidos y ubicación de las preferencias de usuario.
HyperCard no era sólo un motor de base de datos: la apariencia de cada tarjeta podía modificarse, de la misma forma que puede escribirse información no estándar sobre las tarjetas de un rolodex. Una capa de fondo especial de cada pila contenía elementos que aparecían en todas las demás tarjetas de la misma pila, o en todas las tarjetas basadas en dicho fondo. Los fondos podían incluir imágenes (que era su propósito inicial), además de los objetos también disponibles para las demás tarjetas: campos gráficos, botones, texto (estático), campos de texto (editable) y otros elementos típicos de las GUIs. Cada tarjeta podía entonces contener datos diferentes asociados a los campos de texto o gráficos, creando de esta forma la funcionalidad de base de datos.
El comando find (‘hallar’) de HyperCard navegaba rápidamente a las tarjetas que contenían el texto buscado usando el método patentado llamado hintBits. Esto podía acotarse con modificaciones tales como find "Bob" in card field "hello" (‘hallar «Bob» en el campo de tarjeta «hola»’). De forma parecida, había un comando sort (‘ordenar’) que permitía evaluar expresiones completas para clasificar las tarjetas según un orden.
Añadir scripts también era fácil. Bastaba simplemente con «command-option-clicar» sobre cualquier elemento de la pila (o pulsar el botón Script en el diálogo de propiedades del elemento) para abrir un editor. En él podía editarse, salvarse y usarse inmediatamente el script. Además, HyperCard contenía la «caja de mensajes», una línea de comandosinteractiva en una ventana flotante que podía ejecutar líneas simples de script, incluyendo el comando find, por lo que servía también como diálogo de búsqueda. HyperCard 2.0 añadió un depurador.
HyperTalk fue lo suficientemente popular como para que uno de sus usos principales no fuese el de base de datos sino el de herramienta de programación. Miles de «pilas» fueron escritas y distribuidas como stackware en los pocos años en los que HyperCard tuvo amplia difusión.
Icon
Icon es un lenguaje de programación de muy alto nivel, especialmente recomendado para trabajar con cadenas de texto, ya que permite una programación rápida y concisa. Puede ser usado para análisis y formateo de textos, inteligencia artificial o programación de prototipos. Las últimas versiones, además, incluyen gráficos y facilidades GUI. Fue diseñado en los años 1970 por Ralph E. Griswold, y otros colaboradores en el "Department of Computer Science" de la Universidad de Arizona. Griswold, que lideraba el proyecto, ya tenía experiencia anterior en el diseño de lenguajes de alto nivel, ya que fue uno de los creadores de Snobol, del que tomaron algunas características.
Sintaxis básica
Se deriva de la clase ALGOL de los lenguajes de programación estructurada, por lo que tiene una sintaxis similar a la de C, pero sobre todo, a la de Pascal, ya que utiliza el símbolo ‘:=’ para las asignaciones. Por otra parte, se asemeja a C en la utilización de los corchetes para estructurar el programa y en la ejecución de un procedimiento principal llamado "main".
Otras características comunes a otros lenguajes de programación de scripting es que no es necesario declarar las variables, los tipos son emitidos automáticamente y los números pueden ser convertidos a cadena de caracteres y volver automáticamente. Otro aspecto a destacar es la ausencia de un carácter de fin de línea. Las líneas no terminan en punto y coma como en el caso de C, por ejemplo, sino que terminan en una coma implícita siempre que la línea tenga sentido. Los procedimientos son los bloques de construcción básicos en los programas. Aunque los nombres y palabras utilizadas en ICON se asemejen más a Pascal, el funcionamiento es más similar al que se le da en C, y puede devolver valores.
Evaluación de expresiones
Condicional
Hay expresiones condicionales que pueden tener éxito y producir un resultado, o fallar y no producir ningún resultado. Un ejemplo es la operación de comparación, i > j que tendrá éxito siempre que el valor de i sea mayor que el de j. Algo parecido ocurre con i > j > k que tendrá éxito cuando el valor de j se encuentre entre el de i y el de k.
El éxito o el fracaso de las operaciones condicionales se utiliza en lugar de valores booleanos para conducir las estructuras de control en ICON.  Se asignaría el valor de i a k en el caso de que el valor de i sea mayor que el de j, y se le asignaría el valor de j en el caso contrario. La utilidad de estos conceptos de éxito o fracaso es ilustrada mediante la orden “find(s1,s2)”, que falla en el caso de que s1 no sea una subcadena de s2. Esto devolvería i, que es la posición de la cadena “line” en la que se encuentra la subcadena “or”. En el caso de que no se encuentre la subcadena, el programa no devolvería ningún resultado. Muchas expresiones son condicionales. Un ejemplo es “read()”, que devuelve la siguiente línea de un archivo de entrada, y termina cuando se alcanza el final del archivo. Esta expresión copia el archivo de entrada en el archivo de salida.Si un argumento de una función falla, la función no se llama, la llamada falla.
Ioke
Ioke es un lenguaje de programación dinámico, fuertemente tipado, basado en prototipos con implementaciones para la Máquina Virtual de Java y el Common Language Runtime (CLR). Fue diseñado por Ola Bini, uno de los desarrolladores de JRuby. Es un lenguaje homoicónico, con cierto parecido al lenguaje Ío. El código de Ioke contiene documentación y pruebas unitarias.Ioke fue anunciado el 6 de noviembre de 2008.
JOSS
JOSS (acrónimo de JOHNNIAC Open Shop System) fue uno de los primeros lenguajes de programación de tiempo compartido (compartir recursos de computación entre muchos usuarios a través de multitareas). Su predecesor fue ALGOL 58.Fue desarrollado por J. Clifford Shaw en la empresa RAND y fue implementado por primera vez en un formato beta, en el ordenador JOHNNIAC en mayo de 1963. La implementación completa se desplegó en enero de 1964, soportando 5 terminales y la versión final llamada JOSS In, soportando a 10 terminales, se desplegó en enero de 1965.
Fue escrito en lenguaje ensamblador simbólico, llamado EasyFox (E y F en un alfabeto fonético militar en los Estados Unidos de la época). EasyFox fue también desarrollado por Cliff Shaw. JOSS fue apodado "The Helpful Assistant” (El asistente útil) y es conocido por su interfaz de usuario coloquial. Originalmente las cintas de máquina de escribir verde/negro se utilizaron en sus terminales con el verde siendo usado para la entrada del usuario y negro para la respuesta del ordenador. Cualquier comando que no era conocido retornaba la respuesta "Eh?".
JOSS II, fue desarrollado por Charles L. Baker, Joseph W. Smith, D. Irwin Greenwald, y Edward G. Bryan para las computadoras PDP-6 entre 1964 y febrero de 1966. Muchas variantes se han desarrollado y aplicado a una variedad de plataformas. Algunas de estas variantes se mantuvieron similares al original: TELCOMP, FOCAL, CAL, CITRAN, ISIS, PIL/I, JEAN (TIC 1900 series), mientras que otros, como MUMPS, se desarrollaron en distintas direcciones.
Limbo
Limbo es un lenguaje de programación para escribir sistemas distribuidos. Además es el lenguaje usado para escribir aplicaciones para el sistema operativoInferno. Fue diseñado en los Laboratorios Bell por Sean Dorward, Phil Winterbottom y Rob Pike.
El compilador de Limbo genera código objeto independiente de la plataforma que luego es interpretado por la máquina virtual Dis o compilado antes de su ejecución para mejorar el rendimiento. Por ello, todas las aplicaciones hechas con Limbo son completamente portables en todas las plataformas soportadas por Inferno.
Características del lenguaje
Limbo tiene las siguientes características:
1.    Programación Modular
3.    Chequeo de tipos estricto tanto en tiempo de compilación y ejecución
4.    Comunicación entre procesos sobre canales tipificados
5.    Recolección de basura automática
6.    Tipos de dato abstractos simples
Lingo
Lingo es el lenguaje de programación que lleva incorporado Macromedia Director, un programa de autoría. Permite integrar con relativa facilidad texto, imágenes, sonidos y video digital, siendo una alternativa a lenguajes más tradicionales, como el C/C++, porque el desarrollo de la aplicación es mucho más rápido y flexible. El soporte para publicar suele ser el CD y desde hace algún tiempo, con la ayuda de Adobe Shockwave, también la WWW.
Sintaxis
El cambio a la sintaxis de JavaScript es una importante mejora sobre el Director de Macromedia. Esta característica proporciona un lenguaje y una sintaxis más comunes entre el MX de Macromedia Director y Flash de Macromedia. En Director, la puesta en práctica de la lengua está encima del motor de SpiderMonkey ( Javascript-C ) [ 1 ], que es un intérprete preembalado de ECMAScript escrito en C y se conforma en gran parte a la especificación de ECMA [ 2 ], excepto en las áreas donde las funciones o las palabras claves de encargo exponen funcionalidad Director.
Logo
Logo es un lenguaje de programación de alto nivel, en parte funcional, en parte estructurado; de muy fácil aprendizaje, razón por la cual suele ser el lenguaje de programación preferido para trabajar con niños y jóvenes. Fue diseñado con fines didácticos por Danny Bobrow, Wally Feurzeig y Seymour Papert, los cuales se basaron en las características del lenguaje Lisp. A pesar de que Logo no fue creado con la finalidad de usarlo para enseñar programación, puede usarse para enseñar la mayoría de los principales conceptos de la programación, ya que proporciona soporte para manejo de listas, archivos y entrada/salida.
Papert desarrolló un enfoque basado en su experiencia con Piaget a principios de los sesenta. Fundamentalmente consiste en presentar a los niños retos intelectuales que puedan ser resueltos mediante el desarrollo de programas en Logo. El proceso de revisión manual de los errores contribuye a que el niño desarrolle habilidades metacognitivas al poner en práctica procesos de autocorrección. Es conocido por poder manejar con facilidad gráficas tortuga, listas, archivos y recursividad.
Logo es uno de los pocos lenguajes de programación con instrucciones en español en algunos intérpretes, entre ellos: FMSLogo, LogoWriter, WinLogo, Logo Gráfico, XLogo, MSWLogo y LogoEs. Logo tiene más de 180 intérpretes y compiladores, según constan en el proyecto "Logo Tree". XLogo, MSWLogo y LogoES tienen la particularidad de ser además software libre.
Lenguaje
Una característica más explotada de Logo es poder producir «gráficos tortuga», es decir, poder en dar instrucciones a una tortuga virtual,un cursor gráfico usado para crear dibujos, que en algunas versiones es un triángulo,en otras tiene la figura de una tortuga vista desde arriba. Esta tortuga o cursor se maneja mediante palabras que representan instrucciones,
La característica de que las instrucciones se puedan comprender en las diferentes lenguas es lo que hace al Logo un lenguaje de programación tan fácil de aprender. Una secuencia de instrucciones en Logo puede constituirse en un rudimentario programa, usandose como un bloque. Esta caracterísctica modular y reutilizable de las instrucciones hace que Logo sea muy flexible, recursivo, y apto para trabajarse en forma de módulos.
Otras instrucciones básicas de Logo en español son: -cs: borrar pantalla. -rep (número de veces) [ (acción) (cantidad) ] ej. -repite 4 [ av 100 gd 90 ], esta repetición crea un cuadrado. -st: mostrar tortuga. -ht: ocultar tortuga. -pu: subir lápiz, hace que la tortuga no dibuje mientras camina. -pd: bajar lápiz, hace lo contrario que "-pu" ("sl" en intérpretes en español).
Meta Lenguaje
ML es un lenguaje de programación de propósito general de la familia de los lenguajes de programación funcional desarrollado por Robin Milner y otros a finales de los años 1970 en la Universidad de Edimburgo. ML es un acrónimo de Meta Lenguaje dado que fue concebido como el lenguaje para desarrollar tácticas de demostración en el sistema LCF (El lenguaje para el cual ML era meta lenguaje es pplambda, una combinación del cálculo de predicados de primer orden y el lambda-cálculopolimórfico sencillamente tipificado).
Frecuentemente se clasifica a ML como un lenguaje funcional impuro dado que permite programar imperativamente con efecto colateral, a diferencia de otros lenguajes de programación funcional, tales como Haskell.
Entre las características de ML se incluyen evaluación por valor, álgebra de funciones, manejo automatizado de memoria por medio de recolección de basura, polimorfismo parametrizado, análisis de estático de tipos, inferencia de tipos, tipos de datos algebraicos, llamada por patrones y manejo de excepciones. Esta combinación particular de conceptos hace que sea posible producir una de los mejores compiladores actualmente disponibles.
En la actualidad varios lenguajes de la familia ML están disponibles, principalmente Standard ML (SML) y Ocaml (Ocaml contiene la sintaxis de ML como un subconjunto). Varias ideas aparecidas en ML han influido el diseño de otros lenguajes, tales como Cyclone y Nemerle. Los lenguajes de la familia ML se aplica principalmente en diseño y manipulación de lenguajes de programación (compiladores, analizadores, demostradores de teoremas), así como en bioinformática, sistemas financieros, protocolos de sincronización, etc.
METAFONT
METAFONT es un lenguaje de programación usado para definir fuentes vectoriales. Es también el nombre de un intérprete que ejecuta código METAFONT, convirtiendo las fuentes vectoriales en fuentes de mapas de bits que pueden ser incluídas en documentos PostScript.
Historia
Donald Knuth empezó a trabajar en la creación de software tipográfico o de fuentes en 1977, y produjo la primera versión de METAFONT en 1979. Debido a deficiencias en el lenguaje METAFONT original, Knuth desarrolló un nuevo sistema METAFONT en 1984 y este sistema es el que se usa hoy en día (con pequeñas revisiones); Tiene un sistema de versiones similar al de TeX, en el que el número de versión crece asintóticamente hacia el número e en cada revisión. Este lenguaje de programación fue inventado por Donald Knuth como un complemento del sistema TeX. Una de sus características es que todas las formas de glifos están definidas con potentes ecuaciones geométricas, por ejemplo, se puede definir un punto dado como la intersección de un segmento lineal y una curva de Bézier.
Notas técnicas
A diferencia de los formatos de fuente comunes (tales como TrueType o PostScript Type 1), una fuente METAFONT está conformada principalmente de trazos con "plumas" de ancho-finito, junto con regiones rellenas. De esta manera, en lugar de describir directamente el contorno del glifo, un archivo METAFONT describe los trayectos de la pluma. Algunas fuentes sencillas, tales como las fuentes caligráficas para matemáticas en la familia Computer Modern, utilizan una sola brocha con una pluma relativamente grande para definir cada trazo visual en los glifos.
Las fuentes más complejas, tal es el caso de las fuentes de texto Roman en la familia Computer Modern, utilizan una pluma pequeña para trazar alrededor del contorno de los trazos visuales, los cuales son posteriormente rellenados; el resultado es muy similar a una fuente de contorno, pero con esquinas ligeramente suavizadas definidas por la forma de la pluma.
Dado que las formas de la fuente están definidas por ecuaciones en lugar de números directamente codificados, es posible tratar parámetros como la razón de aspecto, la inclinación de la fuente, el ancho del pincel, el tamaño serif, etcétera como parámetros de entrada en cada definición de glifo. Así, cambiando la definición de uno de estos parámetros en el archivo METAFONT, es posible producir un cambio consistente en toda la fuente.
Computer Modern Roman ilustra a muchos usuarios esta característica; una instalación típica de TeX incluye un número de versiones de la fuente en tamaños de 5pt a 17pt, con los mismos anchos de pincel en todos los tamaños (en lugar de incrementarse como si la fuente fuese agrandada a escala) y las razones de aspecto de ensanchamiento en los tamaños pequeños para mayor legibilidad. Además, las fuentes Computer Modern typewriter y sans-serif están definidas usando esencialmente el mismo archivo METAFONT como la fuente Roman, pero con diferentes parámetros globales.
Las curvas en METAFONT están definidas no como secciones cónicas sino como splines cúbicos, para mayor versatilidad y sencillez de cálculo. Puede renderizar cualquier tipo de salida gráfica, no solo cincelados. Sin embargo, se prefiere MetaPost con su salida PostScript para ilustraciones avanzadas. Es mayormente invocada sin petición directa del usuario.
El formato DVIpuede contener referencias a tipos de fuente, en lugar de solo conjuntos de cinceles de raster o vectoriales que otros formatos como PostScript permiten. Consecuentemente los cinceles en los tipos de fuente necesitan ser accedidos tantas veces como se hagan peticiones para visualizado, impresión o conversión a un archivo DVI. La mayoría de las distribuciones TeX están configuradas para que cualquier fuente no disponible en la resolución requerida son generadas por llamadas a METAFONT. Los tipos de fuente son entonces almacenadas para reusarse posteriormente.
METAFONT puede funcionar también en modo interactivo, y tiene comandos para mostrar por pantalla las imágenes que produce. Knuth dijo que él usa METAFONT como una calculadora de escritorio para resolver ecuaciones complicadas, aunque ahora usa MetaPost para las ilustraciones matemáticas. Dado que METAFONT no puede crear fuentes vectoriales directamente, los polacos JNS team desarrollaron METATYPE1 (basados en MetaPost) para crear fuentes PostScript Type 1. Su gran desventaja es que no es posible utilizar plumas lo cual reduce enormemente el poder del lenguaje METAFONT.
Uso
Mientras los diseñadores de fuentes reconocidos, tal como Hermann Zapf, han colaborado con Knuth para crear nuevas fuentes, el sistema no ha sido ampliamente adoptado por diseñadores de fuentes profesionales.
Miranda
Miranda fue desarrollado entre los años 1985 y 1986 por David Turner. Se trata de un lenguaje de programación funcional sucesor de SASL y KRC. El principal objetivo de este lenguaje era el desarrollar una versión comercial de un lenguaje funcional:
·         no-estricto.
·         puramente funcional.
Fue comercializado por Research Software Ltd. de Inglaterra, la cual registró la palabra 'Miranda' como marca comercial. Fue el primer lenguaje puramente funcional en ser destinado al uso comercial y no al académico La solución a muchos ejemplos de programas resulta más simple en Miranda que en la mayoría de los lenguajes de programación excepto quizás APL, y como otros lenguajes funcionales, sus usuarios comentan que este les permite producir programas fiables en un menor período en comparación con el otros lenguajes de programación usados anteriormente
Salió por primera vez en 1985 como un interprete rápido en C para los sistemas operativos Unix, con sucesivas entregas en 1987 y 1989. El último lenguaje de programación Haskell es similar un muchos aspectos a Miranda. Todos los lenguajes de la familia de MIRANDA se caracterizan porque los argumentos se pasan a las funciones sin evaluar (lazy evaluation): el argumento de una función se evalúa cuando la función necesita su valor. Un programa en este tipo de lenguajes (llamado script) consiste en un conjunto de declaraciones de ecuaciones recursivas y datos de tipo algebraico. La palabra set es importante aquí: el orden de las ecuaciones es, en general, irrelevante, y no es necesario definir una entidad inicial para su uso.
Es raro la necesidad del uso de corchetes y no es necesario el uso de terminaciones de instrucción (;, endif,…)
Los comentarios se inician utilizando los caracteres ‘||’ y continua hasta el final de la línea. Una convención alternativa de comentarios es la que afecta a todo el fichero fuente, conocida como “literate srcript”, en la cual todo línea es comentario a no ser que empiece por el signo’ >’ Los tipos básicos de datos de Miranda son char, num y bool. Una cadena de caracteres no es más que una lista de chars, mientras que num puede representar tanto a enteros como a reales sin necesidad de conversiones explícita
Las tuplas son secuencias de elementos de distintos tipos, análogo a los registros de los lenguajes parecidos a Pascal, y son escritos entre paréntesis this_employee = ("García, Paco", 10560, False, 35)La lista en cambio, es la estructura de datos más usada en Miranda. Se escribe entre corchetes y separa cada elemento por comas, los cuales deben de ser del mismo tipo. week_days = ["Mon","Tue","Wed","Thur","Fri"]
La concatenación de listas es mediante ‘++’, la diferencia con ‘--‘, la construcción con ‘:’ comprobar el tamaño con ‘#’ y devolver el elemento de cierta posición de la lista (indexación) mediante ‘!’  days = week_days ++ ["Sat","Sun"]
Existen muchos atajos para construir listas: ‘..’ es usado para listas cuyos elementos forman un serie aritmética, con la posibilidad de especificar un orden de incremento a parte de en 1: fac n   = product [1..n]
Modula-2
Modula-2 es un lenguaje de programación cuyo autor es Niklaus Wirth, autor también del lenguaje Pascal. Como novedad respecto a este último lenguaje, introduce el concepto de módulo, y de encapsulación. Del código contenido en un módulo, sólo se facilita una interfaz pública denominada módulo de definición, permaneciendo el resto oculto (encapsulado) para un desarrollador ajeno, lo que facilita el mantenimiento de dichas estructuras de programación a la vez que imposibilita la modificación de las mismas a cualquiera que no posea el código de su módulo de implementación.
Este concepto de módulo constituye el antecedente de las clases u objetos que se observan en el concepto moderno de Programación Orientada a Objetos (POO); sin embargo, la incapacidad de declarar múltiples instancias de los módulos, así como la ausencia de todo tipo de herencia, impiden afirmar que Modula-2 sea un lenguaje orientado a objetos propiamente dicho.
Modula-2 se utiliza principalmente en las universidades por su excelente adaptación a la enseñanza de lenguajes estructurados, pero en el ámbito laboral su difusión ha sido escasa frente al predominio de C, lo que ha contribuido a crear un distanciamiento entre universidad y mercado laboral. Existen compiladores de Modula-2 como Mocka o GNU Modula-2 (para GNU/Linux y resto de sistemas soportados por GCC), FST (para MS-DOS) o Native XDS (para Windows) entre otros.
Modula-3
Modula-3 es un lenguaje de programaciónimperativo, estructurado y modular, concebido como el sucesor de Modula-2. Las principales características del lenguaje son su simplicidad y la seguridad, además de conservar la potencia de los lenguajes de programación de sistemas.
Historia
Modula-3 fue diseñado por Luca Cardelli, Jim Donahue, Mick Jordan, Bill Kalsow y Greg Nelson en el DEC Systems Research Center (DEC SRC) y en Olivetti a finales de los 80. Su diseño estuvo muy influido por el lenguaje Modula-2+, que se usaba en el DECSRC en aquel momento, y era el lenguaje en el que estaban escritos los Sistemas Operativos para la máquina VAX DEC Firefly.
El proyecto de Modula-3 comenzó en Noviembre del 86, cuando Maurice Wilkes escribió a Niklaus Wirth con ideas para una nueva versión de Modula. Wilkes había estado trabajando para DEC justo antes de ello, y había vuelto a Inglaterra para unirse al Olivetti Research Strategy Board. Wirth ya había comenzado a trabajar con Oberon , pero no tuvo problemas con que el equipo de Wilkes continuara desarrollando usando el nombre de "Modula".
Modula-3 pretendía continuar con la tradición de PASCAL, además de añadir nuevas construcciones para conseguir una programación práctica para el mundo real. En particular, añadía soporte para programación genérica (parecido a las plantillas), multiprogramación, manejo de excepciones, recolección de basura, programación orientada a objetos, principio de ocultación y encapsulamiento de código. El mayor objetivo en el diseño de Modula-3 era crear un lenguaje que implementara las características más importantes de los modernos lenguajes imperativos de un modo simple. Por ello, se omitieron características complicadas y "peligrosas" como la herencia múltiple y la sobrecarga de operadores.
La definición del lenguaje se completó en Agosto del 88, y una versión actualizada salió en Enero del 89. Los compiladores de DEC y Olivetti le siguieron enseguida, al igual que las implementaciones de terceros.
Durante los 90, Modula-3 se difundió considerablemente como lenguaje docente, pero nunca fue ampliamente adoptado para usos industriales. También pudo haber contribuido en esto la desaparición de DEC, un partidario clave para Modula-3. En cualquier caso, a pesar de la simplicidad y potencia del lenguaje, parece que hay poca demanda para un lenguaje compilado altamente estructurado e implementado como un lenguaje orientado a objetos restringido. Durante algún tiempo, un compilador de código cerrado (llamado CM3) y un entorno de desarrollo integrado (llamado Reactor) y también una Máquina Virtual de Java eran ofrecidos por Critical Mass Inc., pero dicha compañía cerró en el año 2000.
Características del lenguaje
El manejo de excepciones está basado en un sistema de bloques TRY...EXCEPT bastante común. Una característica que no se ha adoptado en otros lenguajes (a excepción de Python y Scala) es la construcción del EXCEPT definido como un pseudo-CASE, en el que cada posible excepción es un caso en una cláusula EXCEPT. Modula-3 también incluye la construcción LOOP...EXIT...END, en la que el bucle se repite hasta que se encuentra un EXIT (esta estructura es equivalente a un bucle simple dentro de un TRY...EXCEPT)
El empleo de objetos se mantiene intencionadamente en su vertiente más simple. Un tipo de objeto (clase) se crea con la declaración OBJECT. Ésta tiene basicamente la misma sintaxis que una declaración RECORD, aunque un objeto así declarado es un tipo de referencia mientras que RECORD no lo es.La construcción REVEAL de Modula-3 proporciona un mecanismo conceptualmente simple y muy potente para ocultar los detalles de implementación a los clientes, con distintos niveles de "amistad".
En resumen, las características del lenguaje son:
·         Modularidad e interfaces
·         Resaltado explícito de código inseguro
·         Recogida automática de basura
·         Tipo de dato fuerte, equivalencia estructural de tipos
·         Objetos
·         Excepciones
·         Threads
·         Plantillas
Modula-3 es uno de los pocos lenguajes en los que la evolución de sus características está documentada. En System Programming with Modula-3, se tratan cuatro puntos esenciales del diseño del lenguaje. Estos temas son Estructural vs. Equivalencia Semántica, reglas para los subtipos, módulos genéricos y tipos de parámetros (como READONLY)
Implementaciones
Existen bastantes compiladores disponibles, y la mayoría de ellos son de código abierto. DEC-SRC M3. Es un compilador desarrollado en DEC para Unix, Windows NT y Windows 95. Para instalarlo en Windows hay que tener Microsoft Visual C++ 4.0 o superior.
1.    Critical Mass CM3. Es un completo sistema Modula-3, fácil de usar y de instalar y con considerables mejoras sobre su antecesor, DEC-SRC M3. Funciona en varias plataformas, incluyendo Linux y Win32.
2.    Polytechnique Montreal Modula-3 PM3. Es un compilador de código abierto basado en SRC, extendido y mejorado por un gran número de personas y organizaciones. Actualmente se está fusionando con CM3
3.    Persistent Modula 3. Es una extensión de Modula-3 basada en PM3. Es el resultado de un trabajo de investigación en estado beta. Sólo se ha instalado en Linux, Solaris y Alpha/OSF.
4.    EzM3, una implementación liviana y fácilmente portable, desarrollada junto a CVSup.
5.    HM3, un sucesor del PM3 versión 1.1.15 con el uso de hilos NPTL probado sólo en Linux
Natural
NATURAL es un lenguaje de cuarta generación de Software AG. Tiene la sentencia de control de flujo "ESCAPE TOP", la cual es similar a "continue" en C, o "Continue For" en "Visual Basic.NET 2005", excepto que también funciona dentro de una subrutina para retornar desde la misma y continuar con la siguiente iteracción del bucle de proceso. Como "continue", evita gran número de indentaciones cuando se usan bloques anidados de instrucciones dentro de cualquier sentencia de tipo bucle. Los niveles de indentación pueden ser ajustados automáticamente con el comando STRUCT dentro del Editor de NATURAL.
NetREXX
NetREXX es un lenguaje de programación para la máquina virtual Java desarrollado en IBM por Michael Cowlishaw con fuertes influencias de los lenguajes de programación REXX (en cuya familia se considera incluido) y Java. Actualmente existe solamente una implementación de este lenguaje que puede descargarse y usarse gratuitamente desde la página oficial del lenguaje en IBM. El compilador NetREXX de IBM es una aplicación Java que puede traducir el código fuente NetREXX a código fuente Java, compilarlo a bytecodes Java o interpretarlo directamente.
NQC
NQC, Not Quite C, No Suficiente C, es un lenguaje de programación parecido al C, para programar el RCX de LEGO. Fue desarrollado por un ingeniero de Motorola llamado Dave Baum y es totalmente gratuito. Funciona desde la línea de comandos, esto significa que su funcionamiento es muy parecido al MS-DOS, aunques mucho más comodo utilizarlo con el RCX Comand Center.
Programación del RCX mediante NQC
En el libro de Dave Baum "Dave's Baum Definitive Guide To LEGO® MINDSTOMS" se puede encontrar toda la documentación necesaria para programar. Lo único que se necesita es un editor de texto, como puede ser el Bloc de Notas que acompaña a todas las versiones de Windows, y el compilador. Para aprender este lenguaje de programación existe la posibilidad de seguir el libro de Baum, o el preparado por Mark Overmars.
El RCX Comand Center es un entorno de programación que facilita la escritura de los programas, su depuración y su descarga al RCX. También dispone de una extensa ayuda sobre el NQC disponible en línea. Entre otros extras dispone de un teclado para facilitar la creación de código musical y de un joystick para enviar órdenes al robot desde el PC.
Nyquist
Nyquist es un lenguaje de programación para composición y síntesis de sonido. Desciende del lenguaje Fuge, creado por Chris Fraley. Uno de los desarrolladores posteriores de Fugue, Roger Dannenberg, implementó Nyquist como extensión sonora, del intérprente de Xlisp de David Michael Betz.Como dialecto de Lisp, incluye todas las bendiciones y dificultades de la programación funcional. Siendo una característica relevante, que incluye el control del tiempo en la semántica misma del lenguaje. Además, es extensible mediante la programación orientada a objeto, implementeada en Xlisp. Actualmente funciona en las plataformas de Unix/linux, MacOS y Windows.
Nyquist en Audacity
Audacity es un editor de sonidos tan ligero como potente. Entre sus opciones está precisamente, la posibilidad de programar en una versión especial del lenguaje Nyquist. Para comprobarlo, vaya al menú efecto, tras crear una pista de audio y seleccionar una porción de tiempo. Allí seleccione "Comando Nyquist...", lo cual le permitirá programar en Nyquist, dentro del entorno de Audacity. (Para probar los ejemplos anteriores, omita la función play) Otra característica muy interesante de la relación Nyquist-Audacity es la posibilidad de desarrollar plugins con interfaz visual, de manera rápida y sencilla.
P Sharp
P Sharp Desarrollado en la Universidad de Edimburgo Paradigma           Programación lógica, programación concurrente. Apareció en 2003 Y Diseñado por Jonathan J. Cook Última versión estable 1.1.3 Implementaciones    Visual Studio .NET, Mono Influido por   Prolog Sistema operativo Multiplataforma Licencia   GNU.
El lenguaje de programación P# (o P Sharp) es un compilador de lenguaje Prolog concurrente que integra elementos del lenguaje C#, creado para desarrollar aplicaciones en la plataforma .NET de Microsoft. P# puede exportar su código a C#.
Parlog
El PARLOG (de PARallel LOGic) es un lenguaje de programación lógica similar al Prolog. La diferencia sustancial es que en parlog se define un encabezado en el cuerpo de cada cláusula (regla) y en ese encabezado podemos definir condiciones que deben ser satisfechas para poder ejecutar el cuerpo de la cláusula.Este lenguaje está orientado al desarrollo de sistemas concurrentes o con procesos que se ejecuten en paralelo, por eso el nombre de PARLOG - PARALLEL LOGIC.
Pascal
Pascal es un lenguaje de programación desarrollado por el profesor suizoNiklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.
Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipificado. Esto implica que:
·         El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
·         El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.
El nombre de Pascal fue escogido en honor al matemático Blaise Pascal.
Características únicas
A diferencia de lenguajes de programación descendientes de C, Pascal utiliza el símbolo ":=" para la asignación en vez de "=". Si bien el segundo es más conocido, la práctica ha demostrado que muchos usuarios utilizan el símbolo de igualdad para comparar valores en lugar del comparador de C que es el símbolo ==. Esta sintaxis conduce a muchos errores o bugs difíciles de rastrear en código C. Dado que Pascal no permite asignaciones dentro de expresiones y utiliza sintaxis distintas para asignaciones y comparaciones, no sufre estos errores.
Además sus programas tienen definidas dos partes: declarativa y ejecutiva. En la primera debe aparecer todo lo que se usará en la segunda, de lo contrario se detecta como desconocido y evita ciertas incomprensiones como veremos más adelante. En la parte declarativa se enuncian Unit existentes, procedimientos, funciones, variables, constantes y nuevos tipos de datos estructurados.
Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (en C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente porque el tipo es desconocido; y también evita la necesidad de notación húngara, que vienen a ser prefijos que se añaden a los nombres de las variables y que indican su tipo.
Implementaciones
Las primeras versiones del compilador de Pascal, entre ellas la más distribuida fue UCSD Pascal, traducían el lenguaje en código para una máquina virtual llamada máquina-P. La gran ventaja de este enfoque es que para tener un compilador de Pascal en una nueva arquitectura de máquina solo hacía falta reimplementar la máquina-P. Como consecuencia de esto, solo una pequeña parte del intérprete tenía que ser reescrita hacia muchas arquitecturas.
En los años 1980, Anders Hejlsberg escribió el compilador Blue Label Pascal para la Nascom-2. Más tarde fue a trabajar para Borland y reescribió su compilador que se convirtió en Turbo Pascal para la IBMPC. Este nuevo compilador se vendió por $49, un precio orientado a la distribución masiva. El económico compilador de Borland tuvo una larga influencia en la comunidad de Pascal que comenzó a utilizarlo principalmente en el IBM PC. En busca de un lenguaje estructurado muchos aficionados al PC reemplazaron el BASIC por este producto. Dado que Turbo Pascal sólo estaba disponible para una arquitectura, traducía directamente hacia el código máquina del Intel 8088, logrando construir programas que se ejecutaban mucho más rápidamente que los producidos en los esquemas interpretados.
Durante los años 1990, estuvo disponible la tecnología para construir compiladores que pudieran producir código para diferentes arquitecturas de hardware. Esto permitió que los compiladores de Pascal tradujeran directamente al código de la arquitectura en que corre. Con Turbo Pascal versión 5.5, Borland agregó programación orientada a objetos a Pascal. Sin embargo, Borland después decidió mejorar esa extensión del lenguaje introduciendo su producto Delphi, diseñado a partir de estándar Object Pascal, propuesto por Apple como base. Borland también lo llamó Object Pascal en las primeras versiones, pero cambió el nombre a 'lenguaje de programación Delphi' en sus últimas versiones.
Compiladores disponibles públicamente
Varios compiladores de Pascal están disponibles para el uso del público en general:
Epox
Compilador GNU Pascal (GPC), escrito en C, basado en GNU Compiler Collection (GCC). Se distribuye bajo licencia GPL.
Free Pascal está escrito en Pascal (el compilador está creado usando Free Pascal), es un compilador estable y potente. También distribuido libremente bajo la licencia GPL. Este sistema permite mezclar código Turbo Pascal con código Delphi, y soporta muchas plataformas y sistemas operativos.
Turbo Pascal fue el compilador Pascal dominante para PC durante los años 1980 y hasta principios de los años 1990, muy popular debido a sus magníficas extensiones y tiempos de compilación sumamente cortos. Actualmente, versiones viejas de Turbo Pascal (hasta la 7.0) están disponibles para descargarlo gratuito desde el sitio de Borland (es necesario registrarse).
Delphi es un producto tipo RAD (Rapid Application Development) de Borland. Utiliza el lenguaje de programación Delphi, descendiente de Pascal, para crear aplicaciones para la plataforma Windows. Las últimas versiones soportan compilación en la plataforma .NET.
Kylix es la versión más nueva de Borland reiterando la rama de Pascal de sus productos. Es descendiente de Delphi, con soporte para el sistema operativo Linux y una librería de objetos mejorada (CLX). El compilador y el IDE están disponibles para uso no comercial. Actualmente este proyecto está descontinuado.
Actualidad
Hoy en día se siguen usando programas como turbo pascal para enseñar en escuelas de computación.
Pauscal
Pauscal es un lenguaje de programación para Microsoft Windows de 32 bits desarrollado por Paul Guerra. La característica particular de este Lenguaje de programación es que su sintaxis está basada en el idioma español. Este lenguaje es potente y no sólo se limita a fines educativos.
Pauscal funciona satisfactoriamente en Windows 95, Windows 98, Windows 98 SE, Windows ME, Windows XP, Windows Vista y Windows 7 aunque aún no en ReactOS. Las aplicaciones no requieren ningún tipo de soporte externo para poder ejecutarse, ya que el compilador genera código nativo. Esto incrementa la velocidad de ejecución, porque los programas se ejecutan directamente en el procesador.
Para simplificar la creación de aplicaciones, Pauscal incluye Visual Pauscal, el cual permite diseñar visualmente las ventanas de programas.
Funcionamiento Interno del Lenguaje
Este lenguaje no es de código abierto por lo que solo se conoce que los cinco ejecutables principales utilizados fueron programados en Visual Basic® los cuales son Pauscal.exe, Visual Pauscal.exe, PauscalUninst.exe, compiler.exe y debugger.exe.1 El resto de binarios incluidos son propiedad de Borland® y Microsoft® según sea el caso y su inclusión muy seguramente es ilegal, al no dejar clara las licencias de su utilización y distribución, por lo que debe ser advertido a sus usuarios para evitar que violen la ley y eviten afrontar posibles futuros problemas legales.
Plankalkül
Plankalkül fue el primer lenguaje de programación, que fue creado por el científico alemán Konrad Zuse en los años 1943 a 1946 se considera un lenguaje de alto nivel, pero no se publicó hasta 1972.Zuse querían desarrollar un método sofisticado para el desarrollo de las tareas que el equipo debe hacer.
Historia
Konrad Zuse construyó varios ordenadores de los relés electromagnéticos complejos, pero en 1945 la guerra ha destruido todos, pero un solo modelo, el Z4. Después de la destrucción de sus equipos, Konrad se mudó a un pueblo llamado Hinterstein, donde comenzó a trabajar solo en su proyecto de desarrollo de su lenguaje de programación, un proyecto que comenzó en 1943 como una propuesta para su tesis de doctorado que señaló a su Plankalkül lenguaje de programación, lo que significa que el programa de cálculo.
Zuse en 1948 publicó un artículo en el Archiv der Mathematik - una revista que publica trabajos de alta calidad en todas las áreas de las matemáticas -, pero su publicación no produjo una gran cantidad de información, es decir, no se adquiere relevancia en el ámbito académico / profesional en aquel entonces. Heinz Rutishauser (co-fundador de ALGOL) dijo: "El primer intento de desarrollar un lenguaje algorítmico se llevó a cabo en 1948 por K. Zuse Su notación era bastante general, pero la propuesta nunca alcanzó la consideración que merece.."
La lengua fue muy completa su temporada de reproducción y tenía algunas de sus características más avanzadas en el área de estructuras de datos. El tipo más simple es el de un solo bit de ella y se construyeron los tipos de números enteros y números reales. El tipo real utilizado un esquema de calificación y los dos "poco escondido", que se utiliza actualmente para evitar el almacenamiento de los bits más significativos de la parte fraccionaria de un valor normalizado. La lengua tiene tres variables Plankalkül específicos para el desarrollo de un programa, entre ellas podemos destacar las letras V (el paso de parámetros), Z (el almacenamiento de los valores intermedios) y R (ver resultados). Uno de los mayores obstáculos para la aplicación del lenguaje Plankalkül ocurrió debido a que utiliza la misma sintaxis difícil de entender, es decir, un desarrollador en particular tomaría mucho tiempo para entender las secuencias lógicas utilizadas en el programa. Por lo general, las variables que determina el idioma utilizado por cuatro líneas. La primera línea fue declarada una de las letras V, Z o R, la segunda línea se declaró la variable del índice, fue declarado el tercer componente de la variable, y por último la cuarta línea es el tipo declarado de la variable, por ejemplo, 5.0 (cinco bits), pero también podemos encontrar ejemplos de programas escritos en forma lineal.
Características
Este lenguaje de programación tiene, entre otros indicios de asignación, llamadas a funciones (subrutinas), la aritmética de punto flotante, matrices (arrays), matemáticas o lógicas sólo se pueden aplicar a las variables del mismo tipo, tipos de datos compuestos, el tratamiento excepción, entre otras características.
Otras características
·         Introduce la operación de asignación, por ejemplo V1 + V2 = R1. El signo fue introducido en el ALGOL 60 GAMM-comité, pero el comité no decidió aceptarlo.
·         Declaraciones comparativas del tipo: V1 = V2 =>R1 , es decir, compara la variable 1 con la variable dos, y si son iguales le asigna el valor “verdadero” a la variable R1 y sino el valor “falso”.
·         Planes de programación, llamadas a subprogramas y diferentes criterios de parada del programa.
·         Es un lenguaje de programación imperativo de alto nivel.
·         Declaraciones condicionales, pero sin introducir el “ELSE”.
·         Las funciones no son recurrentes.
·         Bucles (while).
·         Los datos se escriben en: punto flotante, punto fijo, complejos.
·         Operaciones con lógica de predicados y algebra de Boole.
·         Poderosas operaciones con listas y parejas de listas.
·         NO hay recursividad.
·         Manejo de arrays, registros, estructuras de datos jerárquicas y listas de parejas.
·         Manejo de las excepciones aritméticas.
·         Aplicaciones para jugar al ajedrez descritas en más de 60 páginas.
Processing
Processing es un lenguaje de programación y entorno de desarrollo integradode código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital. Fue iniciado por Ben Fry y Casey Reas a partir de reflexiones en el Aesthetics and Computation Group del MIT Media Lab dirigido por John Maeda. Processing es desarrollado por artistas y diseñadores como una herramienta alternativa al software propietario. Puede ser utilizado tanto para aplicaciones locales así como aplicaciones para la web (Applets). Se distribuye bajo la licencia GNU GPL. Al estar basado en Java, puede heredar todas sus funcionalidades, convirtiéndose en una herramienta poderosa a la hora de encarar proyectos complejos.
Prolog
El Prolog (o PROLOG), proveniente del francésPROgrammation en LOGique,1 es un lenguaje de programación lógico e interpretado, bastante conocido en el medio de investigación en Inteligencia Artificial.
Historia
Se trata de un lenguaje de programación ideado a principios de los años 70 en la Universidad de Aix-Marseille I (Marsella, Francia) por los profesores Alain Colmerauer y Philippe Roussel. Nació de un proyecto que no tenía como objetivo la implementación de un lenguaje de programación, sino el procesamiento de lenguajes naturales. Alain Colmerauer y Robert Pasero trabajaban en la parte del procesado del lenguaje natural y Jean Trudel y Philippe Roussel en la parte de deducción e inferencia del sistema. Interesado por el método de resolución SL, Trudel persuadió a Robert Kowalski para que se uniera al proyecto, dando lugar a una versión preliminar del lenguaje Prolog a finales de 19712 y apareciendo la versión definitiva en 1972.3 Esta primera versión de Prolog fue programada en ALGOL W.
Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en 1983, David H.D. Warren desarrolló un compilador capaz de traducir Prolog en un conjunto de instrucciones de una máquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Desde entonces Prolog es un lenguaje semi-interpretado.
Si bien en un principio se trataba de un lenguaje de uso reducido, la aparición de intérpretes del mismo para microordenadores de 8 bits (ej: micro-PROLOG) y para ordenadores domésticos de 16 bits (ej: Turbo Prolog de Borland, entre otros muchos) a lo largo de la década de 1980 contribuyó notablemente a su popularización.4 Otro importante factor en su difusión fue la adopción del mismo para el desarrollo del proyecto de la quinta generación de computadoras a principios de la década de los 80,5 en cuyo contexto se desarrolló la implementación paralelizada del lenguaje llamada KL1 y del que deriva parte del desarrollo moderno de Prolog.
Las primeras versiones del lenguaje diferían, en sus diferentes implementaciones, en muchos aspectos de sus sintaxis, empleándose mayormente como forma normalizada el dialecto propuesto por la Universidad de Edimburgo6 , hasta que en 1995 se estableció un estándar ISO (ISO/IEC 13211-1), llamado ISO-Prolog. Prolog se enmarca en el paradigma de los lenguajes lógicos y declarativos, lo que lo diferencia enormemente de otros lenguajes más populares tales como Fortran, Pascal, C o Java.
Vuelta atrás (backtracking)
En los lenguajes de programación antes mencionados, las instrucciones se ejecutan normalmente en orden secuencial, es decir, una a continuación de otra, en el mismo orden en que están escritas, que sólo varía cuando se alcanza una instrucción de control (un bucle, una instrucción condicional o una transferencia).
Los programas en Prolog se componen de cláusulas de Horn que constituyen reglas del tipo "modus ponendo ponens", es decir, "Si es verdad el antecedente, entonces es verdad el consecuente". No obstante, la forma de escribir las cláusulas de Horn es al contrario de lo habitual. Primero se escribe el consecuente y luego el antecedente. El antecedente puede ser una conjunción de condiciones que se denomina secuencia de objetivos. Cada objetivo se separa con una coma y puede considerarse similar a una instrucción o llamada a procedimiento de los lenguajes imperativos. En Prolog no existen instrucciones de control. Su ejecución se basa en dos conceptos: la unificación y el backtracking.
Gracias a la unificación, cada objetivo determina un subconjunto de cláusulas susceptibles de ser ejecutadas. Cada una de ellas se denomina punto de elección. Prolog selecciona el primer punto de elección y sigue ejecutando el programa hasta determinar si el objetivo es verdadero o falso.
En caso de ser falso entra en juego el backtracking, que consiste en deshacer todo lo ejecutado situando el programa en el mismo estado en el que estaba justo antes de llegar al punto de elección. Entonces se toma el siguiente punto de elección que estaba pendiente y se repite de nuevo el proceso. Todos los objetivos terminan su ejecución bien en éxito ("verdadero"), bien en fracaso ("falso").
Expresiones
Prolog cuenta con operadores para la unificación y comparación, sea con evaluación o sea simbólica, como los siguientes:
X is Y %unificación con evaluación.
X = Y  %unificación simbólica
X=:=Y  %comparación con evaluación
X == Y %comparación simbólica.
Listas
La representación de hechos simples no es lo común en la clasificación de elementos, sino que se agrupan los elementos de un mismo tipo en una lista.
Las listas son colecciones de elementos en Prolog. Una lista se divide en dos partes: Cabeza. Es el primer elemento de la lista. Cola. Es una lista con el resto de los elementos de la lista. La cabeza y la cola de una lista se separan con el símbolo "|".
Pure data
Pure Data (o Pd) es un lenguaje de programación gráfico desarrollado por Miller Puckette durante los años 90 para la creación de música computerizada interactiva y obras multimedia. Aunque Puckette es el principal autor del software, Pd es un proyecto de código abierto y tiene una gran base de desarrolladores trabajando en nuevas extensiones al programa. Está publicado bajo una licencia similar a la licencia BSD.
Pd es muy similar en alcance y diseño al programa original de Puckette, Max(desarrollado cuando él estaba en IRCAM), y es hasta cierto grado interoperable con Max/MSP, el sucesor comercial del lenguaje Max. Ambos Pd y Max son ejemplos discutibles de lenguajes de programación de "flujo de datos". En este tipo de lenguajes, funciones u "objetos" son conectados o "parcheados" unos con otros en un ambiente gráfico que modela el flujo del control y el audio. A diferencia de la versión original de Max, sin embargo, Pd siempre fue diseñado para hacer procesado de señales y tasas de control en la CPU nativa, en vez de descargar la síntesis y el proceso de señales a un tablero de PDS (como el Ariel ISPW que era usado para Max/FTS). El código de Pd es la base de las extensiones MSP de David Zicarelli al lenguaje Max para hacer proceso de audio en software.
Como Max, Pd tiene una base modular de código con externos u objetos que son utilizados como bloques de construcción para programas escritos en el software. Esto hace el programa arbitrariamente extensible a través de una API pública, y alienta a los desarrolladores a añadir sus propias rutinas de audio y control, ya sea en el lenguaje de programación C o, con la ayuda de otros externos, en Python, Javascript, Ruby, y potencialmente otros lenguajes también. Sin embargo, Pd es un lenguaje de programación en sí mismo. Unidades de código modulares y reusables, escritas nativamente en Pd, llamadas "parches" o "abstracciones", son usadas como programas independientes y compartidas libremente entre la comunidad de usuarios de Pd, y ninguna otra habilidad de programación es requerida para usar Pd pero ayuda.
Con la adición del externo "Entorno Gráfico para Multimedia" (GEM, por su nombre en inglés), y otros externos diseñados para trabajar con él (como Pure Data Packet, PiDiP para Linux, framestein para Windows, GridFlow para proceso de matrices n-dimensionales que integra Pure Data con el lenguaje de programación Ruby, etc.), es posible crear y manipular vídeo, gráficos OpenGL, imágenes, etc, en tiempo real con aparentemente infinitas posibilidades de interactividad con audio, sensores externos, etc.
Adicionalmente, Pd está diseñado nativamente para permitir colaboración en vivo a través de redes o de Internet, permitiendo a músicos conectados vía LAN, o incluso en distintas partes del mundo, hacer música juntos en tiempo real. Las unidades donde se programa el código se llaman “patch” o abstracciones, son utilizadas como programas independientes y compartidos libremente entre la comunidad de usuarios de Pd. Los patchs constan de diferentes objetos interconectados entre ellos. En su parte superior encontraremos las entradas, donde se les enviaran valores numéricos u otros tipos de datos, y en la inferior la salida de estos.
También existe la posibilidad de crear patchs secundarios conocidos como subpatchs. Están dentro del patch principal. Se crean escribiendo en un objeto las letras “pd” seguidas de un espacio y el nombre que se le quiera dar a ese subpatch, como se muestra en la figura. Clicando encima se nos abre la ventana donde encontramos el código de nuestro subpatch.
El programa tiene dos estados en los que se puede encontrar el usuario. En modo de edición o en modo de ejecución. Para cambiar de un estado a otro teclearemos Ctrl+E. Cuando estamos en el modo edición, podemos modificar el contenido de las cajas, o la conexión entre ellas. En el modo de ejecución tenemos la posibilidad de poner en marcha todo el patch, e ir modificando valores durante su reproducción o cuando este, esté parado. Podemos enviar bangs, modificar valor de variables dentro de los objetos “números”, o activar y desactivar sectores del código con el objeto [toggle], activado cuando tiene una cruz y desactivado cuando no.
Python
Python es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y multiplataforma. Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License,que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.
Historia
Python fue creado a finales de los ochenta2 por Guido van Rossum en el Centro para las Matemáticas y la Informática (CWI, Centrum Wiskunde & Informatica), en los Países Bajos, como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba.El nombre del lenguaje proviene de la afición de su creador original, Guido van Rossum, por los humoristas británicos Monty Python. Van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como Benevolente Dictador Vitalicio (en inglés: Benevolent Dictator for Life, BDFL).
En 1991, van Rossum publicó el código de la versión 0.9.0 en alt.sources.5 En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones y los tipos modulares, como: str, list, dict, entre otros. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de Modula-3; van Rossum describe el módulo como “una de las mayores unidades de programación de Python”.2 El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula else.3 En el año 1994 se formó comp.lang.python, el foro de discusión principal de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje.
Python alcanzó la versión 1.0 en enero de 1994. Una característica de este lanzamiento fueron las herramientas de la programación funcional: lambda, reduce, filter y map. Van Rossum explicó que “hace 12 años, Python adquirió lambda, reduce(), filter() y map(), cortesía de un hacker de Lisp que las extrañaba y que envió parches”.6 El donante fue Amrit Prem; no se hace ninguna mención específica de cualquier herencia de Lisp en las notas de lanzamiento. La última versión liberada proveniente de CWI fue Python 1.2. En 1995, van Rossum continuó su trabajo en Python en la Corporation for National Research Initiatives (CNRI) en Reston, Virginia, donde lanzó varias versiones del software.
Características y paradigmas
Python es un lenguaje de programación multiparadigma. Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetos, programación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones. Python usa tipado dinámico y conteo de referencias para la administración de memoria.
Una característica importante de Python es la resolución dinámica de nombres; es decir, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado ligadura dinámica de métodos). Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se pueden escribir nuevos módulos fácilmente en C o C++. Python puede incluirse en aplicaciones que necesitan una interfaz programable.
Aunque la programación en Python podría considerarse en alguna situación hostil a la programación funcional tradicional del Lisp, existen bastantes analogías entre Python y los lenguajes minimalistas de la familia Lisp como puede ser Scheme.
Filosofía
Los usuarios de Python se refieren a menudo a la Filosofía Python que es bastante análoga a la filosofía de Unix. El código que sigue los principios de Python de legibilidad y transparencia se dice que es "pythonico". Contrariamente, el código opaco u ofuscado es bautizado como "no pythonico" ("unpythonic" en inglés). Estos principios fueron famosamente descritos por el desarrollador de Python Tim Peters en El Zen de Python
Ratfor
RATFOR (abreviación de RATional FORtran, o Fortran Racional) es un lenguaje de programación implementado como un preprocesador para Fortran 66. Proveía al programador de estructuras de datos modernas (no presentes en Fortran 66) para reemplazar sentencias GOTO y declaración de números.
Ratfor fue descrito por primera vez en el libro "Software Tools" (Kernighan y Plauger, 1976), y fue implementado también esos años cuando los autores se encontraban trabajando en los Laboratorios Bell de Teléfonos. Ratfor implementada las siguientes sentencias de manejo de flujo entre otras, según los autores “descaradamente robados del lenguaje C creado para Unix por Dennis Ritchie”" ("Software Tools", p. 318):
Encerrado de bloques con paréntesis de llave.
·         Sentencias de control if, else, for, while, do y repeat-until.
·         Sentencias "free-form", por ejemplo, no regidas estrictamente por líneas de código.
·         Reemplazo de.GT,.GE, etc, por símbolos <, >, etc.
Redcode
Redcode es un lenguaje que se asemeja al lenguaje ensamblador, creado específicamente para ser interpretado por un MARS (ver Core War) y más simplificado que un lenguaje ensamblador convencional. Redcode posee instrucciones para mover el contenido de una dirección de memoria a otra, realizar operaciones aritméticas y controlar la ejecución dentro del mismo programa. Las instrucciones mnemónicas de Redcode son, a diferencia de un lenguaje ensamblador, convertidas en un entero largo que posteriormente se guarda en la memoria del MARS. Finalmente es el MARS el que interpreta los enteros y realiza las operaciones indicadas.
Existen varias versiones de Redcode desde su creación. Actualmente las más usadas son Redcode'88 y Redcode'94, cada una con sus partidarios y detractores, debido a la adición de una importante característica en Redcode en su última versión, el P-space, que obligó a extender las instrucciones de Redcode'88 de 17 a 19.
RPG
El lenguaje de programación RPG es un lenguaje de programación desarrollado por IBM en 1964 y diseñado para generar informes comerciales o de negocios. Sus siglas en inglés significan Report Program Generator.
En 1960 RPG es creado para la familia 1400, pero hasta 1964 no es lanzada la versión final para la IBM 360. Ha sido actualizado en diversas ocasiones, dando origen a las diferentes versiones del lenguaje. Una de las últimas actualizaciones que se ha realizado hasta la fecha es el RPG/IV en 1995, disponible con los ordenadores IBM de la familia AS/400. Posteriormente, en 2001, y con la aparición de la versión 5 del OS/400, surgió una nueva modificación sobre el lenguaje, soportándose a partir de ese momento la programación en formato libre. Así mismo, se desarrollan las funciones incorporadas que sustituyen a muchos de los antiguos indicadores y códigos de operación. Todas estas incorporaciones permiten que el RPG se convierta en un lenguaje mucho más legible, claro, flexible y moderno.
Entre sus principales características podemos destacar las siguientes:
·         Orientado a la producción de informes.
·         Realiza cálculos fácilmente.
·         Emplea hojas de codificación diferentes para la descripción de ficheros, entrada de datos, salida de resultados, etc.
RPG II
El RPG II es un lenguaje de programación relativamente fácil de aprender impuesto por IBM en algunas de sus máquinas, y destinado a la generación de informes comerciales. Se utilizaba en las computadoras System/3x y RPG III en el AS/400. Las sentencias RPG se escriben en formato tabular, lo que hace incómodo el desarrollo de programas. El programador no necesita conocer en profundidad la máquina, por lo que resulta fácil de dominar. En 1980, apareció el RPG II, diseñado para entornos más sofisticados, éste permite usar técnicas de programación estructurada y acceso a bases de datos.
El concepto de RPG es el de una máquina cíclica que lee tarjetas, resume sus contenidos e imprime un resultado, más bien como una máquina tabuladora. El lenguaje se extendió para manejar otros dispositivos de rendimiento y aportar un método rápido y eficiente de programar.
Ruby
Ruby es un lenguaje de programacióninterpretado, reflexivo y orientado a objetos, creado por el programador japonésYukihiro "Matz" Matsumoto, quien comenzó a trabajar en Ruby en 1993, y lo presentó públicamente en 1995. Combina una sintaxis inspirada en Python y Perl con características de programación orientada a objetos similares a Smalltalk. Comparte también funcionalidad con otros lenguajes de programación como Lisp, Lua, Dylan y CLU. Ruby es un lenguaje de programación interpretado en una sola pasada y su implementación oficial es distribuida bajo una licencia de software libre.
Historia
El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empezó a trabajar en Ruby el 24 de febrero de 1993, y lo presentó al público en el año 1995. En el círculo de amigos de Matsumoto se le puso el nombre de "Ruby" (en español rubí) como broma aludiendo al lenguaje de programación "Perl" (perla). La última versión estable de la rama 1.8 es la 1.8.7_p248, de la rama 1.9 es la 1.9.2_p180 . La versión en 1.9 que incorpora mejoras sustanciales en el rendimiento del lenguaje, que se espera queden reflejadas en la próxima versión estable de producción del lenguaje, Ruby 1.9.0.1 Diferencias en rendimiento entre la actual implementación de Ruby (1.8.6) y otros lenguajes de programación más arraigados han llevado al desarrollo de varias máquinas virtuales para Ruby. Entre ésas se encuentra JRuby, un intento de llevar Ruby a la plataforma Java, y Rubinius, un intérprete modelado basado en las máquinas virtuales de Smalltalk. Los principales desarrolladores han apoyado la máquina virtual proporcionada por el proyecto YARV, que se fusionó en el árbol de código fuente de Ruby el 31 de diciembre de 2006, y se dió a conocer como Ruby 1.9
Objetivo
El creador del lenguaje, Yukihiro "Matz" Matsumoto, ha dicho que Ruby está diseñado para la productividad y la diversión del desarrollador, siguiendo los principios de una buena interfaz de usuario.2 Sostiene que el diseño de sistemas necesita enfatizar las necesidades humanas más que las de la máquina:3
A menudo la gente, especialmente los ingenieros en computación, se centran en las máquinas. Ellos piensan, "Haciendo esto, la máquina funcionará más rápido. Haciendo esto, la máquina funcionará de manera más eficiente. Haciendo esto..." Están centrados en las máquinas, pero en realidad necesitamos centrarnos en las personas, en cómo hacen programas o cómo manejan las aplicaciones en los ordenadores. Nosotros somos los jefes. Ellos son los esclavos.
Ruby sigue el "principio de la menor sorpresa", lo que significa que el lenguaje debe comportarse de tal manera que minimice la confusión de los usuarios experimentados. Matz ha dicho que su principal objetivo era hacer un lenguaje que le divirtiera a él mismo, minimizando el trabajo de programación y la posible confusión. Él ha dicho que no ha aplicado el principio de menor sorpresa al diseño de Ruby,4 pero sin embargo la frase se ha asociado al lenguaje de programación Ruby. La frase en sí misma ha sido fuente de controversia, ya que los no iniciados pueden tomarla como que las características de Ruby intentan ser similares a las características de otros lenguajes conocidos. En mayo de 2005 en una discusión en el grupo de noticias comp.lang.ruby, Matz trató de distanciar Ruby de la mencionada filosofía, explicando que cualquier elección de diseño será sorprendente para alguien, y que él usa un estándar personal de evaluación de la sorpresa. Si ese estándar personal se mantiene consistente habrá pocas sorpresas para aquellos familiarizados con el estándar.
Semántica
Ruby es orientado a objetos: todos los tipos de datos son un objeto, incluidas las clases y tipos que otros lenguajes definen como primitivas, (como enteros, booleanos, y "nil"). Toda función es un método. Las variables siempre son referencias a objetos, no los objetos mismos. Ruby soporta herencia con enlace dinámico, mixins y métodos singleton (pertenecientes y definidos por un sola instancia más que definidos por la clase). A pesar de que Ruby no soporta herencia múltiple, la clases pueden importar módulos como mixins. La sintaxis procedural está soportada, pero todos los métodos definidos fuera del ámbito de un objeto son realmente métodos de la clase Object. Como esta clase es padre de todas las demás, los cambios son visibles para todas las clases y objetos. Ruby ha sido descrito como un lenguaje de programación multiparadigma: permite programación procedural (definiendo funciones y variables fuera de las clases haciéndolas parte del objeto raíz Object), con orientación a objetos, (todo es un objeto) o funcionalmente (tiene funciones anónimas, clausuras o closures, y continuations; todas las sentencias tiene valores, y las funciones devuelven la última evaluación). Soporta introspección, reflexión y metaprogramación, además de soporte para hilos de ejecución gestionados por el intérprete. Ruby tiene tipado dinámico, y soporta polimorfismo de tipos (permite tratar a subclases utilizando la interfaz de la clase padre). Ruby no requiere de polimorfismo de funciones al no ser fuertemente tipado (los parámetros pasados a un método pueden ser de distinta clase en cada llamada a dicho método).
De acuerdo con las preguntas frecuentes de Ruby,5 "Si te gusta Perl, te gustará Ruby y su sintaxis. Si te gusta Smalltalk, te gustará Ruby y su semántica. Si te gusta Python, la enorme diferencia de diseño entre Python y Ruby/Perl puede que te convenza o puede que no."6
Características
·         orientado a objetos
·         cuatro niveles de ámbito de variable: global, clase, instancia y local.
·         manejo de excepciones
·         iteradores y clausuras o closures (pasando bloques de código)
·         expresiones regulares nativas similares a las de Perl a nivel del lenguaje
·         posibilidad de redefinir los operadores (sobrecarga de operadores)
·         altamente portable
·         Hilos de ejecución simultáneos en todas las plataformas usando green Threads
·         Carga dinámica de DLL/bibliotecas compartidas en la mayoría de las plataformas
·         introspección, reflexión y metaprogramación
·         amplia librería estándar
·         soporta inyección de dependencias
·         soporta alteración de objetos en tiempo de ejecución
·         continuaciones y generadores
·         Ruby actualmente no tiene soporte completo de Unicode, a pesar de tener soporte parcial para UTF-8.
Licencia
El intérprete y las bibliotecas están licenciadas de forma dual (inseparable) bajo las licencias libres y de código abiertoGPL y Licencia pública Ruby.A partir de la versión 1.9.3 se opta por una licencia dual bajo las licencias BSD de dos cláusulas y Licencia pública Ruby.
Self
Self es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems. Puede decirse que es un sucesor de Smalltalk, y en algunos casos se considera una evolución de éste. Self está basado en la idea de Prototipos, a diferencia de la mayoría de los lenguajes orientados a objetos que utilizan clases.
Simula
Simula es un lenguaje de programación orientada a objetos (OOP). Fue el primero de los lenguajes orientado a objetos. Varios años después de su desarrollo, casi todos los lenguajes modernos comenzaron a utilizar sus principios de orientación a objetos. Así fue como se popularizaron términos como clases, objetos, instancias, herencia, polimorfismo, etc.
Simula 67 fue lanzado oficialmente por sus autores Ole Johan Dahl y Kristen Nygaard en mayo de 1967, en la Conferencia de Trabajo en Lenguajes de Simulación IFIO TC 2, en Lysebu cerca de OsloHoy en día, los creadores de Simula han desarrollado un nuevo lenguaje de programación, llamado Beta, que generaliza todas las construcciones del lenguaje en una única idea denominada patrón.
Snobol
SNOBOL (StriNg Oriented symBOlic Language) es un lenguaje de programación de computadoras de muy alto nivel que surgió en la década de los 60 en los Laboratorios Bell merced al equipo formado por David J. Farber, Ralph E. Griswold y Ivan P. Polonsky.
Historia
Durante las décadas de los cincuenta y sesenta del siglo veinte había un importante interés en lenguajes de programación de computadoras de propósito especial. SNOBOL fue uno más de los lenguajes orientados a cadenas de texto y de entre ellos uno de los más exitosos. (v.g.: COMIT y TRAC).
Fue usado ampliamente durante las décadas de los setenta y ochenta del siglo veinte como un lenguaje de manipulación de texto en las disciplinas humanísticas, pero, en años recientes su popularidad se ha desvanecido merced a que lenguajes nuevos tales como AWK y Perl han hecho popular la manipulación de cadenas usando expresiones regulares; ahora es usado principalmente por aficionados siendo raro ver implementaciones recientes.
La implementación clásica fue en la PDP-10 y se ha usado para estudiar compiladores, gramáticas formales e inteligencia artificial, en particular traducción automática y comprensión automática de lenguajes naturales. La implementación original fue en una IBM 7090 en los Laboratorios Bell en Holmdel, Nueva Jersey. Fue diseñado expresamente para la portabilidad así que fue rápidamente exportado a otras plataformas.
Queda por comprobar lo que se dice al respecto de que el algoritmo de coincidencia de patrones de búsqueda es superior al de las expresiones regulares de modo que programas bien escritos y compilados usando la implementación SPITBOL del SNOBOL4 son del orden de 10 o más veces más rápidos en su ejecución que los equivalentes escritos en Perl. Se llamaba originalmente "SEXI" (StriNg EXpression Interpreter), que en español es algo así como: Intérprete de Expresiones de Cadenas. La versión SNOBOL4 es la cuarta y más reciente encarnación de una serie de lenguajes de programación de computadoras para el propósito especial de manipulación de cadenas de caracteres.
SNOBOL4 soporta una cantidad importante de tipos de datos tales como: enteros, números reales de precisión limitada, cadenas de texto, patrones de búsqueda, arreglos y tablas así como la capacidad de permitir al programador definir tipos de datos adicionales y nuevas funciones (esta última característica fue avanzada para su época además de parecerse y de que precede a los 'records' del Pascal o los 'structs' del C)
Sobresale de entre los lenguajes de programación más famosos de su tiempo por usar los patrones de búsqueda como un tipo de datos nativo al lenguaje y por proveer operadores para concatenación de patrones y alternación, además de que las cadenas generadas durante la ejecución pueden ser tratadas como programas que pueden a su vez ser ejecutados. Un patrón de búsqueda puede ser muy simple o extremadamente complicado. Un ejemplo de patrón simple puede ser una cadena de texto (v.g.: "ABCD"), y un ejemplo de patrón complicado puede ser una gran estructura que describa la gramática completa de un lenguaje de programación de computadoras.
Ofrece al programador una amplia variedad de características incluyendo algunas muy exóticas, de ahí que se pueda usar como si fuera un lenguaje orientado a objetos, un lenguaje de programación lógica, un lenguaje de programación funcional o un lenguaje de programación imperativa cambiando el conjunto de características usadas para escribir un programa. También concatena cadenas que estén una junto a la otra en una sentencia y mantiene las cadenas en un montículo de memoria liberando así a los programadores de preocupaciones tales como asignación de memoria y manejo de cadenas.
Se implementa normalmente como un intérprete debido a las dificultades para instrumentar algunas de sus características de muy alto nivel, pero hay un compilador, el SPITBOL, que provee casi todas las características que la versión interpretada. El lenguaje de programación de computadoras Icon es un descendiente de SNOBOL4.
Smalltalk
Smalltalk es un lenguaje de programación que permite realizar tareas de computación mediante la interacción con un entorno de objetos virtuales. Metafóricamente, se puede considerar que un Smalltalk es un mundo virtual donde viven objetos que se comunican mediante el envío de mensajes.
Un sistema Smalltalk está compuesto por:
·         Máquina virtual
·         Imagen virtual que contiene todos los objetos del sistema
·         Lenguaje de programación (también conocido como Smalltalk)
·         Biblioteca de Objetos reusables
·         Opcionalmente un entorno de desarrollo que funciona como un sistema en tiempo de ejecución.
Historia
Los orígenes de Smalltalk se encuentran en las investigaciones realizadas por Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los años setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox PARC), para la creación de un sistema informático orientado a la educación. El objetivo era crear un sistema que permitiese expandir la creatividad de sus usuarios, proporcionando un entorno para la experimentación, creación e investigación.
Terminología
Un programa Smalltalk consiste únicamente de objetos, un concepto que se utiliza universalmente dentro de todo sistema Smalltalk. Prácticamente todo, desde un número natural como el 4 hasta un servidor web es considerado un objeto. Los objetos Smalltalk presentan características comunes
·         Tienen una memoria propia.
·         Poseen capacidad para comunicarse con otros objetos.
·         Poseen la capacidad de heredar características de objetos ancestros.
·         Tienen capacidad de procesamiento.
Los objetos se comunican entre sí mediante el envío de mensajes. Asimismo, un objeto puede proveer muchas operaciones (actualmente esto está determinado por cada implementación) Las definiciones de estas operaciones en los objetos son llamadas métodos. Un método especifica la reacción de un objeto cuando recibe un mensaje que es dirigido a ese método. La resolución (en el sentido de ligado) de un mensaje a un método es dinámica. La colección entera de métodos de un objeto es llamada protocolo de mensajes o interfaz de mensajes del objeto. Los mensajes pueden ser parametrizados, estos parámetros serán objetos, y el resultado o respuesta del mismo también será un objeto.
Las características comunes de objetos está capturado bajo la noción de clase, de tal forma que los objetos agrupados bajo una clase son llamados instancias de ella. Las instancias son creadas durante la ejecución de un programa con algún propósito y son barridos automáticamente en el momento que no son necesitados más por el recolector de basura. Exceptuando algunos objetos especiales como los muy simples, llamados literales (números, cadenas, etc), cada objeto tiene su propio estado local y representa una instancia diferente de su clase.
Características
Smalltalk es considerado el primero de los lenguajes orientados a objetos (OOP), aunque en realidad el primero en implementar programación orientada a objetos fue Simula. En Smalltalk todo es un objeto, incluidos los números reales o el propio entorno Smalltalk.
Como lenguaje tiene las siguientes características:
1.    Orientación a Objetos
3.    Interacción entre objetos mediante envío de mensajes
4.    Herencia simple y con raíz común
5.    Reflexión computacional completa
7.    Compilación en tiempo de ejecución o Interpretado (dependiendo de la distribución o del proveedor)
Smalltalk ha tenido gran influencia sobre otros lenguajes como Java o Ruby, y de su entorno han surgido muchas de las prácticas y herramientas de desarrollo promulgadas actualmente por las metodologías ágiles (refactorización, desarrollo incremental, desarrollo dirigido por tests, etc.).
El entorno Smalltalk
Las implementaciones de Smalltalk de mayor peso (VisualWorks, Squeak, VisualSmalltalk, VisualAge y Dolphin) poseen un entorno de interacción muy diferente al entorno de desarrollo típico de otras tecnologías como Microsoft Visual Studio .Net o Eclipse. El entorno o ambiente Smalltalk es primordialmente gráfico y funciona como un sistema en tiempo de ejecución que integra varias herramientas de programación (Smalltalk), utilidades multimedia, interfaces para ejecutar código no nativo a Smalltalk y servicios del sistema operativo.1 Estas posibilidades, que han influido en la metodología de trabajo y concepción de la programación, se traducen en la tendencia a considerar a Smalltalk más que un simple lenguaje de programación. La forma de programar en Smalltalk no consiste en el ciclo típico de las tecnologías tradicionales: Arrancar un editor de texto, compilar y ejecutar y terminar la aplicación. En Smalltalk se manipula el entorno mismo, comúnmente mediante el Navegador del Sistema.
Sintaxis
Tradicionalmente, Smalltalk no posee una notación explícita para describir un programa entero. Sí se utiliza una sintaxis explícita para definir ciertos elementos de un programa, tales como métodos, pero la manera en que tales elementos están estructurados dentro de un programa entero generalmente es definida por las múltiples implementaciones. El estándar mismo no promueve otra dirección, por lo que define una sintaxis abstracta de programas Smalltalk, que define todos los elementos que constituyen un programa Smalltalk y la manera en que esos elementos están lógicamente compuestos por otros elementos, sin embargo, cada implementación es libre de definir y utilizar las muchas sintaxis posibles que están conformes a la sintaxis abstracta estándar. Un ejemplo de una sintaxis concreta es el Formato de Intercambio Smalltalk (o SIF, de Smalltalk Interchange Format) definida en el mismo estándar.
La sintaxis de Smalltalk-80 tiende a ser minimalista. Esto significa que existen un grupo pequeño de palabras reservadas y declaraciones en comparación con la mayoría de los lenguajes populares. Smalltalk posee un grupo de 5 palabras reservadas: self, super, nil, true y false.
SPARK
SPARK es un lenguaje de programación especialmente diseñado para sistemas de alta integridad. Es un subconjunto anotado de Ada desarrollado por la empresa británica Praxis High Integrity Systems, Inc que elimina ciertas características del lenguaje consideradas peligrosas en este tipo de sistemas (como las excepciones o la sobrecarga de operadores), y que añade anotaciones formales para realizar automáticamente análisis de flujo de datos y de información.
Historia
Los orígenes de este lenguaje de programación se encuentran en los trabajos realizados en la Universidad de Southamton (Reino Unido) sobre verificación formal de programas, y más concretamente en el desarrollo de SPADE (Southampton Program Analysis Development Environment), un conjunto de herramientas destinadas al análisis de flujo de datos y de información. De hecho, el nombre «SPARK» deriva de «SPADE Ada Kernel».
La primera versión de SPARK estaba basada en Ada 83 y fue desarrollada en 1988 por Bernard Carré y Trevor Jennings en dicha Universidad con el patrocinio del Ministerio de Defensa (MoD) británico. Más tarde siguió siendo desarrollado por la empresa Program Validaton Limited (fundada por el profesor Carré), y después por Praxis Critical Systems Limited. En octubre de 2004 esta empresa se fusionó con High Integrity Systems Limited para formar Praxis High Integrity Systems.
Standard ML
El lenguaje de programaciónStandard ML o SML es un lenguaje descendiente del lenguaje ML que nació como el Meta Lenguaje del sistema LCF. A diferencia de muchos otros lenguajes de programación, SML tiene una especificación formal, como semántica operacional publicada en el libro The Definition of Standard ML.
Implantaciones
Standard ML of New Jersey (abreviado SML/NJ) es un compilador completo, junto con sus librerías, herramientas, y documentación.  Moscow ML es una implementación liviana, basada en el ambiente de ejecución de CAML Light. Implementa el lenguaje SML completo, incluyendo sus módulos, también incluye la mayor parte de la librería de ase de SML.
MLton es un compilador para programas completos (no maneja la noción de módulos).  Poly/ML es una implantación completa de Standard ML.  SML2c es un compilador para firmas estructuras y funciones que genera código en lenguaje C. Está basado en SML/NJ versión 0.67 y comparte con esa versión la mayor parte del ambiente de ejecución, pero no planta ni herramientas de puesta a punto ni perfiles de ejecución. La compatibilidad a nivel de los módulos con SML/NJ es completa.Todas las distribuciones mencionadas son de tipo software libre. No hay versiones comerciales de SML disponibles.
Superglús
Superglús es un lenguaje de programación de juegos del tipo aventura conversacional, también conocidas como "Interactive fiction". El sistema de creación de aventuras de Superglús está basado en el compilador Paguaglús, que a su vez es un compilador que nace con el objetivo de emular el funcionamiento del sistema de creación de aventuras PAWS (Professional Adventure Writing System), para Spectrum y Amstrad.
Aunque ya existía un PAWS para PC este era una versión para DOS, de difícil utilidad hoy en día, y Paguaglús nació con el objetivo de permitir que los juegos resultantes fueran capaces de correr sobre la máquina virtual Glulx, de modo que fueran accesibles a todos los sistemas operativos en los que dicha máquina tuviera una implementación. Sin embargo la principal ventaja de Paguaglús, su casi 100% de compatibilidad con código de PAWS, es su principal problema, dado que PAWS es un sistema de los años 80 con grandes limitaciones debidas fundamentalmente a las capacidades reducidas de las máquinas de entonces.
Por otro lado, tras la muerte de los sistemas 8 bits nacieron otros parsers basados en PAW con capacidades mucho más avanzadas, aunque también basados en DOS, como SINTAC, SKC o NMP. En 2003 nos encontramos con que aquellos que quieran un sistema de creación de aventuras del estilo de PAW tenían dos alternativas: Paguaglús: muy portable pero poco potente. NMP, SKC, SINTAC: mucho más potentes pero poco portables y con tendencia a no funcionar en SOs modernos.
Pues bien, para solventar esto nace, de la mano de Julio Sangrador (autor de Paguaglús) y Carlos Sánchez (autor de NMP), la siguiente generación de lenguajes tipo PAWS: Superglús, un sistema basado en Paguaglús pero liberado de la necesidad de mantener compatibilidad con PAW, con las facilidades que esto da.
Vienna Definition Language
El Vienna Definition Language (VDL), en español, «Lenguaje de Definición de Viena» es un lenguaje de programación desarrollado en un centro de IBM en Viena (Austria), que puede utilizarse para declarar definiciones algebraicas de lenguajes de programación para software con una semántica operacional. Representa une metalenguaje (lenguaje formal) y se ha utilizado, entre otros, para la definición del lenguaje de programación PL/I.
A partir de este lenguaje se ha creado una metodología, el Vienna Development Method, lo que facilita formular demostraciones de corrección sobre programas informáticos. Se sirve de una notación matemática, para expresar de forma precisa especificaciones de subrutinas.La utilización de estos metalenguajes y demostraciones sólo suele rentabilizarse para sistemas donde la seguridad es crítica (ej. pasos de tren, centrales nucleares), cuya demostración es muy trabajosa y por lo tanto cara.
Visual SINTAC
Visual SINTAC fue el primer parser español de desarrollo visual de juegos tipo aventura conversacional para Windows. Su autor, Javier San José ("JSJ") publicó su primera versión en junio de 1999. La siguiente es una lista (incompleta) de características de Visual SINTAC:
  • Entorno de desarrollo totalmente visual.
  • Diseñador de mapas.
  • Lenguaje de programación similar al BASIC.
  • Completo tratamiento de objetos y PSIs.
  • Características multimedia, soporte de gráfico BMP, JPEG, sonido WAV, MOD, S3M, IT.
El lenguaje de programación soporta características como:
  • Bucles FOR...NEXT, WHILE...LOOP.
  • Sentencias IF...ELSE...ENDIF.
  • Estructuras SELECT CASE...ENDSELECT.
  • Procedimientos con paso y devolución de parámetros.
  • Declaración de variables locales y globales.
El proyecto fue cancelado, después de 2 revisiones, por su autor debido al poco interés que despertó inicialmente y en favor del auge de otros parsers que salieron por la misma época. Actualmente, y a pesar del esfuerzo de dos personas, Morgul y Uto, que intentaron solucionar parte de los fallos que el sistema tenía tras el abandono del proyecto por su autor original, puede considerarse que la base de usuarios de este parser es nula.
WS-CDL
El Lenguaje para la descripción de Coreografías de Servicios Web (Web Services Choreography Description Language (WS-CDL) es un lenguaje basado en XML que describe la colaboración entre pares peer-to-peer, mediante la definición - desde un punto de vista global - de los comportamientos comunes y observables de cada participante de un proceso de negocio. Es una recomendación candidata de la W3C cuyo desarrollo ha sido abandonado con el cierre del W3C Web Services Choreography Working Group en julio de 2009.
ALGOL
Se denomina ALGOL (o Algol) a un lenguaje de programación. La voz es un acrónimo de las palabras inglesasAlgorithmic Language (lenguaje algorítmico). Fue muy popular en las universidades durante los años 60, pero no llegó a cuajar como lenguaje de utilización comercial. Sin embargo, Algol influyó profundamente en varios lenguajes posteriores que sí alcanzaron gran difusión, como Pascal, C y Ada.
Hacia 1965 dos corrientes se distinguieron sobre el tema de un sucesor para Algol. Como resultado se definieron los lenguajes Algol W que es un lenguaje minimalista, rápidamente implementado y distribuido y, por otra parte, Algol 68 que para la época está en la frontera entre un lenguaje para programar en él y un lenguaje para investigar sobre él.
Algol W
Lenguaje elaborado diseñado por Niklaus Wirth y Tony Hoare a partir de los trabajos del grupo ALGOL de la IFIP. Se trata de un lenguaje conciso, simple de implementar, que evita todos los defectos conocidos del lenguaje Algol e incluye sus propias características adicionales. Sin embargo, el grupo Algol no lo adoptó como sucesor de Algol prefiriendo en su lugar al que terminó siendo Algol 68. Algol W fue utilizado por gran cantidad de usuarios y sembró el camino para el nacimiento del lenguaje Pascal. Entre las características del lenguaje se destacan: Aritmética de doble precisión, números complejos, Strings y estructuras de datos dinámicas, evaluación por valor, pasaje de parámetros por valor, valor resultado o resultado.
Algol 68
La definición del lenguaje fue presentada en la reunión del comité ALGOL de la IFIP en 1965. Luego de varios años de revisión del diseño se llegó a una versión definitiva en 1968. Al principal autor es Adriaan van Wijngaarden. Los objetivos principales de ALGOL 68 son el permitir comunicar algoritmos, el permitir una eficiente ejecución de los mismos en diferentes arquitecturas y el de servir como herramienta para la enseñanza. Una característica interesante de ALGOL 68 es que su semántica fue definida formalmente antes de ser implementado en base al formalismo llamado gramáticas de dos niveles.
ZPL
ZPL es un lenguaje de programación con paralelismo implícito orientado a operaciones con vectores o arreglos, creado por Lawrence Snyder de la Universidad de Washington en 1993 (el primer compilador disponible para uso general, fue liberado en 1997). El objetivo de ZPL es el facilitar la programación de ejecutables que corran eficientemente en una gran variedad de arquitecturas secuenciales y paralelas. Los programas de ZPL no contienen directivas o instrucciones explícitamente paralelas, dado que es el compilador del lenguaje el único responsable de extraer el paralelismo inherente a las operaciones presentes en un programa. ZPL explota exclusivamente el modelo de paralelismo de datos.
REXX
REXX (REstructured eXtended eXecutor) es un lenguaje de programación desarrollado en IBM por Mike Cowlishaw del que existen numerosas implementaciones disponibles con código abierto. Es un lenguaje de programación estructurado de alto nivel diseñado para ser al mismo tiempo fácil de entender y fácil de leer. Hay intérpretes para REXX tanto comerciales como de código abierto para un amplio rango de plataformas y hay compiladores para los mainframes de IBM. El nombre también se aplica a la familia de lenguajes relacionados con el lenguaje de programación REXX: el propio REXX (llamado en ese contexto REXX clásico o tradicional), Object REXX y NetREXX.
Características
REXX tiene, entre otras, las siguientes características:
  • tiene la cadena de caracteres como base
  • no hay declaraciones
  • no hay palabras reservadas (excepto en un contexto local)
  • precisión numérica arbitraria
  • aritmética decimal
  • un gran conjunto de funciones (especialmente para procesado de cadenas y palabras)
  • gestión automática de la memoria
  • arrays asociativos
  • acceso directo a las órdenes y facilidades del sistema
  • manejo de errores sencillo
  • herramientas de trazado y depuración dentro del intérprete
  • acceso a la entrada y salida simplificado
REXX tiene solamente 23 instrucciones de significado bastante evidente para los angloparlantes (call, parse y select son unos ejemplos) con unos requerimientos mínimos de puntuación y formateo. Es esencialmente un lenguaje de formato libre con solamente un tipo de dato primitivo: la cadena de caracteres. Esta filosofía implica que todos los datos son visibles y que la depuración y el trazado se simplifican.
La sintaxis de REXX parece similar a la de PL/I, pero tiene menos notaciones; esto hace que el código sea más difícil de analizar por el intérprete o el compilador pero más fácil de usar para el programador.
Historia
REXX fue diseñado e implementado por vez primera como un proyecto personal de Mike Cowlishaw de IBM entre el 20 de marzo de 1979 y mediados de 1982, originalmente como un lenguaje de programación de 'scripting' para reemplazar los lenguajes EXEC y EXEC 2. Fue diseñado para ser un lenguaje de scripting o macros para cualquier sistema y como tal, se considera a REXX precursor de lenguajes como Tcl y Python. Además, Cowlishaw se centró en que estuviese orientado a las personas en lugar de orientado a los ordenadores e intentó que el lenguaje se mantuviese pequeño y manejable por ello ("Keep the language small" -"Mantén el lenguaje pequeño"- se leía en la pared sobre su escritorio).
La primera versión pública apareció en mayo de 1979 distribuida a través de VNET, la red interna de IBM y los primeros usuarios aparte del propio Cowlishaw fueron Ray Mansell (de Hursley en el Reino Unido) y Les Koehler (de Raleigh en Carolina del Norte) que contribuyeron al lenguaje. A finales de 1979 al menos había unos 70 ordenadores con una implementación del lenguaje.
Algunas versiones fueron distribuidas entre compradores seleccionados de IBM como el SLAC (Stanford Linear Accelerator Center) donde la capacidad de REXX de trabajar con aritmética decimal de precisión arbitraria fue bien recibida. Al ser descrito por primera vez en público en la conferencia SHARE 56 en Houston, Texas, en 1981, la reacción de los clientes de IBM, liderada por Ted Johnston de SLAC (parcialmente motivada por la aritmética de REXX), condujo a que se convirtiese en producto oficial de IBM en 1982 y se incluyese en 1983 como parte del sistema VM/CMS.
A lo largo de los años, IBM incluyó REXX en forma de intérprete o compilador en casi todos sus sistemas operativos desde los mainframes a los ordenadores personales (VM/CMS, VM/GCS, MVS TSO/E, AS/400, OS/2, VSE/ESA, AIX, CICS/ESA y PC-DOS) y ha hecho versiones disponibles para Novell Netware, Windows, Java y Linux. La primera versión fuera de IBM fue escrita por Charles Daney en 1984/5. Otras versiones han sido también desarrolladas para Atari, Amiga, Unix (múltiples variantes), Solaris, DEC, Windows, Windows CE, PocketPC, MS-DOS, Palm OS, QNX, OS/2, Linux, BeOS, EPOC32, AtheOS, OpenVMS, OpenEdition, Macintosh y Mac OS X.
La versión de REXX para Amiga, llamada ARexx debida a Bill Hawes se incluyó con AmigaOS 2 y fue popular tanto para scripting como para control de aplicaciones. Muchas aplicaciones Amiga tienen "puertos ARexx" en ellas lo que permite controlar la aplicación a través de un "script" definido por el usuario. Numerosas versiones gratuitas de REXX están disponibles. En 1992 aparecieron las dos versiones de código abierto más ampliamente utilizadas: REXX/imc del británico Ian Collier para UNIX y Regina del noruego Anders Christensen (posteriormente adoptada por el australiano Mark Hessling) para Windows y Linux. BREXX del griego Vasilis Vlachoudis es bien conocido para DOS, WinCE y PocketPC.
Microsoft decidió incluir Regina en todos sus Windows Resource Kits como lenguaje de scripting y continuó esta práctica hasta Windows 2000 mientras introducía sus propias aproximaciones al scripting a través de WSH (Windows Scripting Host) y VBA (Visual Basic for Applications). En 1990, Cathy Dager de SLAC organizó el primer simposio REXX independiente que conduciría cuatro años después a la formación de la RexxLA (REXX Language Association). Los simposios se llevan a cabo anualmente. La RexxLA promovió la aparición de un estándar ANSI para REXX así como de un borrador para un estándar de Object REXX. En 1996, ANSI se publicó el estándar para REXX: ANSI X3.274–1996 “Information Technology – Programming Language REXX”.
Desde mediados de la década de 1990, existen dos variantes nuevas de REXX:
  • NetREXX – que compila a bytecodes Java o es interpretado directamente.
  • Object REXX – que es una versión orientada a objetos compatible con REXX.
REXX cumplió su vigesimoquinto aniversario el 20 de marzo de 2004, lo que se celebró en el decimoquinto Simposio Internacional de REXX organizado por la RexxLA (REXX Language Association) en Böblingen, Alemania, en mayo de 2004.
En el mismo decimoquinto Simposio Internacional de REXX, el 4 de mayo de 2004, IBM anuncia que retira Object REXX como producto y la intención de abrir el código fuente de Object REXX. Ante este anuncio, la RexxLA se ofrece a gestionar el futuro de Object REXX y nombra un comité para encargarse de la transición. El 12 de octubre de ese mismo año anuncia que transferirá el código a RexxLA para que se convierta en un proyecto de código abierto bajo la licencia Common Public License y el 29 de noviembre de ese mismo año se ha terminado de transferir todo el código excepto el código específico de la versión para OS/2, el IBM Resource Workshop (que permitía crear diálogos para Windows), Object REXX Workbench (IDE) y el paquete de funciones RxFTP. En febrero de 2005 aparece la primera versión pública de ooRexx (Open Object REXX) gestionada por David Ashley y Rick McGuire.
JAL
JAL (Just Another Language) es un Lenguaje de programación similar al Lenguaje de programación Pascal y un Compilador que genera código ejecutable para el microcontrolador PIC. Es un lenguaje de formato libre para programar microcontroladores PIC y el compilador corre sobre Linux, Mac OS y MS-Windows. JAL es el único lenguaje avanzado gratuito y tiene una base activa e importante de usuarios. Se configura y extiende por el uso de librerías e inclusive se puede combinar con lenguaje ensamblador.
Historia
Fue originalmente creado por Wouter van Ooijen, pero actualizado como software libre bajo la GNU en el año 2003. En el año 2006, Stef Mientki inició el desarrollo de una nueva version: V2. Kyle York es el programador de esta nueva versión, y un grupo internacional de usuarios (en orden alfabético: Bert van Dam, Sunish Issac, Dave Lagzdin, Javier Martinez, Stef Mientki, Wouter van Ooijen, Michael Reynolds, André Steenveld, Joep Suijs, Vasile Surducan, and Michael Watterson) son responsables de su testeo (beta testing).
Hollywood
Hollywood es un lenguaje de programación distribuido de forma comercial y desarrollado por Andreas Falkenhahn (Airsoft Softwair) que se centra esencialmente en la creación de aplicaciones con orientación multimedia. Hollywood está disponible para AmigaOS (68k y PPC), MorphOS, WarpOS, AROS y Windows. Actualmente no hay versión ni para Mac OS X ni para Linux, pero el producto ya es capaz de compilar ejecutables para estas plataformas. Hollywood incluye un compilador cruzado interno que puede guardar automáticamente ejecutables para todas las plataformas que soporta. Los ejecutables generados son completamente autónomos y no tienen dependencias externas, así que pueden ser puestos en marcha desde un lápiz o llave USB.Hollywood Designer es una herramienta adicional para Hollywood que le permite utilizarlo como un programa de presentaciones y un sistema de autoría.
Historia
Hollywood tiene sus raíces en la plataforma Amiga. Inspirado por los lenguajes de programación para Amiga como AMOS, Blitz BASIC y Amiga E, el autor de Hollywood, Andreas Falkenhahn, inició el desarrollo de en la primavera de 2002 tras terminar sus pruebas de la selectividad.2 La versión 1.0 fue lanzada en noviembre de 2002, pero únicamente para los ordenadores Amiga basados en la gama de procesadores 68000. Un mes más tarde, le siguió una versión nativa PowerPC para MorphOS.3 El soporte para WarpOS se incluye con Hollywood 1.9 que apareció en primavera de 2004 junto con el lanzamiento de la primera versión de Hollywood Designer, una herramienta que puede ser utilizada para crear presentaciones con Hollywood. El soporte del AmigaOS 4 está disponible desde marzo de 2005. Con el inicio de la versión 2.0 (lanzada en enero de 2006), Hollywood pasa a utilizar el lenguaje de programación Lua como una máquina virtual, pero con modificaciones significativas de la sintaxis y funcionalidad.4 A partir de la versión 3.0 (enero de 2008), Hollywood por primera vez también se ejecuta en dos sistemas operativos ajenos al Amiga: Microsoft Windows y Mac OS X. Tras la versión 4.5 (enero de 2010), Hollywood está también disponible con un entorno de desarrollo integrado para Windows. Desde la versión 4.8 (abril de 2011), Hollywood también puede generar ejecutables para Linux.
Información general
Hollywood se centra en la facilidad de uso y en la independencia de la plataforma. Ha sido diseñado principalmente para la creación de juegos y aplicaciones multimedia. El juego de instrucciones del lenguaje abarca 500 comandos para los siguientes campos: gráficos 2D, sonido, operaciones del sistema de ficheros, salidas de texto, animaciones, duendecillos gráficos, capas, efectos de transición, manipulación de imágenes, guardado de imágenes y ficheros de video, funciones de tiempo y fecha, funciones de entrada (teclado, palanca de juegos, ratón) así como operaciones matemáticas y funciones de cadena. La programación en Hollywood se realiza a través de los llamados guiones de Hollywood (con extensión *.hws). Estos guiones son compilados dinámicamente y convertidos en ejecutables autónomos. Todos los programas de Hollywood se ejecutan en un «cajón de arena» (área para aislamiento de procesos), lo que hace imposible que se bloqueen.
D
D es un lenguaje de programación de uso general desarrollado por Walter Bright cuya primera versión apareció en 1999. Se origina como un rediseño de C++, con un enfoque más pragmático, pero no es un lenguaje puramente derivado del anterior. D ha mantenido algunas características de C++ y también está influido por otros conceptos de otros lenguajes como Java, C# y Eiffel. Una versión estable fue lanzada el 2 de enero de 2007.
Características
D está siendo diseñado con lecciones aprendidas del uso de C++ en vez de ser diseñado desde una perspectiva teórica. Aunque usa muchos de los conceptos de C/C++ también descarta algunos, y por lo tanto no es compatible con código escrito en C o C++. D retiene la habilidad de C++ de hacer código de bajo nivel, permitiendo incluir código en ensamblador. La herencia múltiple de C++ es reemplazada por herencia simple e interfaces y 'mixins'. La sintaxis de declaración y la sintaxis para las expresiones se parecen a las de C++.
El soporte del lenguaje ensamblador demuestra una de las diferencias entre D con respecto a otros lenguajes como Java y C#. Esto permite incluir código específico de la máquina con código D, una técnica comúnmente usada por programadores de software de sistema para acceder a características de bajo nivel necesarias para interactuar directamente con el hardware, permitiendo escribir software como sistemas operativos y drivers.
D incluye soporte para comentarios de documentación, pero hasta ahora sólo el compilador entregado por Digital Mars implementa un generador de documentación.
Orientada a objetos
La programación orientada a objetos está basada en herencia simple, con todas las clases derivadas de la clase Object. D no soporta herencia múltiple; en vez de eso, usa interfaces parecidas a las de Java, que son comparables a las clases abstractas de C++.
Metaprogramación
Metaprogramación es soportada por una combinación de plantillas, ejecución de funciones en tiempo de compilación, tuplas y 'mixins' de cadena. Soporta CTFE (evaluación de funciones en tiempo de compilación).
Manejo de memoria
La memoria es usualmente manejada por un recolector de basura, pero objetos específicos pueden ser finalizados inmediatamente cuando salen del ámbito. Es posible el manejo de memoria explícito usando los operadores sobrecargados new y delete, y simplemente llamando las funciones malloc y free de C directamente. La recolección de basura puede ser controlada: los programadores pueden agregar y excluir rangos de memoria de ser observados por el recolector, pueden pausar y reanudar el recolector y forzar un ciclo generacional o de recolección completa.3 El manual da muchos ejemplos de cómo implementar diferentes esquemas de manejo de memoria altamente optimizados para cuando la recolección de basura es inadecuada para el programa.
Interacción con otros sistemas
La API de C es admitida, al igual que todos los tipos fundamentales y derivados de C, permitiendo acceso directo al código existente escrito en C y bibliotecas. La biblioteca estándar de C es parte del D estándar. A menos que se usen namespaces muy explícitos puede ser de alguna forma difícil de acceder, como se puede observar en módulos escritos en D que hagan uso de dicha característica. Pero la biblioteca estándar de D es usualmente suficiente.
Visual Basic .NET
Visual Basic .NET (VB.NET) es un lenguaje de programaciónorientado a objetos que se puede considerar una evolución de Visual Basic implementada sobre el framework .NET. Su introducción resultó muy controvertida, ya que debido a cambios significativos en el lenguaje VB.NET no es compatible hacia atrás con Visual Basic, pero el manejo de las instrucciones es similar a versiones anteriores de Visual Basic, facilitando así el desarrollo de aplicaciones más avanzadas con herramientas modernas.
La gran mayoría de programadores de VB.NET utilizan el entorno de desarrollo integradoMicrosoft Visual Studio en alguna de sus versiones (desde el primer Visual Studio .NET hasta Visual Studio .NET 2010, que es la última versión de Visual Studio para la plataforma .NET), aunque existen otras alternativas, como SharpDevelop (que además es libre). Al igual que con todos los lenguajes de programación basados en .NET, los programas escritos en VB .NET requieren el Framework .NET o Mono para ejecutarse.
Versiones
Visual Basic 2008 (VB 9.0)
Para esta versión se añadieron varias novedades, incluyendo:
Visual Basic 2010 (VB 10.0)
Visual Basic 2010 ofrece soporte para entorno de ejecución dinámico. VB 2010 forma parte de Microsoft Silverlight. kariih
Relación con Visual Basic
Si Visual Basic .NET debe considerarse una mera versión de Visual Basic, o si debe considerarse como un nuevo lenguaje de programación es un tema que ha traído mucha discusión, y que aún la trae. La sintaxis básica es prácticamente la misma entre VB y VB.NET, con la excepción de los añadidos para soportar nuevas características como el control estructurado de excepciones, la programación orientada a objetos, o los Genéricos. Las diferencias entre VB y VB.NET son profundas, sobre todo en cuanto a metodología de programación y bibliotecas, pero ambos lenguajes siguen manteniendo un gran parecido, cosa que facilita notablemente el paso de VB a VB.NET.
Versiones del entorno de programación para Visual Basic
Al mismo tiempo que evolucionaba el lenguaje, las herramientas que Microsoft proporciona para programar también evolucionaban para adaptarse a las novedades.
Visual Studio .NET (2002)
Visual Studio .NET se publicó en 2002 y fue la primera versión de Visual Studio en introducir el framework .NET. Esta versión de Visual Studio introdujo, junto con el Framework .NET tres nuevos lenguajes de programación, Visual C#, VB.NET y Visual J#. En esta primera versión de Visual Studio .NET se podían programar aplicaciones Windows.Forms (aplicaciones de escritorio) y aplicaciones ASP.NET (Aplicaciones Web).
Visual Studio .NET 2003
Visual Studio .NET 2003 se publicó en 2003 fue una actualización menor de Visual Studio .NET, básicamente propiciada por la introducción de la versión 1.1 del Framework .NET. En esta versión se añadió por primera vez la posibilidad de programar para dispositivos móviles usando .NET, ya fuera usando el Compact Framework, o ASP.NET.
Visual Studio 2005
Publicado el 4 de octubre de 2005, se basó en el framework .NET 2.0.
Añade soporte de 64-bit (x86-64: AMD64 e Intel 64, e IA-64: Itanium)
Ediciones: Express, Standard, Professional, Tools for Office, y 5 ediciones Visual Studio Team System (Architects, Software Developers, Testers, y Database Professionals)
La versión interna de Visual Studio 2005 es la 8.0, mientras que el formato del archivo es la 9.0.
Visual Basic Express Edition
A partir de la introducción en el mercado de la versión 2005 de Visual Studio Microsoft publicó lo que se conoce como ediciones Exp de distintos programas. Las versiones Express son versiones limitadas pero gratuitas, pensadas para usos no profesionales (principiantes, aficionados y pequeños negocios), existiendo una edición independiente para cada lenguaje.
Visual Basic Express Edition es una versión de Visual Studio limitada. Esta versión permite sólo programar en VB.NET, y además limita el tipo de proyectos que se pueden desarrollar. Visual Web Developer Express Edition permite programar páginas ASP.NET en VB.
Se lanzó el Service Pack 1 para Visual Studio 2005 el 14 de diciembre de 2006.
Visual Studio 2008
El IDE de Visual Studio 2008 permite trabajar contra 3 .NET frameworks diferentes:
  • .NET Framework 2.0
  • .NET Framework 3.0
  • .NET Framework 3.5
También es muy fácil de usar gracias al desarrollo de hardware. Además, integra el framework ASP.NET AJAX para el desarrollo de AJAX.
Entornos de desarrollo (IDE) alternativos a Visual Studio
Para desarrollar en VB.NET existen algunas alternativas a Visual Studio, quizás la más notable sea SharpDevelop.
SharpDevelop
SharpDevelop es un entorno de programación integrado que permite programar en C# y en VB.NET. Este es un entorno publicado bajo licencia LGPL, lo que implica que es libre y que disponemos del código fuente.
MonoDevelop
MonoDevelop es una implementación de SharpDevelop para programar usando Mono, una implementación libre de .NET que funciona en distintos sistemas operativos.
Desarrollo multiplataforma
Gracias al esfuerzo que ha realizado la gente del proyecto Mono para implementar una versión compatible 100% con .NET que incluye la inmensa mayoría de la bibliotecas y una implementación multiplataforma de Windows.Forms, resulta posible programar para distintos sistemas operativos usando VB.NET.
Java (lenguaje de programación)
Java es un lenguaje de programaciónorientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.Con respecto a la memoria, su gestión no es un problema ya que ésta es gestionada por el propio lenguaje y no por el programador.
Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.
La implementación original y de referencia del compilador, la máquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community Process, si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo licencias de software libre.
Entre diciembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java aún no lo es).
Historia
Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.
El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a denominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas gráficas y finalmente se renombró a Java.
El término Java fue acuñado en una cafetería frecuentada por algunos de los miembros del equipo. Pero no está claro si es un acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrónimo, Just Another Vague Acronym ("sólo otro acrónimo ambiguo más"). La hipótesis que más fuerza tiene es la que Java debe su nombre a un tipo de café disponible en la cafetería cercana, de ahí que el icono de java sea una taza de café caliente. Un pequeño signo que da fuerza a esta teoría es que los 4 primeros bytes (el número mágico) de los archivos .class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de todas estas teorías, el nombre fue sacado al parecer de una lista aleatoria de palabras.1
Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesión maratoniana de tres días entre John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt, el equipo reorientó la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic, propiciaría que Internet se convirtiese en un medio interactivo, como el que pensaban era la televisión por cable. Naughton creó entonces un prototipo de navegador, WebRunner, que más tarde sería conocido como HotJava.
En 1994, se les hizo una demostración de HotJava y la plataforma Java a los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de 1995, durante las conferencias de SunWorld, a que vieran la luz pública Java y HotJava, el navegador Web. El acontecimiento fue anunciado por John Gage, el Director Científico de Sun Microsystems. El acto estuvo acompañado por una pequeña sorpresa adicional, el anuncio por parte de Marc Andreessen, Vicepresidente Ejecutivo de Netscape, de que Java sería soportado en sus navegadores. El 9 de enero del año siguiente, 1996, Sun fundó el grupo empresarial JavaSoft para que se encargase del desarrollo tecnológico. [1] Dos semanas más tarde la primera versión de Java fue publicada.
La promesa inicial de Gosling era Write Once, Run Anywhere (Escríbelo una vez, ejecútalo en cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de ejecución (la JVM) ligero y gratuito para las plataformas más populares de forma que los binarios (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma.
El entorno de ejecución era relativamente seguro y los principales navegadores web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las páginas web.
Java ha experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un enorme incremento en el número de clases y paquetes que componen la biblioteca estándar2 .
Además de los cambios en el lenguaje, con el paso de los años se han efectuado muchos más cambios dramáticos en la biblioteca de clases de Java (Java class library) que ha crecido de unos pocos cientos de clases en JDK 1.0 hasta más de tres mil en J2SE 5.0. APIs completamente nuevas, como Swing y Java2D, han sido introducidas y muchos de los métodos y clases originales de JDK 1.0 están obsoletas.
En el 2005 se calcula en 4,5 millones el número de desarrolladores y 2.500 millones de dispositivos habilitados con tecnología Java.
Filosofía
El lenguaje Java se creó con cinco objetivos principales:
  1. Debería usar la metodología de la programación orientada a objetos.
  2. Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
  3. Debería incluir por defecto soporte para trabajo en red.
  4. Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
  5. Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.
Para conseguir la ejecución de código remoto y el soporte de red, los programadores de Java a veces recurren a extensiones como CORBA (Common Object Request Broker Architecture), Internet Communications Engine oOSGi respectivamente.
Orientado a objetos
La primera característica, orientado a objetos (“OO”), se refiere a un método de programación y al diseño del lenguaje. Aunque hay muchas interpretaciones para OO, una primera idea es diseñar el software de forma que los distintos tipos de datos que usen estén unidos a sus operaciones. Así, los datos y el código (funciones o métodos) se combinan en entidades llamadas objetos. Un objeto puede verse como un paquete que contiene el “comportamiento” (el código) y el “estado” (datos). El principio es separar aquello que cambia de las cosas que permanecen inalterables. Frecuentemente, cambiar una estructura de datos implica un cambio en el código que opera sobre los mismos, o viceversa. Esta separación en objetos coherentes e independientes ofrece una base más estable para el diseño de un sistema software. El objetivo es hacer que grandes proyectos sean fáciles de gestionar y manejar, mejorando como consecuencia su calidad y reduciendo el número de proyectos fallidos.
Otra de las grandes promesas de la programación orientada a objetos es la creación de entidades más genéricas (objetos) que permitan la reutilización del software entre proyectos, una de las premisas fundamentales de la Ingeniería del Software. Un objeto genérico “cliente”, por ejemplo, debería en teoría tener el mismo conjunto de comportamiento en diferentes proyectos, sobre todo cuando estos coinciden en cierta medida, algo que suele suceder en las grandes organizaciones. En este sentido, los objetos podrían verse como piezas reutilizables que pueden emplearse en múltiples proyectos distintos, posibilitando así a la industria del software a construir proyectos de envergadura empleando componentes ya existentes y de comprobada calidad; conduciendo esto finalmente a una reducción drástica del tiempo de desarrollo. Podemos usar como ejemplo de objeto el aluminio. Una vez definidos datos (peso, maleabilidad, etc.), y su “comportamiento” (soldar dos piezas, etc.), el objeto “aluminio” puede ser reutilizado en el campo de la construcción, del automóvil, de la aviación, etc.
La reutilización del software ha experimentado resultados dispares, encontrando dos dificultades principales: el diseño de objetos realmente genéricos es pobremente comprendido, y falta una metodología para la amplia comunicación de oportunidades de reutilización. Algunas comunidades de “código abierto” (open source) quieren ayudar en este problema dando medios a los desarrolladores para diseminar la información sobre el uso y versatilidad de objetos reutilizables y bibliotecas de objetos.
Independencia de la plataforma
La segunda característica, la independencia de la plataforma, significa que programas escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de hardware. Este es el significado de ser capaz de escribir un programa una vez y que pueda ejecutarse en cualquier dispositivo, tal como reza el axioma de Java, ‘’’write once, run anywhere’’’.
Para ello, se compila el código fuente escrito en lenguaje Java, para generar un código conocido como “bytecode” (específicamente Java bytecode)—instrucciones máquina simplificadas específicas de la plataforma Java. Esta pieza está “a medio camino” entre el código fuente y el código máquina que entiende el dispositivo destino. El bytecode es ejecutado entonces en la máquina virtual (JVM), un programa escrito en código nativo de la plataforma destino (que es el que entiende su hardware), que interpreta y ejecuta el código. Además, se suministran bibliotecas adicionales para acceder a las características de cada dispositivo (como los gráficos, ejecución mediante hebras o threads, la interfaz de red) de forma unificada. Se debe tener presente que, aunque hay una etapa explícita de compilación, el bytecode generado es interpretado o convertido a instrucciones máquina del código nativo por el compilador JIT (Just In Time).
Hay implementaciones del compilador de Java que convierten el código fuente directamente en código objeto nativo, como GCJ. Esto elimina la etapa intermedia donde se genera el bytecode, pero la salida de este tipo de compiladores sólo puede ejecutarse en un tipo de arquitectura.
La licencia sobre Java de Sun insiste que todas las implementaciones sean “compatibles”. Esto dio lugar a una disputa legal entre Microsoft y Sun, cuando éste último alegó que la implementación de Microsoft no daba soporte a las interfaces RMI y JNI además de haber añadido características ‘’dependientes’’ de su plataforma. Sun demandó a Microsoft y ganó por daños y perjuicios (unos 20 millones de dólares) así como una orden judicial forzando la acatación de la licencia de Sun. Como respuesta, Microsoft no ofrece Java con su versión de sistema operativo, y en recientes versiones de Windows, su navegador Internet Explorer no admite la ejecución de applets sin un conector (o plugin) aparte. Sin embargo, Sun y otras fuentes ofrecen versiones gratuitas para distintas versiones de Windows.
Las primeras implementaciones del lenguaje usaban una máquina virtual interpretada para conseguir la portabilidad. Sin embargo, el resultado eran programas que se ejecutaban comparativamente más lentos que aquellos escritos en C o C++. Esto hizo que Java se ganase una reputación de lento en rendimiento. Las implementaciones recientes de la JVM dan lugar a programas que se ejecutan considerablemente más rápido que las versiones antiguas, empleando diversas técnicas, aunque sigue siendo mucho más lento que otros lenguajes.
La primera de estas técnicas es simplemente compilar directamente en código nativo como hacen los compiladores tradicionales, eliminando la etapa del bytecode. Esto da lugar a un gran rendimiento en la ejecución, pero tapa el camino a la portabilidad. Otra técnica, conocida como compilación JIT (Just In Time, o ‘’’compilación al vuelo’’’), convierte el bytecode a código nativo cuando se ejecuta la aplicación. Otras máquinas virtuales más sofisticadas usan una ‘’’recompilación dinámica’’’ en la que la VM es capaz de analizar el comportamiento del programa en ejecución y recompila y optimiza las partes críticas. La recompilación dinámica puede lograr mayor grado de optimización que la compilación tradicional (o estática), ya que puede basar su trabajo en el conocimiento que de primera mano tiene sobre el entorno de ejecución y el conjunto de clases cargadas en memoria. La compilación JIT y la recompilación dinámica permiten a los programas Java aprovechar la velocidad de ejecución del código nativo sin por ello perder la ventaja de la portabilidad en ambos.
La portabilidad es técnicamente difícil de lograr, y el éxito de Java en ese campo ha sido dispar. Aunque es de hecho posible escribir programas para la plataforma Java que actúen de forma correcta en múltiples plataformas de distinta arquitectura, el gran número de estas con pequeños errores o inconsistencias llevan a que a veces se parodie el eslogan de Sun, "Write once, run anywhere" como "Write once, debug everywhere" (o “Escríbelo una vez, ejecútalo en cualquier parte” por “Escríbelo una vez, depúralo en todas partes”)
El concepto de independencia de la plataforma de Java cuenta, sin embargo, con un gran éxito en las aplicaciones en el entorno del servidor, como los Servicios Web, los Servlets, los Java Beans, así como en sistemas empotrados basados en OSGi, usando entornos Java empotrados.
PHP
PHP es un lenguaje de programacióninterpretado, diseñado originalmente para la creación de páginas webdinámicas. Se usa principalmente para la interpretación del lado del servidor (server-side scripting) pero actualmente puede ser utilizado desde una interfaz de línea de comandos o en la creación de otros tipos de programas incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.
Visión general
PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la implementación principal de PHP es producida ahora por The PHP Group y sirve como el estándar de facto para PHP al no haber una especificación formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre.
Puede ser desplegado en la mayoría de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en más de 20 millones de sitios web y en un millón de servidores, el número de sitios en PHP ha compartido algo de su preponderante dominio con otros nuevos lenguajes no tan poderosos desde agosto de 2005. El sitio web de Wikipedia está desarrollado en PHP. Es también el módulo Apache más popular entre las computadoras que utilizan Apache como servidor web.
El gran parecido que posee PHP con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayoría de los programadores crear aplicaciones complejas con una curva de aprendizaje muy corta. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones.
Aunque todo en su diseño está orientado a facilitar la creación de sitios webs, es posible crear aplicaciones con una interfaz gráfica para el usuario, utilizando la extensión PHP-Qt o PHP-GTK. También puede ser usado desde la línea de órdenes, de la misma manera como Perl o Python pueden hacerlo; a esta versión de PHP se la llama PHP-CLI (Command Line Interface).
Cuando el cliente hace una petición al servidor para que le envíe una página web, el servidor ejecuta el intérprete de PHP. Éste procesa el script solicitado que generará el contenido de manera dinámica (por ejemplo obteniendo información de una base de datos). El resultado es enviado por el intérprete al servidor, quien a su vez se lo envía al cliente. Mediante extensiones es también posible la generación de archivos PDF, Flash, así como imágenes en diferentes formatos.
Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y SQLite.
PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos, tales como Unix (y de ese tipo, como Linux o Mac OS X) y Microsoft Windows, y puede interactuar con los servidores de web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI.
PHP es una alternativa a las tecnologías de MicrosoftASP y ASP.NET (que utiliza C# y Visual Basic .NET como lenguajes), a ColdFusion de la empresa Adobe, a JSP/Java y a CGI/Perl. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un entorno de desarrollo integrado comercial llamado Zend Studio. CodeGear (la división de lenguajes de programación de Borland) ha sacado al mercado un entorno de desarrollo integrado para PHP, denominado 'Delphi for PHP. También existen al menos un par de módulos para Eclipse, uno de los entornos más populares.1
Historia
Fue originalmente diseñado en Perl, con base en la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador danés-canadiense Rasmus Lerdorf en el año 1994 para mostrar su currículum vítae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía. El 8 de junio de 1995 fue publicado "Personal Home Page Tools" después de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.
Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintáctico (parser en inglés) en el año 1997 y crearon la base del PHP3, cambiando el nombre del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones públicas de PHP3 y fue publicado oficialmente en junio de 1998.Para 1999, Suraski y Gutmans reescribieron el código de PHP, produciendo lo que hoy se conoce como motor Zend. También fundaron Zend Technologies en Ramat Gan, Israel.
En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El día 13 de julio de 2007 se anunció la suspensión del soporte y desarrollo de la versión 4 de PHP,2 a pesar de lo anunciado se ha liberado una nueva versión con mejoras de seguridad, la 4.4.8 publicada el 13 de enero del 2008 y posteriormente la versión 4.4.9 publicada el 7 de agosto de 2008.3 Según esta noticia [1] se dará soporte a fallos críticos hasta el 9 de agosto de 2008.
El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine 2). Incluye todas las ventajas que provee el nuevo Zend Engine 2 como:
Perl
Perl es un lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del lenguaje C, del lenguaje interpretado bourne shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.
Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de las limitaciones de los otros lenguajes de script.
Historia
Larry Wall comenzó a trabajar en Perl en 1987 mientras trabajaba como programador en Unisys1 y anunció la versión 1.0 en el grupo de noticias comp.sources.misc el 18 de diciembre de 1987. El lenguaje se expandió rápidamente en los siguientes años. Perl 2, publicado en 1988, aportó un mejor motor de expresiones regulares. Perl 3, publicado en 1989, añadió soporte para datos binarios.
Hasta 1991 la única documentación de Perl era una simple (y cada vez más larga) página de manual Unix. En 1991 se publicó Programming Perl (el libro del camello) y se convirtió en la referencia de facto del lenguaje. Al mismo tiempo, el número de versión de Perl saltó a 4, no por marcar un gran cambio en el lenguaje, sino por identificar a la versión que estaba documentada en el libro.Perl 4 trajo consigo una serie de lanzamientos de mantenimiento, culminando en Perl 4.036 en 1993. En este punto, Larry Wall abandonó Perl 4 para comenzar a trabajar en Perl 5. Perl 4 se quedaría en esa versión hasta hoy. El desarrollo de Perl 5 continuó en 1994. La lista de correo perl5-porters se estableció en mayo de 1994 para coordinar el trabajo de adaptación de Perl 5 a diferentes plataformas. Es el primer foro para desarrollo, mantenimiento y adaptación de Perl 5.
Perl 5 fue publicado el 17 de octubre de 1994. Fue casi una completa reescritura del intérprete y añadió muchas nuevas características al lenguaje, incluyendo objetos, referencias, paquetes y módulos. A destacar, los módulos proveen de un mecanismo para extender el lenguaje sin modificar el intérprete. Esto permitió estabilizar su núcleo principal, además de permitir a los programadores de Perl añadirle nuevas características.
El 26 de octubre de 1995, se creó el Comprehensive Perl Archive Network (CPAN). CPAN es una colección de sitios web que almacenan y distribuyen fuentes en Perl, binarios, documentación, scripts y módulos. Originalmente, cada sitio CPAN debía ser accedido a través de su propio URL; hoy en día, http://www.cpan.org redirecciona automáticamente a uno de los cientos de repositorios espejo de CPAN.
En 2008, Perl 5 continua siendo mantenido. Características importantes y algunas construcciones esenciales han sido añadidas, incluyendo soporte Unicode, Hilos (threads), un soporte importante para la programación orientada a objetos y otras mejoras.
Nombre
Perl se llamó originalmente "Pearl", por la Parábola de la Perla. Larry Wall quería darle al lenguaje un nombre corto con connotaciones positivas; asegura que miró (y rechazó) todas las combinaciones de tres y cuatro letras del diccionario. También consideró nombrarlo como su esposa Gloria. Wall descubrió antes del lanzamiento oficial que ya existía un lenguaje de programación llamado PEARL y cambió la ortografía del nombre.
El nombre normalmente comienza con mayúscula (Perl) cuando se refiere al lenguaje y con minúsculas (perl) cuando se refiere al propio programa intérprete debido a que los sistemas de ficheros Unix distinguen mayúsculas y minúsculas. Antes del lanzamiento de la primera edición de Programming Perl era común referirse al lenguaje como perl; Randal L. Schwartz, sin embargo, forzó el nombre en mayúscula en el libro para que destacara mejor cuando fuera impreso. La distinción fue subsiguientemente adoptada por la comunidad.
El nombre es descrito ocasionalmente como "PERL" (por Practical Extraction and Report Language - Lenguaje Práctico para la Extracción e Informe). Aunque esta expansión ha prevalecido en muchos manuales actuales, incluyendo la página de manual de Perl, es un retroacrónimo y oficialmente el nombre no quiere decir nada. La ortografía de PERL en mayúsculas es por eso usada como jerga para detectar a individuos ajenos a la comunidad. Sin embargo, se han sugerido varios retroacrónimos, incluyendo el cómico Pathologically Eclectic Rubbish Lister (Contabilizador de Basura Patológicamente Ecléctico).



5 comentarios:

  1. It can be seen from Thais mega888 agent that there are more amateurs than before. instruction is collected from this channel because players are offered pardon betting formulas.

    ResponderBorrar
  2. The other most important thing is whether you bet 918kiss demo account
    legally on an online gambling site, and every free online gambler should maintain mindfulness regardless of the channel. Have a lot of self-discipline.

    ResponderBorrar
  3. Plays perfectly but in order to play games 918kiss in casino
    918live in ios
    918kiss apk in casino
    casino in malaysia
    with real money in this format, focus and homework come first. Now is the era of video poker, as it exists in almost every casino, for example, it is known that slot machines have the lowest odds among casinos. But depends on the type of slot.
    https://918kissapkiosdrive.car.blog/
    http://jcorso.jigsy.com/
    https://mattheq.livejournal.com/491.html
    https://crutcher.doodlekit.com
    https://www.evernote.com/shard/s724/sh/e8cfa898-924d-46a8-a41b-

    a2957cfaec42/0c94efcdbac5844ffac4fea0edebdd24

    ResponderBorrar
  4. In order to reduce losses and wins, the best event to think of is the "basic strategy" that casino royale xem phim every all-powerful blackjack performer must remember. Those who are enlarged will choose to use this strategy every period they bet. You can purchase strategy cards or deed actions to read. There will be casinos, and no one says that the casinos are not excited in things in the same way as that because in any case, the dealer yet gets water from the player's bet, and even if they yet lose a little percentage of the casino, they will pay more attention to the eagerness of each game bet. Especially in innovative games because it can slow the casino on the other hand of the game. Therefore, you can use strategy but think twice since thinking for a long grow old until the circular of betting games is delayed and additional players are frustrated.

    ResponderBorrar
  5. The blog article very surprised to me! Your writing zipleaf
    is good. In this I learned a lot! Thank you. https://zipleaf.auz.net/Companies/Dgsolagency

    ResponderBorrar