Está en la página 1de 12

Lenguajes de programación

Los lenguajes de programación son lenguajes formales artificiales, destinados a permitir la


comunicación hombre-computadora, tal comunicación es expresada a través de sentencias y/o
declaraciones que constituyen el programa y debe ser traducido a lenguaje máquina para poder
ser ejecutadas en una computadora.

Clasificación de los lenguajes según su nivel


El nivel de un lenguaje de programación indica su proximidad al hardware o bien su grado de
abstracción. A los lenguajes se los puede clasificar en:
Bajo nivel: es aquel que proporciona poco o ningún nivel de abstracción del microprocesador
de una computadora, en consecuencia es fácilmente trasladable al lenguaje de máquina. La
palabra “bajo” se refiere a la reducida abstracción entre el lenguaje y el hardware. El lenguaje
ensamblador “puro” (no enriquecido, sin directivas) se lo puede clasificar dentro de esta
categoría.
Alto nivel: Lenguajes de propósito general y específicos. Dentro de los específicos, se pueden
encontrar con orientación a la creación de aplicaciones científicas y de gestión administrativa.
El lenguaje C pertenece a los de alto nivel. Algunos autores agregan a los dos niveles
mencionados, uno intermedio, dentro del cual ubican al macro-ensamblador (ensamblador
enriquecido) y al C. El macroensamblador y otros similares, se los considera de alto nivel, ya
que incorporan características que aumentan su nivel de abstracción.

Lenguaje máquina
El lenguaje máquina (también llamado lenguaje de primera generación) (el alfabeto
binario) es el único que entiende la computadora. Fue el primer lenguaje utilizado en la
programación de computadoras. Ejemplo, en el recuadro izquierdo:

0000 0001 1010 0001 01 A1


1000 1001 1001 1010 89 9A Una forma de simplificar la programación
0011 1010 1001 1100 3A 9C y los datos en binario, es agrupar ceros
0111 0100 0111 0000 74 70 unos en cifras hexadecimales u octales.
1110 1001 0010 0000 E9 20

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 20
Este lenguaje fue sustituido por otros que fueron evolucionando, a fin de brindarle al
programador una interface más amigable (más fácil de aprender y utilizar).

Lenguaje ensamblador
El lenguaje ensamblador4, (considerado lenguaje de segunda generación) fue el primer
intento de sustituir el lenguaje máquina, por otro más aproximado al utilizado por las personas.
En este lenguaje cada instrucción del lenguaje de máquina es representada por un mnemónico
(o abreviación mnemotécnica, ej. CMP por compare) en lugar de cadenas de bits. A
continuación, se muestra un ejemplo de un trozo fuente en macroensamblador, que realiza 10
loops:
MOV BX, 00h ; Inicializa BX en 0
MOV DX, 0Ah ; Asigna el valor 10 (0Ah) a DX
INICIO: ADD BX, 01h ; Suma 1 a BX
CMP DX, BX ; compara AX y BX, Actualiza la ZF
JE FIN ; salta FIN si DX=BX, IDEM JZ mismo opcode, Si ZF=0
JMP INICIO ; salto incondicional a INICIO
FIN: MOV AX, 4C00h ; Sevicio 4C -> Terminar con código de retorno
INT 21h ; Llamada a servicio DOS
¿Qué pasa una vez que es ensamblado, enlazado y cargado en memoria para ser ejecutado?
OPCODE
CS:IP ASM
en Hexadec.
0722:0000 MOV BX,0000 BB0000
0722:0003 MOV DX,000A BA0A00
0722:0006 ADD BX,01 83C301
0722:0009 CMP DX,BX 3BD3
0722:000B JE 0Fh 7402
0722:000D JMP 06h EBF7
0722:000F MOV AX,4C00 B8004C
0722:0012 INT 021h CD21

20 bytes
Hace 10 bucles y termina el programa
El programa ejecutable generado a partir del lenguaje ensamblador, tiene como ventaja la mayor
performance logrado por su bajo requerimiento de memoria y el menor tiempo de ejecución, en
comparación con los resultados de aplicaciones similares programadas en lenguajes de alto
nivel.

4
Al programa que traduce el lenguaje ensamblador al lenguaje de máquina, también se le llama
“Ensamblador”, es decir, tiene el mismo nombre del lenguaje.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 21
Inconvenientes:
 Cada modelo de microprocesador tiene su propio ensamblador, diferente del resto,
razón por la cual un programa sólo puede utilizarse en el modelo máquina
(microprocesador) para el cual se programó.
 El programador de bajo nivel debe tener un gran conocimiento del hardware, ya que
maneja directamente las posiciones de memoria, los registros del procesador y demás
recursos físicos.
 Todas las instrucciones son elementales, es decir, el programa debe describir con
máximo nivel de detalle, todas las operaciones que se llevarán a cabo en la máquina,
para la realización de cualquier proceso, por simple que este sea.
 Se requiere mucho tiempo y gran cantidad de líneas de código, para la programación de
una pequeña aplicación.

Lenguajes de alto nivel


Los lenguajes de alto nivel (tercera generación), evolucionaron pretendiendo abstraer
u ocultar la complejidad del ensamblador, teniendo estos como principales premisas:

 Portable (Portability): Lograr que el programa tenga independencia del hardware. De


esta forma poder utilizar un mismo programa fuente, en diferentes equipos, con la única
condición de disponer del compilador del lenguaje asociado a la nueva plataforma.
Dicho en otras palabras, no se necesita conocer en detalle la plataforma, en el que correrá
el programa.

 Amigable (Friendliness): Aproximar el lenguaje de programación al lenguaje natural,


para que el programa se pueda escribir, leer y entender en forma sencilla.

 Estructurado: La codificación que respeta a las estructuras lógicas, facilita la


programación, su mantenimiento y documentación.
Asimismo, es importante resaltar que como consecuencia de su nivel y ser estructurado, es más
fácil su depuración y manteniento.

Intérpretes y Compiladores
Hay dos tipos principales de traductores de lenguaje fuente a lenguaje de máquina:

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 22
Compiladores: Durante la compilación, se analiza el programa fuente y se genera el código
objeto o código de máquina. Este código antes de poder ser ejecutado, necesita pasar una fase
adicional, denominada enlace.
Intérpretes: Cada vez que se ejecuta el programa, cada línea del programa fuente es analizada,
se la traduce a código de máquina y se la ejecuta.
Híbridos: Java combina compilación e
interpretación. El programa fuente en Java es
compilado primero en “código intermedio”
también llamado bytecodes. Los bytecodes son
luego interpretados por la máquina virtual. Una
ventaja de esta disposición es que los bytecodes
compilados en una máquina se pueden interpretar
en otras máquinas y distintas modalidades

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 23
Evolución histórica de los Lenguajes de programación

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 24
Periodo Influencias Lenguajes

1950 - 1955 Computadoras primitivas Lenguajes ensamblador.


Lenguajes experimentales de alto nivel

1956 - 1960 Computadoras caras y lentas FORTRAN


Cintas magnéticas. ALGOL 58 y 60
Compiladores e intérpretes COBOL
Optimización del código. LISP

1961 - 1965 Computadoras grandes y caros FORTRAN IV


Discos magnéticos COBOL 61 Extendido
Sistemas operativos ALGOL 60 Revisado
Lenguajes de propósito general. RPG
APL

1966 - 1970 Computadoras de diferentes PL/I


tamaños, velocidades, y costos. FORTRAN 66 (estándar)
Sistemas caros de almacenamiento COBOL 65 (estándar)
masivo de datos. ALGOL 68
Sistemas operativos multitarea e SIMULA 67
interactivos. BASIC
Compiladores con optimización. C
Lenguajes estándar, flexibles y APL/360
generales.

1971 - 1975 Microcomputadoras. PASCAL


Sistemas pequeños y baratos de COBOL 74
almacenamiento masivo de datos. PL/I
Programación estructurada.
Ingeniería del software.
Lenguajes sencillos.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 25
Ordenadores baratos y potentes.
1976 - 1980 ADA
Sistemas distribuidos.
FORTRAN 77
Programación interactiva.
PROLOG
Abstracción de datos.
C
Programación confiable y de fácil
mantenimiento.

1980 – 1990 Computadoras más baratas y SmallTalk, OOCOBOL, C++, Erlang


potentes. Objective C, Object Pascal (Delphi)
Mayor abstracción de datos. Bash, Perl, Visual Basic, Visual Fox,
Menor costo de memorias. Haskell
Programación Orientada a Objetos.
Introducción a plataformas visuales.
Aplicaciones Cliente-Servidor.

Más cerca del Orientación con énfasis en lo visual. PowerScript(PowerBuilder1991),


presente Gestores de Bases de Datos. Phyton(1991), R(1993), Java(1995),

Aplicaciones Web. Intranets y Ruby(1995), PHP(1995), JS(1997),

extranets. D(1999), ActionScript(2000),

Sistemas Operativos y programas C#(2001), F#(2002), Groovy(2003),


Scala(2003), Factor(2003),
móviles.
Clojure(2007), Reia(2008), Go(2009),
Rust(2010), Elixir(2011), Dart(2011),
Opa(2011), Kotlin(2012), Swift(2014),
Hack(2014), Ring(2016)…

Lenguajes más representativos


Existe una gran cantidad de lenguajes, cada uno con características definidas y a su vez
dentro de estos existen diferentes versiones o dialectos. A continuación, se amplían algunos de
los más tradicionales y representativos y como evolucionaron.
Fortran
Abreviatura de Formula Translator (traductor de fórmulas). Este lenguaje fue definido
en 1955 en Estados Unidos por la compañía IBM. Es el más antiguo de los lenguajes de alto

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 26
nivel, pues previo a su aparición, todos los programas se escribían en lenguaje ensamblador o
en lenguaje máquina.
Es un lenguaje especializado en aplicaciones técnicas y científicas, caracterizándose por
su potencia para cálculos matemáticos, y sus limitaciones en las aplicaciones de gestión
administrativa, manejo de archivos, tratamiento de cadenas de caracteres y edición de informes.
A lo largo de su existencia han aparecido diferentes versiones, entre las que destaca la
realizada en 1966 por ANSI (American National Standard Institute) en la que se definieron
nuevas reglas del lenguaje y se efectuó la independencia del mismo con respecto a la máquina,
es decir, comenzó la portabilidad del lenguaje. Esta versión se denominó FORTRAN IV o
FORTRAN 66. En 1977, apareció una nueva versión más evolucionada que se llamó
FORTRAN V o FORTRAN 77, esta versión está reflejada en el documento «ANSI X3.9-1978:
Programming Language FORTRAN» y define dos niveles del lenguaje denominados
FORTRAN 77 completo y FORTRAN 77 básico, siendo el segundo, un subconjunto del
primero. Esta última versión incluye además instrucciones para el manejo de cadenas de
caracteres y de archivos, así como otras para la utilización de técnicas de programación
estructurada.
Lisp
Lenguaje funcional (ubicado dentro del paradigma declarativo basado en la definición
funciones). El origen de su nombre surge de la contracción de “List Processing” (procesamiento
de listas). Fue especificado originalmente en 1958 por John McCarthy y sus colaboradores en
el Massachusetts Institute of Technology (MIT). Se constituyó en unos de los lenguajes más
importantes en los Estudios de Inteligencia Artificial. Con el se manejan naturalmente
estructuras de datos dinámicas como listas y árboles. Este fue el primer lenguaje que tenía la
propiedad en que la representación primaria de una estructura de datos se define con primitivas
del lenguaje. Del Lisp Surgieron muchos dialectos, que fueron estandarizados por ANSI en
1994, bajo el nombre de “Common Lisp”.
Cobol
Fue el lenguaje más usado en las aplicaciones de gestión, creado en 1960 por un comité
denominado CODASYL, patrocinado por el Departamento de Defensa de los Estados Unidos,
a fin de disponer de un lenguaje universal para aplicaciones comerciales como expresa su
nombre (Common Business Oriented Language).
Entre sus características se pueden citar su parecido al lenguaje natural (inglés), es auto-
documentado y tiene gran capacidad en el manejo de archivos, así como en la edición de

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 27
informes escritos. Entre sus inconvenientes están sus rígidas reglas de formatos de escritura, la
necesidad de describir todos los elementos al máximo detalle, la extensión excesiva en sus
sentencias e incluso duplicación en algunos casos y la inexistencia de funciones matemáticas.
PL/1
Fue creado a mediados de los años 60 por IBM para ser usado en sus equipos del sistema
360. El PL/1 (Programming Language 1) se desarrolló inspirándose en los lenguajes ALGOL,
COBOL y FORTRAN, tomando las mejores características de los anteriores y añadiendo
algunas nuevas, con el objetivo de obtener un lenguaje lo más general posible, útil para
aplicaciones técnico-científicas, comerciales, de proceso de textos, de bases de datos y de
programación de sistemas.
Entre sus novedades está su gran libertad en el formato de escritura de los programas,
soportar la programación estructurada y el diseño modular. No obstante, no ha superado a sus
progenitores en sus aplicaciones específicas, debido en parte a su amplitud y por ello al tamaño
de su compilador, que hasta ahora sólo se podía instalar en grandes equipos.
BASIC
Fue diseñado por los profesores John G. Kemeny y Thomas E. Kurtz del Dartmouth
College en 1965 con el objetivo principal de conseguir un lenguaje fácil de aprender para los
principiantes, como se indica en su nombre Beginner’s All-purpose Symbolic Instruction Code
(Código de instrucción simbólico de propósito general para principiantes).
Entre sus principales novedades están las de ser un lenguaje interpretado y de uso
conversacional, útil para aplicaciones técnicas y de gestión. Estas características, unidas a la
popularización de las microcomputadoras y computadoras personales, han hecho que su
utilización se haya extendido enormemente, a la vez que ha propiciado el surgimiento de una
gran diversidad de versiones. Existen una multitud de intérpretes y compiladores de este
lenguaje.
Pascal
Fue creado por el matemático suizo Niklaus Wirth en 1970, basándose en el lenguaje AL-
GOL, en cuyo diseño había participado en los años 60. Su nombre proviene del filósofo y
matemático francés, del siglo XVII, Blaise Pascal, que inventó la primera máquina mecánica
para sumar.
Aunque en principio la idea del diseñador era proporcionar un lenguaje adecuado para la
enseñanza de los conceptos y técnicas de programación, con el tiempo ha llegado a ser un
lenguaje ampliamente utilizado en todo tipo de aplicaciones, poseyendo grandes facilidades
para la programación de sistemas y diseño de gráficos.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 28
Aporta los conceptos de tipo de datos, programación estructurada y diseño descendente,
entre otros, además de haberse convertido en predecesor de otros lenguajes más modernos,
como MODULA-2, ADA y Delphi.
SmallTalk
Este lenguaje diseñado por Alan Key entre otros, y fue publicado en 1990, si bien su
desarrollo comenzó en 1969. Smalltalk es considerado el primero de los lenguajes orientados a
objetos puro, aunque en realidad el primero en implementar programación orientada a objetos
fue Simula.
Ada
Fue un intento de obtener un único lenguaje para todo tipo de aplicaciones e incluye los
últimos avances en técnicas de programación. Su diseño fue encargado por el Departamento de
Defensa de los Estados Unidos a la empresa Honeywell-Bull después de una selección rigurosa
entre varias propuestas realizadas sobre una serie de requerimientos del lenguaje y de haber
evaluado negativamente veintitrés lenguajes existentes. De éstos se seleccionaron como base
para la creación del nuevo lenguaje el PASCAL, el ALGOL y el PL/I. La estandarización del
lenguaje se publicó en 1983. El nombre ADA es en honor a la, hoy considerada, primera
programadora de la historia, Augusta Ada Byron (1815-1852), condesa de Lovelace, hija del
famoso poeta Lord Byron.
Entre las características del lenguaje se encuentran la compilación separada, los tipos
abstractos de datos, programación concurrente, programación estructurada, libertad de formatos
de escritura, etc., presentando como principal inconveniente su gran extensión.
C
En 1967 Martin Richards en Cambridge desarrolló un lenguaje denominado BCPL (Basic
Combined Programming Language) que pretendía, de alguna forma, simplificar el CPL creado
en 1963. En 1970 surge un lenguaje denominado B, como un intento de simplificar aún más el
CPL de lo que hizo el BCPL, fue desarrollado por Ken Thompson en los Laboratorios Bell para
una primera implementación de UNIX, en lenguaje de alto nivel.
En 1971, un nuevo lenguaje denominado C, se convierte en sucesor del lenguaje B.
Desarrollado por Brian Kernighan y Dennis Ritchie. Fue implementado por primera vez en una
PDP-11 corriendo UNIX. Este se convierte en el primer estándar de C (El C de K&R).
En 1973, el kernel del sistema operativo UNIX, se rescribe casi totalmente en C. El
desarrollo lo llevaron a cabo Ritchie y Thompson.En 1980 Bjarne Stroustrup, crea el C++ como
una mejora del C de K&R, que daba apoyo a la programación orientada a objetos. En 1983 un
Comité del ANSI (American National Standard Institute) definió un nuevo estándar, el ANSI

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 29
C, teniendo como fin la normalización de las distintas versiones del C que estaban en
circulación. En 1991 James Gosling de la empresa Sun Microsystems, crea un lenguaje
denominado inicialmente OAK, más tarde en 1995 se lo denomina Java. Este es un lenguaje
potente, interpretado, e independiente del hardware.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 30
Etapas desde el programa fuente al ejecutable

Código Fuente
enriquecido con directivas
del preprocesador .C o .CPP

.H o .C
Código Fuente
Preprocesador a incluir
(Cabeceras)

Código Fuente
C
Puro

Compilador

Código de máquina
relocalizable
Módulo
Objeto

.OBJ .LIB
Otros Librerías de
Módulos Objeto Enlazador Módulos
necesarios Objeto

Programa
Ejecutable
.EXE
PP 4 04 120

PL 3 04 120

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 31

También podría gustarte