Descargar

Evolución de los lenguajes de programación ¿Por qué cambiarse a la Programación Orientada a Objetos?


Partes: 1, 2

    1. Abstract
    2. Evolución de los Lenguajes de Programación
    3. Programación Orientada a Objetos
    4. Internet y los nuevos requerimientos del software
    5. Conclusiones
    6. 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.
    Partes: 1, 2
    Página siguiente