Lenguaje de programación
Un lenguaje de
programación es un lenguaje
formal que especifica una serie de instrucciones para que
una computadora
produzca diversas clases de datos. Los lenguajes de programación pueden usarse
para crear programas que
pongan en práctica algoritmos específicos
los cuales controlan el comportamiento físico y lógico de una computadora.
Está formado por 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 (de
ser necesario) 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.
·
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 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 estructurar el contenido de los documentos).
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. 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
de un programa de forma colaborativa.
Historia
Para que la computadora entienda
nuestras instrucciones debe usarse un lenguaje específico conocido como código máquina, que la máquina lee
fácilmente, pero que es excesivamente complicado para las personas. De hecho
solo consiste en cadenas extensas de números
0 y 1.
Para facilitar el trabajo, los
primeros operadores de computadoras decidieron crear un traductor para
reemplazar los 0 y 1 por palabras o abstracción de palabras y letras
provenientes del inglés;
este se conoce como lenguaje ensamblador. Por ejemplo, para
sumar se usa la letra A de la palabra inglesa add (sumar). El
lenguaje ensamblador sigue la misma estructura del 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
semejante a la de los lenguajes escritos por los humanos, denominados
también lenguajes de alto nivel.
El primer programador de
computadora que se haya conocido fue una mujer: Ada
Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella inició 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 estas 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 Backus sometió una propuesta a sus
superiores en IBM para
desarrollar una alternativa más práctica al lenguaje ensamblador para
programar la computadora 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.1
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 aún en la actualidad,
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 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á una
sola sentencia.
Implementación del lenguaje de programació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 el proceso que traduce un programa escrito en un
lenguaje de programación a otro lenguaje de programación, generando un programa
equivalente que la máquina será capaz interpretar. Los programas traductores
que pueden realizar esta operación se llaman compiladores.
Estos, como los programas ensambladores avanzados, pueden generar muchas líneas
de código de máquina por cada proposición del programa fuente.
·
Interpretación: es una asignación de significados a las fórmulas bien formadas de un lenguaje formal. Como los lenguajes formales
pueden definirse en términos puramente sintácticos,
sus fórmulas bien formadas pueden no ser más que cadenas de símbolos sin ningún
significado. Una interpretación otorga significado a esas fórmulas.
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
solo 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 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 alto
nivel permiten la programación multipropósito, aunque muchos de ellos fueron
diseñados para permitir programación dedicada, como lo fue el Pascal con las
matemáticas en su comienzo. También se han implementado lenguajes educativos
infantiles como Logo mediante una serie
de simples instrucciones. En la actualidad son muy populares algunos lenguajes
especialmente indicados para aplicaciones
web, como Perl, PHP, Ruby, Python o JavaScript.
Técnicas en el 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 aquella 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.
Tipos de lenguaje de programación
Un ordenador no entiende un lenguaje como el que utilizan
los humanos, sino que el lenguaje que entiende se llama “lenguaje
binario” o “código binario” o “código máquina” que
consiste en ceros y unos básicamente, es decir, una máquina
sólo utiliza los números 0 y 1 para codificar cualquier acción a
tomar.
Se clasifican en dos tipos:
Los Lenguajes de Programación de Bajo Nivel: son aquellos utilizados fundamentalmente para controlar el “hardware” del ordenador y dependen totalmente de la máquina y no se pueden utilizar en otras máquinas. Están orientados exclusivamente para la máquina Estos lenguajes son los que ordenan a la máquina operaciones fundamentales para que pueda funcionar. Utiliza básicamente ceros, unos y abreviaturas de letras. Estos lenguajes también se llaman de código máquina. Son los más complicados, pero solo los usan prácticamente los creadores de las máquinas. Con este tipo de lenguajes programan la asignación y liberación de memoria, el uso de punteros, el poder usar paso por valor y por referencia, la creación de tipos de datos, etc.
Los Lenguajes de Programación de Alto Nivel: Estos lenguajes son más parecidos al lenguaje natural humano y no dependen de la máquina y sirven fundamentalmente para crear programas informáticos que solucionan diferentes problemas. Son los más usados por los programadores y por todo del mundo que realiza programas informáticos.
La diferencia fundamental se puede explicar con el siguiente ejemplo:
En un lenguaje de alto nivel sólo tengo que poner sqt(x), que sería una función predeterminada, calcular el cuadrado de x.
Si fuera de bajo nivel, yo mismo tendría que crear la función sabiendo cómo funciona el cuadrado de un número:
cuadrado(x) = x * x
Como vemos para aprender a programar con un lenguaje de alto nivel debemos conocer el propio lenguaje que utiliza y todos sus comandos, en el ejemplo saber que sqt realiza el cuadrado de un número.
Top 10
de lenguaje de programación 2018









Esquema para el desarrollo de un sistema en
programación
Planificación
La importante tarea a la hora de
crear un producto de software es obtener los requisitos o el análisis de los requisitos. Los
clientes suelen tener una idea más bien abstracta del resultado final, pero no
sobre las funciones que debería cumplir el software.
Una vez que se hayan recopilado
los requisitos del cliente, se debe realizar un análisis del ámbito del
desarrollo. Este documento se conoce como especificación funcional.
Implementación,
pruebas y documentación
La implementación es
parte del proceso en el que los ingenieros de software programan el código para el proyecto de
trabajo que está en relación de las demanda del software, en esta etapa se
realizan las pruebas de caja blanca y caja negra.
Las pruebas de software son parte
esencial del proceso de desarrollo del software. Esta parte del proceso tiene
la función de detectar los errores
de software lo antes posible.
La documentación del
diseño interno del software con el objetivo de facilitar su mejora y su
mantenimiento se realiza a lo largo del proyecto. Esto puede incluir la
documentación de un API, tanto
interior como exterior. Prácticamente es como una receta de cocina
Despliegue
y mantenimiento
El despliegue comienza
cuando el código ha sido suficientemente probado, ha sido aprobado para
su liberación y
ha sido distribuido en el entorno de producción.
Entrenamiento y soporte para el software es
de suma importancia y algo que muchos desarrolladores de software descuidan.
Los usuarios, por naturaleza, se oponen al cambio porque conlleva una cierta
inseguridad, es por ello que es fundamental instruir de forma adecuada a los
futuros usuarios del software.
El mantenimiento o mejora de un
software con problemas recientemente desplegado, puede requerir más tiempo que
el desarrollo inicial del software. Es posible que haya que incorporar código
que no se ajusta al diseño original con el objetivo de solucionar un problema o
ampliar la funcionalidad para un cliente. Si los costes de mantenimiento son
muy elevados puede que sea oportuno rediseñar el sistema para poder contener
los costes de mantenimiento
Comentarios
Publicar un comentario