Download Lenguajes de programación - E-campus :: FCA-UNAM

Document related concepts

Little man computer wikipedia , lookup

Lisp wikipedia , lookup

Programación funcional wikipedia , lookup

Transcript
1.6.
Lenguajes de programación
1.6.1.
Concepto de lenguaje de programación1
Un lenguaje de programación es un conjunto limitado de palabras y de
símbolos que representan procedimientos, cálculos, decisiones y otras
operaciones que puede ejecutar una computadora. Los lenguajes de
programación son la herramienta fundamental para el desarrollo de software.
Los primeros lenguajes de programación surgieron de la idea de Charles
Babagge a mediados del siglo XIX. Fue un profesor matemático de la
universidad de Cambridge e inventor inglés, que a principios del siglo
XIX
predijo muchas de las teorías en que se basan los actuales ordenadores. Sus
ideas consistían en lo que él denominaba la “máquina analítica”, pero que por
motivos técnicos no pudo construirse hasta mediados del siglo XX. Colaboró en
este proyecto Ada Lovedby, considerada como la primera programadora de la
historia, pues realizó trabajos para aquella supuesta máquina de Babagge, con
tarjetas perforadas. Como la máquina no llegó nunca a construirse, los
programas de Ada, lógicamente, tampoco llegaron a ejecutarse, pero sí
suponen un punto de partida de la programación, sobre todo si observamos
que en cuanto se empezó a ejecutar esta tarea, los programadores utilizaron
las técnicas diseñadas por Charles Babagge, y Ada, que consistían entre otras,
en la programación mediante tarjetas perforadas. A pesar de ello, Ada ha
permanecido como la primera programadora de la historia. Se dice por tanto
que estos dos genios de antaño, se adelantaron un siglo a su época, lo cual
describe la inteligencia de la que se hallaban dotados.
1.6.2.
Clasificación de lenguajes
La clasificación más común y básica que suele hacerse de los lenguajes de
programación es la que los divide en lenguajes de bajo y de alto nivel. Los
lenguajes de programación de bajo nivel fueron los primeros que surgieron,
tomaron ese nombre por estar directamente relacionados con el hardware del
computador, es decir, el usuario introduce una serie de códigos numéricos que
la máquina va a interpretar como instrucciones. Para usar este lenguaje, el
1
http://www.monografias.com/trabajos38/tipos-lenguajes-programacion/tipos-lenguajesprogramacion.shtml
programador tenía que conocer el funcionamiento de la máquina al más bajo
nivel y los errores de programación eran muy frecuentes.
Los lenguajes de alto nivel surgieron con posterioridad con el primer
compilador de Fortran (formula translation), que, como su nombre indica, inició
como un "simple" esfuerzo de traducir un lenguaje de fórmulas, al ensamblador
y por consiguiente al lenguaje de máquina, facilitando la labor a los
programadores. A partir de Fortran, se han desarrollado innumerables
lenguajes, que siguen el mismo concepto: facilitar al programador su función
para aumentar la productividad en el desarrollo de programas para
computadora. Estos lenguajes usan un número reducido de instrucciones (en
inglés) que siguen estrictas reglas gramaticales conocidas como sintaxis del
lenguaje. Pero, aunque el programador de esta forma se distancie del hardware
del computador, éste sigue trabajando en lenguaje de la máquina. Por ello se
hace necesaria una traducción a una secuencia de instrucciones interpretables
por el computador. Esta labor es llevada a cabo por los compiladores y los
intérpretes.
El lenguaje máquina2 de una computadora es el sistema de códigos
directamente interpretable por un circuito microprogramable,
como el
microprocesador de un ordenador o el microcontrolador de un autómata (un
PLC). Este lenguaje está compuesto por un conjunto de instrucciones que
determinan acciones a ser tomadas por la máquina. Un programa de
computadora consiste en una cadena de estas instrucciones de lenguaje de
máquina (más los datos). Estas instrucciones son normalmente ejecutadas en
secuencia, con eventuales cambios de flujo causados por el propio programa o
eventos externos. El lenguaje de máquina es específico de cada máquina o
arquitectura de la máquina, aunque el conjunto de instrucciones disponibles
pueda ser similar entre ellas.
2
http://es.wikipedia.org/wiki/Lenguaje_m%C3%A1quinaAgosto, 2007.
Los circuitos microprogramables son sistemas digitales, lo que significa que
trabajan con dos únicos niveles de tensión. Dichos niveles, por abstracción, se
simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de máquina sólo
utiliza dichos signos. Esto permite el empleo de las teorías del álgebra
booleana y del sistema binario en el diseño de este tipo de circuitos y en su
programación.
1. Comando u operación
Instrucciones
2. Operando
Figura 1.5. Partes de las instrucciones en el lenguaje máquina
El lenguaje ensamblador permite a la computadora convertir las instrucciones
en lenguaje ensamblador del programador en su propio código de máquina. Un
programa de instrucciones escrito en lenguaje ensamblador se llama programa
fuente. Cuando el ensamblador convierte las instrucciones fuente en código de
máquina, se crea un nuevo archivo denominado programa objeto. Para los
programadores es más fácil escribir instrucciones en un lenguaje ensamblador
que en códigos de lenguajes de máquina, solo que pueden emplearse dos
ejecuciones de computadora antes de que se puedan utilizar las instrucciones
del programa fuente para producir las salidas deseadas. Los lenguajes
ensambladores tienen ventajas sobre los de máquina. Ahorran tiempo y
requieren menos atención a detalles. Se incurre en menos errores y los que se
cometen son más fáciles de localizar. Además, los programas en lenguaje
ensamblador son más fáciles de modificar que los que están en lenguaje de
máquina. Pero existen limitaciones: la codificación en lenguaje ensamblador es
todavía un proceso lento. Una desventaja importante de estos lenguajes es que
tienen una orientación a la máquina, es decir, están diseñados para la marca y
modelo específico de procesador que se utiliza, y es probable que, para una
máquina diferente se tengan que volver a codificar los programas.
El desarrollo de las técnicas nemotécnicas y macroinstrucciones condujeron, a
su vez, al desarrollo de lenguajes de alto nivel que a menudo están
orientados hacia una clase determinada de problemas de proceso. Por
ejemplo, se han diseñado varios lenguajes para procesar problemas científicomatemáticos, asimismo han aparecido otros lenguajes que hacen hincapié en
las aplicaciones de proceso de archivos. A diferencia de los programas de
ensamble, los programas en lenguaje de alto nivel se pueden utilizar con
diferentes marcas de computadoras sin tener que hacer modificaciones
considerables.
Esto
permite
reducir
sustancialmente
el
costo
de
la
reprogramación cuando se adquiere equipo nuevo. Otras ventajas de los
lenguajes de alto nivel se enlistan a continuación:
 Son más fáciles de aprender que los lenguajes ensambladores.
 Se pueden escribir más rápidamente.
 Permiten tener mejor documentación.
 Son más fáciles de mantener.
 Un programador que sepa escribir programas en uno de estos
lenguajes no está limitado a utilizar un solo tipo de máquina.