Sici3039_leccion01

  • Uploaded by: hinago
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Sici3039_leccion01 as PDF for free.

More details

  • Words: 1,481
  • Pages: 24
Comparación de Lenguajes de Programación Lección #1: Conceptos Introductorios Prof. Antonio F. Huertas

¿Qué es un lenguaje de programación? 



Un lenguaje de programación es un conjunto de palabras, símbolos y reglas que permiten construir programas de computadoras. Estudiar las características de diferentes lenguajes de programación permite 

  



Comprender las ventajas y desventajas de estos lenguajes Seleccionar el lenguaje más conveniente Mejorar la habilidad para aprender nuevos lenguajes Reconocer la importancia de aspectos de implementación

Obviamente, no todos los lenguajes de computadoras son iguales. ¿Cómo se clasifican?

Clasificación de los lenguajes de programación    

Bajo nivel vs. alto nivel Compilado vs. interpretado De acuerdo a la generación De acuerdo al paradigma de programación

Lenguajes de bajo nivel 





Los lenguajes de programación de bajo nivel son aquellos que están más cerca de la computadora. Consisten del conjunto de instrucciones que el CPU puede ejecutar directamente. Las instrucciones consisten de una operación y cero o más operandos. El lenguaje de máquina y el lenguaje de ensamblaje son de bajo nivel.

Lenguajes de bajo nivel (cont.) 



Los lenguajes de bajo nivel tienen el problema de que dependen de la arquitectura del CPU (no son portátiles). Teóricamente, el programador puede construir los programas más eficientes usando lenguajes de bajo nivel, aunque los compiladores han progresado mucho en este aspecto.

Lenguajes de alto nivel 









Los lenguajes de programación de alto nivel son aquellos que están más cerca del ser humano. Cada instrucción corresponde a una o varias instrucciones en lenguajes de bajo nivel. Estas instrucciones usan un formato parecido al de un lenguaje natural (en la mayoría de los casos el Inglés). Lenguajes como Basic, C, C++, Cobol, Fortran, Lisp y Java son de alto nivel. Nuestro curso estudiará y comparará varios lenguajes de alto nivel.

Lenguajes de alto nivel (cont.) 

Ventajas al compararlos con lenguajes de bajo nivel :  







Son más legibles. Son portátiles - las instrucciones no dependen de la arquitectura del CPU. Proveen tipos de datos, tanto simples (enteros, reales, caracteres, booleanos), como estructurados (arreglos, strings, records) Proveen mecanismos de abstracción que permiten que el programador cree subprogramas y tipos de datos. El traductor de un lenguaje de alto nivel puede detectar violaciones a reglas de escritura en un programa y evitar la compilación y/o ejecución del

Lenguajes compilados vs. lenguajes interpretados 





Otra forma de clasificar los lenguajes de programación es de acuerdo al tipo de traductor que usan. Un traductor transforma un programa escrito en un lenguaje de alto nivel a uno de bajo nivel. Los traductores para lenguajes de alto nivel son los compiladores y los interpretadores.

Lenguajes compilados vs. lenguajes interpretados (cont.) 





Un compilador traduce todo el programa a lenguaje de bajo nivel antes de ejecutarlo. Tradicionalmente, lenguajes como C, C++, Cobol y Fortran utilizan compiladores. Un interpretador traduce cada instrucción a lenguaje de máquina a medida que ejecuta el programa. Tradicionalmente, lenguajes como Basic y Lisp utilizan interpretadores. Los lenguajes de scripting tales como Perl, Tcl, PHP, JavaScript son interpretados.

Lenguajes compilados vs. lenguajes interpretados (cont.) 





Algunos lenguajes, como Java, utilizan tanto compilación como interpretación. El compilador de Java traduce el programa a un lenguaje de máquina independiente de la arquitectura (el byte code). Cada instrucción del byte code es interpretada usando un intérprete llamado el Java Virtual Machine.

Clasificación de acuerdo a la generación 

La clasificación de lenguajes de acuerdo a su generación (1ra gen., 2da gen., etc.) tiene sentido ya que: 



Mientras más alta sea la generación, mayor es el nivel de abstración y menor es la dependencia de la arquitectura de la máquina. Un programa debería ser escrito más fácilmente en un lenguaje de mayor generación que en uno de menor generación.

Clasificación de acuerdo a la generación (cont.)   





Primera – lenguaje de máquina Segunda – lenguaje de ensamblaje Tercera – lenguaje procedimentales (tales como Basic, Cobol o C) y orientados a objetos (tales como C++ y Java) Cuarta – lenguajes funcionales y declarativos (tales como Lisp, Prolog, SQL y VRML) Quinta – lenguajes naturales (tales como el Español o el Inglés)

Clasificación de acuerdo al paradigma de programación 



Los paradigmas de programación son enfoques alternativos para construir programas. Tradicionalmente, los paradigmas más importantes son los siguientes:    

Imperativo o procedimental Orientado a objetos Funcional Declarativo

Paradigma imperativo 





Los programas consisten de rutinas que contienen instrucciones que son ejecutadas mayormente en secuencia. Las estructuras de control, tales como decisiones y ciclos, y las llamadas a subprogramas (rutinas) son usadas para alterar la secuencia. Debido a esto último, la programación imperativa también se conoce como estructurada y también como procedimental.

Paradigma imperativo (cont.) 





El estado de un programa puede ser determinado observando los valores de las variables. El paradigma imperativo está muy arraigado al concepto de arquitectura Von Neumann. Esto es visto por muchos como un aspecto negativo que dificulta la programación. Lenguajes como Basic, C, Cobol, Fortran y Pascal pertenecen a este paradigma.

Paradigma orientado a objetos 







Los programas consisten de objetos que interactúan entre sí por medio de mensajes. Los objetos consisten de datos y de operaciones para manipular esos datos. Cada objeto pertenece a una clase y todos los objetos de la misma clase tienen la misma estructura. Es posible diseñar objetos que contengan otros objetos (composición) y objetos que se deriven de objetos previamente creados (herencia).

Paradigma orientado a objetos (cont.) 







La idea principal de la orientación a objetos es maximizar la reutilización de código y la abstracción. La mayoría de los lenguajes modernos de programación son orientados a objetos. Lenguajes como C++, C#, Java y Smalltalk pertenecen a este paradigma. Algunos lenguajes imperativos tienen extensiones que permiten la programación orientada a objetos, tales como Pascal (Turbo Pascal, Delphi) y Basic (Visual Basic .Net).

Paradigma funcional 





Los programas consisten de fuciones que reciben como argumentos los resultados de otras funciones. Las funciones en estos lenguajes pueden aceptar funciones como parámetros y también pueden devolver funciones como resultados. (Las funciones son valores de primera clase.) En la mayoría de los lenguajes funcionales, las listas dinámicas son un tipo de datos provisto. Por lo tanto, el programador cuenta con operaciones prehechas para manejarlas.

Paradigma funcional (cont.) 



 

En los lenguajes funcionales puros, no existe el enunciado de asignación. Esto evita que las funciones puedan ocasionar efectos secundarios tales como modificar una variable global o devolver resultados por medio de parametros por referencia. En cuanto a las estructuras de control, estos lenguajes proveen estructuras de decisión pero no de ciclos. Las repeticiones se hacen usando recursión. Lisp es el lenguaje funcional por excelencia. Otros lenguajes en esta categoría son Scheme (un dialecto de Lisp), Haskell y ML.

Paradigma declarativo 







Los programas consisten de declaraciones donde se indican las carácterísticas del problema que se quiere resolver, pero no se indica el algoritmo para resilverlo. El nivel de abstracción es bien alto ya que el algoritmo es determinado por el traductor. Normalmente los lenguajes declarativos no son de propósito general. Lenguajes como Prolog (bases de datos deductivas y manejos de listas), SQL (bases de datos relacionales) y VRML (graficas en 3D) son declarativos.

Paradigma lógico 





Los lenguajes lógicos son un tipo de lenguajes declarativos. En estos lenguajes se utilizan hechos y reglas que permiten deducir otros hechos y de esta manera resolver el problema deseado. Prolog es el lenguaje lógico por excelencia y utiliza la lógica proposicional.

Algunos datos históricos  

     

1940s – lenguaje de máquina 1950s – primeros lenguajes de alto nivel, tales como Fortran y Lisp 1960s – Basic, Cobol, Algol, Simula 1970s – Ada, C, Pascol, Prolog 1980s – C++, ML, Perl 1990s – Java, VRML 2000s – C# Estas son aproximaciones. Recuerde que los lenguajes evolucionan.

Aspectos importantes de la programacion moderna 



La programación visual permite construir parte o todo el programa mediante símbolos gráficos. Es usada frecuentemente para crear programas con una interfaz gráfica (GUI). Lenguajes como Visual Basic, Java y C# permiten crear la interfaz gráfica mediante programación visual. Los lenguajes interpretados, tales como los scripting languages, son muy utilizados hoy en día en la creación de sistemas de información para el Web.

Aspectos importantes de la programacion moderna (cont.) 



Un lenguaje puede ser muy bueno para un área y pésimo para otra. Cómo se implementa el lenguaje es importante. A veces se subestiman lenguajes y/o características de lenguajes ya que no son apropiadas para desarrollar programas con el hardware actual. Esto es un error ya que la capacidad de almacenaje y procesamiento de las computadoras aumenta constantemente.

More Documents from "hinago"