Tema 2 Lenguajes de Programación PDF
Document Details
Uploaded by LongLastingWilliamsite5269
Tags
Summary
Este documento proporciona una descripción general de los lenguajes de programación, incluyendo la clasificación de lenguajes de bajo nivel y de alto nivel. Explica las características y se centra en el lenguaje máquina y el lenguaje ensamblador.
Full Transcript
TEMA 2. LENGUAJES DE PROGRAMACIÓN CONCEPTO Se define Lenguaje de Programación como una notación o conjunto de símbolos y caracteres combinados entre sí de acuerdo con una sintaxis ya definida para que se pueda transmitir a la CPU. Estos símbolos y caracteres son traducidos a señales eléctric...
TEMA 2. LENGUAJES DE PROGRAMACIÓN CONCEPTO Se define Lenguaje de Programación como una notación o conjunto de símbolos y caracteres combinados entre sí de acuerdo con una sintaxis ya definida para que se pueda transmitir a la CPU. Estos símbolos y caracteres son traducidos a señales eléctricas representadas en código binario (0,1), ya que el microprocesador del ordenador solo entiende el lenguaje binario o código máquina, también llamado instrucciones máquina. Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como protocolos de comunicación. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programación es muy estricto: A cada instrucción le corresponde una acción del procesador. Los Lenguajes de Programación se clasifican en dos grandes grupos: 1. Lenguajes de bajo nivel: son aquellos que por sus características se encuentran más próximos a la arquitectura de la máquina. Son el lenguaje máquina y el lenguaje ensamblador. 2. Lenguajes de alto nivel: son más próximos al lenguaje común utilizado por el programador y son todos los lenguajes de programación como C, Pascal, Cobol, etc. Características del Lenguaje Máquina. El lenguaje máquina es el primer lenguaje de programación y el único inteligible por el ordenador y se basa en la combinación de ceros y unos(0,1)denominados bit(binary digit) por lo que las instrucciones en código máquina son difíciles de interpretar o corregir, lo que supone grandes esfuerzos por parte del programador para la modificación y actualización de las mismas. Se caracteriza por ser un lenguaje propio de cada procesador, es decir, cada procesador tiene su propio lenguaje máquina que no puede ser entendido por otro. Es un lenguaje diseñado prácticamente a medida del hardware de cada procesador, aprovecha al máximo las características del mismo. Este lenguaje es mucho más rápido que los lenguajes de alto nivel. Por niveles, se puede representar de la siguiente manera: Programador, Lenguaje natural, lenguaje de programación, compilación-traducción-interpretación, lenguaje máquina, equipo informático. LENGUAJE ENSAMBLADOR: El ensamblador fue el primer lenguaje de programación utilizado. Sustituyó al lenguaje máquina y está formado por palabras abreviadas procedentes del inglés formadas por letras y números. Se precisa gran dominio de los códigos binarios y de los sistemas de numeración especialmente el binario y el hexadecimal. Son los llamados códigos mnemotécnicos para indicarle al hardware las operaciones que tiene que realizar. Un código nemotécnico es una palabra o abreviatura fácil de recordar que representa una tarea que debe hacer el procesador; por ejemplo: MOVE, le dice al ordenador que mueva alguna información de una posición a otra de memoria. Para traducir un programa escrito en Lenguaje Ensamblador a lenguaje máquina (código binario) se utiliza un programa llamado Ensamblador. Este programa toma los datos de nuestro programa escrito en lenguaje ensamblador y lo traduce a lenguaje máquina que es el que entiende el ordenador. Programa escrito en lenguaje Ensamblador Ensamblador (Traductor) Programa traducido a lenguaje máquina Cada modelo de ordenador, dependiendo del procesador que utilice, tiene su propio lenguaje ensamblador. Se dice que son lenguajes orientados a la máquina. Así, un programa desarrollado para un equipo no puede ser portado a otro tipo de equipo. El término "portabilidad" describe la capacidad de usar un programa de software en diferentes tipos de equipos. Para poder utilizar un programa de software escrito en un código ensamblador en otro tipo de equipo, ¡a veces será necesario volver a escribir todo el programa! Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje máquina, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de mantener y probar. LENGUAJES DE ALTO NIVEL Hoy día los lenguajes de alto nivel son los más utilizados, ya que utilizan una terminología fácilmente comprensible que se aproxima al lenguaje natural(inglés) y además no están desarrollados en función de la arquitectura o hardware del ordenador que se utilicen lo que implica que pueden ser ejecutados en cualquier máquina con distinto microprocesador, pueden migrar de una máquina a otra sin ningún problema. Son lenguajes que están dirigidos a solucionar problemas mediante el uso de EDD’s. Las EDD son las Estructuras Dinámicas de Datos, son estructuras que se utilizan en todos los lenguajes de programación y que pueden cambiar de tamaño durante la ejecución de un programa y que permiten crear estructuras de datos que se adapten a las necesidades reales de un programa. Cada sentencia de un programa escrito en un lenguaje de alto nivel se traduce, en general, en varias instrucciones de lenguaje máquina. Para traducir un programa escrito en lenguaje de alto nivel (programa fuente) a lenguaje máquina se utiliza un programa llamado Compilador. Este programa toma los datos de nuestro programa escrito en lenguaje de alto nivel ‘C’ y dará como resultado el mismo programa, pero escrito en lenguaje máquina entendible por el ordenador. Después de esta traducción se ejecuta automáticamente un programa llamado Enlazador que se encarga de incorporar las funciones necesarias para nuestro programa que están en la biblioteca del lenguaje. Si durante la traducción se detectan errores el enlace no se hace. La secuencia es la siguiente: Programa escrito en L. Alto Nivel C Compilador + Enlazador Programa ejecutable A diferencia de los Compiladores están los Intérpretes que no realizan la traducción completa del programa fuente, sino que realizan la traducción simultáneamente, es decir, instrucción por instrucción, para cada una de las sentencias del programa, por ejemplo: un programa escrito en lenguaje Basic necesita un intérprete de Basic para ser ejecutado. Un programa escrito en un lenguaje interpretado requiere de un programa auxiliar (el intérprete), que traduce los comandos de los programas según sea necesario. Un programa escrito en un lenguaje "compilado" se traduce a través de un programa anexo llamado compilador que, a su vez, crea un nuevo archivo independiente que no necesita ningún otro programa para ejecutarse a sí mismo. Este archivo se llama ejecutable. Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa anexo para ser ejecutado una vez que ha sido compilado. Además, como sólo es necesaria una traducción, la ejecución se vuelve más rápida. Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que cada modificación del archivo fuente requiere de la compilación del programa para aplicar los cambios. Un lenguaje interpretado permite modificar en tiempo de ejecución el código que se está ejecutando, así como añadirle nuevo, algo que resulta idóneo cuando queremos hacer pequeñas modificaciones en una aplicación y no queremos tener que recompilarla toda cada vez. La principal desventaja del intérprete es la velocidad de ejecución del programa, que es más lenta, comparada con la ejecución directa a código máquina que se utiliza en la compilación en tiempo de ejecución. Un intérprete, actúa de manera casi idéntica a un compilador, con la salvedad de que ejecuta el programa directamente, sin necesidad de generar previamente un ejecutable. Ejemplo de lenguajes de programación interpretado son Python, PHP, ASP, Ruby, Lisp, JavaScript, entre otros. Dentro de los lenguajes de programación que son compilados tenemos la familia C que incluye a C++, C, C# y también otros como Fortran, Pascal y Visual Basic. Lenguajes intermediarios Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilación intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo tanto, diferente al archivo fuente) y no ejecutable (requeriría un intérprete). Los applets Java, pequeños programas que a menudo se cargan en páginas web, son archivos compilados que sólo pueden ejecutarse dentro de un navegador web (son archivos con la extensión.class). Java es un caso particular ya que hace uso de una máquina virtual que se encarga de la compilación del código fuente a un lenguaje intermedio (Bytecode) que luego es interpretado por la máquina virtual de Java (JVM), por lo tanto, es denominado compilado e interpretado. Existen Lenguajes de Nivel Medio, que se encuentran en un punto medio entre los dos anteriores. Aquí podría situarse el Lenguaje C ya que puede trabajar con registros de memoria, característica propia de Lenguajes de Bajo Nivel y a la vez realizar operaciones de alto nivel. Generaciones La evolución de los lenguajes de programación se puede dividir en 5 etapas o generaciones: Primera generación: lenguaje máquina. Segunda generación: primeros lenguajes ensambladores. Tercera generación: primeros lenguajes de alto nivel, por ej. Cobol, Pascal, C… Cuarta generación: son los lenguajes orientados a objetos, haciendo posible la reutilización de partes del código para otros programas. Quinta generación: son los lenguajes de inteligencia artificial (IA). LENGUAJES DE PROGRAMACIÓN PARA trabajar con IA Aunque hay muchos lenguajes de programación disponibles, no todos son válidos para trabajar con IA. Los lenguajes de programación para IA deben ofrecer flexibilidad, puesto que esta tecnología debe adaptarse a los cambios para seguir aprendiendo de sí misma y de los estímulos que recibe. Por ello, aunque todos los lenguajes tienen sus ventajas, la elección depende enteramente del programador y de sus habilidades. Algunos de los lenguajes de programación para IA más recomendados para llevar a cabo un proyecto de automatización o de Machine Learning pueden ser los siguientes. PYTHON: Python es uno de los lenguajes más utilizados para configurar IA. Su simplicidad y las filosofías DRY (Don’t Repeat Yourself) y RAD (Rapid Application Development) en las que se basa lo convierten en un candidato ideal. Puede utilizarse tanto para estructurar datos como para generar algoritmos de IA. Además, dispone de un catálogo de librerías muy extenso que permite hacer realidad cualquier tipo de proyecto. Ningún soporte se resiste a Python, puesto que sirve para trabajar en aplicaciones de todo tipo, sean móviles, web, data science o IA. R: R dispone de paquetes de programación muy numerosos. Algunos de ellos se utilizan en el ámbito del Machine Learning, como RODBC. Para garantizar la funcionalidad de la IA, implementan algoritmos de aprendizaje automático. Se trata de uno de los mejores lenguajes para analizar y tratar con datos. Por ello, es posible crear buenas IA con finalidades estadísticas. LISP: Desde su nacimiento en 1958 de la mano de John McCarthy, Lisp no ha dejado de crecer. Lisp trabaja con expresiones simbólicas y prototipado, herramientas útiles en el campo del Machine Learning. Además, se utiliza en proyectos cuyo objetivo es permitir a las aplicaciones basadas en IA ejecutar razonamientos similares a los humanos. PROLOG: Suele utilizarse en proyectos médicos y para diseñar sistemas de IA especializados. Se trata de un lenguaje de referencia en el entorno de la ingeniería. Una de sus funcionalidades más destacadas es que permite automatizar el backtracking, que consiste en buscar errores y retroceder hasta el punto anterior para tomar otra alternativa. Para conseguir esto, se basa en estructuras de datos arbóreas que facilitan la búsqueda de patrones. Todas estas características combinadas convierten este lenguaje en uno de los más flexibles. JAVA: Java es un lenguaje de programación orientado a objetos que posee todas las herramientas necesarias para trabajar en proyectos de Inteligencia Artificial. Las características más destacadas de Java son la transparencia, la mantenibilidad y la portabilidad. Permite codificar algoritmos muy fácilmente y es un lenguaje escalable. Teniendo en cuenta que una IA está basada en gran medida en estos algoritmos, Java es una muy buena opción. Además, dispone de interfaces de datos muy atractivas para mejorar la experiencia del usuario. Si tenemos alguna duda, dispone de una nutrida comunidad de usuarios que pueden ayudarnos. C++: De C++ se dice que es el lenguaje de programación más rápido del mundo. En este sentido, se trata de uno de los mejores lenguajes de programación para IA, puesto que esta tecnología requiere de ejecuciones y tiempos de respuesta rápidos. C++ convierte el código creado por el usuario en datos legibles para las máquinas, cosa que lo convierte en una opción muy eficiente. TORCH: Torch no es únicamente un lenguaje de programación. También es una librería de Machine Learning y un framework de computación científica. Provee de un amplio rango de algoritmos para el aprendizaje automático. Este lenguaje aprovecha toda la potencia de la CPU para trabajar en Inteligencia Artificial. Algunos ejemplos de lenguajes. A continuación, hacemos una breve lista de algunos lenguajes de programación actuales: Principal área Compilado/interpreta Lenguaje de do aplicación Tiempo ADA real Lenguaje compilado Programación BASIC para Lenguaje fines educativos interpretado Programación C de Lenguaje sistema compilado Programación C++ de Lenguaje sistema compilado orientado a objeto Administración Cobol Lenguaje compilado Cálculo Fortran Lenguaje compilado Programación Java orientada Lenguaje a intermediario Objetos Cálculos MATLAB matemáticos Lenguaje interpretado Inteligencia LISP artificial Lenguaje intermediario Educación Pascal Lenguaje compilado Desarrollo PHP de sitios Lenguaje web interpretado dinámicos Procesamiento Perl de Lenguaje cadenas de interpretado caracteres