Está en la página 1de 7

7.

1 Conceptos generales
Un ordenador consta de dos partes, una es la parte fsica, conocida como "hardware" y otra, la
lgica denominada "software". Ambas son imprescindibles para tener una computadora en
funcionamiento. Respecto a la parte fsica dentro de esta web est disponible un esquema de
sus componentes, en este captulo se estudiarn los integrantes del "software". As como la
parte fsica es totalmente visible, la parte lgica es intangible, aunque imprescindible para que
un ordenador sea operativo.
l "software" se divide en dos grandes grupos, uno es el conocido como sistema operativo o
sistema de e!plotacin y otra parte son los denominados lenguajes de programacin. Aparte
e!isten infinidad de aplicaciones de "software" pero ya para casos concretos, como por e"emplo
aplicaciones contables, aplicaciones ofimticas, paquetes estadsticos o programas cientficos.
#engua"es de programacin $ay en gran cantidad, algunos $an evolucionado a lo largo del
tiempo y son usados en el transcurso de muc$os a%os, mientras que otros $an sido operativos
durante un perodo ms o menos largo y actualmente no se emplean. &ada esta gran variedad
de lengua"es, aqu no se pretende dar una visin completa, sino una clasificacin en diversos
tipos y concretar el ms recomendado para el aprendi'a"e, el (ascal, que se le dedica un
apartado para quienes est)n interesados en aprender a programar en un lengua"e asequible.
n general un lengua"e es un m)todo conveniente y sencillo de describir las estructuras de
informacin y las secuencias de acciones necesarias para e"ecutar una tarea concreta. (ero
este proceso se puede reali'ar de muc$as maneras distintas, por lo que $abr que disponer de
clasificaciones. Una muy importante es $acer dos grupos en base a su funcionamiento, esto es
considerarlos como intrpretes y compiladores, seg*n se describe seguidamente+
Un lengua"e se dice que es un intrprete, por e"emplo los BASIC primitivos, cuando
para e"ecutar un programa el lengua"e $a de leer y traducir al lengua"e especfico de la
mquina las instrucciones una por una. ,omo es lgico el proceso se enlentece, por
e"emplo si una operacin est dentro de la estructura conocida como ciclo y este se
repite -.. veces, el lengua"e tiene que traducirlo -.. veces al cdigo de la mquina.
/o todo son desventa"as, pues la parte buena de este tipo de lengua"es es que los
errores se pueden corregir al momento y seguir facilmente la e"ecucin del programa,
por lo cual son idneos 0a e!cepcin del 1A23, que no es estructurado y fomenta el
desorden4 para aprender a programar, proceso en el que da lo mismo la lentitud.
(or contra un lengua"e se dice que es compilado cuando el programa entero se
traduce mediante el compilador de dic$o lengua"e al lengua"e mquina correspondiente
a un microprocesador dao 0,(U4 y el resultado se almacena de manera permanente en
un arc$ivo. &e esta forma el programa se e"ecutar de forma muc$o ms rpida que
con un int)rprete, sobre todo si $ay estructuras que se repiten, caso de los ciclos. #a
principal desventa"a es cuando se produce un error, que muc$as veces se detecta en el
momento de la e"ecucin, y la correccin no se puede $acer de inmediato sino que $ay
que reali'ar todo el proceso de compilado desde el principio. Un e"emplo tpico de
lengua"e de este tipo el C ++, ampliamente usado en el desarrollo de programas.
5ay un lengua"e muy difundido $ace unos a%os en el mbito de la ense%an'a, es
el 6urbo(ascal, cuya venta"a es que aunque se trata de un compilador tiene un entorno de
traba"o como si fuera un int)rprete y cualquier error se puede corregir al momento,
reanudndose la e"ecucin del programa de inmediato.
Un e"emplo en la vida real que visuali'a la diferencia entre un int)rprete y un compilador es el
siguiente, supongamos que tenemos un libro escrito en una lengua distinta al castellano, son
posibles dos procesos de acceder a su contenido cuando se necesite su lectura, una es
traducir en el momento de su empleo la parte del libro que se precise, pero sin pasarla a papel,
sino simplemente mediante lectura traduciendo, esto sera el proceso de interpretado, mientras
que la otra opcin sera traducir el libro entero al castellano y de"ar dic$a versin escrita sobre
papel, esto sera equivalente al compilado.
l proceso de compilado no es tan inmediato como parece, se describe seguidamente de forma
muy esquemati'ada+
-. 2e escribe el programa 0conocido como programa fuente4 mediante un editor de
te!tos 0en modo te!to, sin formato4 y se almacena en un fic$ero.
7. ste programa fuente es invocado por la primera etapa del compilador, que efect*a
un anlisis l!ico, se puede considerar como una interpretacin del programa fuente
preparndolo para un tratamiento posterior con detalle. n esta etapa se e"ecutan los
tres procesos indicados seguidamente+
o Adaptar el cdigo fuente a un formato independiente de la forma en que se
$aya introducido en el sistema
o liminacin de informacin redundante como espacios y comentarios
o 6ratar las palabras clave y los smbolos para su paso a smbolos clave,
conocido como "to8ens"
(or e"emplo, considerando un fragmento de cdigo en 1A23, 0tambi)n e!iste
compilador de 1A23,4, se tendra,
200 FOR I=1 TO N STEP 1
210 LET A(I)=0: REM Inicializa la matrz
220 NEXT I
lo pasara a+
[L45] [T16] I=1 [T17] N [T18] 1 \
[L46] [T09] X(I)=0 \
[L47] [T19] I \
9. Anlisis sintctico es el paso siguiente, el compilador determina la estructura, y de
alguna forma el significado del programa fuente. l con"unto del programa se anali'a
en bloques, que se descomponen en instrucciones y se procede a identificar los
elementos individuales. ,omo la sinta!is est e!presada mediante un con"unto de
reglas, cada una indica como se construye una estructura del programa a partir de
otras estructuras de menor entidad. l proceso mediante el cual el compilador aplica
estas reglas es conocido como "parsing". 2eguidamente se cita un e"emplo+
n notacin 1/: una regla sintctica se puede escribir como,
<Lnea programa::=<Nmero de lnea <Palabra clave
<Resto de la sentencia
y aplicndola a la lnea -.. del e"emplo 1A23, anterior, se tendra,
<Nmero de lnea 100
<Palabra clave LET
<Resto de sentencia X=0
y por tanto+
<Lnea de programa 100 LET X=0
&urante la compilacin se genera gran cantidad de informacin, que se almacena en
una estructura de datos conocida como diccionario o tabla de smbolos, en alg*n
momento del proceso se necesitar la informacin guardada previamente. #a mayor
parte es informacin sobre variables, por e"emplo para ; en el programa anterior, se
tendra en el diccionario,
Nombre de la variable Tipo Direccin
X N 3A2F
<. l paso siguiente es la generacin de cdigo" conocido como ob"eto (ara ello se
recorre el cdigo intermedio generado y se busca cada uno de los "tokens" en el
diccionario, lo que permite insertar las direcciones en el cdigo mquina que se est
generando. n el e"emplo que se est estudiando se tendra+
Lnea 200
LOA X N+1 Emplea el registro ndice como contador
SIG CMP X N Compara con N
BGT FIN Al terminar vete a FIN
Lnea 205
CLR A Pone a cero el acumulador
STD A D Y Copia el contenido del acumulador en
Y+ndice
Lnea 210
INC X Incrementa el ndice
BRN SIG Contina el bucle
FIN
=. l proceso siguiente es la optimi#acin de cdigo ob"eto generado, con lo que se
obtiene un programa ms eficiente. >eneralmente donde se consiguen los me"ores
resultados es en los bucles, cuyo ob"etivo es reducir al m!imo el n*mero de
operaciones que se e"ecutan en )l.
?. /ormalmente $ay una etapa posterior conocida como "lin$ado " o "editor de
ligaduras" en la que el o los mdulos ob"etos generados previamente se unen entre s
y@o con otros mdulos disponibles en libreras, para formar un fic$ero que contiene un
programa e"ecutable directamente desde el sistema operativo, sin necesidad de
disponer del compilador correspondiente. 3ncluso se pueden unir programas escritos en
lengua"es distintos si los mdulos ob"eto creado se $an estructurado de forma
adecuada.
n cualquier fase del proceso pueden detectarse errores que se podrn de manifiesto,
implicando el volver $asta el programa fuente, efectuar las correcciones pertinentes y
repetir todo el proceso, lo cual suele ser algo laborioso.
(rimeras programadoras profesionales 0foto e")rcito de .UU.4
7.% &etodolog'as de programacin
Actualmente se estn produciendo cambios de gran alcance en la forma en que se desarrolla el
"software" para los equipos informticos. ntre las causas de estos cambios se incluyen las
siguientes+
l coste creciente de los desarrollos
#a insatisfaccin de los usuarios con la adecuacin y calidad
#a comple"idad y tama%o creciente de los programas
#a creciente dependencia de muc$as organi'aciones de sus sistemas informticos, sin
posibilidad de abandonarlos
l avance $acia ordenadores con caractersticas "software" muy diferentes de los
actuales.
stas y otras presiones estn provocando una reorgani'acin de los m)todos empleados en el
desarrollo de los programas para los ordenadores. #o que se necesita son t)cnicas para la
elaboracin de productos "software" muy largos y comple"os, que satisfagan estndares muy
estrictos de calidad y prestaciones, de acuerdo con una planificacin, control y presupuestos
adecuados.
#os m)todos de traba"o que se $an desarrollado para responder a estas necesidades
constituyen lo que se $a dado en llamar "Ingenier'a del Soft(are". #a 3ngeniera del
2oftware es una tarea de equipo, al comen'ar un proyecto de desarrollo, se constituyen una
serie de equipos con una estructura paralela a la del programa en s. 2e establece un
calendario para el proyecto y se asignan costes a cada una de las partes y etapas del proyecto.
,ada equipo tiene un responsable, cuya tarea es la de comprobar que la programacin
desarrollada por el equipo sea correcta, est estructurado con propiedad, dispone de las
interfaces para conectar con los programas desarrolladas por otros equipos y se desarrolla de
acuerdo a las previsiones de tiempo y coste.
#a Ingenier'a del Soft(are se ocupa del ciclo de vida completo de un producto software,
dise%o, desarrollo, uso y mantenimiento. l traba"o se $ace buscando el mayor grado posible
de estandari'acin y los menores costes durante la totalidad del ciclo de vida de los programas.
#a 3ngeniera del 2oftware implica que un programa bien estructurado satisfaga las siguientes
condiciones+
l programa $a de tener una estructura general en forma de mdulos, que a su ve'
estarn formados por procedimientos o segmentos.
&ebe e!istir un interfa' claramente definido entre los diversos mdulos
,ada mdulo debe de ser una combinacin sencilla de construcciones elementales de
un lengua"e de programacin
&ebe e!istir una fuerte correspondencia entre la estructura de los mdulos y la de los
datos sobre los que operan
,ada mdulo debe de"ar las estructuras de datos sobre las que opera en un estado
consistente con su definicin
Un mdulo no debe tener efectos secundarios
(or lo que respecta a las t)cnicas de dise%o de programas, el m)todo ms simple y uno de los
ms populares es el conocido como de ")efinamiento *rogresivo". 2e fundamenta en el uso
de algoritmos que se escriben en un lengua"e intermedio entre el castellano y un lengua"e de
programacin como el (ascal, este lengua"e se denomina seudocdigo. l proceso se puede
describir en t)rminos de un lengua"e de esta naturale'a+
stablecer todos los pasos del programa en un algoritmo breve de alto nivel
Repetir+
!pandir cada sentencia del algoritmo en detalle, especificando los pasos necesarios
5asta que las tareas $ayan sido especificadas con el detalle suficiente como para que
pueda generarse el cdigo del programa.
!isten otras metodologas ms depuradas como por e"emplo la conocida
como +,escomposicin -uncional". A diferencia de la anterior en cada etapa se especifican
las propiedades esenciales de las estructuras de datos, y cada algoritmo se e!presa como una
funcin matemtica que transforma esta estructura de datos.
Una ve' desarrollado un programa como es lgico se $a de comprobar su buen
funcionamiento. Actualmente en la mayora de los casos se prueban con cualquier tipo de datos
que pueden presentarse en la realidad. 2in embargo este proceso nunca puede establecer si
un programa es o no correcto, sin importar cuantos con"untos de datos de usen. 2i un
programa es de importancia crtica, como ocurre actualmente con muc$as aplicaciones
comerciales, industriales o militares, es necesario tomar todas las precauciones posibles para
asegurar que estn libres de errores.
2e estn empe'ando a utili'ar t)cnicas para asegurar que los mdulos 0y los algoritmos4 son
correctos, que los consideran como teoremas matemticos y entonces se emplean los mismos
m)todos que se utili'an para demostrar los teoremas. sta tarea, conocida como "mtodos
formales" es muy comple"a y no siempre aplicable.
7.. /ipos de lenguajes
Aparte de la clasificacin vista previamente en compiladores e int)rpretes, los lengua"es de
programacin se clasifican en base a otros aspectos, de manera general en dos grandes
grupos, #engua"es de Alto 0ivel y #engua"es de Bajo 0ivel. l grupo de los de 1a"o /ivel,
como su nombre indica incluye los relacionados ntimamente con la arquitectura de la mquina,
por lo que generalmente son especficos de una unidad central de procesamiento 0,(U4 y no
son vlidos para otra diferente.
&entro de los de estos grupos est el lenguaje m1uina, que es programar en el mbito de la
,(U, por lo tanto usando ceros y unos, lengua"e muy dificil y propenso a errores. l otro ms
conocido dentro de esta categora es el 2nsam3lador, que utili'a mnemnicos a escala
sencilla, y por lo tanto evita las secuencias de ceros y unos. A*n as es bastante complicado y
no es recomendable para usuarios sin amplios conocimientos. n conclusin, un lengua"e de
ba"o nivel est orientado $acia la resolucin de una determinada mquina o clases de
mquinas.
A diferencia de los del grupo anterior, un lengua"e de alto nivel es independiente del
microprocesador del ordenador que lo soporta, as por e"emplo un programa escrito en lengua"e
,, se puede compilar sin modificar para cualquier mquina, y en principio funcionar sin ning*n
problema.
sto implica dos venta"as principales, una es que la persona que desarrolla los programas no
$a de saber nada acerca del ordenador en que se e"ecutar el programa, la otra es que los
programas son portables, es decir el mismo programa 0en teora4 $a de funcionar sobre
distintos tipos de ordenadores.
l desarrollo de los lengua"es de alto nivel comen' a mediados de los a%os cincuenta del siglo
pasado, en esta )poca se crearon los lengua"esC4B45" -4)/)A0 6 A574589.
(osteriormente se $an ido originndose otros muc$os, de $ec$o varios miles, aunque
sobreviven muy pocos.
ntre los lengua"es de alto nivel cabe destacar los siguientes+
AABA
1A23,
:CR6RA/
DC&U#A 7
(ascal
A&A
,
, EE
#C>C
#32(
(RC#C>
2malltal8
n conclusin un lengua"e de alto nivel est orientado $acia la resolucin de una determinada
clase de problemas.
Ctra forma de clasificar los lengua"es es en dos grandes grupos, declarativos e imperativos.
#os imperativos establecen cmo debe e"ecutarse una tarea parti)ndola en procedimientos que
especifican cada una de las tareas. (or el contrario los declarativos establecen estructuras de
datos y las relaciones entre ellos que son significativas para e"ecutar una tarea determinada, al
tiempo que indican cual es el ob"etivo de dic$a tarea. Un lengua"e tpico de este grupo es
el *rolog.
Un e"emplo de como una frase tan corta como "Universidad de Murcia", se programa para ser
impresa en pantalla, se muestra seguidamente en dos lengua"es de programacin+
2n ensam3lador de !:8 para 70;<5inu! =nasm>
section .data
msg db "Universidad de Durcia", .A$
len equ F G msg
section .te!t
global Hstart
Hstart+
mov ea!, .<$
mov eb!, .-$
mov ec!, msg
mov ed!, len
int I.$
mov ea!, .-$
mov eb!, ..$
int I.$
2n C++
Jinclude
using namespace stdK
int main04 L
cout MM "Universidad de Durcia" MM endlK
return .K
N

También podría gustarte