TEMAS:
|
|
|
|
Al estudiar los Lenguajes, pregúntate lo siguiente:
Todas las "aplicaciones" (software para el "usuario final") que conocemos
han debido ser creadas especificando primero sus funciones y traduciendo
éstas en "instrucciones" comprensibles por la máquina.
Para ésto, el o los programadores utilizan un determinado "lenguaje
de programación", que es como un idioma: cuenta con un diccionario
(los "comandos") y una gramática (reglas de sintaxis). El programador
traduce las especificaciones de funciones y operaciones (que están
en su idioma natural y/o en gráficos que especifican su secuencia)
en este idioma, elaborando un producto llamado "programa fuente".
Este programa fuente ha de ser luego traducido (por el mismo computador)
en el "lenguaje de máquina", que es el que "entiende" el microprocesador.
La traducción, por lo tanto, debe hacerse teniendo en cuenta el
"lenguaje" propio del chip procesador (de ahí que un mismo programa
tendrá una versión "para PowerPC (PPC)", "para Pentium",
etc.
Esta traducción puede hacerse de dos maneras: en forma previa
al uso, con lo cual se genera el "programa compilado" o "programa objeto",
o bien se instala junto con el programa de traducción en el computador
del usuario y se hace que la máquina traduzca las órdenes
a medida que lee el programa fuente.
A diferencia de un programa interpretado, un programa compilado (como
la mayoría de las aplicaciones que hoy puede comprar el usuario
común) sólo puede ser utilizado, pero no puede ser leído,
revisado o modificado: la compilación lo hace ilegible. Tratar de
"decompilarlo" para conocer su estructura y modo de funcionar (lo cual
se llama "reverse engineering") es muy complejo y normalmente prohibido
en las condiciones de venta. Así, la versión "fuente" constituye
un "secreto comercial", celosamente guardado por los fabricantes. Veremos,
al final del capítulo, que este secreto puede ser algunas veces
perjudicial para los usuarios. Pero antes hablaremos más detalladamente
de los lenguajes de programación.
Regresar al inicio de esta página
LENGUAJES DE BAJO Y ALTO NIVEL
En efecto, lo único que entienden y pueden manipular la Unidad
de Control y la Unidad Aritmética son dígitos binarios o
sea series de ceros y unos (paso o no paso de corriente eléctrica).
Así, mientras el hombre usa un "lenguaje natural" (idioma) muy rico
en significados, la máquina usa un sistema en que existiría
un sólo "significado": la diferencia entre 0 y 1 (o sea un bit de
información).
¿Cómo lograr más? Simplemente concibiendo un nuevo
lenguaje constituído de "bloques" de dígitos binarios (llamados
"bytes"). Este es el primer paso o "primer nivel" en la construcción
de lenguajes de computación.
1er Nivel
Se dice que el código binario es de "bajo nivel" o "primer nivel"
(porque al usar pocos signos logra muy dificilmente expresar cosas complicadas),
mientras un lenguaje humano es de "muy alto nivel" (con una cantidad mayor
de signos y con reglas combinatorias logra expresar con facilidad cosas
muy complicadas). Todo el esfuerzo, entonces, para facilitar la comunicación
del hombre con el computador, ha de centrarse en el desarrollo de lenguajes
de mayor nivel.
El fabricante de un procesador fija los bloques de bits que llevarán
a la CPU (unidad central de procesos) a reconocer y realizar diferentes
operaciones. Este el el "código de máquina", primer lenguaje
que la máquina puede interpretar y transformar en acciones. Pero
es evidentemente muy difícil de usar para un ser humano. Supongamos
que quiera hacer imprimir y para ello deba decir "10011101 11100010": ¿cómo
recordar órdenes de este tipo y no equivocarse al escribirlas?
Practicamente nadie trabaja hoy a este nivel, excepto los diseñadores
de "chips" procesadores. Del mismo modo que es posible pasar de un sistema
binario a un sistema decimal (más comprensible y más desarrollado
en términos de signos legibles) es posible asociar a los bloques
de bits no solo valores decimales sino también otros signos. Esto
lleva a un segundo nivel de expresión.
Hemos de recordar que el teclado equivale a un conjunto de interruptores:
cada tecla que pulsamos equivale a cerrar brevemente uno de éstos,
es decir produciendo un bit de información (no teclear = 0, teclear
=1). Pero dado que hay muchas teclas, hay que identificar cada una, por
lo cual pulsar una tecla significa activar un circuito que generará
un "bloque" binario (byte) específico que identifica esa tecla.
A cada tecla está asociado un código decimal y un código
hexadecimal. El hexadecimal (16 caracteres: de 0 a 9 y de la A a la F)
es el que sirve de intermediario a la máquina, para traducir nuestro
código natural (alfanumérico) al código binario. Algunos
ejemplos de equivalentes decimales y hexadecimales del teclado son los
siguientes:
Esto permite no sólo reconocer los signos del teclado y reproducirlos (como en un procesador de palabras), sino también atribuir a cada tecla otra función y hacer -por ejemplo- que transmita una orden a la CPU. Así, podríamos ordenar la impresión con un simple "?", o -como es común hoy en los Macintosh- apretando simultáneamente una tecla de "comando" y la letra "P".
Tecla Valor Decimal Valor Hexadecimal 1 49 31 2 50 32 9 57 39 a 97 61 b 98 62 i 105 69 j 106 6A k 107 6B o 111 6F p 112 70 z 122 7A ! 33 21 ? 63 3F = 61 3D
2º Nivel
La creación de un lenguaje más comprensible por el hombre
consiste por lo tanto en establecer la equivalencia de bloques binarios
con signos de nuestro lenguaje habitual. Para permitir la programación
(secuencia de comandos), se usan pequeños conjuntos de signos ("palabras")
de fácil memorización, con las cuales se redactan programas,
por ejemplo "ADC" significará "sumar con reserva" (en inglés:
"ADd with Carry"). Este tipo de lenguaje se llama "ensamblador" o "Assembler"
(Vea más adelante la "Descripción" de Lenguajes). La máquina
misma hará la tarea de traducirlo en código binario, para
seguir las instrucciones, gracias a otro programa cuya función es
traducir la expresión humana en "lenguaje de máquina" (binario).
Es programa se llama "compilador".
Aunque el Assembler es un inmenso progreso en relación al código
binario, su desventaja reside en que permanece estrechamente ligado a los
bloques binarios que reconoce la CPU (es decir al "hardware"). Para facilitar
más la tarea, se han inventado lenguajes de "alto nivel", es decir
más cercanos al modo de expresar del hombre que de operación
de la máquina. Los primeros y más comunes son los llamados
de "tercera generación", más fáciles de manejar y
más independientes de las características técnicas
de los procesadores. Ahora, hasta un aficionado puede llegar a redactar
un programa, sin tener que preocuparse por el código binario o de
ensamble: si un programa traductor podía resolver la transformación
de bloques de signos en bloques binarios, era cosa de extender las habilidades
del traductor para "enseñar" a la máquina cómo "entender"
un lenguaje más complejo y agregar mecanismos automáticos
de manejo de la memoria para poder utilizar lenguajes aún más
comprensibles.
3er Nivel
El avance en el desarrollo de "compiladores" e "intérpretes"
(los dos tipos de programas traductores) ha sido por lo tanto fundamental
en el desarrollo de los lenguajes de "3º generación" cuyas
ventajas además de la facilidad de aprendizaje y lectura/escritura
son las facilidades de corrección, transformación y conversión
de un lenguaje a otro.
Los más antiguos son el FORTRAN (para aplicaciones matemáticas
y científicas) y el COBOL (para aplicaciones de administración
y contabilidad).
Con los micro-computadores nació el BASIC ("para principiantes").
Mucha importancia tiene el PASCAL, especialmente en la docencia. (Más
detalles luego, en la "Descripción" de los lenguajes).
Generadores de aplicaciones o 4º Nivel
Posteriormente, usando estos lenguajes, se han redactado programas
destinados a facilitar un número variado de operaciones en campos
de aplicación específicos como simulación de fenómenos
físicos, manipulación de datos estadísticos, etc.
Los más avanzados y flexibles de estos programas son las planillas
electrónicas u hojas de cálculo y los programas de administración
de archivos o bases de datos (Vea el capítulo "Aplicaciones").
Dados que tales aplicaciones no "hacen nada" sin que el usuario defina
ciertas estructuras y ciertas operaciones, pueden ser consideradas como
"generadores" de aplicaciones, aunque este nombre se reserva habitualmente
para niveles más avanzados en que los usuarios pueden generar sistemas
muy diferentes unos de otros, con "herramientas" que se parecen a lenguajes
de programación. Estas herramientas conforman los lenguajes de cuarto
nivel que son por esencia "programas para crear programas" con una finalidad
específica, como el "CASE" destinado a facilitar el trabajo de los
analistas de sistemas.
Regresar al inicio de esta página
Todo lenguaje, para permitir la programación, ha de contener diversos tipos de instrucciones:
Instrucciones simples:
imprimir lista = imprimir cabeza lista = cola [borra de la lista la cabeza ya impresa] si lista no es vacía, imprimir lista [orden de recursión] sino: fín.Regresar al inicio de esta página
Como explicado a propósito de las "Instrucciones", todo programa
se compone de una secuencia de instrucciones que pueden ser simples o compuestas.
La presencia de instrucciones que deban repetirse muchas veces no sólo
se expresa en las iteraciones, donde dicha repetición es inmediata.
Existen muchos casos en que la repetición no es un flujo contínuo
sino dependiente de otras operaciones o condiciones que son muy variables.
Es el caso por ejemplo de las instrucciones para leer o grabar datos en
un disco.
La programación estructurada, que es una forma de redacción
de programas (obligatoria u optativa, según el lenguaje escogido),
se hace cargo de este requisito facilitando la constitución de "paquetes"
de instrucciones (llamados "sub-rutinas" o "procedimientos"), los que pueden
escribirse una sola vez y ser "llamados" (utilizados) las veces que se
requiera.
Además, pone énfasis en la conveniencia de facilitar
la lectura de los programas haciendo más visible la dependencia
jerárquica de las instrucciones compuestas mediante "indentación",
es decir modificando el ancho del margen izquierdo para cada grupo de instrucciones.
Regresar al inicio de esta página
El "COMPILADOR" es un programa especial destinado a traducir
automáticamente un lenguaje de segunda o tercera generación
en código de máquina (bits), de tal modo que todas las instrucciones
y los datos contenidos en el programa estén en condiciones de ser
reconocidos y ejecutados por la CPU. El programa original se llama "programa
fuente" y se conserva igual que un texto preparado con un procesador de
palabras. La "traducción" es una serie diferentes de caracteres
(utilizables por la CPU) que debe ser grabado en otro espacio de memoria
auxiliar. Se llama "programa objeto". El usuario "carga" el programa objeto
en la memoria principal (RAM) cuando desea utilizarlo. (Los programas comerciales
que compramos vienen bajo la forma de "programa objeto").
Dado que cada procesador tiene su propio "set" de instrucciones, los
compiladores deben estar asociados a los diversos modelos de procesadores
(p.ej. Intel 8088, Motorola 68000, PowerPC). Y ya que existen múltiples
lenguajes de más alto nivel que el código de máquina,
también están ligados a dichos lenguajes. En consecuencia,
debería haber un número de compiladores igual al número
de modelos de procesadores multiplicado por el número de lenguajes
(ej. compilador de PASCAL para Motorola 68000, para Intel 8088, etc.; de
BASIC para Motorola 68000, para Intel 8088, etc.; etc.).
En la realidad el número es menor, ya que no se confeccionan
compiladores para todas las combinaciones posibles.
Regresar al inicio de esta página
Los "INTERPRETES" son programas especiales destinados a "traducir" programas
redactados en lenguajes de tercera generación, pero operan de un
modo distinto de los compiladores. Aquí, no se crea un "programa
objeto", sino que -cada vez que se desea usar el programa fuente- se opera
leyéndolo y traduciéndolo instrucción por instrucción
en lenguaje de máquina. En este caso, el intérprete debe
estar previa y constantemente disponible en la memoria principal, ya que
de él depende la ejecución del programa.
Los primeros microcomputadores (especialmente los modelos "hogareños")
se entregaban con un intérprete de BASIC "incorporado", lo cual
quiere decir que tenían un chip con el intérprete grabado
en ROM, adjunto al procesador. De este modo podían traducir y ejecutar
instrucciones de BASIC desde el momento en que se encendían.
Regresar al inicio de esta página
Los 'SISTEMAS OPERATIVOS" son programas de funcionamiento permanente,
no específicos, que deben cargarse en la memoria principal antes
de cualquier otro programa o aplicación específica. Son conjuntos
de instrucciones que cualquier programa requiere para poder operar, por
lo cual era más razonable y económico separarlos (en vez
de repetir las mismas instrucciones preliminares en cada programa). Responden
tanto a un concepto de modularidad como de eficiencia ya que -al ser independientes-
basta que se carguen al encender el computador para luego poder ejecutar
varios programas sin necesidad de volver a dar estas instrucciones.
Su objetivo fundamental es "tender un puente" activo entre el hardware
y el software encargándose de las funciones de:
Sistemas operativos de computadores personales
Los sistemas operativos hoy más difundidos en los computadores
personales (PC) son dos:
RESUMEN DE LENGUAJES DE PROGRAMACION MAS COMUNES
ADA
Es un lenguaje estructurado parecido al PASCAL,
destinado a controlar mecanismos en "tiempo real" (o sea una velocidad
compatible con las necesidades reales), pero de gran complejidad. Admite
una programación "orientada a objetos" y un sistema de alta modularidad
de tipo hipertexto.
Fue elaborado a pedido del Departamento de Defensa de los Estados Unidos
y establecido como norma para todos los fabricantes que participaban en
el programa de la Iniciativa de Defensa Estratégica (IDE, también
llamado "Guerra de las Galaxias").
Regresar al inicio de esta página
ASSEMBLER (ENSAMBLADOR)
Como señalado a propósito del "Primer Nivel" de los lenguajes,
el Assembler es directamente dependiente de los circuitos electrónicos
de los procesadores (que constituyen el núcleo de los computadores),
por lo cual escribir en Ensamblador sigue siendo una tarea muy compleja,
a lo cual hay que sumar que el código varía de un procesador
a otro aunque existe ya un jerga común para ciertas operaciones
como las aritméticas y lógicas, por ejemplo:
ALGOL
El ALGOL ("ALGOrithmic Lenguage") es el primer lenguaje que fue creado
por un comité internacional. En 1960 se reunieron representantes
de varios países europeos y de Estados Unidos para crear un lenguaje
destinado a "describir procesos" mediante instrucciones de control (iteraciones
y alternaciones) de nivel más elevado que las existentes en las
versiones existentes de su predecesor, el FORTRAN.
Permite escribir programas de resolución de problemas en forma
limpia y clara, de fácil lectura. Aunque poco "transportable" (no
permite con facilidad que un programa escrito para un tipo de computador
funcione en otro), es de gran importancia conceptual por cuanto introdujo
la "programación estructurada", lo cual influyó en muchos
lenguajes creados posteriormente.
En 1968 se implementó una nueva versión multi-propósito
especialmente orientada a la tercera generación de computadores
que empezaban a copar el mercado. (A diferencia de la primera versión,
ésta resultó muy compleja y, por ello, tuvo poco éxito).
EJEMPLO:
REAL PROCEDURE exp(x); VALUE x; REAL x; BEGIN REAL sum, term, n; sum:= 1; term:= 1; n:= 0; FOR n:= n+1 WHILE abs (term) > 0.001 DO BEGIN term:= x * term / n; sum:= sum + term END; exp:= sum END.Regresar al inicio de esta página
BASIC
El BASIC ("Beginner's All-purpose Symbolic Instruction Code")nació
con los microcomputadores, como un lenguaje simplificado y multi-propósito
destinado a los usuarios no-especialistas.
Permite resolver problemas numéricos o comerciales así
como crear y mantener archivos, realizar gráficos lineales, etc.
Es por esencia un lenguaje interpretado y no-estructurado. Sin embargo,
existen algunos compiladores, pero no es común recurrir a ellos.
Y también es factible redactar los programas en forma estructurada.
EJEMPLO
10 INPUT A 20 INPUT B 30 C = A+ B 40 IF C > 100 THEN 90 50 PRINT "Suma = "; C 60 PRINT 70 PRINT "Desea seguir? "; : GET R$ 80 IF R$ = "S" THEN 10 90 PRINT "Resultado superior a 100!" 100 ENDRegresar al inicio de esta página
C y C++
El lenguaje "C" es bastante reciente y está especialmente orientado
hacia el desarrollo de software de sistemas operativos y utilitarios que
anteriormente se escribían en Assembler. Se usa hoy como base para
crear el software que funciona con el sistema operativo "UNIX", logrando
un alto grado de portabilidad, es decir de independencia respecto de los
procesadores (con lo cual es fácil lograr que un mismo programa
pueda ser ejecutado en diferentes modelos de computadores).
El "C++" es un lenguaje desarrollado a partir del "C" pero con una
estructura "orientada a objetos", lo cual facilita un mejor manejo de datos.
Regresar al inicio de esta página
COBOL
EL COBOL ("COmmon Business-Oriented Language") es uno de los primeros
lenguajes de programación creados. Fue desarrollado en 1960 por
CODASYL (Conference on Data Systems Languages), un comité en que
participaron fabricantes y usarios, a pedido de la Marina de los Estados
Unidos. Este comité estuvo dirigido por la Dra. Grace Hopper, una
de las primeras programadoras de la computadora ENIAC. Es uno de los pocos
lenguajes reconocidos como norma internacional (americana por el ANSI -American
National Standards Institute- y europea por el ISO -International Organization
for Standardization-).
Está orientado -como su nombre indica- a aplicaciones comerciales,
por lo cual sus instrucciones están especialmente diseñadas
para facilitar la entrada y salida de datos (impresión de tablas,
etc.). Se pretendió que se pareciera lo más posible a un
lenguaje natural, por lo cual requiere mucho más escritura que otros
lenguajes. Esto facilita la lectura posterior pero resulta aburrido para
los redactores. Debe iniciarse con secciones donde se declaran todas las
variables y los periféricos que se van a usar, cosas que muchos
lenguajes posteriores ya no requieren.
Los programas escritos en COBOL, que es un lenguaje compilado, se clasifican
en cuatro divisiones: Identification, Enviroment, Data
y Procedure. La Identification division especifica el nombre
del programa y contiene información general del programa como puede
ser su autor, fecha en que se escribió y una pequeña descripción
de su utilidad, así como cualquier otra documentación que
el programador desee añadir.
La Enviroment division especifica qué equipo o equipos
se están utilizando, y los archivos empleados en el programa para
la entrada y la salida.
La Data division describe los datos utilizados en el programa.
La Procedure division contiene la parte del procesamiento que
dicta las acciones del programa.
EJEMPLO
IDENTIFICATION DIVISION. PROGRAM-ID. SUMA. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ENTRADA ASSIGN TO INPUT. SELECT SALIDA ASSIGN TO OUTPUT. DATA DIVISION. FILE SECTION. FD ENTRADA LABEL RECORD IS OMITTED. 01 VENTA. 02 VALOR PICTURE 9999V99. 03 FILLER PICTURE X(44). FD SALIDA LABEL RECORD IS OMITTED. 01 RESULTADOS PICTURE X(132). WORKING STORAGE SECTION. ... PROCEDURE DIVISION. ...Regresar al inicio de esta página
FORTRAN
El FORTRAN ("FORmula TRANslator") fue desarrollado entre los años
1954 y 1957 por un equipo dirigido por James Backus, fue el primer lenguaje
compilado e inclusive hoy en día es usado ampliamente en la solución
de problemas numéricos. Aunque fue el más común hasta
1970, sigue siendo de primera importancia en aplicaciones científicas
por cuanto se adapta muy bien a la forma tradicional de escribir fórmulas
matemáticas. Al contrario, no se presta con facilidad al manejo
de archivos y produccción de tablas de resultados.
Existen numerosas versiones y perfeccionamientos posteriores. (La versión
de
1966 fue instituída como estándar por el Instituto Americano
de Estandarización, reemplazándola por el FORTRAN 77 en la
década siguiente).
EJEMPLO
INTEGER A, B, C 10 READ (5,1010) A, B 1010 FORMAT (I4,I4) C = A - B IF (C. EQ. 0) GO TO 20 WRITE (6,1020) C 1020 FORMAT (I4) GO TO 10 20 STOP ENDRegresar al inicio de esta página
HYPERTALK
"HyperTalk" es el lenguaje desarrollado por Dan Winkler para Bill Atkinson,
el creador del "HyperCard" para Apple-Macintosh. Está orientado
a la creación de aplicaciones conforme al sistema de "hiperarchivos"
(sistemas de fichas interrelacionadas donde se facilita el "navegar" de
un archivo a otro).
HyperTalk es un buen ejemplo de lenguaje orientado a objetos. Este
tipo de lenguaje combina la lógica declarativa con los algoritmos
(Vea "PROLOG"). Un programa ya no es una secuencia
de instrucciones sino un conjunto de objetos agrupados en conjuntos, definidos
mediante atributos y a los cuales pueden asociarse instrucciones. Así,
en HyperCard, existen archivos ("stacks" o "pilas") que agrupan fichas
("cards"), y cada una de éstas contiene campos de datos y botones.
Todos son "objetos" que -si bien mantienen entre sí una relación
jerárquica- tienen asociados paquetes de instrucciones ("scripts")
independientes unos de otros. Cada objeto pertenece a un conjunto (como
fichas o botones) que tiene "atributos" propios comunes a todos sus miembros,
y cada atributo tendrá un valor común o específico
para cada caso. Para dar o buscar dicho valor intervienen "facetas" que
son instrucciones (procedimientos) asociadas.
Regresar al inicio de esta página
HTML
El HTML o "HyperText Marking Language" es el lenguaje que se utiliza
para crear páginas -como la presente- en World Wide Web.
El HTML se basa en los mismos principios que el HyperTalk, permitiendo
definir segmentos (de texto o ilustraciones) que remiten a otros, facilitando
una "navegación" por múltiples vías, a gusto del usuario.
Así es como el botón "Home" tiene asociadas las instrucciones
que indican al procesador que busque la primera ficha o página del
archivo llamado "Home" o "index" en el archivo del computador que presta
el servicio de conexión (servidor). Y si se hace un clic en
una palabra subrayada, se pasa a ver otra sección del mismo documento
o algún otro documento (otro "objeto").
El HTML no es propiamente un lenguaje de programación , sino
solo de exhibición de contenidos y navegación, porque no
define operaciones.
Regresar al inicio de esta página
JAVA
JAVA es un lenguaje de programación basado en el C++
(con cambios en la sintaxis y nuevas restricciones de codificación).
Permite agregar animaciones y puntos sensibles en páginas de texto.
Aunque se lo pretende presentar como "EL" lenguaje destinado a desarrollos
para World Wide Web, es mucho mas complejo que el HTML
e incluso que otros lenguajes utilizables por los browsers (navegadores)
de la Web.
Una versión muy reducida es el "JavaScript", que se puede combinar
con el lenguaje HTML, dentro de una página web.
Regresar al inicio de esta página
LISP
LISP ("LIst Processing Language") es un lenguaje computacional bastante
diferente de los demás. Es un lenguaje funcional, es decir que acumula
informaciones e instrucciones bajo la apariencia de fórmulas (como
en álgebra). Estas informaciones toman la forma de listas (de ahí
su nombre), que son memorizadas y comparadas para efectuar luego operaciones
que consisten en "evaluar las fórmulas". El conjunto de funciones
constituye el programa en cuanto la evaluación de una función
llama a otra y así sucesivamente (en forma eminentemente recursiva).
El control de la ejecución depende del intérprete (que busca
la secuencia y la traduce en lenguaje máquina), mientras depende
del programador la forma en que las funciones se llaman entre sí.
El objetivo de este tipo de lenguaje es asemejarse a una forma humana
de conservación de información (la de las descripciones)
y permitir la construcción de programas que se enriquezcan o ajusten
en función del uso (simulando aprendizaje). Así, LISP es
el primer lenguaje creado con el fín de ser una herramienta para
el desarrollo de la inteligencia artificial.
EJEMPLO
? (de append (L1 L2) (if (null L1) L2 (cons (cor L1) (append (cdr L1) L2))))Regresar al inicio de esta página
LOGO
Creado por Seymour Papert, padre de la "computación educativa",
el LOGO está destinado a la enseñanza de la programación
a los niños, desde temprana edad. Por ello es sobretodo conocido
por su capacidad gráfica y su "tortuga", que es el puntero con el
cual se realizan los dibujos. Es altamento modular y deja gran libertad
al usuario para definir procedimientos desde muy simples hasta muy complejos,
en forma jerárquica, permitiendo incluso el control de periféricos
mecánicos (operación de pequeños robots). Aunque bastante
poderoso (se han escrito procesadores de palabras en LOGO), practicamente
no es utilizado fuera de la escuela básica.
EJEMPLO
Lo que conforma el cuadrado puede simplificarse como: HACER
4 (ADELANTE 20. ROTACION 90). y ser utilizado repetidamente definiendo
el comando "Cuadrado":
>CUADRADO: HACER 4 (ADELANTE 20. ROTACION 90).
Esta definición se puede generalizar reemplazando la longitud por una variable (El programa pide automáticamente en pantalla el valor de una variable si lo desconoce): >CUADRADO: HACER 4 (ADELANTE LADO. ROTACION 90).
(Las órdenes para bajar y levantar la "pluma" -que permiten dejar o no dejar rastro al mover la "tortuga" - pueden introducirse o no en la definición, a voluntad).
PASCAL
Del nombre del filosófico y matemático francés,
PASCAL es un lenguaje inicialmente diseñado para la docencia introductoria
de la programación (a nivel superior). Surgió alrededor de
1970, en gran parte como reacción simplificadora después
de la creación de los muy complejos PL/1 y ALGOL68
para los nuevos computadores de tercera generación.
Muy inspirado en la primera versión oficial de ALGOL
(60), es un lenguaje muy estructurado y con alta modularidad. Tuvo por
ello -y por su simplicidad- mucha aceptación al punto de ser utilizado
para crear importantes aplicaciones e incluso compiladores y sistemas operativos
(antes desarrollados en Assembler).
EJEMPLO
PROGRAM CALCULATOR; VAR A, B: INTEGER; OPERATION; CHAR; BEGIN REPEAT READLN (A, OPERATION, B); IF OPERATION = '+' THEN WRITELN (A + B) ELSE IF OPERATION = '-' THEN WRITELN (A - B) ELSE IF OPERATION = '*' THEN WRITELN ( A* B) ELSE IF OPERATION = '/' THEN WRITELN (A / B) UNTIL FALSE END.Regresar al inicio de esta página
PERL
Es un lenguaje especializado en el procesamiento de textos, particularmente
extraer y validar las respuestas a cuestionarios incluidos en páginas
web.
Regresar al inicio de esta página
PL/1
EL "PL/1" es un lenguaje multi-propósito creado por IBM y SHARE,
especialmente a raíz del paso de la segunda a la tercera generación
de computadores, cuando se preveía la creciente difusión
de estas máquinas y su posible uso en una gama creciente de actividades.
Pretendía ampliar las posibilidades del FORTRAN
fusionando conceptos provenientes del COBOL y el ALGOL.
La gran cantidad de instrucciones, tipos de datos y casos especiales
que contempla lo hacen difícil de aprender y dominar, razón
de su poca difusión.
EJEMPLO
TRAPZ: PROCEDURE OPTIONS (MAIN); DECLARE (J,K) FIXED DECIMAL (2), AREA FIXED DECIMAL (8,6); PUT SKIP EDIT ('AREA BAJO LA CURVA') (X(9),A); PUT SKIP; DO K=4 TO 10; AREA=0.5/K; DO J=1 TO K-1; AREA=AREA+((J/K)**2)/K); END; PUT SKIP EDIT ('PARA DELTA X=1/',K,AREA) (X(2),A,F(2),X(6),F(9,6); END; END;Regresar al inicio de esta página
PHP
Lenguaje que se acopla al HTML (páginas
web) para definir procedimientos que ha de realizar el servidor de web,
por ejemplo procesar un formulario, enviar o extraer datos de una base
de datos (acoplándose también con un lenguaje de tipo SQL),
enviar una u otra página web según determinadas condiciones
prefijadas por el programador, etc.
Regresar al inicio de esta página
PROLOG
Los primeros años de la décado del 70 son conocidos como
un período de "crisis del software", en que se descubrió
que la creación de buenos programas involucraba costos mayores que
los del hardware que los ejecuta. También se hacía patente
una creciente necesidad de procesar "conocimientos" (algo mucho más
amplio y complejo que los datos cuantitativos o meras "secuencias de caracteres"
a los cuales se reducen muchos lenguajes de programación). Esta
crisis llevó a investigar numerosas alternativas, entre las cuales
nuevos lenguajes no basados en instrucciones algorítmicas o procedimientos.
Si el hombre "procesa" más información por inferencia lógica
que por cálculo, ¿no podría la máquina hacer
lo mismo?
PROLOG ("PROgramación en LOGica") es una respuesta a esta crisis,
producto del avance de la lógica moderna (de tipo funcional). Lo
crearon A. Colmenauer y Ph. Roussel, con la colaboración de R. Kowalski,
simultáneamente en la Universidad de Aix-Marseille (Francia) y Edimburgo
(Gran Bretaña). Se basa en el cálculo de predicados de primer
orden y en el principio de resolución de Robinson. En vez de ser
algorítmico ("procedural" en inglés, término sin traducción),
es decir concebido como un conjunto de instrucciones que la máquina
debe ejecutar en forma secuencial, es "declarativo", es decir basado en
definiciones (de "hechos" o "reglas", como se explica más abajo).
EJEMPLO
En lógica funcional, los datos básicos ("hechos" en terminología PROLOG) podrían escribirse:
une(Paris,Rio,Vuelo36). une(Rio,Santiago,Vuelo71).Vemos que la relación ("une") es la misma y que hay un término común en la lista de argumentos (lo que hay entre paréntesis). Solo falta explicitar una regla idéntica a la que se usa para extraer una conclusión a partir de dos premisas en un silogismo:
camino(Paris,Santiago) <- une(Paris, x, n), une(x, Santiago, m).
o sea "Hay un camino entre París y Santiago si algún
vuelo (n) une París con una ciudad 'x' y (&) otro vuelo (m)
une esta ciudad 'x' con Santiago.
Un "programa" en PROLOG se conforma con estos dos tipos de expresiones
(llamadas "cláusulas"): "hechos" y "reglas". Una cláusula
con forma de hecho y seguida de un '?' constituye la forma habitual de
consultar la información. Si no contiene ninguna variable, el programa
verifica si existe una "copia" en la lista de hechos y contesta por sí
o no. Si contiene una o más variables busca cuales se ajustan a
la descripción o pueden ser deducidas mediante las reglas y señala
el valor correcto de las diferentes variables (o bien "No" si no hay respuesta
posible).
Regresar al inicio de esta página
SQL
Lenguaje desarrollado especialmente para facilitar la consulta de bases
de datos (BD), acotando progresivamente la búsqueda (de ahí
el nombre de "Sequential Query Language").
Existen hoy numerosas aplicaciones de administración de bases
de datos que recurren al SQL (Las más conocidas, potentes - y caras
- son Oracle e Informix).
Hoy se pueden acoplar las bases de datos a hipertextos (páginas
web), para lo cual las buenas aplicaciones ya traen módulos que
hacen la conexión. El lenguaje PHP del cual hablamos
más arriba también sirve para definir procedimientos de inserción
y de consulta de datos en BD (Base de Datos) que funcionan con SQL.
Regresar al inicio de esta página