Download Lenguajes máquina - Instituto Tecnológico de Morelia

Document related concepts

Lisp wikipedia , lookup

Programación funcional wikipedia , lookup

Scala (lenguaje de programación) wikipedia , lookup

APL wikipedia , lookup

Clojure wikipedia , lookup

Transcript
Introducción a los Lenguajes
de Programación.
Conceptos Generales
M.C. Juan Carlos Olivares Rojas
[email protected]
http://antares.itmorelia.edu.mx/~jcolivar
Agosto, 2009
Agenda
• Clasificación
de
los
lenguajes
de
programación. Paradigmas de programación
• Elementos esenciales de un lenguaje de
programación.
• Abstracción
de
programación.
los
lenguajes
de
Clasificación de los Lenguajes de
Programación
• Actividad: menciona desde tu punto de vista
cuales son los cinco lenguajes de
programación más populares alrededor del
mundo.
• Los lenguajes más populares son según
“Developers Shift to Dynamic Programming
Language”, Linda Dailey Paulson, Computer
Magazine, febrero de 2007, IEEE Computer
Society Press, pp. 12-15.
Introducción
1. Java estático
2. C estático
3. C++ estático
4. Visual Basic estático
5. PHP dinámico
6. Perl dinámico
7. C#
8. Python estático
9. JavaScript dinámico
10. Ruby dinámico
Introducción
11. SAS dinámico
12. Delphi estático
13. PL/SQL dinámico
14. D estático
15. ABAB dinámico
16. Lisp/Scheme
17. Ada estático
18. Cobol dinámico
19. Pascal estático
20. Transact/SQL dinámico
Introducción
La principal razón para que
las personas aprendan
lenguajes de
programación es utilizar
la computadora como
una herramienta para la
resolución de problemas.
Introducción
• ¿Qué es un programa?
• “Un programa computacional es un conjunto
de instrucciones detalladas, paso a paso, que
le indican a la computadora cómo resolver un
problema o realizar una tarea” (Laudon).
Introducción
• ¿Qué es un lenguaje? Es un instrumento
para comunicar dos entidades entre sí.
• Es necesario que las dos entidades conozcan
el mismo lenguaje para poderse comunicar
en caso contrario se necesitará de un
intermedio denominado traductor para
podernos comunicar.
Problemática de Computación
Historia de los Lenguajes
Introducción
• Las
primeras
computadoras
fueron
programadas sin lenguajes de programación,
los técnicos sólo reconectaban los cables de
los circuitos de la computadora para
prepararla
para
varias
tareas
de
procesamiento.
• La idea de almacenar programas en la
memoria de la computadora abrió el camino a
los lenguajes de programación que
permitieron a los programadores escribir una
serie de comando y cargarlos en la
computadora para su ejecución.
Introducción
• Los primeros lenguajes de programación
eran primitivos, pero en el transcurso de
varias décadas, evolucionaron hasta dar
paso a los lenguajes de hoy en día.
• El lenguaje ensamblador permite a los
programadores
emplear
palabras
de
comando
abreviadas,
como
LDA
(“Load”=cargar) en lugar de los 1´s y 0´s
usados en el lenguaje máquina.
Introducción
• Después aparecieron los lenguajes más
elaborados para describir solución en base a
algoritmos.
• Se creía que con estos lenguajes se
eliminarían los errores de programación, y
aunque los errores fueron menos frecuentes
y el tiempo de desarrollo disminuyó
significativamente, pero los programadores
también cometían errores, por lo que era
necesario seguir desarrollando nuevos
lenguajes de programación.
Introducción
• Su característica importante es que tienen
mayor parecido con los lenguajes humanos o
lenguajes naturales.
• De esta generación surge SQL y RPG-1, los
cuales eliminan gran parte de la puntuación y
las reglas gramaticales estrictas, que hacía
complicados a los lenguajes de tercera
generación.
Introducción
• En la actualidad, los lenguajes de cuarta
generación se usan en aplicaciones de base
de datos. Un solo comando de SQL,
reemplaza muchas líneas de código de
tercera generación.
• En 1982, un grupo de investigadores
japoneses empezaron a trabajar en proyecto
que denominaron de quinta generación que
usaba Prolog, que es un lenguaje declarativo.
Introducción
• Además de clasificarse por nivel y
generación, los lenguajes de programación
se clasifican por paradigma.
• Los programadores afrontan los problemas
de diferentes maneras, por lo cual
seleccionan el paradigma de programación
más adecuado.
Introducción
• La frase “Paradigma de Programación” alude
a la manera de conceptualizar y estructurar
las tareas que realiza una computadora.
• Existen
numerosos
paradigmas
de
programación y no son mutuamente
excluyentes.
• Los lenguajes de programación se ordenan
mediante los paradigmas de programación
que soportan.
Paradigmas
Paradigma
Lenguajes
Descripción
Procedural
BASIC, Pascal,
COBOL, FORTAN,
Ada
Destaca los algoritmos lineales, paso a
paso, que proporcionan a la computadora
las instrucciones para resolver un
problema o realizar una tarea.
Orientado a
Objetos
Smalltalk, C++, Java
Formula programas como una serie de
objetos y métodos que interactúan para
realizar una tarea específica.
Declarativo
Prolog
Se concentra en el uso de hechos y
reglas para describir un problema.
Funcional
LISP, Scheme,
Haskell
Destaca la evaluación de expresiones,
llamadas funciones.
Orientado a
Eventos
Visual Basic, C#
Se concentra en la selección de
elementos de interfaz de usuario y la
definición de rutinas de manejo de
eventos que se disparan con diversas
actividades del ratón o del teclado.
Otras clasificaciones
• Los lenguajes se pueden clasificar de
acuerdo a su propósito pudiendo ser de
propósito general cuando con ellos se
pueden realizar múltiples actividades; o bien,
de propósitos específico, cuando realizan una
sola acción de excelente manera.
• Los lenguajes de programación de propósito
general (C, Java, Ada, Pascal, etc.) son los
más utilizados.
Otras Clasificaciones
• Los lenguajes de propósito general son como
los autos sedán, sirven para todo, pero no
son muy buenos para correr (deportivos) o
para carga (trailer) por lo que se necesita de
lenguajes de propósito específico (carros
especiales) para ciertas circunstancias. Al
final de cuentas, dichos lenguajes sirven para
lo mismo, resolver problemas, que en el caso
de los carros es transporte.
Otras clasificaciones
• ¿Por qué es necesario aprender más de un
lenguaje de computación?
• Por que en general, se busca utilizar la
herramienta más sencilla y a la vez poderosa
para resolver problemas de computación.
Dominando diversos lenguajes se puede
seleccionar aquel que se acople de mejor
manera a nuestras necesidades.
Elementos esenciales de un
lenguaje de programación.
• Los lenguajes de programación poseen
diferentes características que a continuación
se muestran.
• Actividad: ¿Cuáles son las características y
partes que tiene un lenguaje natural como el
Español?
• ¿Qué partes y características tiene un
Lenguaje de Programación de Computadoras
como C?
Características
• Legibilidad: Un programa es legible si la
estructura subyacente del algoritmo y los
datos que el programa representa quedan de
manifiesto al inspeccionar el texto del
programa.
• Facilidad de Escritura: Las características
sintácticas que hace que un programa sea
fácil de escribir suelen hallarse en conflicto
con las características que facilitan su
lectura.
Características
• Facilidad de Verificación: Entender cada
enunciado de un programa es relativamente
fácil, el proceso global de crear programas
correctos es en extremo difícil, por lo que se
necesitan técnicas que permitan probar que
el programa es matemáticamente correcto.
Características
• Símbolos de Operadores: Casi todos los
lenguajes emplean los caracteres especiales
(+) y (-) para representar las 2 operaciones
aritméticas básicas. Casi todos los lenguajes
adoptan alguna combinación y utilizan
caracteres
especiales
para
ciertos
operadores.
Características
• Facilidad de Traducción: la traducción de los
programas se dificulta conforme aumenta el
número de
construcciones sintácticas
especiales. La clave para una traducción fácil
es la regularidad de la estructura.
• Carencia de Ambigüedad: Una construcción
ambigua permite dos o más interpretaciones
distintas. El problema de ambigüedad surge
por lo común no en la estructura de
elementos individuales del programa, sino en
la interacción entre diferentes estructuras.
Características
• Conjunto de Caracteres: Existen varios
conjuntos de caracteres de uso amplio, como
el conjunto ASCII, cada uno con un conjunto
diferentes de caracteres especiales, además
de las letras y dígitos básicos.
• Identificadores: La sintaxis básica para
identificadores, una cadena de letras y dígitos
que comienzan con una letra, es la mas
usada.
Características
• Palabras clave y palabras reservadas: Una
palabra clave es un identificador que se usa
como una parte fija de la sintaxis de un
enunciado, por ejemplo “IF”. Una palabra
clave es una palabra reservada y no se
puede utilizar como un identificador. Casi
todos los lenguajes emplean actualmente
palabras reservadas con lo cual se mejora la
capacidad de detección de errores de los
traductores.
Características
• Comentarios: son mensajes que nos
permiten mejorar la legibilidad de los
programas
sin
interferir
con
su
funcionamiento. Los comentarios pueden ser
codificados de varias maneras dependiendo
del lenguaje, como renglones separados en
Fortran, “/*” y “*/” en C, al final de un renglón
como en Ada, en un renglón (al principio o al
final) con “//” como en C++, o “!” en Fortran
90.
Características
• Espacios en Blanco: varían ampliamente de
lenguaje a lenguaje. En Fortran no son
significativos, excepto en cadena de
caracteres. En Snobol 4 la concatenación es
por medio de un espacio en blanco y también
se utiliza como separador entre elementos de
un enunciado. En C se pasan por alto.
• Delimitadores: es un elemento sintáctico que
se usa simplemente para señalar el principio
o final de alguna unidad sintáctica, como un
enunciado o expresión.
Características
• Formatos de campos libres y fijos: una
sintaxis es de campo libre si los enunciados
de un programa se pueden escribir en
cualquier parte de un renglón o las
interrupciones entre renglones. Una sintaxis
de campo fijo, utiliza la posición sobre un
renglón
de
entrada
para
transmitir
información.
Características
• Expresiones: son funciones que acceden a
objetos de datos en un programa y devuelven
algún valor. Las expresiones son los bloques
sintácticos básicos de construcción a partir
de los cuales se construyen enunciados.
• Enunciados: constituyen el componente
sintáctico más destacado en los lenguajes
imperativos. Su sintaxis tiene un efecto
decisivo sobre la regularidad, legibilidad y
facilidad de escritura generales del lenguaje.
Traductores de lenguaje
• Son programas que traducen los programas
fuente (escritos en lenguaje de alto nivel) a
lenguaje máquina
PROGRAMA
FUENTE
TRADUCTOR
LENGUAJE
MAQUINA
Los traductores se dividen en:
• Compiladores: Traduce los programas
fuente (escritos en lenguaje de alto nivel)
a lenguaje máquina. Ej. C y FORTRAN
• Intérpretes: Es un traductor que toma un
programa fuente, lo traduce y a
continuación lo ejecuta. Ej. BASIC,
Smalltalk
Traducción
• La traducción
principales
se
divide
en
2
partes
• Análisis del programa fuente de entrada
• Síntesis del programa objeto ejecutable
• Un compilador básico realiza lo anterior de la
manera siguiente:
Estructura de un compilador
Proceso de Compilación
Traducción, Interpretación y Compilación
•
Ensamblador.
•
Preprocesador.
•
Traductor.
• Interprete.

Compilador.
Abstracción de los lenguajes de
programación.
• La abstracción hace referencia al nivel que se
encuentran orientados los lenguajes de
programación.
• Los niveles de abstracción hacen referencia a
que tan fácil y eficientes son los lenguajes de
programación.
Introducción
• Los lenguajes se clasifican de diferentes
maneras. Pueden dividirse en 2 categorías
principales:
• Lenguaje de Bajo Nivel: Incluyen comandos
que son específicos para una familia de
microprocesadores
determinados.
Se
requiere que un programador escriba
instrucciones en lenguaje de bajo nivel para
ese
hardware
específicamente,
estas
dependen del tipo de procesador, registros y
direcciones de memoria.
Introducción
• Lenguaje de Alto Nivel
• Proporciona un nivel de abstracción que
oculta el lenguaje ensamblador o de bajo
nivel y proporciona palabras y gramática de
comandos que son mas parecidos al lenguaje
humano.
Introducción
• Lenguajes de alto nivel como Cobol, Basic,
Java y C, facilitan el proceso de
programación
al
reemplazar
cadenas
ininteligibles de 1´s y 0´s, o comandos de
ensamblador, con comandos mas sencillos
como Print y Write.
• Los comandos de lenguaje de alto nivel
eliminan muchas líneas de código al incluir
en un solo comando de alto nivel varios
Clasificación de los Lenguajes de
Programación
Lenguajes
máquina
Lenguajes
de bajo nivel
Son
directamente
inteligibles por
la computadora
(0 y 1)
Sus instrucciones
son mas sencillas
de recordar, pero
necesitan ser
traducidas al
lenguaje máquina.
Ensamblador
Lenguajes
de alto nivel
Sus instrucciones son
muy fáciles de
recordar pero
necesitan traducirse
a lenguaje máquina
por medio de un
compilador o
intérprete.
C++
VisualBasic
Fortran
Pascal
Ejemplo de instrucciones de
suma y resta
Lenguaje de alto
nivel
Lenguaje de
bajo nivel
(Ensamblador)
Lenguaje
máquina
+
ADD
100101
_
SUB
010011
Referencias
• Ferreira, R., Material de la Unidad 1 del
Curso de Lenguajes de Programación,
Instituto Tecnológico de Morelia.
¿Preguntas, dudas y
comentarios?