Sunteți pe pagina 1din 31

Capítulo lV

Programación

Francisco Javier Noguera Otero y Daniel Riera Terrén

Marco Galindo, M. de J., Marco Simó, J. M, Prieto Blázquez, J., Segret Sala (eds). (2010). Escaneando la
informática. Barcelona: UOC p.101-115
l. Introducción

Como ya se ha dicho anteriormente, un ordenador es una m á q u i n a capaz de

ejecutar algoritmos (programas). Esta definición une los conceptos de hardware

y software. Estos son conceptos antagónicos, pero complernentanos, ya que no

tienen sentido el uno sin el otro.

La programación es la fase final --€ntendida corno objetivo- del desarrollo del

software, que se concreta en la ingeniería del software (véase el capítulo 6). Para ase­

gurar la buena calidad de éste, antes se tienen que hacer unos buenos análisis y

diseño, y después, una buena depuración de errores y una ímplantacíón correcta,

así como un buen mantenimiento posterior. Todas estas fases se complementan y

giran en torno a la realización de un software que resuelva un problema concreto.

Antiguamente, cuando se detectaba un problema, se programaba directa­

mente la solución. Actualmente, debido a la complejidad creciente de los pro­


gramas, las necesidades referentes al funcionamiento correcto de éstos y la exi-

gencia de ciertos niveles de rendírníento, ha ido surgiendo toda una metodolo­

gía para asegurar el buen desarrollo del software.


Este texto se centra en lo que algunos autores se han atrevido a bautizar

corno el arte de la programación. Para adentrarnos en este inundo, pnrnerarnen­

te, presentaremos la historia, que está directamente relacionada con la apari­

ción y la evolución de los diferentes lenguajes. Así, los lenguajes de programa­

ción que se van proponiendo tienen a menudo una relación directa con las

necesidades históricas del momento, La primera parte termina mostrando los

lenguajes que m á s se utilizan en la actualidad. Presentamos las razones por las

que han alcanzado su estatus actual y, por otra parte, sus debilidades. Por últi­

mo, se discuten los grandes fracasos del mundo de la programación.

Aunque no se pretende profundizar en la programación en sí misma, sí que

se introducen las bases: componentes de un programa, manera de estructurar­

los y una cala de la manera de medir su calidad. lgualrnente, se presentan los

paradigmas existentes y las características propias de cada uno, así corno algu­

nos conceptos del software libre y las diferencias con el software propietario.
2. ¿Qué es un programa? ¿Quién programa?

A u n q u e quizás no tengamos una idea clara de a qué nos referimos cuando

hablarnos de programar, sin ser conscientes de ello, a lo largo de nuestras vidas

lo hacemos bastante a menudo y de maneras diversas. Así, programamos el

vídeo para que se active a una hora determinada y grabe, programamos la hora

a la que tiene que sonar el despertador, e incluso, hacernos viajes prcgramados.

¿Pero, realmente, tiene todo eso alguna relación con los programas de ordena­

dor?

Al contratar un viaje programado nos ofrecen la lista de los lugares adonde

iremos, qué día iremos, qué visitaremos y qué actividades realizaremos, Así, el

programa, en este caso, es una especificación detallada previa del acontecimien­

to. Aunque eso ya nos va dando ciertas pistas de lo que se considera un progra­

ma en el mundo de la informática, más cercanos aún son los otros dos ejem­

plos. Cuando programarnos el despertador o el vídeo, le damos una orden --0 un

conjunto de órdenes- que en un cierto momento del futuro ejecutará automá­

tícarnente.
Reuniendo estas ideas, podernos acercarnos a la idea de programa, ahora ya

desde el punto de vista infonnático. Diremos, hoy por hoy, que un programa es

un conjunto de órdenes ordenadas que la m á q u i n a ejecutará para llevar a cabo

una tarea deterrmnada.

Si buscamos la definición en el diccionario, vemos que es bastante parecida

a lo que acabamos de decir: "Conjunto unitario de instrucciones que permite a

un ordenador realizar diversas funciones, corno el tratamiento de textos, el dise­

ño de gráficos, la resolución de problemas matemáticos, el tratamiento d e b a n ­

cos de datos, etc.". Así, las órdenes que darnos al ordenador se llaman instruc­

ciones y la ejecución de éstas hace que el ordenador cumpla ciertos objetivos.


Un programador, por tanto, será la persona capacitada para decirle al orde­

nador qué tiene que hacer y especificarle c ó m o lo tiene que hacer. Así, tiene que

conocer las instrucciones que se pueden utilizar para que el ordenador las

entienda y las pueda ejecutar. Para hacerlo, como veremos más adelante, tiene

que ser capaz, prlrnero, de escribir un algoritmo (conjunto de pasos) para solu­

cionar el problema, y después traducirlo a un programa utilizando un lenguaje

de programación. El hecho de traducir un algoritmo a un programa (que deno­

minaremos código fuente o simplemente código) se llama programar o codifi­

car.

A u n q u e el trabajo de la programación, hoy día, es bastante c ó m o d o -vísras

las facilidades que ofrecen las herramientas de apoyo-, es interesante ver c ó m o

ha ido evolucionando hasta llegar al punto donde nos encontramos.


3. Historia

A finales de 1976, los tripulantes de un fl a m a n t e caza Fl6 de las fuerzas aére­

as de los Estados Unidos vieron sorprendidos que, en determinados momentos,

el avión giraba 180 grados y quedaba cabeza abajo. Después de analizar cuál

podía ser el problema, detectaron que provenía de un signo menos mal coloca­

do dentro del programa de navegación del aparato. Este error hacía q u e el apa­

rato girara cada vez que cruzaba el ecuador. Menos mal que estas primeras prue­

bas las hicieron sobre simulador, ya que si no el susto, sin duda, hubiera sido

mucho mayor.

Es curioso que un programa de algunos miles de líneas (y por lo tanto, de

varios mlllones de caracteres) pueda depender de un solo signo, pero la progra­

rnacíón no es un ejercicio simple y cualquier programa, por sencillo que sea, es

susceptible de tener errores. Preclsarnente para evitar los errores y facilitar la

programación, los lenguajes y los paradigmas de prograrnacíón h a n ido evolu­

cionando contínuarnente. Veamos, pues, c ó m o ha sido esta evolución.


Las diferencias entre los primeros programas y lenguajes, llamados de prime­

r11 generación, y los que se utilizan actualmente es muy grande, no sólo por el

cambío de tipos de problemas que hay que resolver sino por las estrategias

seguidas para la simplificación, el diseño, la división en subproblemas, etc.

Los lenguajes de programación evolucionan buscando la s t m p l í fi c a c í ó n de la

tarea de programar y la reducción de la probabilidad de cometer errores.

3.1. La prfmera programadora

Charles Babbage ( 1 7 1 9 - 1 8 7 1 ) es considerado uno de los padres de la infor­

mática por su diseño de la " m á q u i n a analítica". Ada Lovelace (1815--1852), h i j a

de Anabella y Lord Byron, es reconocida por los historiadores como la primera

persona que hizo un programa para ordenador. Fue su madre, Anabella, quien

introdujo a Ada en las matemáticas, quien, tras conocer a Charles Babbage, tra­

dujo y a m p l l ó una descripción de su maquina analítica.


Ada Lovelace ( 1 8 1 5 - 1852): la primera programadora
Los "números de Bernoulli" son una secuencia de números racionales con

unas ciertas propiedades complejas que los relacionan. Babbage nunca pudo

completar la construcción de ninguno de sus diseños, principalmente por la

falta de tecnología y herramientas de precisión de la época. Sin embargo, el tra­

bajo que Ada llevó a cabo con este modelo le ha hecho ganarse el título de pri­

mera programadora de computadores del inundo. El primer programa que hizo

calculaba números de Bernoullí. El nombre del lenguaje de programación" Ada"

se escogió para rendir homenaje a esta programadora.


3.2. Prehistoria de la programación

Después de los intentos y los consiguientes fracasos de Babbage para acabar

su m á q u i n a analítica, no hubo mucho interés en la construcción de ordenado­

res hasta la Segunda Guerra M u n d i a l . Las máquinas que se construían entonces

eran gigantescas y tenían decenas de miles de válvulas de vacío. La programa­

ción se hacía construyendo cableados particulares para controlar las funciones

básicas del aparato. De hecho, se desconocían, propiamente dichos, los lengua­

jes de programación y la programación en sí. Hoy día, cuando un programa

tiene un error, se dice que tiene un "bug" (en castel.lano, bicho). Aunque nor­

malrnente se relaciona este término con el hecho de que los antiguos ordena­

dores fallaban algunas veces porque los bichos quedaban atrapados en los

relays, parece que el concepto es anterior. Thornas Edison (1847-1931) ya habla

de bugs en sus diseños, refiriéndose a errores o dificultades.


Personas cargando programas en el ordenador UNIVAC 1 2 0
La forma de trabajar era la siguiente: el "programador' pedía tanda para uti­

lizar la m á q u i n a durante un cierto intervalo de tiempo. Cuando le tocaba, iba a

la habitación donde estaba el ordenador, insertaba su tablero de conexiones y

empezaba a rezar para que ninguna de las válvulas de vacío se fundiera duran­

te la ejecución. Evidentemente, si había algún error, no se tenía ninguna pista

de dónde se había equivocado.

A finales de los cincuenta aparecieron las primeras tarjetas perforadas, que

significaron una mejora importante a la hora de "leer" los programas. Cada tar­

jeta contenía una instrucción y era importante que el bloque de tarjetas no se

cayera porque después volver a ordenarlas podía significar una odisea. El orde­

nador era capaz de ir leyendo los agujeros mecánicamente y así traducirlos a

instrucciones.
Tarjeta perforada en blanco (Imagen bajo licencia GFDL)

• , •: • , , 1 ,-- - - --- �
- ;:-_:3,==L�-.z=:;3c---"·:11:...:::::::::::c.;:.;-::::::::L::::::�•e:·;:;:-,·1E·:1·::::::i;;c.;:,;::;:.¡..::;,:::::,:1,c·;::;:·+
:.i ;i;:
:;
:;
,.
:3
. 3

•• 11111 1111111 ••• 0111111

•• • ••• • •• ••• •• "" ••• ••• •• ••• ••n "" •••


1 1 1 1 1 1 1 1 lt 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 , 1 1 1 1 1 1 1 1 , 1 1 1

111�)12 1 1 1 1 1 1 2
1112111 11211111 11 1 1 1 1 1 1 1 JI? 111lllll11111111lllll11ll111 112
t i , , . , . • • • • • • • • • 1111 .. . . • • • • • • •t•• •• • • ., • • • • • • • • • • ,. lllt

1)) JJ) l ) J J J J J J J J J J J ) 1 J J J J J J J J J J , J J J J J J J J ) J J J J J J J J J J J J J J J ! J J J J J I J J J J J J J J JJJJ

' ' ' ' ' ' ' ,, ,, ' ' ' ' ' ' ' ' ' ' , , , ' ' ,, ' ' '' , , , , , , , , ' ' ' ' ' ' ,, ' & 4 ' , , , ' , , , , , ,,
' ' ' ' ' ' ' '' 4 ' . , , � '
, j .. ,, •• ••• ••• •• ••• �•• ••• •• ••• ••• ••• ••• n �n •�•

ttt 1tt'Htt in ,,,, '''')''''''�'\ ,,1,,,, '' ,,,,,,,,s,,s,,,, ,,,,,,, ,,,,,,,

,,,,,,, . ... ,,,. , , , ' ' ' ' ' ' ,, '''
, 1 1 � · · • • • • • • • ••• •••� �•• ••• •••• ••• •• w• 11�• • •• •• • •• •�

"' 111 , 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 , , 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

111 111 ' ' ' íl " '


1 1 1
, , . . . ... . ' ' ' ¡, ' ' ' 111 ··�···· • • • • • • • • • • llltlt!•••• •• 1111 111 111
···�··· 111111 W •• •• •• ••• ••• •• •• .. • • • • • • ·l·• ••• • .. .. ". 1 -t •

,,, ''' ,,, ,,. ,,, ''''''''''"''' ,,,,,,,,1,,, ,,,,,,,,,,,, ttt1ttll ,,,,,,,

"'
��L-��������������������������·-""�-__/
3.3. El primer programa en la memoria

Hasta aquel momento, para ejecutar un programa entero, lo que se hacía era

ir cargando u n a tarjeta por instrucción. Así, hasta que no se había acabado la

ejecución de la actual, no se retiraba y se introducía la siguiente.

Las siglas ENIAC significan Electronic Numericat integrator And Computer. Los

primero programas que se utilizaron en el ENIJ\C estaban relacionados con el

diseño de la bomba de hidrógeno. Los aclamados corno primeros ordenadores,

como por ejemplo el ENIAC, no tenían algunas de las características que hoy

día se consideran indispensables en un ordenador. Eran m á q u i n a s bastante rígi­

das. En cambio, en la Universidad de Manchester, se crearon una serie de

máquinas que incluían tanto la posibilidad de almacenar programas en la

memoria como de introducir el programa mediante un teclado en vez de recon­

figurar circuitos (tarea que podía durar días).

El tubo wüüams fue desarrollado por Freddie wnuams ( 1 9 1 1 - 1 9 7 7 ) y Tom

Kilburn (1921-2001 ). El almacenamíento de programas se consiguió gracias a la

introducción de un tipo de memoria l l a m a d o " t u b o W i l l i a m s " . Era un tubo de


rayos catódicos, cuyo fósforo guardaba la información y se iba refrescando para

que no se perdiera. En diciembre de 1947 ya se podían guardar 2.048 bits en un

tubo de 6 pulgadas.

Con esta memona se construyó una máquina llamada SSEM (Smalt Sea/e

Experirnentat Machine), t a m b i é n conocida con el nombre de Baby. La informa­

ción para programar el Baby era la siguiente:

• Constaba de un par de tubos auxiliares para guardar un acumulador A' y

otro para la instrucción actual PI (Present tnstruction¡ y su dirección (posi­

ción) en la memoria CI (Control instmctiorú.


. . .

• Las instrucciones tenian reservados 12 bits para la dirección de memoria, 3

para la instrucción y había 16 sin usar (véase la imagen de abajo).

Formato de las instrucciones del Baby

Adrc1,:a de
mcmóna Sensc usar
0 12 15 31

I J 14

l n..�lfU("CÍÓ
• Sólo por curiosidad, a continuación podernos ver las siete instrucciones

(por eso se codifica usando 3 bits) que se podían utilizar para hacer un pro­

grama:

- 000 Hace que la instrucción actual apunte a la dirección almacenada

en S (Cl=S).

- 001 Resta en el acumulador el contenido de S (A=A-S).

- 010 Carga el acumulador con el contenido de la dirección S cambian-

do de signo (A=-S).

- 0 1 1 Si A es negativo, se salta la instrucción siguiente (si A<O,Cl=CI+ 1).

- 100 Incrementa el contador de instrucción en la cantidad almacena-

da en S (Cl=Cl+S).

1. Un acumulador es un sitio de la memoria del ordenador que se utiliza de manera auxiliar para

hacer operaciones intermedias aparte de la memoria principal (un tubo Williams de 32x32).
- 1 0 1 Se repite la 01 O (A=-S).

- 1 1 0 Carga en la dirección S e l contenido del acumulador (S=A).

- 111 Interrumpe el programa.

El primer programa fue escrito por el propio Tom Kilburn y fue ejecutado el

día 21 de j u n i o de 1 9 4 8 . Este programa calculaba el factor m á x i m o de un núme­

ro. En la Imagen siguiente podemos ver el "diseño" a mano del primer progra­

ma.
Anotaciones a mano del primer programa que se hizo para el Baby

Ot • 11

o•• "
• 'o ll

•••
o, � 1 1

-o�•· ••••

••
0 •• 1 1

•••••

_,
mr
••.
• • •
3.4. Generaciones

A lo largo de los años, se han ido clasificando los lenguajes en generaciones

según la proxtmldad al lenguaje natural -utilizado por los humanes- y otras

características que permiten agruparlos.

3 . 4 . 1 . Primera generación: Código máquina

Los lenguajes de prirnera generación, también llamados lenguajes ,náquina,

se carac teri zan por utilizar ceros (0) y unos (1) para describir los programas.

Estos, en sus inicios, eran introducidos en el ordenador mediante interruptores

del tablero frontal del aparato.

Ejemple de línea de código máquina:

1 0 1 1 0000 0 1 1 0000 1 Esu. linea contiene una hutruccióo que mueve un valor (61 en he11adecimal)

en el registro' del procesador oJ. Como se puede ver, no es muy comprensi·

ble de!de el punto de visla humono (de hecho, es realmente misteriosa).

La ve ntaj a principal de este tipo de lenguajes es que utilizan instrucciones

que pueden ser ejecutadas dtrectamcnte por el procesador y, por lo tanto, son

muy rápidos. Por otra parte, son mucho más complejos de aprender, utilizar y,
sobre lodo, depurar para buscar errores. Aparte, también encontramos que la

portabilidad de estos lenguajes es prácucameme nula: para reutilizar un progra­

rna de un ordenador en otro hay que rescrlbirlo completamente ya que es posi­

ble que los procesadores acepten lenguajes máquina diferentes o incluso que

tengan arquitecturas diferentes.

La gran ,nayoría de los lenguajes que fueron surgiendo posterionnente, al

ftnal y de fonna transparente para el programador, acaban traduciendo de una

manera u otra el código a código máquina. Eso se hace para superar las dificul­

tades enunciadas anterionnente.

"Hello \.Vorld" es un programa que presenta por pantalla el mlsmo mensa¡e.

Se utiliza en los manuales introductorios ccmc la ntayoria de los lenguajes por

su sencillez. La primera vez que se utilizó fue en el año 1974 en un mcrnorán­

dum interno de Brian Kcrnighan para Ucll Laboratorics ("Progran11ning in C: A

Tutorlal"). Una aplicación que sólo mostrara por pantalla la frase "Mello World"

en código máquina tendría el código que se muestra a continuación. Este eiem­

p¡o está escrito para ensamblador de un procesador lntel x86 con DOS y utili­

zando TASr..if. Hay que advertir que está escrito en hexadecimal, ya que en bina­

rio ocuua cuatro veces más.

2. Un regístro es una 7.003 de memoria del procesador donde se guarda información.


40SA2YOO 02000100 20000200 YYYY0300 10000000 00000000

JEOOOOOO Ol00Fll71 6A720000 00000000 00000000 00000000

00000000 00000000 00000000 00000100 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000


ºººººººº
00000000 00000000 00000000 00000000 000-00000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

0000000() 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 8802009E OBSAOOOO B409C02l B9004CCO

21000000 00000000 00000000 00000000 486S6C6C 6F2Cl077

6f726C64 210024
3.4.2. Segunda generación: Lenguaje ensamblador

11 11 11
Para evitar tener que utilizar el alfabeto de la m á q u i n a (ceros 0 y unos 1") 1

que está muy lejos de lo que entendemos nosotros, se crearon los llamados len-

guajes ensamblador, Éstos cartografían direcramentc cada instrucción en el con­

junto de ceros y unos correspondientes. Eso se hace mediante una herramienta

llamada ensamblador (asse111bler).

La arquitectura de un ordenador se refiere normalmente a la estructura inter­

na del procesador. Los lenguajes ensamblador son totalmente dependientes de

la Iamüia del procesador y de su arquitectura, igual que el código máquina (por

ejemplo, un programa hecho para lntel no sirve para AMO o Motorola, ya que

son diferentes fabricantes de procesadores).

Ejemplo de línea de código ensamblador:

mov al, 061 h Esta línea contiene la instrucción mov, que mueve un byte (61 en hexadecimal) en el

registro o/. Esta manera de escribir código es más comprensible que la que hemos

visto anteriormente.
Aunque claramente la introducción de los lenguajes ensamblador irnplicaba

una mejora irnportante en la legibilidad del programa, apareció una nueva

necesidad entre los programadores: poder programar pensando m á s en c ó m o

solucionar el problema desde el punto de vista h u m a n o que en el funciona­

rnícnto interno del ordenador. De ahí surgen los conceptos de lenguajes de pro­

gr a m a c i ó n de bajo y de alto nivel. Cuanto m á s de alto nivel se considera un len­

guaje, m á s cerca se sitúa del lenguaje natural y de la manera hurnana de razo­

nar.

Las principales aplicaciones de estos lenguajes son los kemels (los núcleos de

los sistemas operativos), los drivers de los dispositivos (programas que permiten

al sistema operativo comunicarse con los periféricos) y las librerías de sistemas

(introducidas m á s adelante, en este mismo capítulo).

El "Hello World" para lenguaje ensamblador tendría el código que se presen­

ta a continuación. Este ejemplo está escrito para ensamblador de un procesador

Intel x86 con DOS y utilizando TASM.


MODEL SMALL

IDEAL

STACK lOOH

DATASEG

MSG DB 'Hello, wo r l d ! ' , 13, '$'

CODESEG

Start:

MOV AX, @data

MOV DS, AX

MOV DX, OFFSET MSG

MOV AH, 09H ; DOS: output ASCII$ string

INT 21H

MOV AX, 4C00H

INT 21H

END Start
Es normal que, a simple vista, no se entienda, ya que estarnos trabajando en

las partes y los mccanísmos internos del procesador de un ordenador (por ej. los

registros). Por eso se llaman lenguajes de bajo nivel, porque se baja al nivel de

la m á q u i n a .

3.4.3. Tercera generación: Lenguajes de alto nivel

Viendo la complejidad de programar con los lenguajes que había hasta

entonces, empezaron a aparecer los lenguajes de alto nivel. Corno ya hemos

comentado, éstos aportan una legibilidad mucho m á s p r ó x i m a al lenguaje natu­

ral y ahorran al programador el tener que pensar en cada orden mínírna que

tiene que ejecutar el ordenador.

Cualquier instrucción de este tipo de lenguajes equivale a unas cuantas líne­

as de código máquina o ensamblador,

Eiemplo de línea de código C:

if (X>O) factoriat(x) Esta línea comprueba si x es mayor que cero (0). En caso de que así sea

llama a una parte del programa que calcula el factorial de x.


Así, a partir del código escrito en un lenguaje de este grupo, se utiliza una

herramienta (de hecho hay diferentes maneras de hacerlo) que "traduce" el

código a código m á q u i n a , Normalmente se hace mediante un compilador, aun­

que puede utilizarse un intérprete o incluso una m á q u i n a virtual (conceptos

que veremos m á s adelante).

La mayor parte de los lenguajes que se u t i l i z a n hoy día para la programación

de aplicaciones son de tercera gcneractón (por ej. C, C++ y Java).

3.4.4. Cuarta generación (4GL): Lenguajes casi naturales

Son lenguajes de programación que no son de propósito general, corno los

que había habido hasta ahora, sino que están diseñados para algún propósito

específico (por ej. Sculptor, Dbase, SAS, PI-IP, etc.).

Los lenguajes de tercera generación habían conseguido facilitar mucho la

comurücacíón entre el hombre y la m á q u i n a , y habían mejorado claramente el

desarrollo del software desde sus predecesores. Aun así, la tarea de programar se

seguía considerando frustrante, lenta y propensa a errores. Lo cual llevó a la pri­

mera gran crisis del software, ya que la cantidad de trabajo que se esperaba que
hicieran los prograrnadores superaba con creces el tiempo que tenían para lle­

varla a cabo. Para solucionar el problema, se tornaron varias medídas, entre

éstas encontramos la definición de la ingeniería del software y el diseño de len­

guajes de programación según los tipos de problemas que debían resolverse.

Ejemplo de línea de código de SQL:

E..sta línea busca en una base de datos todos los registros que tienen
SELECT * FROM USUARIS
como campo de nombre 808. Se puede ver que es casi como el len­
WHERE NAME="BOB"
guaje natural (en este caso, el inglés).

Estos lenguajes están diseñados para reducir el esfuerzo de programación, el

tíernpo y el coste de desarrollo. Pero no se puede errar en la elección del lengua­

je, ya que si no el proyecto se convierte muy probablernentc en un fracaso.

No hay lenguajes mejores ni peores. Lo que puede facilitar o complicar la

programación de una aplicación es la idoneidad del lenguaje elegido para codi­

ficar.
Algunos tipos de lengua jes de cuarta generación son:

• Tratamiento de bases de datos (por ej. SQL y FOCUS)

• Generadores de informes (por ej. PostScript, BuildProfcssional y Gauss)

• Manipuladores y analizadores de datos (por ej. lnfonnix-4GL,

Mathe,natica y SAS)

• Tratamiento de ílujo de datos (por ej. APE y AVS)

• Generación y dibujo de pantallas (por ej. Oracle Forrns y Unify Accell)

• Generadores de interfaces gráficas de usuario (por ej. Borland Delphi,

Visual Basic's forrn editor, wtndows Forms y OpenROAD)

• Desarrollo web (por ej. PliP y ASP)


3.4.S. Quinta generación (SGL): No nos ponernos de acuerdo

Diferentes fuentes definen la quinta generación de lenguajes de diversas

maneras, Entre éstas, las dos principales son:

Lenguajes para inteligencia artificial

Son aquellos basados en la resolución de problemas que utilizan restriccio­

nes para modelarlos, sin programar un algorumo que lo haga. La mayoría son

lenguajes lógicos, basados en restricciones, y/o declarativos (por ej. Prolog,

ILOG o eCLiPse). El programador no se tiene que preocupar por CÓMO resol­

ver sino de QUÉ resolver. Se hicieron bastantes inversiones en estos lenguajes a

lo largo de los a ñ o s noventa, con la idea de sustituir los lenguajes de alto nivel,

pero fue un fracaso y actualmente se utilizan sólo en círculos académicos.

hermano{X,Y):- madreOpadre(X,Z), Esta línea dice que X e Y son hermanos si comparten padre o

madreOpadre(Y,Z). madre.

En el ejemplo anterior se utiliza una regla. Los lenguajes lógicos utilizan

hechos y reglas para modelar la realidad y a partir de ésta, poder inferir las res­

puestas a posibles preguntas.


Lenguajes co11 GUI (Graphicat User lnterface)

Otros presentan los SGL corno los que utilizan una interfaz gráfica o visual

de usuario para crear un código fuente que se compila posteriormente con un

compilador de lenguajes de tercera o cuarta generación. Compañías corno

Borland, Microsoft e IBM elaboran este tipo de productos de programación

visual para el desarrollo de aplicaciones en Java, por ejemplo.

S-ar putea să vă placă și