Vous êtes sur la page 1sur 10

Lenguajes de un computador

Lenguaje Mquina
El lenguaje propio del ordenador, basado en el sistema binario, o cdigo mquina, re
sulta difcil de utilizar para las personas. El programador debe introducir todos
y cada uno de los comandosy datos en forma binaria, y una operacin sencilla como
comparar el contenido de un registrocon los datos situados en una ubicacin del ch
ip de memoria puede tener el siguiente formato: 11001010 00010111 11110101 00101
011. La programacin en lenguaje mquina es una tarea tan tediosa y consume tanto ti
empo que muy raras veces lo que se ahorra en la ejecucin del programajustifica lo
s das o semanas que se han necesitado para escribir el mismo.
Lenguaje bajo nivel
Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente sealeselec
trnicas binarias. Dar una instruccin a un microprocesador supone en realidad envia
r series de unos y ceros espaciadas en el tiempo de una forma determinada. Esta
secuencia de seales se denomina cdigo mquina. El cdigo representa normalmente datos
y nmeros e instrucciones para manipularlos. Un modo ms fcil de comprender el cdigo mq
uina es dando a cada instruccin un mnemnico, como por ejemplo STORE, ADD o JUMP. E
sta abstraccin da como resultado el ensamblador, un lenguaje de muy bajo nivel qu
e es especfico de cada microprocesador.
Los lenguajes de bajo nivel permiten crear programas muy rpidos, pero que son a m
enudo difciles de aprender. Ms importante es el hecho de que los programas escrito
s en un bajo nivel sean altamente especficos de cada procesador. Si se lleva el p
rograma a otra mquina se debe reescribir el programa desde el principio
Lenguaje alto nivel
Los lenguajes de alto nivel sueles utilizar trminos ingleses del tipo LIST, PRINT
u OPEN como comandos que representan una secuencia de decenas o de centenas de
instrucciones en lenguaje mquina. Los comandos se introducen desde el teclado, de
sde un programa residente en la memoria o desde un dispositivo de almacenamiento
, y son interceptados por un programa que los traduce a instrucciones en lenguaj
e mquina.
Los programas traductores son de dos tipos: interpretes y compiladores. Con un i
nterprete, los programas que repiten un ciclo para volver a ejecutar parte de su
s instrucciones, reinterpretan la misma instruccin cada vez que aparece. Por cons
iguiente, los programas interpretados se ejecutan con mucha mayor lentitud que l
os programas en lenguaje mquina. Por el contrario, los compiladores traducen un p
rograma integro a lenguaje mquina antes de su ejecucin, por lo cual se ejecutan co
n tanta rapidez como si hubiese sido escrita directamente en lenguaje mquina.
Se considera que fue la estadounidense Grace Hopper quien implement el primer len
guaje de ordenador orientado al uso comercial. Despus de programar un ordenador e
xperimental en la Universidadde Harvard, trabaj en los modelos UNIVAC I y UNIVAC
II, desarrollando un lenguaje de alto nivel para uso comercial llamado FLOW-MATI
C. Para facilitar el uso del ordenador en las aplicaciones cientficas, IBM desarr
oll un lenguaje que simplificara el trabajo que implicaba el tratamiento de frmulas
matemticas complejas. Iniciado en 1954 y terminado en 1957, el FORTRAN (acrnimo d
e Formula Translator) fue el primer lenguaje exhaustivo de alto nivel de uso gen
eralizado.
En 1957 una asociacin estadounidense, la Association for Computing Machinery come
nz a desarrollar un lenguaje universal que corrigiera algunos de los defectos del
FORTRAN. Un ao ms tarde fue lanzado el ALGOL (acrnimo de Algorithmic Language), ot
ro lenguaje de orientacin cientfica de gran difusin en Europa durante las dcadas de
1960 y 1970, desde entonces ha sido sustituido por nuevos lenguajes, mientras qu
e el FORTRAN contina siendo utilizado debido a las gigantescas inversiones que se
hicieron en los programas existentes. El COBOL
(Acrnimo de Common Business Oriented Language) es un lenguaje de programacin para
uso comercial y empresarial especializado en la organizacinde datos y manipulacin
de archivos, y hoy da est muy difundido en el mundo empresarial.
Aunque existen centenares de lenguajes informticos y de variantes, hay algunos di
gnos de mencin, como el PASCAL, diseado en un principio como herramienta de enseanz
a, hoy es uno de los lenguajes de microordenador ms populares; el logro fue desar
rollado para que los nios pudieran acceder al mundo de la informtica; el C, un len
guaje de Bell Laboratories diseado en la dcada de 1970, se utiliza ampliamente en
el desarrollode programas de sistemas, al igual que su sucesor, el C++. El LISP
y el PROLOG han alcanzado amplia difusin en el campo de la inteligencia artificia
l.
Lenguaje de programacin
Captura de la microcomputadora Commodore PET-32 mostrando un programa en el leng
uaje de programacin BASIC, bajo el emulador VICE en una distribucin GNU/Linux.
Un ejemplo de cdigo fuente escrito en el lenguaje de programacin Java, que imprimi
r el mensaje "Hello World!" a la salida estndar cuando es compilado y ejecutado
Un lenguaje de programacin es un lenguaje formal diseado para expresar procesos qu
e pueden ser llevados a cabo por mquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento fsico y lgico d
e una mquina, para expresar algoritmos con precisin, o como modo de comunicacin hum
ana.1
Est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen s
u estructura y el significado de sus elementos y expresiones. Al proceso por el
cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantie
ne el cdigo fuente de un programa informtico se le llama programacin.
Tambin la palabra programacin se define como el proceso de creacin de un programa d
e computadora, mediante la aplicacin de procedimientos lgicos, a travs de los sigui
entes pasos:
El desarrollo lgico del programa para resolver un problema en particular.
Escritura de la lgica del programa empleando un lenguaje de programacin especfico (
codificacin del programa).
Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de mquina.
Prueba y depuracin del programa.
Desarrollo de la documentacin.
Existe un error comn que trata por sinnimos los trminos 'lenguaje de programacin' y
'lenguaje informtico'. Los lenguajes informticos engloban a los lenguajes de progr
amacin y a otros ms, como por ejemplo HTML (lenguaje para el marcado de pginas web
que no es propiamente un lenguaje de programacin, sino un conjunto de instruccion
es que permiten estructurar el contenido de los documentos).
Permite especificar de manera precisa sobre qu datos debe operar una computadora,
cmo deben ser almacenados o transmitidos y qu acciones debe tomar bajo una variad
a gama de circunstancias. Todo esto, a travs de un lenguaje que intenta estar rel
ativamente prximo al lenguaje humano o natural. Una caracterstica relevante de los
lenguajes de programacin es precisamente que ms de un programador pueda usar un c
onjunto comn de instrucciones que sean comprendidas entre ellos para realizar la
construccin de un programa de forma colaborativa.
ndice [ocultar]
1 Historia
2 Elementos
2.1 Variables y vectores
2.2 Condicionantes
2.3 Bucles
2.4 Funciones
2.5 Sintaxis
2.6 Semntica esttica
2.7 Sistema de tipos
2.7.1 Lenguajes tipados versus lenguajes no tipados
2.7.2 Tipos estticos versus tipos dinmicos
2.7.3 Tipos dbiles y tipos fuertes
3 Implementacin
4 Tcnica
4.1 Paradigmas
5 Vase tambin
6 Referencias
7 Enlaces externos
Historia[editar]
Cdigo Fortran en una tarjeta perforada, mostrando el uso especializado de las col
umnas 1-5, 6 y 73-80.
Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje
especfico conocido como cdigo mquina, el cual la mquina comprende fcilmente, pero que
lo hace excesivamente complicado para las personas. De hecho slo consiste en cad
enas extensas de nmeros 0 y 1.
Para facilitar el trabajo, los primeros operadores de computadoras decidieron ha
cer un traductor para reemplazar los 0 y 1 por palabras o abstraccin de palabras
y letras provenientes del ingls; ste se conoce como lenguaje ensamblador. Por ejem
plo, para sumar se usa la letra A de la palabra inglesa add (sumar). El lenguaje
ensamblador sigue la misma estructura del lenguaje mquina, pero las letras y pal
abras son ms fciles de recordar y entender que los nmeros.
La necesidad de recordar secuencias de programacin para las acciones usuales llev
a denominarlas con nombres fciles de memorizar y asociar: ADD (sumar), SUB (resta
r), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posic
iones se le denomin "instrucciones", y a este conjunto de instrucciones se le lla
m lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de progra
macin, los cuales reciben su denominacin porque tienen una estructura sintctica sim
ilar a los lenguajes escritos por los humanos, denominados tambin lenguajes de al
to nivel.
La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabel
la Milbanke Byron y Lord Byron. Anabella introdujo en las matemticas a Ada quien,
despus de conocer a Charles Babbage, tradujo y ampli una descripcin de su mquina an
altica. Incluso aunque Babbage nunca complet la construccin de cualquiera de sus mqu
inas, el trabajo que Ada realiz con stas le hizo ganarse el ttulo de primera progra
madora de computadoras del mundo. El nombre del lenguaje de programacin Ada fue e
scogido como homenaje a esta programadora.
A finales de 1953, John Backus someti una propuesta a sus superiores en IBM para
desarrollar una alternativa ms prctica al lenguaje ensamblador para programar la c
omputadora central IBM 704. El histrico equipo Fortran de Backus consisti en los p
rogramadores Richard Goldberg, Sheldon F. Best, 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 prim
er compilador Fortran entregado en abril de 1957. Esto era un compilador optimiz
ado, porque los clientes eran reacios a usar un lenguaje de alto nivel a menos q
ue su compilador pudiera generar cdigo cuyo desempeo fuera comparable al de un cdig
o hecho a mano en lenguaje ensamblador.
En 1960, se cre COBOL, uno de los lenguajes usados an en la actualidad, en informti
ca de gestin.
A medida que la complejidad de las tareas que realizaban las computadoras aument
aba, se hizo necesario disponer de un mtodo ms eficiente para programarlas. Entonc
es, se crearon los lenguajes de alto nivel, como lo fue BASIC en las versiones i
ntroducidas en los microordenadores de la dcada de 1980. Mientras que una tarea t
an sencilla como sumar dos nmeros puede necesitar varias instrucciones en lenguaj
e ensamblador, en un lenguaje de alto nivel bastar una sola sentencia.
Elementos[editar]
Variables y vectores[editar]
Las variables podran calificarse como contenedores de datos y por ello se diferen
cian segn el tipo de dato que son capaces de almacenar. En la mayora de lenguajes
de programacin se requiere especificar un tipo de variable concreto para guardar
un dato concreto. Por ejemplo, en Java, si deseamos guardar una cadena de texto
deberemos especificar que la variable es del tipo String. Por otra parte, en len
guajes como el PHP este tipo de especificacin de variables no es necesario. Adems,
existen variables compuestas por varias variables llamadas vectores. Un vector
no es ms que un conjunto de variables consecutivas en memoria y del mismo tipo gu
ardadas dentro de una variable contenedor. A continuacin, un listado con los tipo
s de variables y vectores ms comunes:
Variables tipo Char: Estas variables contienen un nico carcter, es decir, una letr
a, un signo o un nmero.
Variables tipo Int: Contienen un nmero entero.
Variables tipo float: Contienen un nmero decimal.
Variables tipo String: Contienen cadenas de texto, o lo que es lo mismo, es un v
ector con varias variables del tipo Char.
Variables del tipo Boolean: Solo pueden contener un 0 o un 1. El cero es conside
rado para muchos lenguajes como el literal "False", mientras que el 1 se conside
ra "True".
Condicionantes[editar]
Los condicionantes son estructuras de cdigo que indican que, para que cierta part
e del programa se ejecute, deben cumplirse ciertas premisas; por ejemplo: que do
s valores sean iguales, que un valor exista, que un valor sea mayor que otro...
Estos condicionantes por lo general solo se ejecutan una vez a lo largo del prog
rama. Los condicionantes ms conocidos y empleados en programacin son:
If: Indica una condicin para que se ejecute una parte del programa.
Else if: Siempre va precedido de un "If" e indica una condicin para que se ejecut
e una parte del programa siempre que no cumpla la condicin del if previo y si se
cumpla con la que el "else if" especifique.
Else: Siempre precedido de "If" y en ocasiones de "Else If". Indica que debe eje
cutarse cuando no se cumplan las condiciones prvias.
Bucles[editar]
Los bucles son parientes cercanos de los condicionantes, pero ejecutan constante
mente un cdigo mientras se cumpla una determinada condicin. Los ms frecuentes son:
For: Ejecuta un cdigo mientras una variable se encuentre entre 2 determinados parm
etros.
While: Ejecuta un cdigo mientras se cumpla la condicin que solicita.
Hay que decir que a pesar de que existan distintos tipos de bucles, ambos son ca
paces de realizar exactamente las mismas funciones. El empleo de uno u otro depe
nde, por lo general, del gusto del programador.
Funciones[editar]
Las funciones se crearon para evitar tener que repetir constantemente fragmentos
de cdigo. Una funcin podra considerarse como una variable que encierra cdigo dentro
de si. Por lo tanto cuando accedemos a dicha variable (la funcin) en realidad lo
que estamos es diciendo al programa que ejecute un determinado cdigo predefinido
anteriormente.
Todos los lenguajes de programacin tienen algunos elementos de formacin primitivos
para la descripcin de los datos y de los procesos o transformaciones aplicadas a
estos datos (tal como la suma de dos nmeros o la seleccin de un elemento que form
a parte de una coleccin). Estos elementos primitivos son definidos por reglas sin
tcticas y semnticas que describen su estructura y significado respectivamente.
Sintaxis[editar]
Con frecuencia se resaltan los elementos de la sintaxis con colores diferentes p
ara facilitar su lectura. Este ejemplo est escrito en Python.
A la forma visible de un lenguaje de programacin se le conoce como sintaxis. La m
ayora de los lenguajes de programacin son puramente textuales, es decir, utilizan
secuencias de texto que incluyen palabras, nmeros y puntuacin, de manera similar a
los lenguajes naturales escritos. Por otra parte, hay algunos lenguajes de prog
ramacin que son ms grficos en su naturaleza, utilizando relaciones visuales entre sm
bolos para especificar un programa.
La sintaxis de un lenguaje de programacin describe las combinaciones posibles de
los smbolos que forman un programa sintcticamente correcto. El significado que se
le da a una combinacin de smbolos es manejado por su semntica (ya sea formal o como
parte del cdigo duro de la referencia de implementacin). Dado que la mayora de los
lenguajes son textuales, este artculo trata de la sintaxis textual.
La sintaxis de los lenguajes de programacin es definida generalmente utilizando u
na combinacin de expresiones regulares (para la estructura lxica) y la Notacin de B
ackus-Naur (para la estructura gramtica). Este es un ejemplo de una gramtica simpl
e, tomada de Lisp:
expresin ::= tomo | lista
tomo ::= nmero | smbolo
nmero ::= [+-]? ['0'-'9']+
smbolo ::= ['A'-'Z'] ['a'-'z'].*
lista ::= '(' expresin* ')'
Con esta gramtica se especifica lo siguiente:
una expresin puede ser un tomo o una lista;
un tomo puede ser un nmero o un smbolo;
un nmero es una secuencia continua de uno o ms dgitos decimales, precedido opcional
mente por un signo ms o un signo menos;
un smbolo es una letra seguida de cero o ms caracteres (excluyendo espacios); y
una lista es un par de parntesis que abren y cierran, con cero o ms expresiones en
medio.
Algunos ejemplos de secuencias bien formadas de acuerdo a esta gramtica:
'12345', '()', '(a b c232 (1))'
No todos los programas sintcticamente correctos son semnticamente correctos. Mucho
s programas sintcticamente correctos tienen inconsistencias con las reglas del le
nguaje; y pueden (dependiendo de la especificacin del lenguaje y la solidez de la
implementacin) resultar en un error de traduccin o ejecucin. En algunos casos, tal
es programas pueden exhibir un comportamiento indefinido. Adems, incluso cuando u
n programa est bien definido dentro de un lenguaje, todava puede tener un signific
ado que no es el que la persona que lo escribi estaba tratando de construir.
Usando el lenguaje natural, por ejemplo, puede no ser posible asignarle signific
ado a una oracin gramaticalmente vlida o la oracin puede ser falsa:
"Las ideas verdes y descoloridas duermen furiosamente" es una oracin bien formada
gramaticalmente pero no tiene significado comnmente aceptado.
"Juan es un soltero casado" tambin est bien formada gramaticalmente pero expresa u
n significado que no puede ser verdadero.
El siguiente fragmento en el lenguaje C es sintcticamente correcto, pero ejecuta
una operacin que no est definida semnticamente (dado que p es un apuntador nulo, la
s operaciones p->real y p->im no tienen ningn significado):
complex *p = NULL;
complex abs_p = sqrt (p->real * p->real + p->im * p->im);
Si la declaracin de tipo de la primera lnea fuera omitida, el programa disparara un
error de compilacin, pues la variable "p" no estara definida. Pero el programa se
ra sintcticamente correcto todava, dado que las declaraciones de tipo proveen infor
macin semntica solamente.
La gramtica necesaria para especificar un lenguaje de programacin puede ser clasif
icada por su posicin en la Jerarqua de Chomsky. La sintaxis de la mayora de los len
guajes de programacin puede ser especificada utilizando una gramtica Tipo-2, es de
cir, son gramticas libres de contexto. Algunos lenguajes, incluyendo a Perl y a L
isp, contienen construcciones que permiten la ejecucin durante la fase de anlisis.
Los lenguajes que permiten construcciones que permiten al programador alterar e
l comportamiento de un analizador hacen del anlisis de la sintaxis un problema si
n decisin nica, y generalmente oscurecen la separacin entre anlisis y ejecucin. En co
ntraste con el sistema de macros de Lisp y los bloques BEGIN de Perl, que pueden
tener clculos generales, las macros de C son meros reemplazos de cadenas, y no r
equieren ejecucin de cdigo.
Semntica esttica[editar]
La semntica esttica define las restricciones sobre la estructura de los textos vlid
os que resulta imposible o muy difcil expresar mediante formalismos sintcticos estn
dar. Para los lenguajes compilados, la semntica esttica bsicamente incluye las regl
as semnticas que se pueden verificar en el momento de compilar. Por ejemplo el ch
equeo de que cada identificador sea declarado antes de ser usado (en lenguajes q
ue requieren tales declaraciones) o que las etiquetas en cada brazo de una estru
ctura case sean distintas. Muchas restricciones importantes de este tipo, como l
a validacin de que los identificadores sean usados en los contextos apropiados (p
or ejemplo no sumar un entero al nombre de una funcin), o que las llamadas a subr
utinas tengan el nmero y tipo de parmetros adecuado, puede ser implementadas defin
indolas como reglas en una lgica conocida como sistema de tipos. Otras formas de a
nlisis estticos, como los anlisis de flujo de datos, tambin pueden ser parte de la s
emntica esttica. Otros lenguajes de programacin como Java y C# tienen un anlisis def
inido de asignaciones, una forma de anlisis de flujo de datos, como parte de su s
emntica esttica.
Sistema de tipos[editar]
Artculo principal: Sistema de tipos
Un sistema de tipos define la manera en la cual un lenguaje de programacin clasif
ica los valores y expresiones en tipos, cmo pueden ser manipulados dichos tipos y
cmo interactan. El objetivo de un sistema de tipos es verificar y normalmente pon
er en vigor un cierto nivel de exactitud en programas escritos en el lenguaje en
cuestin, detectando ciertas operaciones invlidas. Cualquier sistema de tipos deci
dible tiene sus ventajas y desventajas: mientras por un lado rechaza muchos prog
ramas incorrectos, tambin prohbe algunos programas correctos aunque poco comunes.
Para poder minimizar esta desventaja, algunos lenguajes incluyen lagunas de tipo
s, conversiones explcitas no checadas que pueden ser usadas por el programador pa
ra permitir explcitamente una operacin normalmente no permitida entre diferentes t
ipos. En la mayora de los lenguajes con tipos, el sistema de tipos es usado solam
ente para checar los tipos de los programas, pero varios lenguajes, generalmente
funcionales, llevan a cabo lo que se conoce como inferencia de tipos, que le qu
ita al programador la tarea de especificar los tipos. Al diseo y estudio formal d
e los sistemas de tipos se le conoce como teora de tipos.
Lenguajes tipados versus lenguajes no tipados[editar]
El texto que sigue es una traduccin defectuosa o incompleta.
Si quieres colaborar con Wikipedia, busca el artculo original y mejora o finaliza
esta traduccin.
Puedes dar aviso al autor principal del artculo pegando el siguiente cdigo en su pg
ina de discusin: {{subst:Aviso mal traducido|Lenguaje de programacin}} ~~~~
Se dice que un lenguaje tiene tipos si la especificacin de cada operacin define ti
pos de datos para los cuales la operacin es aplicable, con la implicacin de que no
es aplicable a otros tipos. Por ejemplo, "este texto entre comillas" es una cad
ena. En la mayora de los lenguajes de programacin, dividir un nmero por una cadena
no tiene ningn significado. Por tanto, la mayora de los lenguajes de programacin mo
dernos rechazaran cualquier intento de ejecutar dicha operacin por parte de algn p
rograma. En algunos lenguajes, estas operaciones sin significado son detectadas
cuando el programa es compilado (validacin de tipos "esttica") y son rechazadas po
r el compilador, mientras en otros son detectadas cuando el programa es ejecutad
o (validacin de tipos "dinmica") y se genera una excepcin en tiempo de ejecucin.
Un caso especial de lenguajes de tipo son los lenguajes de tipo sencillo. Estos
son con frecuencia lenguajes de marcado o de scripts, como REXX o SGML, y solame
nte cuentan con un tipo de datos; comnmente cadenas de caracteres que luego son u
sadas tanto para datos numricos como simblicos.
En contraste, un lenguaje sin tipos, como la mayora de los lenguajes ensambladore
s, permiten que cualquier operacin se aplique a cualquier dato, que por lo genera
l se consideran secuencias de bits de varias longitudes. Lenguajes de alto nivel
sin datos incluyen BCPL y algunas variedades de Forth.
En la prctica, aunque pocos lenguajes son considerados con tipo desde el punto de
vista de la teora de tipos (es decir, que verifican o rechazan todas las operaci
ones), la mayora de los lenguajes modernos ofrecen algn grado de manejo de tipos.
Si bien muchos lenguajes de produccin proveen medios para brincarse o subvertir e
l sistema de tipos.
Tipos estticos versus tipos dinmicos[editar]
El texto que sigue es una traduccin defectuosa o incompleta.
Si quieres colaborar con Wikipedia, busca el artculo original y mejora o finaliza
esta traduccin.
Puedes dar aviso al autor principal del artculo pegando el siguiente cdigo en su pg
ina de discusin: {{subst:Aviso mal traducido|Lenguaje de programacin}} ~~~~
En lenguajes con tipos estticos se determina el tipo de todas las expresiones ant
es de la ejecucin del programa (tpicamente al compilar). Por ejemplo, 1 y (2+2) so
n expresiones enteras; no pueden ser pasadas a una funcin que espera una cadena,
ni pueden guardarse en una variable que est definida como fecha.
Los lenguajes con tipos estticos pueden manejar tipos explcitos o tipos inferidos.
En el primer caso, el programador debe escribir los tipos en determinadas posic
iones textuales. En el segundo caso, el compilador infiere los tipos de las expr
esiones y las declaraciones de acuerdo al contexto. La mayora de los lenguajes po
pulares con tipos estticos, tales como C++, C# y Java, manejan tipos explcitos. In
ferencia total de los tipos suele asociarse con lenguajes menos populares, tales
como Haskell y ML. Sin embargo, muchos lenguajes de tipos explcitos permiten inf
erencias parciales de tipo; tanto Java y C#, por ejemplo, infieren tipos en un nm
ero limitado de casos.
Los lenguajes con tipos dinmicos determinan la validez de los tipos involucrados
en las operaciones durante la ejecucin del programa. En otras palabras, los tipos
estn asociados con valores en ejecucin en lugar de expresiones textuales. Como en
el caso de lenguajes con tipos inferidos, los lenguajes con tipos dinmicos no re
quieren que el programador escriba los tipos de las expresiones. Entre otras cos
as, esto permite que una misma variable se pueda asociar con valores de tipos di
stintos en diferentes momentos de la ejecucin de un programa. Sin embargo, los er
rores de tipo no pueden ser detectados automticamente hasta que se ejecuta el cdig
o, dificultando la depuracin de los programas, no obstante, en lenguajes con tipo
s dinmicos se suele dejar de lado la depuracin en favor de tcnicas de desarrollo co
mo por ejemplo BDD y TDD. Ruby, Lisp, JavaScript y Python son lenguajes con tipo
s dinmicos.
Tipos dbiles y tipos fuertes[editar]
Los lenguajes dbilmente tipados permiten que un valor de un tipo pueda ser tratad
o como de otro tipo, por ejemplo una cadena puede ser operada como un nmero. Esto
puede ser til a veces, pero tambin puede permitir ciertos tipos de fallas que no
pueden ser detectadas durante la compilacin o a veces ni siquiera durante la ejec
ucin.
Los lenguajes fuertemente tipados evitan que pase lo anterior. Cualquier intento
de llevar a cabo una operacin sobre el tipo equivocado dispara un error. A los l
enguajes con tipos fuertes se les suele llamar de tipos seguros.
Lenguajes con tipos dbiles como Perl y JavaScript permiten un gran nmero de conver
siones de tipo implcitas. Por ejemplo en JavaScript la expresin 2 * x convierte im
plcitamente x a un nmero, y esta conversin es exitosa inclusive cuando x es null, u
ndefined, un Array o una cadena de letras. Estas conversiones implcitas son tiles
con frecuencia, pero tambin pueden ocultar errores de programacin.
Las caractersticas de estticos y fuertes son ahora generalmente consideradas conce
ptos ortogonales, pero su trato en diferentes textos varia. Algunos utilizan el
trmino de tipos fuertes para referirse a tipos fuertemente estticos o, para aument
ar la confusin, simplemente como equivalencia de tipos estticos. De tal manera que
C ha sido llamado tanto lenguaje de tipos fuertes como lenguaje de tipos esttico
s dbiles.
Implementacin[editar]
Cdigo fuente de un programa escrito en el lenguaje de programacin Java.
La implementacin de un lenguaje es la que provee una manera de que se ejecute un
programa para una determinada combinacin de software y hardware. Existen bsicament
e dos maneras de implementar un lenguaje: compilacin e interpretacin.
Compilacin: es el proceso que traduce un programa escrito en un lenguaje de progr
amacin a otro lenguaje de programacin, generando un programa equivalente que la mqu
ina ser capaz interpretar. Los programas traductores que pueden realizar esta ope
racin se llaman compiladores. stos, como los programas ensambladores avanzados, pu
eden generar muchas lneas de cdigo de mquina por cada proposicin del programa fuente
.
Interpretacin: es una asignacin de significados a las frmulas bien formadas de un l
enguaje formal. Como los lenguajes formales pueden definirse en trminos puramente
sintcticos, sus frmulas bien formadas pueden no ser ms que cadenas de smbolos sin n
ingn significado. Una interpretacin otorga significado a esas frmulas.
Se puede tambin utilizar una alternativa para traducir lenguajes de alto nivel. E
n lugar de traducir el programa fuente y grabar en forma permanente el cdigo obje
to que se produce durante la compilacin para utilizarlo en una ejecucin futura, el
programador slo carga el programa fuente en la computadora junto con los datos q
ue se van a procesar. A continuacin, un programa intrprete, almacenado en el siste
ma operativo del disco, o incluido de manera permanente dentro de la mquina, conv
ierte cada proposicin del programa fuente en lenguaje de mquina conforme vaya sien
do necesario durante el procesamiento de los datos. El cdigo objeto no se graba p
ara utilizarlo posteriormente.
La siguiente vez que se utilice una instruccin, se la deber interpretar otra vez y
traducir a lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo de
los pasos de un ciclo o bucle, cada instruccin del bucle tendr que volver a ser in
terpretada en cada ejecucin repetida del ciclo, lo cual hace que el programa sea
ms lento en tiempo de ejecucin (porque se va revisando el cdigo en tiempo de ejecuc
in) pero ms rpido en tiempo de diseo (porque no se tiene que estar compilando a cada
momento el cdigo completo). El intrprete elimina la necesidad de realizar una com
pilacin despus de cada modificacin del programa cuando se quiere agregar funciones
o corregir errores; pero es obvio que un programa objeto compilado con antelacin
deber ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada p
aso durante una ejecucin del cdigo.
La mayora de lenguajes de alto nivel permiten la programacin multipropsito, aunque
muchos de ellos fueron diseados para permitir programacin dedicada, como lo fue el
Pascal con las matemticas en su comienzo. Tambin se han implementado lenguajes ed
ucativos infantiles como Logo mediante una serie de simples instrucciones. En la
actualidad son muy populares algunos lenguajes especialmente indicados para apl
icaciones web, como Perl, PHP, Ruby, Python o JavaScript.
Tcnica[editar]
Libros sobre diversos lenguajes de programacin.
Para escribir programas que proporcionen los mejores resultados, cabe tener en c
uenta una serie de detalles.
Correccin. Un programa es correcto si hace lo que debe hacer tal y como se establ
eci 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 ante
s de desarrollarlo y, una vez acabado, compararlo con lo que realmente hace.
Claridad. Es muy importante que el programa sea lo ms claro y legible posible, pa
ra 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 es
tilo en la edicin; de esta forma se ve facilitado el trabajo del programador, tan
to en la fase de creacin como en las fases posteriores de correccin de errores, am
pliaciones, modificaciones, etc. Fases que pueden ser realizadas incluso por otr
o programador, con lo cual la claridad es an ms necesaria para que otros programad
ores puedan continuar el trabajo fcilmente. Algunos programadores llegan incluso
a utilizar Arte ASCII para delimitar secciones de cdigo. Otros, por diversin o par
a impedir un anlisis cmodo a otros programadores, recurren al uso de cdigo ofuscado
.
Eficiencia. Se trata de que el programa, adems de realizar aquello para lo que fu
e creado (es decir, que sea correcto), lo haga gestionando de la mejor forma pos
ible los recursos que utiliza. Normalmente, al hablar de eficiencia de un progra
ma, se suele hacer referencia al tiempo que tarda en realizar la tarea para la q
ue ha sido creado y a la cantidad de memoria que necesita, pero hay otros recurs
os que tambin pueden ser de consideracin al obtener la eficiencia de un programa,
dependiendo de su naturaleza (espacio en disco que utiliza, trfico de red que gen
era, etc.).
Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecuta
rse en una plataforma, ya sea hardware o software, diferente a aquella en la que
se elabor. La portabilidad es una caracterstica muy deseable para un programa, ya
que permite, por ejemplo, a un programa que se ha desarrollado para sistemas GN
U/Linux ejecutarse tambin en la familia de sistemas operativos Windows. Esto perm
ite que el programa pueda llegar a ms usuarios ms fcilmente.
Paradigmas[editar]
Los programas se pueden clasificar por el paradigma del lenguaje que se use para
producirlos. Los principales paradigmas son: imperativos, declarativos y orient
acin a objetos.
Los programas que usan un lenguaje imperativo especifican un algoritmo, usan dec
laraciones, expresiones y sentencias.3 Una declaracin asocia un nombre de variabl
e con un tipo de dato, por ejemplo: var x: integer;. Una expresin contiene un val
or, por ejemplo: 2 + 2 contiene el valor 4. Finalmente, una sentencia debe asign
ar una expresin a una variable o usar el valor de una variable para alterar el fl
ujo de un programa, por ejemplo: x := 2 + 2; if x == 4 then haz_algo();. Una crti
ca comn en los lenguajes imperativos es el efecto de las sentencias de asignacin s
obre una clase de variables llamadas "no locales".4
Los programas que usan un lenguaje declarativo especifican las propiedades que l
a salida debe conocer y no especifica cualquier detalle de implementacin. Dos amp
lias categoras de lenguajes declarativos son los lenguajes funcionales y los leng
uajes lgicos. Los lenguajes funcionales no permiten asignaciones de variables no
locales, as, se hacen ms fcil, por ejemplo, programas como funciones matemticas.4 El
principio detrs de los lenguajes lgicos es definir el problema que se quiere reso
lver (el objetivo) y dejar los detalles de la solucin al sistema.5 El objetivo es
definido dando una lista de sub-objetivos. Cada sub-objetivo tambin se define da
ndo una lista de sus sub-objetivos, etc. Si al tratar de buscar una solucin, una
ruta de sub-objetivos falla, entonces tal sub-objetivo se descarta y sistemticame
nte se prueba otra ruta.
La forma en la cual se programa puede ser por medio de texto o de forma visual.
En la programacin visual los elementos son manipulados grficamente en vez de espec
ificarse por medio de texto.

Vous aimerez peut-être aussi