Download File

Document related concepts
Transcript
UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO
COLEGIO DE CIENCIAS Y HUMANIDADES
PLANTEL VALLLEJO
LENGUAJES DE PROGRAMACIÓN
PROFESOR:
Manuel Odilón Gómez Castillo
ALUMNOS:
Karen Cruz Ríos
Blanca Estela Espinal Hernández
Abraham Mayer Chávez
GRUPO:
232 A
0
PRÓLOGO
Captura del microordenador Commodore PET-32 mostrando un programa en el
lenguaje de programación BASIC, bajo el emulador VICE en una distribución
GNU/Linux. La primera línea, titula (rem) al programa para permitir su
almacenamiento, la segunda, solicita una cadena de datos (input) que una vez
obtenidos, almacenará en una instrucción que el lenguaje lleva incorporada,
llamada variable alfanumérica ($). La tercera línea, establece una condición, (if)
determina que si la cadena de texto almacenada no es igual (<>) al valor dado,
proceda (then) a ejecutar la línea anterior, volviendo así a solicitar nuevos
datos, pero en caso de ser igual, (=) continúe ejecutando la siguiente línea del
programa. La cuarta línea, imprime el mensaje encomillado en pantalla (print),
para terminar con la quinta línea que establece su fin. (end)
Un lenguaje de programación es un idioma artificial diseñado para expresar
computaciones que pueden ser llevadas a cabo por máquinas como las
computadoras. Pueden usarse para crear programas que controlen el
comportamiento físico y lógico de una máquina, para expresar algoritmos con
precisión, o como modo de comunicación humana.1 Está formado de un
conjunto de símbolos y reglas sintácticas y semánticas que definen su
estructura y el significado de sus elementos y expresiones. Al proceso por el
cual se escribe, se prueba, se depura, se compila y se mantiene el código
fuente de un programa informático se le llama programación.
También la palabra programación se define como el proceso de creación de un
programa de computadora, mediante la aplicación de procedimientos lógicos, a
través de los siguientes pasos:

El desarrollo lógico del programa para resolver un problema en
particular.

Escritura de la lógica del programa empleando un lenguaje de
programación específico (codificación del programa)

Ensamblaje o compilación del programa hasta convertirlo en lenguaje de
máquina.

Prueba y depuración del programa.

Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de
programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a
los lenguajes de programación y a otros más, como por ejemplo el HTML.
(lenguaje para el marcado de páginas web que no es propiamente un lenguaje
de programación sino un conjunto de instrucciones que permiten diseñar el
contenido y el texto de los documentos)
1
Permite especificar de manera precisa sobre qué datos debe operar una
computadora, cómo deben ser almacenados o 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. Una característica relevante de los
lenguajes de programación es precisamente que más de un programador
pueda usar un conjunto común de instrucciones que sean comprendidas entre
ellos para realizar la construcción del programa de forma colaborativa.
Historia
Para que la computadora entienda nuestras instrucciones debe usarse un
lenguaje específico conocido como código máquina, el cual la máquina
comprende fácilmente, pero que lo hace excesivamente complicado para las
personas. De hecho sólo consiste en cadenas extensas de números 0 y 1.
Para facilitar el trabajo, los primeros operadores de computadoras decidieron
hacer un traductor para reemplazar los 1 y 0 por palabras o abstracción de
palabras y letras provenientes del inglés; éste se conoce como lenguaje
ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa
add (sumar). En realidad escribir en lenguaje ensamblador es básicamente
sigue la misma estructura del en lenguaje máquina, pero las letras y palabras
son más fáciles de recordar y entender que los números.
La necesidad de recordar secuencias de programación para las acciones
usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD
(sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta
secuencia de posiciones se le denominó "instrucciones", y a este conjunto de
instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron
diferentes lenguajes de programación, los cuales reciben su denominación
porque tienen una estructura sintáctica similar a los lenguajes escritos por los
humanos, denominados también lenguajes de alto nivel.
La primera programadora de computadora conocida fue Ada Lovelace, hija de
Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a
Ada quien, después de conocer a Charles Babbage, tradujo y amplió una
descripción de su máquina analítica. Incluso aunque Babbage nunca completó
la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con
éstas le hizo ganarse el título de primera programadora de computadoras del
mundo. El nombre del lenguaje de programación Ada fue escogido como
homenaje a esta programadora.
A finales de 1953, John W. Backus sometió una propuesta a sus superiores en
IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para
programar el computador central IBM 704. El histórico equipo Fortran de
Backus consistió en los programadores Richard Goldberg, Sheldon F. Best,
2
Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois
Haibt y David Sayre.2
El primer manual para el lenguaje Fortran apareció en octubre de 1956, con el
primer compilador Fortran entregado en abril de 1957. Esto era un compilador
optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a
menos que su compilador pudiera generar código cuyo desempeño fuera
comparable al de un código hecho a mano en lenguaje ensamblador.
En 1960, se creó COBOL, uno de los lenguajes usados aun en 2010 en
informática de gestión.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, se hizo necesario disponer de un método más eficiente para
programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo fue el
BASIC en las versiones introducidas en los microordenadores de la década de
1980. Mientras que una tarea tan sencilla como sumar dos números puede
necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje de alto
nivel bastará con solo una.
Implementación
La implementación de un lenguaje es la que provee una manera de que se
ejecute un programa para una determinada combinación de software y
hardware. Existen básicamente dos maneras de implementar un lenguaje:
Compilación e interpretación. Compilación es la traducción 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 puede también utilizar una alternativa para traducir lenguajes de alto nivel.
En lugar de traducir el programa fuente y grabar en forma permanente el
código objeto que se produce durante la compilación para utilizarlo en una
ejecució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 procesamiento de los datos. El código objeto no se graba para
utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez
y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo
de los pasos de un ciclo o bucle, cada instrucción del bucle tendrá que volver a
ser interpretada en cada ejecución repetida del ciclo, lo cual hace que el
3
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 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 ejecución del código.
La mayoría de lenguajes de altonivel, permiten la programación multipropósito,
sin embargo, muchos de ellos fueron diseñados para permitir programación
dedicada, como lo fue PASCAL con las matemáticas en su comienzo. También,
se han implementado lenguajes educativos infantiles como LOGO que
mediante una serie de simples instrucciones, permitía mover una tortuga entre
otras cosas. En el ámbito de infraestructura de internet, cabe destacar a Perl
con un poderoso sistema de procesamiento de texto y una enorme colección
de módulos.
Técnica
Para escribir programas que proporcionen los mejores resultados, cabe tener
en cuenta una serie de detalles.

Corrección. Un programa es correcto si hace lo que debe hacer tal y
como se estableció en las fases previas a su desarrollo. Para determinar
si un programa hace lo que debe, es muy importante especificar
claramente qué debe hacer el programa antes de desarrollarlo y, una
vez acabado, compararlo con lo que realmente hace.

Claridad. Es muy importante que el programa sea lo más claro y legible
posible, para facilitar así su desarrollo y posterior mantenimiento. Al
elaborar un programa se debe intentar que su estructura sea sencilla y
coherente, así como cuidar el estilo en la edición; de esta forma se ve
facilitado el trabajo del programador, tanto en la fase de creación como
en las fases posteriores de corrección de errores, ampliaciones,
modificaciones, etc. Fases que pueden ser realizadas incluso por otro
programador, con lo cual la claridad es aún más necesaria para que
otros programadores puedan continuar el trabajo fácilmente. Algunos
programadores llegan incluso a utilizar Arte ASCII para delimitar
secciones de código. Otros, por diversión o para impedir un análisis
cómodo a otros programadores, recurren al uso de código ofuscado.

Eficiencia. Se trata de que el programa, además de realizar aquello para
lo que fue creado (es decir, que sea correcto), lo haga gestionando de la
4
mejor forma posible los recursos que utiliza. Normalmente, al hablar de
eficiencia de un programa, se suele hacer referencia al tiempo que tarda
en realizar la tarea para la que ha sido creado y a la cantidad de
memoria que necesita, pero hay otros recursos que también pueden ser
de consideración al obtener la eficiencia de un programa, dependiendo
de su naturaleza (espacio en disco que utiliza, tráfico de red que genera,
etc.).

Portabilidad. Un programa es portable cuando tiene la capacidad de
poder ejecutarse en una plataforma, ya sea hardware o software,
diferente a aquélla en la que se elaboró. La portabilidad es una
característica muy deseable para un programa, ya que permite, por
ejemplo, a un programa que se ha desarrollado para sistemas
GNU/Linux ejecutarse también en la familia de sistemas operativos
Windows. Esto permite que el programa pueda llegar a más usuarios
más fácilmente.
Paradigmas
Los programas se pueden clasificar por el paradigma del lenguaje que se use
para producirlos. Los principales paradigmas son imperativos y declarativos.
Los programas que usan un lenguaje imperativo especifican un algoritmo, usan
declaraciones, expresiones y sentencias.3 Una declaración asocia un nombre
de variable con un tipo de dato, por ejemplo: var x: integer; . Una expresión
contiene un valor, por ejemplo: 2 + 2 contiene el valor 4. Finalmente, una
sentencia debe asignar una expresión a una variable o usar el valor de una
variable para alterar el flujo de un programa. Por ejemplo: x := 2 + 2; if x == 4
then haz_algo();. Una crítica común en los lenguajes imperativos es el efecto
de las sentencias de asignación sobre una clase de variables llamadas "no
locales".4
Los programas que usan un lenguaje declarativo especifican las propiedades
que la salida debe conocer y no especifica cualquier detalle de implementación.
Dos amplias categorías de lenguajes declarativos son los lenguajes funcionales
y los lenguajes lógicos. Los lenguajes funcionales (como Haskell) no permiten
asignaciones de variables no locales, así, se hacen más fácil, por ejemplo,
programas como funciones matemáticas.4 El principio detrás de los lenguajes
lógicos (como Prolog) es definir el problema que se quiere resolver (el objetivo)
y dejar los detalles de la solución a el sistema de Prolog. 5 El objetivo es
definido dando una lista de sub-objetivos. Cada sub-objetivo también se define
dando una lista de sus sub-objetivos, etcétera. Si al tratar de buscar una
solución, una ruta de sub-objetivos falla, entonces tal sub-objetivo se descarta y
sistemáticamente se prueba otra ruta.
5
La forma en la cual es programa se crea puede ser por medio de texto o de
forma visual. En un lenguaje de programación visual, los elementos son
manipulados gráficamente en vez de especificarse por medio de texto.
FOREWORD
Capture Commodore PET microcomputer-32 showing a program in BASIC
programming language under the VICE emulator on a GNU / Linux. The first
line, called (rem) to the program to allow storage, the second asks a string of
data (input) that once obtained, stored in a statement that the language has
built-in variable called alphanumeric ($). The third line sets a condition (if)
determines whether the stored string is not equal (<>) to the value given
appropriate (then) to execute the previous line, thereby reverting to request new
data, but if to be equal (=) to continue running the next program line. The fourth
line prints the message on the screen encomillado (print), to end the fifth line
that
sets
an
end.
(End)
A programming language is an artificial language designed to express
computations that can be carried out by machines like computers. They can be
used to create programs that control physical and logical behavior of a machine,
to express algorithms precisely, or mode of communication humana.1 It
consists of a set of symbols and syntactic and semantic rules that define its
structure and meaning its elements and expressions. The process by which it is
written, tested, debugged, compiled and maintained the source code of a
computer
program
is
called
programming.
Also the word programming is defined as the process of creating a computer
program, through the application of logical procedures, through the following
steps:
• The logical development of the program to solve a particular problem.
• Writing the program logic using a specific programming language (coding the
program)
• Assembly or compilation of the program to make machine language.
•
Testing
and
debugging
the
program.
•
Development
of
documentation.
A common mistake is synonymous terms for 'programming language' and
'computer language'. Computer languages encompass the programming
languages and others, such as HTML. (Markup language for web pages is not
really a programming language but a set of instructions that allow to design the
content
and
text
documents)
Allows you to specify precisely what data should operate a computer, how they
should be stored or transmitted and what actions should be taken under a
variety of circumstances. All this, through a language that tries to be relatively
close to human language or natural, as with the language lexicon. An important
feature of programming languages is precisely that more than one programmer
can use a common set of instructions that are included among them for the
6
construction
History
of
a
collaborative
program.
Fortran code on a punch card, showing the specialized use of columns 1-5, 6
and
73-80.
For the computer to understand our instructions must use a specific language
called machine code, which the machine is easily understood, but that makes it
too complicated for people. In fact only consists of extensive chains of numbers
0
and
1.
To facilitate the work, the first computer operators decided to replace a
translator for 1 and 0 for words or abstraction of words and letters from the
English, this is known as assembly language. For example, to add the letter A is
used the English word add (add). Actually written in assembly language is
basically the same structure of the machine language, but the letters and words
are
easier
to
remember
and
understand
the
numbers.
The need to remember sequences of programming for common action was to
call them easy to remember names and associate: ADD (addition), SUB
(subtraction), MUL (multiply), CALL (Run subroutine), etc. This sequence of
positions was called "instructions", and this set of instructions is called
assembly language. Later appeared different programming languages, which
get their name because they have a similar syntactic structure to the language
written
by
humans,
so-called
high-level
languages.
The first known computer programmer was Ada Lovelace, daughter of Lord
Byron and Annabella Milbanke Byron. Anabella introduced mathematics to Ada,
who, after meeting Charles Babbage, translated and expanded a description of
his analytical engine. Even though Babbage never completed construction of
any of its machines, the work done with Ada they earned him the title of first
computer programmer in the world. The name of the Ada programming
language
was
chosen
as
a
tribute
to
the
programmer.
In late 1953, John W. Backus submitted a proposal to his superiors at IBM to
develop a more practical alternative to assembly language to program the IBM
704 mainframe computer. The historic team consisted Fortran programmers
Backus Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan,
Roy Nutt, Robert Nelson, Irving Ziller, Lois and David Sayre.2 Haibt
The first manual for the Fortran language appeared in October 1956 with the
first FORTRAN compiler delivered in April 1957. This was an optimizing
compiler, because customers were reluctant to use a high-level language
unless its compiler could generate code whose performance was comparable to
that
of
a
hand-made
code
in
assembly
language.
In 1960, he created COBOL, one of the languages used even in 2010 in
computer
management.
As the complexity of the tasks being carried out by computers grew, it became
necessary to have a more efficient method to program them. There, the high7
level languages, as was the BASIC versions microcomputers introduced in the
1980s. While a task as simple as adding two numbers may require several
assembly language instructions in a high-level language is sufficient to just one.
Implementation
Source code of a program written in Java programming language
The implementation of a language is one that provides a way to run a program
for a particular combination of software and hardware. There are basically two
ways to implement a language: Compilation and interpretation. Compilation is
the translation into a code that can use the machine. Translation programs that
can perform this operation are called compilers. These, like assemblers
advanced programs can generate many lines of machine code for each
proposition
of
the
source
program.
You can also use an alternative to translate high-level languages. Instead of
translating the source program and permanently save the object code produced
during compilation for use in a future implementation, the programmer just load
the source program in the computer along with the data to be processed. Then,
an interpreter program stored on the disk operating system, permanently or
included within the machine, makes every sentence of the source program into
machine language as will be necessary during the processing of data. The
object
code
is
not
recorded
for
later
use.
The next time you use an instruction, it must again be interpreted and translated
into machine language. For example, during repetitive processing steps of a
cycle or loop, each loop instruction will have to be interpreted in each cycle
repeated performance, which makes the program more slowly at runtime
(because it is reviewing the code in runtime) but faster at design time (because
you have to be compiled each time the entire code). The interpreter removes
the need for a compilation after each modification of the program when you
want to add features or fix bugs, but it is obvious that a pre-compiled object
program must be implemented much more quickly than one that has to be
interpreted
at
each
step
during
code
execution.
Most highlevel languages, enable multi-programming, however, many of them
were designed to enable dedicated programming, as it was PASCAL
mathematics at the start. Have also been implemented as a children's
educational language LOGO that through a series of simple instructions,
allowed to move a turtle among other things. In the area of Internet
infrastructure, to include Perl with a powerful text-processing system and a
large
collection
of
modules.
Technique
To write programs that provide the best results, it should take into account a
number
of
details.
• Correction. A program is correct if you what to do as established in previous
phases to its development. To determine if a program does what it must, it is
8
very important to specify clearly what to do before you develop the program
and,
once
finished,
compare
it
to
what
actually
does.
• Clarity. It is very important that the program is as clear and readable as
possible to facilitate their development and subsequent maintenance. In
developing a program should try their structure is simple and consistent, and
take care of the editing style, is thus facilitated the work of the programmer,
both in the development phase and in the later stages of error correction ,
extensions, modifications, etc. Phases that can be performed even by another
developer, thus further clarity is necessary to allow other developers to continue
the work easily. Some developers go so far as to use ASCII art to delimit
sections of code. Others, for fun or to prevent an easy analysis to other
programmers,
resort
to
using
obfuscated
code.
• Efficiency. This is the program, in addition to that for which it was created (that
is, that's right), managing to do the best possible resources it uses. Normally,
when talking about efficiency of a program, usually referred to the time it takes
to perform the task for which it was created and the amount of memory you
need, but there are other resources that may be of consideration to achieve the
efficiency of a program, depending on their nature (which uses disk space,
network
traffic
generated,
etc.)..
• Portability. A program is portable when you have the ability to run on a
platform, either hardware or software, different from that in which it was
developed. Portability is a very desirable feature for a program, allowing, for
example, a program that was developed for GNU / Linux also run in the
Windows family of operating systems. This allows the program to reach more
users
more
easily.
Paradigms
The programs can be classified by the paradigm of language that is used to
produce them. The main paradigms are imperative and declarative.
Programs that use mandatory language specifying an algorithm, using
statements, expressions and sentencias.3 A declaration associates a variable
name with a data type, for example: var x: integer;. An expression contains a
value, eg 2 + 2 contains the value 4. Finally, a sentence must assign an
expression to a variable or use the value of a variable to alter the flow of a
program. For example: x: = 2 + 2, if x == 4 Then haz_algo ();. A common
criticism in imperative languages is the effect of assignment statements about a
class
of
variables
called
"non-locals'
4
Programs that use a declarative language to specify the properties the output
must know and do not specify any implementation details. Two broad
categories of declarative languages are functional languages and logical
languages. Functional languages (like Haskell) do not allow non-local variable
assignments, thus, become easier, for example, programs like functions
matemáticas.4 The principle behind the logical languages (like Prolog) is to
define the problem to be solved (the objective) and leave the details of the
solution to the system Prolog.5 The objective is defined by giving a list of sub9
goals. Each sub-goal is also defined by giving a list of sub-objectives and so
forth. If trying to find a solution, a sub-objective path fails then that subgoal is
discarded
and
systematically
try
another
route.
How is the program which is created may be by text or visual form. In a visual
programming language, graphic elements are manipulated rather than specified
by
text.
10
INTRODUCCIÓN
La programación de computadoras es una de las áreas mas interesantes de la
tecnología moderna. Para comunicarnos con estas maquinas es necesario
recurrir a lenguajes especiales. Este trabajo presenta brevemente lo que son
los lenguajes de programación, como se clasifican, las características y
diferencias de los principales lenguajes y para finalizar, estudiaremos cual es el
proceso que le permite a la computadora entender esos lenguajes.
¿QUÉ ES UN LENGUAJE DE PROGRAMACIÓN?
Un lenguaje de programación es un idioma artificial diseñado para expresar
computaciones que pueden ser llevadas a cabo por máquinas como las
computadoras. Pueden usarse para crear programas que controlen el
comportamiento físico y lógico de una máquina, para expresar algoritmos con
precisión, o como modo de comunicación humana. Está formado de un
conjunto de símbolos y reglas sintácticas y semánticas que definen su
estructura y el significado de sus elementos y expresiones. Al proceso por el
cual se escribe, se prueba, se depura, se compila y se mantiene el código
fuente de un programa informático se le llama programación.
La palabra programación se define como el proceso de creación de un
programa de computadora, mediante la aplicación de procedimientos lógicos, a
través de los siguientes pasos:
 El desarrollo lógico del programa para resolver un problema en
particular.
 Escritura de la lógica del programa empleando un lenguaje de
programación específico (codificación del programa)
 Ensamblaje o compilación del programa hasta convertirlo en lenguaje de
máquina.
 Prueba y depuración del programa.
 Desarrollo de la documentación.
¿QUÉ NOS PERMITE HACER UN LENGUAJE DE PROGRAMACIÓN?
Permite especificar de manera precisa sobre qué datos debe operar una
computadora, cómo deben ser almacenados o 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. Una característica relevante de los
lenguajes de programación es precisamente que más de un programador
11
pueda usar un conjunto común de instrucciones que sean comprendidas entre
ellos para realizar la construcción del programa de forma colaborativa.
FINALIDAD DE LOS LENGUAJES
Entre los seres humanos el lenguaje es un medio de comunicación de ideas,
sentimientos, necesidades, ordenes. De un modo similar, entre el hombre y la
computadora la comunicación se establece por medio de un lenguaje
especializado.
Las computadoras pueden hacer algunas tareas elementales(con mucha
rapidez) y combinándolas en forma adecuada es posible obtener resultados
útiles.
Un lenguaje de programación permite que el usuario controle las tareas
elementales de la computadora, además de mantener un nivel de
comunicación adecuado. Por tanto, programar consiste en lograr que la
computadora funcione como queremos, aplicando las facilidades de un
lenguaje.
La programación de las primeras computadoras (para cambiar un proceso por
otro) se efectuaba reacomodando cables y conexiones (los programas eran
cableados). Gracias al espíritu inquieto de muchos investigadores esta
actividad fue facilitada y mejorada, quitándole lo mecánico y volviéndola lógica.
HISTORIA
Para que la computadora entienda nuestras instrucciones debe usarse un
lenguaje específico conocido como código máquina, el cual la máquina
comprende fácilmente, pero que lo hace excesivamente complicado para las
personas. De hecho sólo consiste en cadenas extensas de números 0 y 1.
Para facilitar el trabajo, los primeros operadores de computadoras decidieron
hacer un traductor para reemplazar los 1 y 0 por palabras o abstracción de
palabras y letras provenientes del inglés; éste se conoce como lenguaje
ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa
add (sumar). En realidad escribir en lenguaje ensamblador es básicamente
sigue la misma estructura del en lenguaje máquina, pero las letras y palabras
son más fáciles de recordar y entender que los números.
La necesidad de recordar secuencias de programación para las acciones
usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD
(sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta
secuencia de posiciones se le denominó "instrucciones", y a este conjunto de
12
instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron
diferentes lenguajes de programación, los cuales reciben su denominación
porque tienen una estructura sintáctica similar a los lenguajes escritos por los
humanos, denominados también lenguajes de alto nivel.
La primera programadora de computadora conocida fue Ada Lovelace, hija de
Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a
Ada quien, después de conocer a Charles Babbage, tradujo y amplió una
descripción de su máquina analítica. Incluso aunque Babbage nunca completó
la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con
éstas le hizo ganarse el título de primera programadora de computadoras del
mundo. El nombre del lenguaje de programación Ada fue escogido como
homenaje a esta programadora.
A finales de 1953, John W. Backus sometió una propuesta a sus superiores en
IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para
programar el computador central IBM 704. El histórico equipo Fortran de
Backus consistió en los programadores Richard Goldberg, Sheldon F. Best,
Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois
Haibt y David Sayre.
El primer manual para el lenguaje Fortran apareció en octubre de 1956, con el
primer compilador Fortran entregado en abril de 1957. Esto era un compilador
optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a
menos que su compilador pudiera generar código cuyo desempeño fuera
comparable al de un código hecho a mano en lenguaje ensamblador.
En 1960, se creó COBOL, uno de los lenguajes usados aun en 2010 en
informática de gestión.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, se hizo necesario disponer de un método más eficiente para
programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo fue el
BASIC en las versiones introducidas en los microordenadores de la década de
1980. Mientras que una tarea tan sencilla como sumar dos números puede
necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje de alto
nivel bastará con solo una.
13
CLASIFICACIÓN DE LOS LENGUAJES
En la actualidad hay una gran variedad de lenguajes de programación, cada
uno con muchas ventajas y también con desventajas. No obstante, los
lenguajes pueden agruparse según sus características comunes.
Los lenguajes de programación han sido clasificados de muchas maneras:
*Por su nivel
*Por sus aplicaciones principales.
La clasificación de los lenguajes por su nivel se refiere a qué tan cercanos
están los lenguajes a las características físicas de la computadora o qué tan
próximos están alas necesidades del programador. La segunda, por
aplicaciones, se refiere a las ventajas que tienen los lenguajes para resolver
ciertos problemas específicos.
CLASIFICACIÓN DE LOS LENGUAJES POR SU NIVEL
LENGUAJES DE BAJO NIVEL
 Los lenguajes de bajo nivel son aquellos que el procesador de la
computadora entiende en forma directa.
 Dependen de las características de cada tipo de maquina y sólo son
comprensibles por especialistas.
 Aparecieron durante la primera generación de computadoras y entran en
esta categoría el lenguaje maquina y el lenguaje ensamblador.
LENGUAJES DE ALTO NIVEL
 Los lenguajes de alto nivel son aquellos desarrollados para el usuario
de la computadora.
 Permiten que los procedimientos se expresen con un estilo
comprensible; sin embargo, la computadora no los entiende
directamente.
 Algunos de estos lenguajes fueron desarrollados durante la segunda
generación de computadoras y la mayoría durante la tercera.
14
 Ejemplos de lenguajes de alto nivel son: Pascal, BASIC, Ada,
FORTRAN, etcétera.
LENGUAJES DE NIVEL MEDIO
 Los lenguajes de nivel medio se definen como lenguajes que reúnen las
ventajas de los dos niveles anteriores.
 Los únicos lenguajes de este tipo son C y Forth.
El siguiente esquema presenta el lugar que ocupan los lenguajes dentro del
campo de la computación.
El lenguaje mas cercano al hardware (centro de la figura) es el lenguaje
maquina, circundado por el lenguaje ensamblador. Como este ultimo se
encuentra mas alejado del hardware, hay una capa de traducción llamada
programa ensamblador. Mas hacia el exterior están los lenguajes de alto nivel y
de cuarta generación. Ambos requieren de un estrato intermedio de traducción,
formado por los compiladores e intérpretes.
Lenguajes de cuarta
generación
Lenguajes de alto nivel
Compiladores e interpretes
Lenguaje ensamblador
Programa
ensamblador
Lenguaje
máquina
Hard
ware
15
CLASIFICACIÓN DE LOS LENGUAJES POR SU APLICACIÓN
Muchos de los lenguajes de alto nivel desarrollados para servir a un objeto en
especial. A continuación una clasificación de los lenguajes de acuerdo con las
áreas de aplicación:
*Lenguajes de propósito general: Pascal, BASIC.
*Lenguajes para aplicaciones científicas: FORTRAN, APL.
*Lenguajes didácticos: Logo.
*Lenguajes para administración. COBOL, RPG, SQL.
*Lenguajes para inteligencia artificial: Prolog, Lisp.
*Lenguajes para programación de sistemas: C, Ada.
*Lenguajes de programación orientada a objetos (OOP): SmallTalk, Java, C++.
*lenguajes de cuarta generación (4GL): Mapper, Cogen, Linc.
*Lenguajes orientados a la interfaz gráfica: Visual Basic, Visual C++, Delphi.
LENGUAJES DE BAJO NIVEL
Los lenguajes de bajo nivel, lenguaje maquina y ensamblador, aparecieron
durante la primera generación de computadoras y siguen siendo utilizados ya
que son los lenguajes propios de los microprocesadores, aunque sólo los usan
programadores especializados.
EL LENGUAJE MÁQUINA
El CPU de una computadora es un circuito electrónico digital, por ello solo
entiende pulsos electrónicos. Esos pulsos eléctricos corresponden a
secuencias de unos y ceros que el procesador maneja y entiende, y son
conocidas como lenguaje maquina; no importa que tan moderna sea la
computadora, cualquier programa que ejecute deberá estar en lenguaje
maquina antes de que el CPU pueda entenderlo.
Programar en código maquina permite el control directo del CPU. Sin embargo,
sise cambia de computadora, el lenguaje cambia. Por lo tanto, un programa
realizado en el código maquina de un procesador no sirve para otro procesador
diferente.
A continuación se muestra como ejemplo un programa en lenguaje maquina
que lee os números desde el teclado, los suma e imprime el resultado. Fue
16
escrito para computadoras con microprocesador Intel 8086 (y sólo funcionará
en maquinas con este procesador o compatible).
10110100 00000001
11001101 0010001
(leer un número desde el teclado)
10001010 11111000
10110100 00000001
11001101 00100001
(leer otro número desde el teclado)
00000010 11111000
(sumar los números)
10110100 00000010
10001010 11010111
1100110100100001
(imprimir el resultado)
10111000 01001100 00000000 (terminar proceso)
11000011
Aquí se observa con toda claridad que este lenguaje no es sencillo y con
facilidad causa confusión.
Para disminuir las confusiones con los ceros y unos se recurre a la
equivalencia hexadecimal de cada byte.
B4
01
CD
21
8A
F8
B4
01
CD
21
(leer otro número desde el teclado)
02
F8
(sumar los números)
B4
02
8A
D7
CD
21
(imprimir e resultado)
B8
4C 00
(terminar proceso)
(leer un número desde el teclado)
C3
17
La ventaja del código maquina es el control directo del procesador y la gran
velocidad de ejecución. Además, pese a los avances logrados en lenguajes,
aún existen rutinas que sólo es posible hacer en código maquina.
EL LENGUAJE ENSAMBLADOR
Para allanar algunas de las dificultades que presentaba la programación en
lenguaje maquina se desarrollo un método mnemotécnico que establecía una
equivalencia entre las secuencias binarias y un conjunto de abreviaturas que
indicaban las acciones efectuadas por el procesador. A esta mejora se le
nombró como lenguaje ensamblador y sus instrucciones mnemotécnicas o
mnemónicas.
El lenguaje ensamblador maneja símbolos que el procesador no entiende de
inmediato, por ello los programas deben traducirse a lenguaje maquina para
ejecutarse.
Ese proceso de traducción (conocido como ensamblado) es sencillo pues
existe una relación uno a uno entre las instrucciones en ensamblador y las
secuencias numéricas en código maquina.
Gracias al ensamblador las revisiones y cambios ya no se realizan sobre el
código binario de la computadora, sino sobre símbolos.
El programa antes presentado luce así en lenguaje ensamblador:
MOV AH,0 1H
I N T 2 1H
(leer un número desde el teclado)
MOV BH, AL
MOV AH,0 1H
I N T 2 1H
A DD BH ,BL
(leer otro numero desde el teclado)
(sumar los números)
MOV DL,BH
I N T 2 1H
M O V A X , 4 C 0 0 H (imprimir el resultado)
I N T 21
(terminar proceso)
RET
18
El ensamblador tiene las mismas ventajas que el lenguaje maquina: control
directo del procesador y gran velocidad de ejecución; además, ofrece mayores
facilidades para el desarrollo de programas. También es un lenguaje que
depende por completo de cada tipo de computadora.
LENGUAJES DE ALTO NIVEL
Debido a las dificultades que presentaba programar con lenguajes de bajo
nivel, se desarrollaron nuevos lenguajes, llamados de alto nivel, que facilitaron
bastante el trabajo de los programadores.
Actualmente hay gran variedad de lenguajes, algunos aparecieron en la
segunda generación (FOLTRAN, ALGOL y COBOL), la mayoria en la tercera y
se siguen desarrollando más.
CARACTERÍSTICAS GENERALES
Por muy diferentes que puedan ser entre sí los lenguajes de alto nivel, todos
poseen las siguientes características:
 Independencia: el lenguaje no depende de un equipo en particular
 Transportabilidad: un programa hecho en una computadora puede
funcionar en otra
 Generación de códigos: los programas hechos en lenguajes de alto nivel
deben ser traducidos a lenguaje maquina para poder ejecutarse.
 Notación orientada al problema: los lenguajes y su gramática se
especializan hacia un área especifica (administrativa, científica,
etcétera).
 Uso de identificadores: los valores o procesos pueden s ser referidos
mediante símbolos o palabras, en lugar de números.
 Similitud con el lenguaje ordinario: las palabras del lenguaje y sus
estructuras son parecidas al idioma inglés.
19
LOS DISTINTOS LENGUAJES
EL LENGUAJE FORTRAN
Fue el primer lenguaje de alto nivel que apareció. Su nombre es una
abreviatura de FORmula TRANslating system. Se desarrolló a partir de 1954 y
dos años más tarde apareció en el IBM 704. Se mejoraron sus características y
se transformo en FORTRAN II (1958). FORTRAN III no se utilizo públicamente
y en 1962 se desarrollo FORTRAN IV para IBM 7090/7094. La ultima versión
estándar es FORTRAN 95.
FORTRAN fue orientado hacia la solución de problemas y permite el manejo de
números complejos.
EL LENGUAJE ALGOL
El ALGOL (ALGOrithmic Language) apareció en 1985, tras su discusión en un
comité de dos asociaciones de informática (ACM-americana y GAMMeuropea). Fue el primer lenguaje estructurado.
El ALGOL se orientó hacia problemas científicos. Sus
características fueron ser algorítmico y permitir la recursividad.
principales
EL LENGUAJE COBOL
COBOL son siglas de Common Business Oriented Lenguaje. Sus orígenes
remontan a 1959, cuando después de una reunión de fabricantes de
computadoras, industrias y gobierno estadounidense, se planteó la necesidad
de un lenguaje que estuviese enfocado hacia las necesidades administrativas.
Como resultado se formó el Comité CODASYL(Conference on Data Systems
Languajes) que desarrolló una descripción del lenguaje, apareciendo
finalmente COBOL en 1960.
COBOL fue el primer lenguaje transportable y su enfoque de trabajo es hacia
problemas administrativos.
EL LENGUAJE BASIC
BASIC son las siglas de Beginner’s All-purpose Symbolic Instruction Code.
Este lenguaje fue desarrollado en 1965, en el Darmouth College (New
Hamshire), por Thomas Kurtz y John Kenemy. Estos investigadores tuvieron
20
como finalidad tener un lenguaje facil de aprender (en aquella época ninguno
de los lenguajes existentes resultaba sencillo para los estudiantes
universitarios).
Sus características son la simplicidad, el fácil aprendizaje, la versatilidad, y no
ser estructurado.
EL LENGUAJE LOGO
Este lenguaje fue creado por Seymour Papert (del Tecnológico de
Massachussets) en las postrimerías de la década de los sesenta, y es una
variante de LISP (LISt Processor). Mediante él intentó reunir teorías
pedagógicas de aprendizaje e inteligencia artificial.
LOGO es un eficiente lenguaje educativo (para enseñanza de programación y
aprendizaje en general) gracias a su sencillez y a sus capacidades graficas
(conocidas como gráficos de tortuga).
LOGO tiene como características ser interactivo, ampliable y recursivo. Debido
a su ascendiente (LISP) puede servir de introducción en los campos de
inteligencia artificial y procesamiento de listas.
EL LENGUAJE PASCAL
En honor a Blaise Pascal, Nicklaus Wirth así bautizó al lenguaje que diseñó en
1970. el lenguaje Pascal tuvo propósito enseñar ,os principios de la
programación estructurada a estudiantes universitarios. Tuvo como antecesor
directo al ALGOL; sin embargo, en Pascal es más sencillo el manejo de datos y
no es tan extenso.
Es un lenguaje estructurado, transportable, de propósito general, recursivo y
modular.
EL LENGUAJE C
Durante la década de los sesenta se empezó a sentir necesidad de un lenguaje
de programación que tuviera facilidades y estructuras de un lenguaje de alto
nivel pero que permitiera también manipular directamente al procesador de la
computadora.
21
El primer intento lo realizó Martin Richards en la Universidad de Cambridge
(Inglaterra) en 1969, con el lenguaje BCPL. En los laboratorios Bell tomaron
sus conceptos y desarrollaron el lenguaje B. En 1972 Ken Thompson y Dennis
Ritchie empiezan a extender este lenguaje dando creación al lenguaje C.
Las capacidades del C promovieron que el núcleo del sistema operativo Unix
fuera reescrito casi en su totalidad en este lenguaje, en 1973.
El lenguaje C es uno de los más populares en la actualidad, se ha implantado
en casi la totalidad de las computadoras y ha mantenido gran estandaridad en
sus librerías de funciones, gracias a lo cual es muy útil para desarrollar
sistemas transportables.
EL LENGUAJE ADA
Ada es un lenguaje de programación orientado a objetos y fuertemente tipado
de forma estática que fue diseñado por Jean Ichbiah de CII Honeywell Bull por
encargo del Departamento de Defensa de los Estados Unidos. Es un lenguaje
multipropósito, orientado a objetos y concurrente, pudiendo llegar desde la
facilidad de Pascal hasta la flexibilidad de C++..
Fue diseñado con la seguridad en mente y con una filosofía orientada a la
reducción de errores comunes y difíciles de descubrir. Para ello se basa en un
tipado muy fuerte y en chequeos en tiempo de ejecución (desactivables en
beneficio del rendimiento). La sincronización de tareas se realiza mediante la
primitiva rendezvous.
Ada se usa principalmente en entornos en los que se necesita una gran
seguridad y fiabilidad como la defensa, la aeronáutica (Boeing o Airbus), la
gestión del tráfico aéreo (como Indra en España) y la industria aeroespacial
entre otros.
EL LENGUAJE C++
C++ es un lenguaje de programación diseñado a mediados de los años 1980
por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso
lenguaje de programación C con mecanismos que permitan la manipulación de
objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a
objetos, el C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se
sumó a los otros dos paradigmas que ya estaban admitidos (programación
estructurada y la programación orientada a objetos). Por esto se suele decir
que el C++ es un lenguaje de programación multiparadigma.
22
Actualmente existe un estándar, denominado ISO C++, al que se han adherido
la mayoría de los fabricantes de compiladores más modernos. Existen también
algunos intérpretes, tales como ROOT.
Una particularidad del C++ es la posibilidad de redefinir los operadores
(sobrecarga de operadores), y de poder crear nuevos tipos que se comporten
como tipos fundamentales.
El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el
lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes
se había usado el nombre "C con clases". En C++, la expresión "C++" significa
"incremento de C" y se refiere a que C++ es una extensión de C.
EL LENGUAJE SMALLTALK
Smalltalk es un lenguaje de programación que permite realizar tareas de
computación mediante la interacción con un entorno de objetos virtuales.
Metafóricamente, se puede considerar que un Smalltalk es un mundo virtual
donde viven objetos que se comunican mediante el envío de mensajes.
Un sistema Smalltalk está compuesto por:

Máquina virtual

Imagen virtual que contiene todos los objetos del sistema

Lenguaje de programación (también conocido como Smalltalk)

Biblioteca de Objetos reusables

Opcionalmente un entorno de desarrollo que funciona como un sistema
en tiempo de ejecución.
Los orígenes de Smalltalk se encuentran en las investigaciones realizadas por
Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg y otros durante los años
setenta en el Palo Alto Research Institute de Xerox (conocido como Xerox
PARC), para la creación de un sistema informático orientado a la educación. El
objetivo era crear un sistema que permitiese expandir la creatividad de sus
usuarios, proporcionando un entorno para la experimentación, creación e
investigación.
EL LENGUAJE LISP
El Lisp (o LISP) especificado originalmente en 1958 por John McCarthy y sus
colaboradores en el MIT, el Lisp es el segundo más viejo lenguaje de
programación de alto nivel de extenso uso hoy en día; solamente el FORTRAN
es más viejo. Al igual que el FORTRAN, el Lisp ha cambiado mucho desde sus
23
comienzos, y han existido un número de dialectos en su historia. Hoy, los
dialectos Lisp de propósito general más ampliamente conocidos son el
Common Lisp y el Scheme.
El Lisp fue creado originalmente como una notación matemática práctica para
los programas de computadora, basada en el cálculo lambda de Alonzo
Church. Se convirtió rápidamente en el lenguaje de programación favorito en la
investigación de la inteligencia artificial (AI). Como uno de los primeros
lenguajes de programación, el Lisp fue pionero en muchas ideas en ciencias de
la computación, incluyendo las estructuras de datos de árbol, el manejo de
almacenamiento automático, tipos dinámicos, y el compilador auto contenido.
El nombre LISP deriva del "LISt Processing" (Proceso de LIStas). Las listas
encadenadas son una de las estructuras de datos importantes del Lisp, y el
código fuente del Lisp en sí mismo está compuesto de listas. Como resultado,
los programas de Lisp pueden manipular el código fuente como una estructura
de datos, dando lugar a los macro sistemas que permiten a los programadores
crear una nueva sintaxis de lenguajes de programación de dominio específico
empotrados en el Lisp.
La intercambiabilidad del código y los datos también da a Lisp su
instantáneamente reconocible sintaxis. Todo el código del programa es escrito
como expresiones S, o listas entre paréntesis. Una llamada de función o una
forma sintáctica es escrita como una lista, con la función o el nombre del
operador en primer lugar, y los argumentos a continuación; por ejemplo, una
función f que toma tres argumentos.
EL LENGUAJE PROLOG
Se trata de un lenguaje de programación ideado a principios de los años 70 en
la Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain
Colmerauer y Philippe Roussel. Nació de un proyecto que no tenía como
objetivo la implementación de un lenguaje de programación, sino el
procesamiento de lenguajes naturales. Alain Colmerauer y Robert Pasero
trabajaban en la parte del procesado del lenguaje natural y Jean Trudel y
Philippe Roussel en la parte de deducción e inferencia del sistema. Interesado
por el método de resolución SL, Trudel persuadió a Robert Kowalski para que
se uniera al proyecto, dando lugar a una versión preliminar del lenguaje Prolog
a finales de 19712 y apareciendo la versión definitiva en 1972.3 Esta primera
versión de Prolog fue programada en ALGOL W.
Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en
1983, David H.D. Warren desarrolló un compilador capaz de traducir Prolog en
un conjunto de instrucciones de una máquina abstracta denominada Warren
Abstract Machine, o abreviadamente, WAM. Desde entonces Prolog es un
lenguaje semi-interpretado.
24
Si bien en un principio se trataba de un lenguaje de uso reducido, la aparición
de intérpretes del mismo para microordenadores de 8 bits (ej: micro-PROLOG)
y para ordenadores domésticos de 16 bits (ej: Turbo PROLOG de Borland,
entre otros muchos) a lo largo de la década de 1980 contribuyó notablemente a
su popularización.4 Otro importante factor en su difusión fue la adopción del
mismo para el desarrollo del proyecto de la quinta generación de computadoras
a principios de la década de los 80,5 en cuyo contexto se desarrolló la
implementación paralelizada del lenguaje llamada KL1 y del que deriva parte
del desarrollo moderno de Prolog.
Las primeras versiones del lenguaje diferían, en sus diferentes
implementaciones, en muchos aspectos de sus sintaxis, empleándose
mayormente como forma normalizada el dialecto propuesto por la Universidad
de Edimburgo6 , hasta que en 1995 se estableció un estándar ISO (ISO/IEC
13211-1), llamado ISO-Prolog.
Prolog se enmarca en el paradigma de los lenguajes lógicos y declarativos, lo
que lo diferencia enormemente de otros lenguajes más populares tales como
Fortran, Pascal, C o Java.
EL LENGUAJE JAVA
Java es un lenguaje de programación orientado a objetos desarrollado por Sun
Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha
de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y
elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como
la manipulación directa de punteros o memoria.
Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la
compilación en código máquina nativo también es posible. En el tiempo de
ejecución, el bytecode es normalmente interpretado o compilado a código
nativo para la ejecución, aunque la ejecución directa por hardware del bytecode
por un procesador Java también es posible.
La implementación original y de referencia del compilador, la máquina virtual y
las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems
en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo
y evolución del lenguaje a través del Java Community Process, si bien otros
han desarrollado también implementaciones alternativas de estas tecnologías
de Sun, algunas incluso bajo licencias de software libre.
Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor
parte de sus tecnologías Java bajo la licencia GNU GPL, de acuerdo con las
especificaciones del Java Community Process, de tal forma que prácticamente
todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de
Sun que se requiere para ejecutar los programas Java aún no lo es).
25
EL LENGUAJE ML
ML es un lenguaje de programación de propósito general de la familia de los
lenguajes de programación funcional desarrollado por Robin Milner y otros a
finales de los años 1970 en la Universidad de Edimburgo. ML es un acrónimo
de Meta Lenguaje dado que fue concebido como el lenguaje para desarrollar
tácticas de demostración en el sistema LCF (El lenguaje para el cual ML era
meta lenguaje es pplambda, una combinación del cálculo de predicados de
primer orden y el lambda-cálculo polimórfico sencillamente tipificado).
Frecuentemente se clasifica a ML como un lenguaje funcional impuro dado que
permite programar imperativamente con efectos de borde, a diferencia de otros
lenguajes de programación funcional, tales como Haskell.
Entre las características de ML se incluyen evaluación por valor, álgebra de
funciones, manejo automatizado de memoria por medio de recolección de
basura, polimorfismo parametrizado, análisis de estático de tipos, inferencia de
tipos, tipos de datos algebraicos, llamada por patrones y manejo de
excepciones. Esta combinación particular de conceptos hace que sea posible
producir una de los mejores compiladores actualmente disponibles[1].
En la actualidad varios lenguajes de la familia ML están disponibles,
principalmente Standard ML (SML) y Ocaml (Ocaml contiene la sintaxis de ML
como un subconjunto). Varias ideas aparecidas en ML han influido el diseño de
otros lenguajes, tales como Cyclone y Nemerle.
Los lenguajes de la familia ML se aplica principalmente en diseño y
manipulación de lenguajes de programación (compiladores, analizadores,
demostradores de teoremas), así como en bioinformática, sistemas financieros,
protocolos de sincronización, etc.
TRADUCCIÓN DE LENGUAJES
Cuando se escribe un programa en lenguaje de alto nivel, éste debe traducirse
al lenguaje máquina de la computadora para lo que lo pueda ejecutar.
Este proceso de traducción se realiza mediante programas especializados
llamados compiladores e intérpretes.
TIPOS DE PROGRAMA
Una vez escrito un programa éste puede estar en código fuente, código objeto
o código ejecutable.
26
Código fuente: es el conjunto de instrucciones tal y como fueron escritas por el
programador en el lenguaje de alto nivel (también se le conoce como programa
fuente).
Código objeto: son las instrucciones de un programa cuando ya han sido
traducidas a lenguaje máquina (también se le conoce como programa fuente).
Código ejecutable: es un código objeto que puede ser ejecutado por la
computadora de inmediato (no todos los códigos objeto son ejecutables.)
EL COMPILADOR
El compilador es un programa especial que traduce un programa fuente (escrito
en un lenguaje de alto nivel) a un código objeto.
Un compilador analiza las líneas del programa e identifica ciertas estructuras
para traducirlas adecuadamente a lenguaje máquina. Una vez que se ha
efectuado la compilación puede prescindirse del programa fuente.
Los compiladores son propios de cada lenguaje de programación. Algunos
ejemplos de lenguajes que requieren compilador son: Pascal, C, FORTRAN,
COBOL, ALGOL, Y APL.
El proceso de compilación se verifica en cinco etapas:
 Análisis léxico: durante esta etapa se verifica que las palabras utilizadas
en el programa fuente pertenezcan al lenguaje.
 Análisis de sintaxis: esta parte de la compilación examina cada
instrucción del programa fuente para que las instrucciones estén
organizadas correctamente.
 Generación de código intermedio: este paso produce un código
simbólico que permitirá efectuar la equivalencia con lenguaje máquina.
 Generación de código máquina: en esta última etapa se elabora el
programa objeto.
EL INTERPRETE
Es un programa especial que traduce (a lenguaje máquina) cada línea del
programa fuente y la ejecuta de inmediato.
Los interpretes no producen código objeto, por ello la ejecución de un programa
requiere forzosamente del código fuente. Además, los programas en lenguaje
interpretado se ejecutan con más lentitud que aquellos en lenguaje compilado.
27
Son lenguajes que requieren intérprete: BASIC, LOGO, Prolog, LISP Y
SmallTalk.
ELABORAR UN LENGUAJE DE PROGRAMACIÓN
Para escribir programas que proporcionen los mejores resultados, cabe tener
en cuenta una serie de detalles.
 Corrección. Un programa es correcto si hace lo que debe hacer tal y
como se estableció en las fases previas a su desarrollo. Para determinar
si un programa hace lo que debe, es muy importante especificar
claramente qué debe hacer el programa antes de desarrollarlo y, una
vez acabado, compararlo con lo que realmente hace. Claridad. Es muy
importante que el programa sea lo más claro y legible posible, para facilitar así
su desarrollo y posterior mantenimiento. Al elaborar un programa se debe
intentar que su estructura sea sencilla y coherente, así como cuidar el estilo en
la edición; de esta forma se ve facilitado el trabajo del programador, tanto en la
fase de creación como en las fases posteriores de corrección de errores,
ampliaciones, modificaciones, etc. Fases que pueden ser realizadas incluso por
otro programador, con lo cual la claridad es aún más necesaria para que otros
programadores puedan continuar el trabajo fácilmente. Algunos programadores
llegan incluso a utilizar Arte ASCII para delimitar secciones de código. Otros,
por diversión o para impedir un análisis cómodo a otros programadores,
recurren al uso de código ofuscado.
 Eficiencia. Se trata de que el programa, además de realizar aquello para
lo que fue creado (es decir, que sea correcto), lo haga gestionando de la
mejor forma posible los recursos que utiliza. Normalmente, al hablar de
eficiencia de un programa, se suele hacer referencia al tiempo que tarda
en realizar la tarea para la que ha sido creado y a la cantidad de
memoria que necesita, pero hay otros recursos que también pueden ser
de consideración al obtener la eficiencia de un programa, dependiendo
de su naturaleza (espacio en disco que utiliza, tráfico de red que genera,
etc.).
 Portabilidad. Un programa es portable cuando tiene la capacidad de
poder ejecutarse en una plataforma, ya sea hardware o software,
diferente a aquélla en la que se elaboró. La portabilidad es una
característica muy deseable para un programa, ya que permite, por
ejemplo, a un programa que se ha desarrollado para sistemas
GNU/Linux ejecutarse también en la familia de sistemas operativos
Windows. Esto permite que el programa pueda llegar a más usuarios
más fácilmente.
28
PARADIGMAS
Los programas se pueden clasificar por el paradigma del lenguaje que se use
para producirlos. Los principales paradigmas son imperativos y declarativos.
Los programas que usan un lenguaje imperativo especifican un algoritmo, usan
declaraciones, expresiones y sentencias. Una declaración asocia un nombre de
variable con un tipo de dato, por ejemplo: var x: integer; . Una expresión
contiene un valor, por ejemplo: 2 + 2 contiene el valor 4. Finalmente, una
sentencia debe asignar una expresión a una variable o usar el valor de una
variable para alterar el flujo de un programa. Por ejemplo: x := 2 + 2; if x == 4
then haz_algo();. Una crítica común en los lenguajes imperativos es el efecto
de las sentencias de asignación sobre una clase de variables llamadas "no
locales".
Los programas que usan un lenguaje declarativo especifican las propiedades
que la salida debe conocer y no especifica cualquier detalle de implementación.
Dos amplias categorías de lenguajes declarativos son los lenguajes
funcionales y los lenguajes lógicos. Los lenguajes funcionales (como
Haskell) no permiten asignaciones de variables no locales, así, se hacen más
fácil, por ejemplo, programas como funciones matemáticas. El principio detrás
de los lenguajes lógicos (como Prolog) es definir el problema que se quiere
resolver (el objetivo) y dejar los detalles de la solución a el sistema de Prolog.
El objetivo es definido dando una lista de sub-objetivos. Cada sub-objetivo
también se define dando una lista de sus sub-objetivos, etcétera. Si al tratar de
buscar una solución, una ruta de sub-objetivos falla, entonces tal sub-objetivo
se descarta y sistemáticamente se prueba otra ruta.
La forma en la cual es programa se crea puede ser por medio de texto o de
forma visual. En un lenguaje de programación visual, los elementos son
manipulados gráficamente en vez de especificarse por medio de texto.
29
CONCLUSIONES
 Un lenguaje de programación permite que el usuario controle las tareas
elementales de la computadora.
 La programación de las primeras computadoras era por medio de
cables.
 Los lenguajes de programa se clasifican por su nivel y por sus
aplicaciones principales.
 Lenguajes de bajo nivel son los que el procesador de la computadora
entiende directamente. Dependen de las características de cada tipo de
máquina.
 Son lenguajes de bajo nivel el lenguaje máquina y el lenguaje
ensamblador.
 Lenguajes de alto nivel son lenguajes que permiten que los
procedimientos de expresen con palabras y estructura comprensibles.
 Algunos lenguajes de alto nivel son: Pascal, BASIC, Ada, FORTRAN.
 Los lenguajes de nivel medio son los que reúnen las ventajas de
lenguajes de alto y bajo nivel. Los únicos de este tipo son C y Forth.
 El CPU de una computadora es un circuito electrónico digital que sólo
entiende pulsos electrónicos.
 El lenguaje máquina son las secuencias de unos y ceros que el
procesador maneja y entiende.
 Cualquier programa deberá estar en lenguaje máquina antes de que el
CPU pueda entenderlo.
 Programar en código máquina permite el control directo del CPU y gran
velocidad de ejecución.
 Un programa escrito en el lenguaje máquina de un procesador
específico no sirve para otro diferente.
 El lenguaje ensamblador maneja símbolos y existe una relación uno a
uno entre esos símbolos y las secuencias numéricas en código máquina.
También es un lenguaje totalmente dependiente de cada tipo de
computadora.
 Las instrucciones en ensamblador no las entiende directamente del
CPU, por ello los programas deben traducirse a lenguaje máquina para
poder ejecutarse (proceso de ensamblado).
30
 Las ventajas del lenguaje ensamblador son control directo del
procesador , gran velocidad de ejecución y facilidades para la
depuración y mantenimiento de programas.
 Son características de los lenguajes de alto nivel la independencia,
transportabilidad, generación de código, notación orientada al problema,
uso de identificadores y similitud con el lenguaje ordinario.
 El lenguaje FORTRAN (FORmula TRANslating system) fue el primer
lenguaje de alto nivel que apareció. Se orientó a la solución de
problemas numéricos.
 El lenguaje ALGOL (ALGOrithmic Languaje) fue el primer lenguaje
estructurado, algorítmico y que permitió la recursividad. Se orientó hacia
problema científicos.
 El lenguaje COBOL (Common Business Oriented Languaje) fue el primer
lenguaje transportable y su enfoque de trabajo e hacia problemas
administrativos.
 El lenguaje Pascal ha tenido como propósito enseñar los principios de la
programación estructurada. Sus principales características son ser un
lenguaje estructurado, transportable, de propósito general, recursivo y
modular.
 El lenguaje C es muy útil para la programación de sistema debido a su
estandarizad, a la gran cantidad de computadoras que lo han
implementado y que permite grandes facilidades para el control directo
de la computadora. Se desarrolló en 1972 por Thompson y Ritchie
(laboratorios Bell) y se encuentra emparentado con el sistema operativo
UNIX.
 El código fuente es el conjunto de instrucciones en lenguaje de alto
nivel.
 El código objeto son las instrucciones de un programa que ya han sido
traducidas a lenguaje máquina.
 El código ejecutable es un código objeto que puede ser ejecutado por la
computadora de inmediato.
 Un compilador es un programa especial que traduce un programa escrito
en lenguaje de alto nivel a un código objeto.
 Algunos ejemplos de lenguajes que requieren compilador son: Pascal,
C, FORTRAN, COBOL, ALGOL Y APL.
31
 Los pasos de compilación son análisis léxico, análisis de sintaxis,
generación de código intermedio y generación de código máquina.
 El intérprete es un programa especial que traduce (a lenguaje máquina)
cada línea del programa fuente y la ejecuta de inmediato.
 Los intérpretes no producen código objeto. La ejecución de un programa
requiere del código fuente. Los programas en lenguaje interpretado se
ejecutan con más lentitud que aquellos en lenguaje compilado.
 Los lenguajes que requieren intérprete son BASIC, LOGO, Prolog y
LISP.
32
BIBLIOGRAFÍA
Vasconcelos Santillán, INTRODUCCIÓN A LA COMPUTACIÓN, México 2005,
103-105 pp., Publicaciones cultural.
Pratt W. Terrence, LENGUAJES DE PROGRAMACIÓN, México 1995, 451-630
pp., Pentice-Hall Hispanoamericana.
33
ÍNDICE
Prólogo ………………………………………………………………………..1
Foreword ………………………………………………………………………6
Introducción ……………………………………………………………………11
¿Qué es un lenguaje de programación?..................................................11
¿Qué nos permite un lenguaje de programación?...................................11
Finalidad de los lenguajes…………………………………………………...12
Historia…………………………………………………………………………12
Clasificación de los lenguajes………………………………………………14
Clasificación de los lenguajes por su nivel………………………...14
Lenguajes de bajo nivel……………………………………..14
Lenguajes de alto nivel……………………………………...14
Lenguajes de nivel medio……………………………………15
Clasificación de los lenguajes por su aplicación…………………..16
Lenguajes de bajo nivel……………………………………………………..16
El lenguaje máquina…………………………………………………16
El lenguaje ensamblador……………………………………………18
Lenguajes de alto nivel………………………………………………………19
Los distintos lenguajes...........................................................................20
El lenguaje FORTRAN……………………………………………………..20
El lenguaje ALGOL…………………………………………………………20
El lenguaje COBOL…………………………………………………………20
El lenguaje BASIC…………………………………………………………...20
El lenguaje LOGO……………………………………………………………21
El lenguaje Pascal…………………………………………………………..21
El lenguaje C………………………………………………………………….21
34
El lenguaje Ada……………………………………………………………..22
El lenguaje C++……………………………………………………………..22
El lenguaje SmallTalk……………………………………………………...23
El lenguaje LISP…………………………………………………………….23
El lenguaje PROLOG……………………………………………………….24
El lenguaje JAVA……………………………………………………………25
El lenguaje ML……………………………………………………………….26
Traducción de lenguajes……………………………………………………..26
Tipos de programa……………………………………………………26
El compilador…………………………………………………………..27
El intérprete…………………………………………………………….27
Elaborar un lenguaje de programación…………………………………….28
Paradigmas ……………………………………………………………………29
Conclusiones………………………………………………………………….30
Bibliografía…………………………………………………………................33
35