Sunteți pe pagina 1din 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.

S-ar putea să vă placă și