Download Modulo 1 Introducción a los lenguajes de programación File

Document related concepts

Programación funcional wikipedia , lookup

Ocaml wikipedia , lookup

Haxe wikipedia , lookup

Lisp wikipedia , lookup

Scala (lenguaje de programación) wikipedia , lookup

Transcript
Modulo 1. Introducción a los lenguajes de programación
La solución de problemas mediante en uso de un computador nos lleva a desarrollar
programas o aplicaciones, la construcción de estos programas debe ser realizada mediante
una metodología, los pasos para la construcción de programas son:
1. Diseñar el algoritmo, consiste en analizar el problema y describir los instrucciones de
forma ordenada que resuelven el problema.
2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.
3. Ejecutar y validar el programa en un computador (verificación)
Para codificar de forma sistemática un algoritmo se necesita de un lenguaje
programación que la computadora comprenda.
1. Historia:
Charles Babbage, profesor de matemáticas en la universidad de Cambridge en los años de
1828 a 1839. Puede ser considerado como el padre de las computadores, entre 1833 y
1842 Babbage intento construir una maquina que fuese programable, esta maquina lleva por
nombre la maquina Analítica.
El diseño se basaba en una máquina calculadora, controlada por una secuencia de
instrucciones, con una unidad de proceso, una memoria central, facilidades de entrada y
salida de datos, y posibilidades de control paso a paso, la secuencia de instrucciones
usaba tarjetas perforadas
Ada Augusta Byron (Lady Ada Lovelace), Condesa de Lovelace, matemática; colaboro
con Babbage económicamente y promovió activamente la maquina analítica de Babbage.
Lady Ada Lovelace escribió
programas para la maquina analítica, estas primeras
instrucciones hacen de Ada Lovelace la primera programadora de computadoras en el
mundo.
2. ¿Qué es un lenguaje de programación?
Un lenguaje de programación es una técnica estándar de comunicación que permite
expresar las instrucciones que han de ser ejecutadas en una computadora. [1]
Estas instrucciones permiten la construcción de programas con los cuales podemos
realizar operación de entrada y salida, almacenamiento, cálculos y lógica de comparación.
Un lenguaje de programación permite a un programador especificar de manera precisa: sobre
qué datos una computadora debe operar, cómo deben ser estos almacenados y transmitidos y
qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de
un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal
como sucede con el lenguaje Léxico. [1]
3. Clasificación de los lenguajes de programación.
Los lenguajes de programación son clasificados de muchas formas, dentro de estas se
encuentran:
3.1. Clasificación según nivel de abstracción.
• Los lenguajes de bajo nivel:
Son lenguajes de programación que se acercan al funcionamiento de una computadora.
El lenguaje de más bajo nivel es, por excelencia, el código máquina. A éste le sigue el
lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de
memoria de la computadora de forma directa. [1]
• Lenguajes de medio nivel:
Hay lenguajes de programación que son considerados por algunos expertos como
lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que
los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades
que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel. [1]
• Lenguajes de alto nivel:
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por
elementos de lenguajes naturales, como el inglés.
En BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10
THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es
igual a 10. Por desgracia para muchas personas esta forma de trabajar es un poco
frustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje
natural, lo hacen en realidad de una forma rígida y sistemática. [1]
3.2. Clasificación según su paradigma
• Paradigma Imperativo:
Describe la programación como una secuencia instrucciones o comandos que cambian el
estado de un programa. El código máquina en general está basado en el paradigma
imperativo. Su contrario es el paradigma declarativo. En este paradigma se incluye el
paradigma procedimental (procedural) entre otros. [2]
• Paradigma Declarativo:
No se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso), sino que describe
(declara) cómo es algo. En otras palabras, se enfoca en describir las propiedades de la
solución buscada, dejando indeterminado el algoritmo (conjunto de instrucciones) usado
para encontrar esa solución. Es más complicado de implementar que el paradigma
imperativo, tiene desventajas en la eficiencia, pero ventajas en la solución de determinados
problemas. [2]
• Paradigma Estructurado:
La programación estructurada se basa en una metodología de desarrollo de programas
llamada refinamientos sucesivos: Se plantea una operación como un todo y se divide en
segmentos más sencillos o de menor complejidad. Una vez terminado todos los
segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de
programadores. Si se ha utilizado adecuadamente la programación estructurada, esta
integración debe ser sencilla y no presentar problemas al integrar la misma, y de
presentar algún problema, será rápidamente detectable para su corrección.
La representación grafica de la programación estructurada se realiza a través de diagramas
de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas.
La programación estructurada propone segregar los procesos en estructuras lo más
simple posibles, las cuales se conocen como secuencia, selección e interacción. Ellas
están disponibles en todos los lenguajes modernos de programación imperativa en forma
de sentencias. Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y
complejos pero de fácil entendimiento. [3]
• Paradigma Orientado a Objetos:
La programación orientada a objetos, intenta simular el mundo real a través del
significado de objetos que contiene características y funciones. Los lenguajes orientados
a objetos se clasifican como lenguajes de quinta generación. [4]
En la Programación Orientada a Objetos (POO u OOP según siglas en inglés) se definen
los programas en términos de "clases de objetos", objetos que son entidades que
combinan estado (es decir, datos) comportamiento (esto es, procedimientos o métodos)
e identidad (propiedad del objeto que lo diferencia del resto). La programación orientada
a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre
ellos para realizar tareas. Esto permite hacer los programas módulos más fáciles de
escribir, mantener y reutilizar. [1]
• Paradigma Funcional:
Este paradigma concibe a la computación como la evaluación de funciones matemáticas
y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las
funciones y composición entre ellas, más que en los cambios de estados y la ejecución
secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver
ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los
efectos secundarios comunes en otro tipo de programaciones. [2]
• Paradigma lógico:
Se basa en la definición de reglas lógicas para luego, a través de un motor de
inferencias lógicas, responder preguntas planteadas al sistema y así resolver los problemas. Ej.:
prolog. [2]
3.3. Según la forma de ejecución
• Lenguajes compilados:
Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que
traducirse a un código que pueda utilizar la máquina.
Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos,
como los programas ensambladores avanzados, 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.
Los compiladores son aquellos cuya función es traducir un programa escrito en un
determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con
código binario).
Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de
Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta
que luego de haber compilado el programa, ya no aparecen errores en el código.
• Lenguajes interpretados:
Se puede también utilizar una alternativa diferente de los compiladores para traducir
lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma
permanente el código objeto que se produce durante la corrida de compilación para
utilizarlo en una corrida de producción futura, el programador sólo carga el programa
fuente en la computadora junto con los datos que se van a procesar. A continuación, un
programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera
permanente dentro de la máquina, convierte cada proposición del programa fuente en
lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. No se
graba el código objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir
a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un
ciclo, cada instrucción del ciclo tendrá que volver a ser interpretado cada vez que se
ejecute el ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución
(porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo
de diseño (porque no se tiene que estar compilando a cada momento el código completo).
El intérprete elimina la necesidad de realizar una corrida de compilación después de cada
modificación del programa cuando se quiere agregar funciones o corregir errores; pero es
obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha
mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de
producción. [1]
FUENTES:
[1] http://es.wikipedia.org/wiki/Lenguaje_de_programación
[2] http://www.alegsaonline.com/art/13.php
[3] http://lenguajes-de-programacion.com/programacion-estructurada.shtml
[4] http://lenguajes-de-programacion.com/programacion-orientada-a-objetos.shtml