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
lenguajes DE programación BREVE CLASIFICACION DE LOS LENGUAJES máquina ensamblador alto nivel compilados Interpretados NO ESTRUCTURADOS ESTRUCTURADOS declarativos Imperativos orientados a objetos (POO)
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
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.
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.
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 JavaScript: 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
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
lenguajes DE programación LENGUAJES DE ALTO NIVEL LENGUAJE MAQUINA LENGUAJE ENSAMBLADOR LENGUAJES DE ALTO NIVEL
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. 00100000000010111000 00100000000010111010 00100000000010110000 00100000000010111100 00100000000010111110 00100000000010100000
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.
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.
lenguajes DE programación LENGUAJES 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.
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).
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.
lenguajes DE programación LENGUAJES INTERPRETADOS .VS. LENGUAJES COMPILADOS
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 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.
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.
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.
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.
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.
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.
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.
lenguajes DE programación LENGUAJES INTERPRETADOS Ventajas: Rápido en tiempo de diseño (prueba y error) Corrección y modificación en línea
lenguajes DE programación LENGUAJES INTERPRETADOS Inconvenientes : Muy lento en tiempo de ejecución. Muy difícil de compartir Muy difícil de realizar aplicaciones grandes Malos hábitos
lenguajes DE programación LENGUAJES DECLARATIVOS LENGUAJES IMPERATIVOS .VS. LENGUAJES IMPERATIVOS
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 CustomerName,City FROM Customers; => Listar nombre y ciudad de la lista de clientes
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.
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.
lenguajes DE programación LENGUAJES DECLARATIVOS Ventajas: La solución de un problema se puede realizar con un nivel de abstracción considerablemente alto. Es útil en la resolución de problemas relacionados con inteligencia artificial, bases de datos, configuración y comunicación entre procesos
lenguajes DE programación LENGUAJES DECLARATIVOS Inconvenientes: 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. El proceso es relativamente más lento que en la programación imperativa
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.
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…
lenguajes DE programación LENGUAJES NO ESTRUCTURADOS .VS. LENGUAJES ESTRUCTURADOS
lenguajes DE programación LENGUAJES NO ESTRUCTURADOS La programación no estructurada permite la bifurcación desde y hacia cualquier línea del programa.
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.
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: Secuencia Selección (if y switch) Iteración (bucles for y while)
lenguajes DE programación LENGUAJES ESTRUCTURADOS La programación estructurada considera innecesaria y contraproducente el uso de la instrucción de transferencia incondicional (GOTO)
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).
lenguajes DE programación LENGUAJES ORIENTADOS OBJETO ABAP2 ABL3 ActionScript ActionScript 3 Ada C++ C C Sharp (C#) Clarion Clipper4 D Object Pascal Gambas GObject Genie Harbour Eiffel Fortran 90/95 Java JavaScript5 Lexico6 Objective-C Ocaml Oz R Perl7 8 PHP9 PowerBuilder Processing.10 Python Ruby Self Smalltalk11 Magik Vala VB.NET Visual FoxPro12 Visual Basic 6.0 Visual DataFlex Visual Objects XBase++ DRP Scala13 14 …
lenguajes DE programación Teoría de la Pasta Aplicada al Desarrollo de Software CODIGO ESPAGHETTI .VS. CODIGO LASAGNE CODIGO RAVIOLI
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.
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.
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.