Diferencia entre los lenguajes de programación estructurados, orientados a objetos, naturales y lógicos. Programación Estructurada La programación estructurada es una forma de escribir programas de ordenador (programación (programación de computadora) computadora) de forma clara. Para ello ello utili utiliza za única únicame ment nte e tres tres estr estruc uctur turas as:: secu secuen enci cia, a, sele selecc cció ión n e iter iterac ació ión; n; sien siendo do inne innece cesa sari rio o y no per permiti mitién éndo dose se el uso uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN). Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, prin princip cipal alme ment nte e debid debido o a las las apli aplica caci cion ones es gráf gráfic icas as,, por por lo que que las las técnic técnicas as de progr programa amació ción n estruc estructur turada ada no son suficie suficiente ntes. s. Ello Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.
Orígenes de la programación estructurada A finales de los años 1960 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su comprensión posterior. El teore teorema ma del progr programa ama estruc estructur turado ado,, demo demost stra rado do por por Böhm Böhm- Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes: •
Secuencia
•
Instrucción condicional.
•
Iteración (bucle de instrucciones) con condición al principio.
Solamente con estas tres estructuras se pueden escribir todos los programas (programas (programas)) y aplicaciones posibles. Si bien los lenguajes de prog progra rama maci ción ón tien tienen en un mayo mayorr repe reperto rtori rio o de estruc estructur turas as de control, control, éstas pueden ser construidas mediante las tres básicas.
Ventajas de la programación estructurada es tructurada Con la programación estruc ructura urada, elaborar rar programas de computador sigue siendo una labor que exige esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo podemos obtener las siguientes ventajas: 1. Los programas son más fáciles de entender, ya que pueden ser leídos leídos de forma forma secuen secuencia cial, l, sin necesi necesidad dad de hacer hacer seguim seguimien iento to a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica.
2. La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí. 3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente. 4. Reducción de los costes de mantenimiento de los programas. 5. Programas más sencillos y más rápidos (ya que es más fácil su optimización). 6. Los Los bloqu bloques es de códig código o son son auto auto expl explic icat ativo ivos, s, lo que que faci facili lita ta la documentación. 7. Los Los GOTO GOTO se reser reservan van para para constr construir uir las instru instruccio cciones nes básic básicas. as. Aunq Aunque ue no se usan de for forma direc irectta, por por estar star prohib ohibid ida a su utiliz utilizaci ación, ón, están están inclui incluidas das implíci implícitam tament ente e en las instru instrucci ccione ones s de selección e iteración. 8. Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura sino también una excelente presentación. 9. La programación estructurada ofrece estos beneficios, pero no se la debe debe con consider idera ar com como una panac anacea ea ya que que el des desarr arrollo ollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.
Inconvenientes de la programación estructurada El principal inconveniente de este método de programación es que se obtiene un único bloque de programa, que cuando se hace demasiado grande grande puede puede resul resultar tar probl problemá emátic tico o su manejo; manejo; esto esto se resue resuelve lve empleando la prog progra rama maci ción ón modu modula larr, definiendo módulos inte interd rdep epen endi dien ente tes s prog progra rama mado dos s y comp compila ilado dos s por por sepa separa rado do (en (en realidad esto no es necesario, pero así ha sido históricamente). Un método un poco más sofisticado es la programación por capas, capas, en la que los módulos tienen una estructura jerárquica en la que se pueden definir funciones dentro de funciones o de procedimientos.
Programación orientada a objetos La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) inglés) es un paradigma paradigma de programa programación ción que que usa usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, técnicas, incluyendo incluyendo herencia, herencia, modularida modularidad, d, polimorfismo y encapsulamiento. Su uso se popularizó a principios de
la déca década da de 1990 1990.. Actua ctualm lmen ente te son son much muchos os los los leng lengua uaje jes s de programación que soportan la orientación a objetos.
Origen Los conceptos de la programación orientada a objetos tienen origen en Simula 67, 67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo. Oslo. Al parecer, en este centro, trabajaban en simulaciones de naves, y fueron confundidos por la explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamiento. Fueron refinados más tarde en Smalltalk, Smalltalk, que fue desarrollado en Simula en Xerox PARC (y cuya primera versión fue escrita escrita sobre sobre Basic) Basic) pero diseñado para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en marcha" en lugar de tener un sistema basado en programas estáticos.
Resumen Es un paradigma que utiliza objetos como elementos fundamentales en la construcción de la solución. Surge en los años 70. Un objeto es una abstracción de algún hecho o cosa del mundo real que tiene atrib atribut utos os que que repr repres esen enta tan n sus sus cara caract cterí eríst stic icas as o prop propie ieda dade des s y métodos que representan su comportamiento o acciones que realizan. Toda odas las las pro propied pieda ades des y métod étodos os com comunes unes a los los obje objettos se encapsulan o se agrupan en clases. ¨Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instan instancia cias s de clases clases.. Lengu Lenguaje aje de progr programa amació ción: n: C++ C++,, Java, Java, C#, VB.Net, etc.
Programación lógica La prog progra rama mació ción n lógi lógica ca cons consis iste te en la apli aplica caci ción ón del del corp corpus us de conocim conocimien iento to sobre sobre lógica para el diseño de leng lengua uaje jes s de programación; programación; no debe debe conf confun undi dirs rse e con con la disc discip ipli lina na de la lógica computacional. computacional. La programación lógica comprende dos paradigmas de programación: programación: la programa programación ción declarativa declarativa y la progr programa amació ción n funcio funcional nal.. La programación declarativa gira en torno al concepto de predicado, o relación entre elementos. La programación funcional se basa en el
conc concep epto to de func funció ión n (que (que no es más más que que una una evol evoluc ució ión n de los los predicados), de corte más matemático.
Motivación Histór Histórica icamen mente, te, los ordenadores se han han prog progra rama mado do utili utiliza zand ndo o lenguajes muy cercanos a las peculiaridades de la propia máquina: operaciones aritméticas simples, instrucciones de acceso a memoria, etc. Un programa escrito de esta manera puede ocultar totalmente su propósito a la comprensión de un ser humano, incluso uno entrenado. Hoy Hoy día día, estos tos len lengua guajes jes pert perten enec ecie ient ntes es al para parad digma igma de la Programación imperativa han evolucionado de manera que ya no son tan crípticos. En cambio, la lógica matemática es la manera más sencilla, para el intelecto humano, de expresar formalmente problemas complejos y de resolverlos mediante la aplicación de reglas, hipótesis y teoremas. De ahí que el concepto de "programación lógica" resulte atractivo en diversos campos donde la programación tradicional es un fracaso.
Campos de aplicación La programación lógica encuentra su hábitat natural en aplicaciones de inteligencia artificial o disciplinas relacionadas: •
•
•
•
Sistemas expertos, expertos, donde un sistema de información imita las recom ecomen enda daci cion ones es de un exper xperto to sobr sobre e algú algún n domi domini nio o de conocimiento. Demostraci Demostración ón automática automática de teore teoremas mas,, donde donde un progr programa ama genera nuevos teoremas sobre una teoría existente. Reconoc Reconocimient imiento o de lenguaje lenguaje natural natural,, dond donde e un prog progra rama ma es capa apaz de com compren prende derr (co (con limi limita taci cion one es) la info inforrmació ación n contenida en una expresión lingüística humana. Etc.
La prog progra rama maci ción ón lógi lógica ca tamb tambié ién n se utili utiliza za en apli aplica caci cion ones es más más "mundanas" pero de manera muy limitada, ya que la programación tradicional es más adecuada a tareas de propósito general. El lenguaje de programación por excelencia de la programación lógica es: “Prolog”.
En Conclusión: Tanto en la programación, como en todas las ramas que intervienen en la gestión y aplicación de la tecnología, se está presentando una tendencia: tendencia: esta es que las aplicacion aplicaciones es y dispositivo dispositivos, s, sean cada vez más inteligentes y eficientes, esto es (desde mi punto de vista) que sean sean capa capace ces s de adap adapta tars rse e a situ situac acio ione nes, s, para para las las que que quiz quizá á no fueron programados, pero que en base al análisis de circunstancias, puedan trazar una nueva línea de acción, para seguirla y llegar a la solución de un problema.