LENGUAJES DE PROGRAMACION
TEMAS:
José Carlos Sarur Zanatta
Regresar a la página anterior


GUIA

 Al estudiar los Lenguajes, pregúntate lo siguiente:

Un computador no hará nada si no se le dan órdenes. Estas pueden ser tipeadas directamente en el teclado pero, salvo que la tarea sea muy sencilla -como hacer alguna operación aritmética-, sería muy ineficiente, por lo cual se requiere redactar primero un programa, con la serie completa de instrucciones para que la máquina realice lo que deseamos. Pero si hablamos tanto de "tipear" órdenes directas como de agruparlas en un programa, estamos hablando de usar un teclado parecido al de una máquina de escribir, con letras, cifras y signos. Ha de usarse, por lo tanto, un determinado lenguaje... ¡que el computador, originalmente, no entiende!
Regresar al inicio de esta página
 
 

COMO NACE UNA APLICACION

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:

 
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
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".

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
 
 

ESTRUCTURA DE UN LENGUAJE

Todo lenguaje, para permitir la programación, ha de contener diversos tipos de instrucciones:

Instrucciones simples:

Instrucciones compuestas: En este ejemplo, se introduce un concepto muy importante en el desarrollo y uso de lenguajes de programación: la recursividad, factible por el hecho de que lo que se manipula es siempre un valor colocado en alguna celda de memoria. Así, si bien la matemática no puede aceptar una ecuación como N=N+1, aquí estamos ante una instrucción (no una ecuación) que significa "tomar el valor que está en una celda llamada N, sumarle 1 y volver a colocar el nuevo valor en la celda llamada N. Ésta es una "instrucción de asignación".
Algunos lenguajes (el Algol y sus descendientes como Pascal y "C", y también Lisp y Prolog en que este procedimiento constituye la esencia del lenguaje) van aún más lejos y permiten una recursividad consistente en la posibilidad de que una instrucción compuesta ordene la ejecución de sí misma. El siguiente podría ser una breve ejemplo:
Para imprimir una lista con una instrucción recursiva, basta tener en cuenta que una lista se compone de una cabeza (primer elemento) y una cola (el resto). Obviamente la cola es también una lista, por lo cual se le puede aplicar el procedimiento consistente en separar su cabeza de su cola, y así sucesivamente, hasta encontrar una cola vacía. Por lo tanto, se puede ordenar algo así: Regresar al inicio de esta página
 
 

PROGRAMACION ESTRUCTURADA

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
 
 

COMPILADOR

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
 
 

INTERPRETE

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
 
 

SISTEMA OPERATIVO

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:

1. Interfaz con el usuario:

La interfaz (o forma de interacción) puede ser de tipo intuitivo, como el escritorio, los íconos y las ventanas del Macintosh o de Windows (llamados por ello "entorno de escritorio"), o bien basada en "lenguaje de comandos" como en DOS,
2. Administración de la CPU y la memoria principal:

Crea subdivisiones en la RAM, indicando dónde deben colocarse las instrucciones, los datos originales y los que generen los programas. En algunos casos puede hacer que sólo una parte de un programa o de los datos sea "cargada" -y reemplazada en el momento oportuno-, para economizar espacio y trabajar con un conjunto de información mayor que el que cabe en la RAM (caso común de las bases de datos). (En este caso se habla del uso de "memoria virtual").
3. Administración de la memoria auxiliar:

Determina la longitud de los "paquetes" de datos que leen desde o envían a los dispositivos de memoria auxiliar, la forma y el lugar físico en que se guardan, la forma de acceder a ellos (construyen el "directorio" o índice de los discos, por ejemplo).
Para todas estas funciones, el sistema operativo reconoce ciertas instrucciones que forman parte del lenguaje de alto nivel (p.ej. "open", "read", "write", "save", etc.) y genera para cada una múltiples instrucciones en lenguaje de máquina de tal modo que el procesador efectúe todas las operaciones requeridas.
Los sistemas operativos también determinan la forma en que se codifican las instrucciones y los datos que provienen del teclado. Todos los sistemas de origen americano hoy usan el  ASCII (American Standard Code for Information Interchange), que tenía originalmente 128 caracteres (suficiente para el inglés). Pero esta cantidad impedía el uso de varios signos, entre ellos los acentos. Por ello se usa hoy el "Ascii extendido", que cuenta con 256 caracteres. Pero en la segunda serie de 128 caracteres, los diferentes sistemas operativos han recurrido a opciones diferentes y no son compatibles entre sí (razón por la cual los textos acentuados se ven con caracteres extraños cuando se pasa de un tipo de computador a otro, como del Macintosh al PC).
Es también la razón por la cual, en el correo electrónico, conviene escribir sin acentos (usando el ASCII reducido), para asegurar un texto más legible.

Sistemas operativos de computadores personales
Los sistemas operativos hoy más difundidos en los computadores personales (PC) son dos:

El DOS, nacido a fines de los años setenta, ya tiene numerosas versiones, que han tenido que introducir numerosos "parches" para poder administrar la cantidad de memoria de que hoy se dispone (en RAM y en disco) y en la cual no se soñaba en la época de su creación. Originalmente destinado a expertos, ha tenido que ser complementado con una interfaz gráfica -de la cual no disponía-, conocida como "Windows". Dada la gran libertad de manejo de las instrucciones básicas, las aplicaciones variaban mucho en la manera en que presentaban al usuario las opciones de trabajo (ventanas, comandos, etc.), hasta que "Windows 95" se impuso como estándar para las aplicaciones finales en PC-DOS.
El MacOS fue concebido desde el inicio (1984) como un sistema basado en metáforas visuales y orientado al tratamiento de información gráfica, lo cual facilita enormemente la interacción humana. También se ha caracterizado por la coherencia de todas las aplicaciones que funcionan con él. Siempre se respeta el mismo diseño y manejo de las ventanas, la estructura de los menus y posición de los comandos en éstos, etc. lo cual hace muy fácil aprender a usar aplicaciones nuevas y pasar de una a otra. El MacOS es además capaz de leer datos generados en "PC compatibles" y guardados en diskettes de formato DOS (aunque no todos los formatos de datos, ya que éstos dependen de las aplicaciones que los crearon): su diskettera es más "compatible" que la de los otros PC. Las máquinas más potentes también pueden ser cargadas con una aplicación especial ("SoftPC" o "SoftWindows") para utilizar programas hechos para el DOS.
En el futuro es probable que estas diferencias desaparezcan, ya que se está trabajando en un sistema operativo más universal y en aplicaciones que funcionen cualquiera sea el sistema operativo (gracias, por ejemplo, al lenguaje "Java").
Importancia creciente está tomando el sistema operativo "Linux", que es un sistema derivado del Unix (sistema operativo de "mainframes" y estaciones de trabajo) y destinado a los computadores personales (con versiones para los procesadores Intel y Motorola-PPC). Su principal ventaja es que su código fuente es "abierto", es decir de conocimiento público, a diferencia de los códigos-fuente de los MacOS, DOS y Windows, que sólo se entregan compilados. De este modo, cualquier programador capacitado puede revisar, mejorar o ajustar a sus propias necesidades su propio Linux, mientras esto es imposible con MacOS y DOS/Windows. Incluso los programadores de aplicaciones finales deben contar con licencias especiales de los fabricantes (Apple y Microsoft) para poder conocer las funciones incluídas en estos sistemas operativos, lo cual da a dichos fabricantes un poder de control que puede ser excesivo (razón, en parte, de los juicios contra Microsoft). . En efecto, es posible incluir en el sistema operativo funciones no reveladas, lo cual permite a su fabricante desarrollar aplicaciones finales que funcionan mejor que las de sus competidores, o incluso que impiden que éstas tengan acceso al procesador o que fallen reiteradas veces (lo cual facilita una competencia desleal). Por todo ello crece un importante movimiento en favor de los sistemas y aplicaciones "libres" (es decir de código fuente "abierto", o sea público, lo cual no quiere decir "gratis").
Regresar al inicio de esta página
 
 

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:

Las instrucciones de este tipo deben ir seguidas sea de dos valores (dos números a sumar o multiplicar por ejemplo) o del nombre de una variable. Cuando se ejecute el programa, el valor de una variable nombrada deberá provenir de una operación anterior que (Estas son "instrucciones de asignación").
El Assembler contiene además un conjunto mínimo de instrucciones de alternación e iteración indispensables para que un programa pueda funcionar como tal.
Regresar al inicio de esta página
 

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:

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

Regresar 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

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

Regresar 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

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

Regresar al inicio de esta página
 

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

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

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

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
 
 

José Carlos Sarur Zanatta
Regresar a la página anterior

Hosted by www.Geocities.ws

1