LENGUAJES DE PROGRAMACIN Un lenguaje de programacin es

  • Slides: 46
Download presentation
LENGUAJES DE PROGRAMACIÓN Un lenguaje de programación es un lenguaje formal diseñado para realizar

LENGUAJES DE PROGRAMACIÓN Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. © Dr. José Antonio Garrido Natarén 2017 1/46

LENGUAJES DE PROGRAMACIÓN BREVE CLASIFICACION DE LOS LENGUAJES • MÁQUINA • ENSAMBLADOR • ALTO

LENGUAJES DE PROGRAMACIÓN BREVE CLASIFICACION DE LOS LENGUAJES • MÁQUINA • ENSAMBLADOR • ALTO NIVEL • COMPILADOS • INTERPRETADOS • NO ESTRUCTURADOS • DECLARATIVOS • IMPERATIVOS • ORIENTADOS A OBJETOS (POO) 2/46

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN Un paradigma es algo que se toma como

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN Un paradigma es algo que se toma como “modelo digno de seguir”. “Serie de prácticas que trazan los lineamientos de una disciplina científica a lo largo de un cierto lapso temporal”. Thomas Kuhn 3/46

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN Un paradigma de programación es una propuesta tecnológica

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN Un paradigma de programación es una propuesta tecnológica adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que únicamente trata de resolver uno o varios problemas claramente delimitados. 4/46

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN • Es un estilo de programación empleado. •

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN • Es un estilo de programación empleado. • Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición. • Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente. • El paradigma de programación que actualmente es el más usado es la orientación a objetos. 5/46

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN Algunos lenguajes de programación pueden soportar múltiples paradigmas

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN Algunos lenguajes de programación pueden soportar múltiples paradigmas de programación. • • • Scala: Imperativo, orientado a objetos, funcional, genérico y concurrente Erlang: Funcional, concurrente y distribuido Perl: Imperativo, orientado a objetos y funcional PHP: Imperativo, orientado a objetos, funcional y reflexivo Java. Script: Imperativo, orientado a objetos (prototipos) y funcional Java: Imperativo, orientado a objetos, reflexivo y genérico Python y Ruby: Imperativo, orientado a objetos, reflexivo y funcional C++: Imperativo, orientado a objetos, funcional y genérico C#: Imperativo, orientado a objetos, funcional (lambda), reflexivo y genérico 6/46

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN Tipos mas comunes • Lenguajes no estructurados •

LENGUAJES DE PROGRAMACIÓN PARADIGMAS DE PROGRAMACIÓN Tipos mas comunes • Lenguajes no estructurados • Lenguajes estructurados • Lenguaje Objeto Otros tipos: • Reflexivo • Funcional • Concurrente • Distribuido • Genérico 7/46

LENGUAJES DE PROGRAMACIÓN LENGUAJE MAQUINA LENGUAJE ENSAMBLADOR LENGUAJES DE ALTO NIVEL 8/46

LENGUAJES DE PROGRAMACIÓN LENGUAJE MAQUINA LENGUAJE ENSAMBLADOR LENGUAJES DE ALTO NIVEL 8/46

LENGUAJES DE PROGRAMACIÓN LENGUAJE MAQUINA El lenguaje máquina de una computadora consta de cadenas

LENGUAJES DE PROGRAMACIÓN LENGUAJE MAQUINA El lenguaje máquina de una computadora consta de cadenas de números binarios (ceros y unos) y es el único que "entienden" directamente los procesadores. 0010000010111000 0010000010111010 0010000010110000 00100000000010111110 0010000010100000 0010000010111000 0010000010110000 9/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES ENSAMBLADORES • Utilizan códigos nemotécnicos (ayuda para la memorización )

LENGUAJES DE PROGRAMACIÓN LENGUAJES ENSAMBLADORES • Utilizan códigos nemotécnicos (ayuda para la memorización ) para las operaciones y direcciones simbólica (1950). • Es una sustitución de los códigos de operaciones numéricos del lenguaje de máquina por símbolos alfabéticos, que son los códigos nemotécnicos. 10/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES ENSAMBLADORES Los programas ensambladores traducen los símbolos de código de

LENGUAJES DE PROGRAMACIÓN LENGUAJES ENSAMBLADORES Los programas ensambladores traducen los símbolos de código de operación especificados a sus equivalentes en lenguaje de máquina. 11/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES ENSAMBLADORES 12/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES ENSAMBLADORES 12/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DE ALTO NIVEL 1. 3 • Los primeros programas ensambladores

LENGUAJES DE PROGRAMACIÓN LENGUAJES DE ALTO NIVEL 1. 3 • Los primeros programas ensambladores producían sólo una instrucción en lenguaje de máquina por cada instrucción del programa fuente. • Los Lenguajes de Alto Nivel agilizan la codificación, produciendo una cantidad variable de instrucciones en lenguaje de máquina por cada instrucción del programa fuente. 13/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DE ALTO NIVEL • Los programas en lenguaje de alto

LENGUAJES DE PROGRAMACIÓN LENGUAJES DE ALTO NIVEL • Los programas en lenguaje de alto nivel se pueden utilizar con diferentes marcas de computadores sin tener que hacer modificaciones considerables (El compilador lo realiza). 14/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DE ALTO NIVEL • Son más fáciles de aprender que

LENGUAJES DE PROGRAMACIÓN LENGUAJES DE ALTO NIVEL • Son más fáciles de aprender que los lenguajes ensambladores. • Se pueden escribir más rápidamente. • Permiten tener mejor documentación. • Son más fáciles de mantener. Un programador que sepa escribir programas en uno de estos lenguajes no está limitado a utilizar un solo tipo de máquina. 15/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADOS. VS. LENGUAJES COMPILADOS 16/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADOS. VS. LENGUAJES COMPILADOS 16/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADOS • Un programa que se escribe en un lenguaje

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADOS • Un programa que se escribe en un lenguaje de alto nivel tiene que traducirse a un código que pueda utilizar la máquina • Los programas que pueden realizar esta operación se llaman compiladores 17/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADO • los compiladores pueden generar muchas líneas de código

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADO • los compiladores pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. • Se requiere una corrida de compilación antes de procesar los datos de un problema. 18/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADOS Los compiladores son aquellos cuya función es traducir un

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADOS Los compiladores son aquellos cuya función es traducir un programa escrito (código fuente) en un determinado lenguaje a un idioma (código objeto) que la computadora entienda. El código objeto está en lenguaje máquina con código binario. 19/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADOS • Los compiladores traducen el programa fuente y graban

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADOS • Los compiladores traducen el programa fuente y graban de forma permanente el código objeto que se produce durante la corrida de compilación para utilizarlo en una corrida de producción futura. • Cada vez que se ejecuta el programa compilado, solo se necesita cargarlo en la computadora. 20/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADOS Al usar un lenguaje compilado, el programa desarrollado nunca

LENGUAJES DE PROGRAMACIÓN LENGUAJES COMPILADOS Al usar un lenguaje compilado, el programa desarrollado nunca se ejecuta mientras haya errores. Solo hasta que luego de haber sido compilado ya no aparecen errores en el código. 21/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADOS La traducción de código es una alternativa diferente de

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADOS La traducción de código es una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. 22/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADO • El programa fuente se carga en la computadora

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADO • El programa fuente se carga en la computadora junto con los datos que se van a procesar y un programa intérprete, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. • El programa interpretado (código objeto) nunca se graba para utilizarlo posteriormente. 23/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADO Cada vez que se utilice una instrucción, se le

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADO Cada vez que se utilice una instrucción, se le debe interpretar una y otra vez y traducirla en lenguaje máquina. Durante el procesamiento repetitivo de los pasos de un ciclo, cada instrucción del ciclo tiene que ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución. 24/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADOS Ventajas: 1. Rápido en tiempo de diseño (prueba y

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADOS Ventajas: 1. Rápido en tiempo de diseño (prueba y error) 2. Corrección y modificación en línea 25/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADOS Inconvenientes : 1. Muy lento en tiempo de ejecución.

LENGUAJES DE PROGRAMACIÓN LENGUAJES INTERPRETADOS Inconvenientes : 1. Muy lento en tiempo de ejecución. 2. Muy difícil de compartir 3. Muy difícil de realizar aplicaciones grandes 4. Malos hábitos 26/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS. VS. LENGUAJES IMPERATIVOS 27/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS. VS. LENGUAJES IMPERATIVOS 27/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS Lenguajes de programación en los cuales se le indica

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS Lenguajes de programación en los cuales se le indica a la computadora qué es lo que se desea obtener o qué es lo que se esta buscando. SELECT Customer. Name, City FROM Customers; => Listar nombre y ciudad de la lista de clientes 28/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS La programación declarativa es una forma de programación que

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS La programación declarativa es una forma de programación que implica la descripción de un problema dado en lugar de proveer una solución para dicho problema. Algunos lenguajes: XML, HTML, SQL, LISP, PROLOG. 29/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS La programación declarativa provee el "qué", pero deja el

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS La programación declarativa provee el "qué", pero deja el "cómo" liberado a la implementación particular del intérprete. 30/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS Ventajas: 1. La solución de un problema se puede

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS Ventajas: 1. La solución de un problema se puede realizar con un nivel de abstracción considerablemente alto. 2. Es útil en la resolución de problemas relacionados con inteligencia artificial, bases de datos, configuración y comunicación entre procesos 31/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS Inconvenientes: 1. No puede resolver cualquier problema dado, sino

LENGUAJES DE PROGRAMACIÓN LENGUAJES DECLARATIVOS Inconvenientes: 1. No puede resolver cualquier problema dado, sino que está restringida al subconjunto de problemas para los que el intérprete o compilador fue diseñado. 2. El proceso es relativamente más lento que en la programación imperativa 32/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES IMPERATIVOS Lenguajes de programación en los cuales se le ordena

LENGUAJES DE PROGRAMACIÓN LENGUAJES IMPERATIVOS Lenguajes de programación en los cuales se le ordena a la computadora cómo realizar una tarea siguiendo una serie de pasos o instrucciones. 33/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES IMPERATIVOS • La programación imperativa le indica al computador cómo

LENGUAJES DE PROGRAMACIÓN LENGUAJES IMPERATIVOS • La programación imperativa le indica al computador cómo realizar una tarea a través de un conjunto de instrucciones. • La ejecución se realiza secuencialmente. Algunos lenguajes: FORTAN, PASCAL, JAVA, CLIPPER, PERL, C, BASIC, C#, PHYTON, ALGOL… 34/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES NO ESTRUCTURADOS. VS. LENGUAJES ESTRUCTURADOS 35/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES NO ESTRUCTURADOS. VS. LENGUAJES ESTRUCTURADOS 35/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES NO ESTRUCTURADOS La programación no estructurada permite la bifurcación desde

LENGUAJES DE PROGRAMACIÓN LENGUAJES NO ESTRUCTURADOS La programación no estructurada permite la bifurcación desde y hacia cualquier línea del programa. 36/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES NO ESTRUCTURADOS La programación NO estructurada utiliza abusivamente instrucciones de

LENGUAJES DE PROGRAMACIÓN LENGUAJES NO ESTRUCTURADOS La programación NO estructurada utiliza abusivamente instrucciones de ruptura de secuencia (GOTO) Ejemplos de programación NO estructurada: BASIC, FORTRAN, Assembler. 37/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES ESTRUCTURADOS La programación estructurada es un paradigma de programación orientado

LENGUAJES DE PROGRAMACIÓN LENGUAJES ESTRUCTURADOS La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora. La programación estructurada utilizan únicamente subrutinas y tres estructuras: 1. Secuencia 2. Selección (if y switch) 3. Iteración (bucles for y while) 38/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES ESTRUCTURADOS La programación estructurada considera innecesaria y contraproducente el uso

LENGUAJES DE PROGRAMACIÓN LENGUAJES ESTRUCTURADOS La programación estructurada considera innecesaria y contraproducente el uso de la instrucción de transferencia incondicional (GOTO) 39/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES ORIENTADOS OBJETO • Se definen los programas en términos de

LENGUAJES DE PROGRAMACIÓN LENGUAJES ORIENTADOS OBJETO • Se definen los programas en términos de "clases de objetos“. • Los objetos son entidades que combinan a) Estado (datos) b) Comportamiento (procedimientos y métodos) c) Identidad (propiedad que lo diferencia del resto). 40/46

LENGUAJES DE PROGRAMACIÓN LENGUAJES ORIENTADOS OBJETO • • • • ABAP 2 ABL 3

LENGUAJES DE PROGRAMACIÓN LENGUAJES ORIENTADOS OBJETO • • • • ABAP 2 ABL 3 Action. Script 3 Ada C++ C C Sharp (C#) Clarion Clipper 4 D Object Pascal Gambas GObject • • • • Genie Harbour Eiffel Fortran 90/95 Java. Script 5 Lexico 6 Objective-C Ocaml Oz R Perl 7 8 PHP 9 Power. Builder Processing. 10 • • • • Python Ruby Self Smalltalk 11 Magik Vala VB. NET Visual Fox. Pro 12 Visual Basic 6. 0 Visual Data. Flex Visual Objects XBase++ DRP Scala 13 14 … 41/46

LENGUAJES DE PROGRAMACIÓN Teoría de la Pasta Aplicada al Desarrollo de Software CODIGO ESPAGHETTI.

LENGUAJES DE PROGRAMACIÓN Teoría de la Pasta Aplicada al Desarrollo de Software CODIGO ESPAGHETTI. VS. CODIGO LASAGNE. VS. CODIGO RAVIOLI 42/46

LENGUAJES DE PROGRAMACIÓN CODIGO ESPAGHETTI El código espagueti, es un nombre peyorativo utilizado para

LENGUAJES DE PROGRAMACIÓN CODIGO ESPAGHETTI El código espagueti, es un nombre peyorativo utilizado para designar aquellos programas cuyo flujo de ejecución se asemeja a una caótica maraña de espaguetis entrelazados, convirtiéndolo en algo casi imposible de seguir. 43/46

LENGUAJES DE PROGRAMACIÓN CODIGO LASAGNE El código lasaña es un patrón arquitectónico. Describe una

LENGUAJES DE PROGRAMACIÓN CODIGO LASAGNE El código lasaña es un patrón arquitectónico. Describe una situación ideal en la que el software adopta una estructura dividida en capas, simple, y fácil de entender, con una clara separación de responsabilidades. 44/46

LENGUAJES DE PROGRAMACIÓN CODIGO RAVIOLI El Código Ravioli es un paradigma orientado a objetos

LENGUAJES DE PROGRAMACIÓN CODIGO RAVIOLI El Código Ravioli es un paradigma orientado a objetos y que consiste en la creación de un cierto número de pequeñas clases acopladas, cada una de las cuales contiene algo de “carne” para el sistema, siendo estas fácilmente modificables o reemplazables sin afectar al resto de la aplicación. 45/46