Evolución de los lenguajes de programación ¿Por qué cambiarse a la Programación Orientada a Objetos?
- Abstract
- Evolución de los Lenguajes
de Programación - Programación
Orientada a Objetos - Internet
y los nuevos requerimientos del software - Conclusiones
- Referencias
Abstract
Cada vez más, los lenguajes de
programación tienden representar un modelo del
mundo basándose en elementos que se alejan de la
máquina y se acercan al humano. En los extremos
encontramos el lenguaje puro
de la máquina y la Programación
Orientada a Objetos. Los lenguajes de alto nivel procedurales
(Pascal, C)
ganaron confianza entre los programadores para quienes, de no
existir un impulso hacia la POO, no hallaban la necesidad de
cambiarse. Este artículo muestra la
evolución de los lenguajes a través
del tiempo a la
par con las tecnologías que influyen en el desarrollo de
software, y
cómo esas tecnologías hacen que la POO se mantenga
como el paradigma de
programación más usado en a
actualidad.
1.
Introducción
Este articulo está dirigido principalmente a
aquellas personas que se iniciaron en el mundo de la
programación con lenguajes de tercera generación
como Pascal y C. Lenguajes de alto nivel y estructurados que
hacían de la programación procedural toda un
arte. Me
refiero específicamente a los compiladores
Turbo de Borland que corrían sobre el sistema operativo
DOS. Para aquellos programadores, donde cada problema se
convertía en un reto por resolver, y a los que el lenguaje
les respondía de forma excelente. Para aquellos
programadores que ven la programación como un arte, como
un reto, y que la toman con pasión, para los que no
había nada difícil y todo lo podían resolver
tan solo con un compilador clásico de C o Pascal. El
artículo quiere mostrar, por qué esos lenguajes se
quedan cortos ante los requerimientos de software actuales y por
que es necesario cambiarse a la POO.
Es muy seguro, que
alguien que aprendió C o Pascal a fondo, conoce
también del lenguaje de ensamblado o ensamblador, y
por que no hasta del lenguaje de la máquina. Esto, porque
algunas aplicaciones que necesitaban mucho más control sobre la
máquina o necesitaban usar recursos del
sistema operativo
requerían de la mezcla del lenguaje de alto nivel con
lenguaje
ensamblador, y con esa mezcla, el programador terminaba
conociendo más a fondo el funcionamiento del PC, y
podía lograr hazañas muy interesantes.
Con la aparición de Object Pascal y C++,
incorporando a los lenguajes nativos elementos del paradigma
Orientado a Objetos, muy pocos eran los programadores que
utilizaban las nuevas características y, los que las
utilizaban, no lo hacían de la mejor manera. La
razón de esto, es que dichos lenguajes, permitían
mezclar programación procedural con POO, y los programas
terminaban siendo programas procedurales a pesar de utilizar
elementos de POO.
La aparición de Windows
dejó atrás al DOS, y por lo tanto tenían que
aparecer lenguajes para el nuevo sistema operativo. Los nuevos
lenguajes visuales insistían un poco más en la POO,
pero aún así, se podían seguir construyendo
aplicaciones meramente procedurales. Esto permitía que el
programador, por estar utilizando herramientas
de la POO, se sintiera confiado de estar utilizando el nuevo
paradigma y no notaba las verdaderas ventajas éste. Lo que
hacía usando POO, lo podía hacer de forma
procedural.
Internet y los requerimientos no Funcionales del
software como mantenibilidad, flexibilidad, robustez,
escalabilidad, entre otros, hacen que características de
la POO como la herencia, el
polimorfismo y el uso de interfaces para prestar servicios,
logren imponer a la POO como una de las mejores opciones para
desarrollar software hoy en día. Al usar correctamente la
potencia de la
orientación a objetos combinada con un buen Framework o
Middleware de desarrollo, los "desarrolladores" pueden construir
aplicaciones ajustables a las variaciones de los requerimientos
tanto funcionales como no funcionales que los clientes
necesiten.
Para poder usar
correctamente la POO también es necesario que existan
herramientas pensadas para ello. Afortunadamente nacieron
Java de Sun
Microsystems y C# de la plataforma .Net de Microsoft,
entre otros. En estos lenguajes, hasta el más
mínimo programa es una
Clase, lo que
hace que el desarrollador piense en términos de clases y
de interfaces y empiece a dejar atrás la
programación procedural. Aun así, dichos lenguajes
no garantizan que los desarrolladores usen correctamente la
POO.
2.
Evolución de los Lenguajes de
Programación
En ésta sección se describirá
brevemente como han evolucionado los lenguajes de
programación, desde el lenguaje de máquina y
ensamblador (Bajo Nivel) hasta los lenguajes estructurados y
orientados a objetos (Alto Nivel). También se incluye la
evolución desde el punto de vista de las
generaciones.
2.1. Lenguajes de Bajo Nivel
2.1.1. Lenguaje Máquina
Es el lenguaje que entiende el procesador y
está basado en el sistema
binario [4]. Está formado por un conjunto de
instrucciones o códigos que pueden ser interpretados
directamente por el procesador [5]. El lenguaje máquina
varía dependiendo del hardware y evoluciona con
cada versión del CHIP. Cuando se habla del lenguaje
máquina en el IBM PC y compatibles, se habla
principalmente de la familia de
procesadores
Intel 80xX y de su evolución hasta el actual Pentium IV.
´
En cada versión del CHIP Intel se han agregado
nuevas funcionalidades, pero Intel siempre ha tratado de mantener
la compatibilidad con las versiones anteriores, por lo que se
habla de que un programa es compatible con la Familia x86.
Según lo anterior, un programa hecho para el 80×386
(Primera versión estable que soporta multi-tarea [4])
debería funcionar aun en los últimos Pentium IV de
doble núcleo. La verdad es que si funcionan, pero no
utilizan las características nuevas del
procesador.
La principal ventaja del lenguaje máquina es su
alta velocidad,
debida a la traducción inmediata de los códigos
binarios. Entre sus muchas debilidades encontramos
[1]:
- Codificación compleja: el programador debe
entender el significado de los unos y ceros y tener tablas de
instrucciones y variables.
En los procesadores actuales de 64bits, por ejemplo, una
instrucción tiene 64 unos y ceros, lo cual es muy
difícil de controlar. - Errores en la codificación y depuración
compleja: debido a la complejidad de los
códigos. - Productividad mínima: tiempos de desarrollo
muy altos - No portabilidad: un programa solo funciona sobre el
hardware para el que es hecho.
Página siguiente |