Ciclo V 03/11/2018
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.
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.
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.
• 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.
• 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.
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.
• 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.
• 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.
• 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.
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.
• 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.
• 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.
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.
Comentarios
Publicar un comentario