LENGUAJES
DE PROGRAMACIÓN
Herramientas
de Programación
Palabras clave. Usuario, programador, programación,
lenguajes de programación, lenguaje maquina, lenguaje ensamblador, comando.
¿Qué es
usuario?
La interfaz de usuario es el medio con que el usuario puede
comunicarse con una máquina, un equipo o una computadora, y comprende todos los
puntos de contacto entre el usuario y el equipo, normalmente suelen ser fáciles
de entender y fáciles de accionar.
Las interfaces básicas de usuario son aquellas que incluyen
cosas como menús, ventanas, teclado, ratón, los beeps y algunos otros sonidos
que la computadora hace, en general, todos aquellos canales por los cuales se
permite la comunicación entre el ser humano y la computadora. La mejor
interacción humano-máquina a través de una adecuada interfaz (Interfaz de Usuario),
que le brinde tanto comodidad, como eficiencia.
¿Quién es
el programador?
Un programador para el mundo de sistemas, es la persona que
realiza desarrollo de software, o ejerce cualquier tipo de programación (valga
la redundancia), es decir escribe sentencias que se ejecutan en un ordenador en
un determinado lenguaje para cumplir tareas o actividades y obtener un
resultado o producto.
¿Que son
los lenguajes de programación?
Las máquinas en general, y las computadoras en particular,
necesitan de un lenguaje propio para poder interpretar las instrucciones que se
les dan y para que nosotros podamos controlar su comportamiento. Ese lenguaje
que permite esta relación con las computadoras es el lenguaje de programación
(Basic, Java, JavaScript, ActionScript, Logo, etc.).
Asimismo, el lenguaje de programación está conformado por
una serie de reglas sintácticas y semánticas que serán utilizadas por el
programador y a través de las cuales creará un programa o subprograma. Por otra
parte, las instrucciones que forman dicho programa son conocidas como código
fuente.
Los lenguajes de programación pueden clasificarse de
diversas manera, como por ejemplo según su nivel de abstracción: lenguaje de
bajo nivel (es el código fuente de la máquina, es decir el que la máquina puede
interpretar); lenguaje de nivel medio (un término entre el lenguaje de la
máquina y el lenguaje natural) y lenguaje de alto nivel (los que están
compuestos por elementos del lenguaje natural, es decir el humano,
especialmente el inglés).
¿Cuáles son
las principales características de los lenguajes de alto, medio y bajo nivel?
Lenguaje de bajo nivel.
Es el tipo de lenguaje que cualquier computadora es capaz de
entender.
Se dice que los programas escritos en forma de ceros y unos
están en lenguaje de máquina, porque esa es la versión del programa que la
computadora realmente lee y sigue.
Lenguaje de medio nivel
Es un lenguaje de programación informática como el lenguaje
C, que se encuentran entre los lenguajes de alto nivel y los lenguajes de bajo
nivel.
Suelen ser clasificados muchas veces de alto nivel, pero
permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones
como la creación de sistemas operativos, ya que permiten un manejo abstracto
(independiente de la máquina, a diferencia del ensamblador), pero sin perder
mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.
Una característica distintiva, por ejemplo, que convierte a
C en un lenguaje de medio nivel y al Pascal en un lenguaje de alto nivel es que
en el primero es posible manejar las letras como si fueran números (en Pascal
no), y por el contrario en Pascal es posible concatenar las cadenas de
caracteres con el operador suma y copiarlas con la asignación (en C es el
usuario el responsable de llamar a las funciones correspondientes).
Una de las características más peculiares del lenguaje de
programación C; es el uso de “apuntadores”, los cuales son muy útiles en la
implementación de algoritmos como Listas ligadas, Tablas Hash y algoritmos de
búsqueda y ordenamiento que para otros lenguajes de programación (como Java por
ejemplo) les suele ser un poco más complicado implementar.
Lenguajes de alto nivel.
Son lenguajes de programación que se asemejan a las lenguas
humanas usando palabras y frases fáciles de entender. · En un lenguaje de bajo
nivel cada instrucción corresponde a una acción ejecutable por el ordenador,
mientras que en los lenguajes de alto nivel una instrucción suele corresponder
a varias acciones.
· Características de los lenguajes de alto nivel: Son
independientes de la arquitectura física de la computadora. Permiten usar los
mismos programas en computadoras de diferentes arquitecturas (portabilidad), y
no es necesario conocer el hardware específico de la máquina. La ejecución de
un programa en lenguaje de alto nivel, requiere de una traducción del mismo al
lenguaje de la computadora donde va a ser ejecutado. Una sentencia en un
lenguaje de alto nivel da lugar, al ser traducida, a varias instrucciones en
lenguaje entendible por el computador. Utilizan notaciones cercanas a las
usadas por las personas en un determinado ámbito. Se suelen incluir
instrucciones potentes de uso frecuente que son ofrecidas por el lenguaje de
programación.
¿Cómo es el
funcionamiento de un lenguaje interpretado (interprete)?
(Interpreted language). En programación, un lenguaje
interpretado es un lenguaje de programación que necesita de un intérprete para
implementar o ejecutar el código escrito en éste. Contrasta con los lenguajes
compilados.
En teoría, cualquier lenguaje de programación puede ser
tanto interpretado como compilado; la distinción entre lenguajes interpretados
y lenguajes compilados es puramente una cuestión de práctica y conveniencia, y
no por propiedades inherentes al lenguaje. Dehecho, muchos lenguajes son
implementados tanto por compiladores como por intérpretes (por ejemplo, Lisp,
Basic, Python...).
También existen lenguajes que se "pre- compilan"
en un lenguaje intermedio (llamado bytecode) que luego debe ser interpretado o
compilado para ejecutarse.
Ventajas de los lenguajes interpretados
* Flexibilidad frente a los lenguajes compilados.
* Más facilidad para
lograr independencia de plataformas (portabilidad).
* Tipado dinámico.
* Fácil debugging.
* Menor tamaño de programa.
La principal, desventaja es que los programas interpretados
suelen ejecutarse más lentamente.
Algunos lenguajes usualmente interpretados
* ASP
* BASIC
* ECMAScript
(ActionScript, DMDScript, E4X, Java Script, JScript).
* Matemática: IDL,
Maple, Mathematica, MATLAB
* Euphoria (interpretado o compilado).
* Inform
* Lisp, Scheme.
* Logo
* MUMPS (tradicionalmente interpretado, actualmente
compilado).
* Ruby
* Smalltalk.
* Lenguajes de scripts.
* Tcl.
Lenguajes que suelen ser primero traducidos a un lenguaje
intermedio, para luego ser interpretados o compilados:
* Java
* Lua
* Perl
* PHP
* Pike
* Python
* Visual FoxPro
¿Cómo es el
funcionamiento de un lenguaje compilado (compilador)?
(compiled language). Un lenguaje compilado es un lenguaje de
programación que suele necesitar de un compilador para ejecutar programas
escritos en éste. Contrasta con los lenguajes interpretados.
En teoría, cualquier lenguaje de programación puede ser
tanto interpretado como compilado; la distinción entre lenguajes interpretados
y lenguajes compilados es puramente una cuestión de práctica y conveniencia, y
no por propiedades inherentes al lenguaje. De hecho, muchos lenguajes son
implementados tanto por compiladores como por intérpretes (por ejemplo, Lisp,
Basic, Python...).
En otros casos, el código fuente de un programa es traducido
a una forma intermedia (a menudo llamada bytecode), la cual luego debe ser
interpretada o compilada para ejecutarse.
Ventajas de los lenguajes compilados
En general, un programa compilado suele ejecutarse mucho más
rápido que el mismo interpretado. Algunos
lenguajes generalmente compilados :
* Ada *
Eiffel
* ALGOL *
Fortran
* BASIC * Java
* C *
JOVIAL
* CLEO * Lush
* COBOL * ML
* Common Lisp *
Pascal
* Delphi *
Visual Basic
* Visual Foxpro *
Visual Prolog
BASIC
Es un lenguaje de programación que originalmente fue
desarrollado como una herramienta de enseñanza; se diseminó entre las
microcomputadoras hogareñas a partir de la década de 1980. Actualmente continúa
siendo muy popular, en muchos dialectos bastante distintos del original.
BASIC es el acrónimo de Beginners All- purpose Symbolic
Instruction Code;[1] por correspondencia con Thomas E. Kurtz. (traducido al
español: "código de instrucciones simbólicas de propósito general para
principiantes") y está ligado al nombre de un trabajo sin publicar del
coinventor del lenguaje, Thomas Kurtz[2] (el nombre no está relacionado con la
serie de C. K. Ogden, Basic English).
El lenguaje BASIC fue inventado en 1964 por John George
Kemeny (1926-1993) y Thomas Eugene Kurtz (1928-) en el Dartmouth College. En
años subsiguientes, mientras que otros dialectos de BASIC aparecían, el BASIC
original de Kemeny y Kurtz fue conocido como BASIC Dartmouth.
Los ocho principios que rigieron el diseño de BASIC fueron:
1. Ser fácil de usar para los principiantes.
2. Ser un lenguaje de propósito general (no orientado).
3. Permitir a los expertos añadir características avanzadas,
conservando simple el lenguaje para los principiantes.
4. Ser interactivo.
5. Proveer mensajes de error, claros y amigables.
6. Responder rápido
en los programas pequeños.
7. No requerir un conocimiento del hardware de la
computadora.
8. Proteger al usuario del sistema operativo.
Pascal
Es un lenguaje de programación desarrollado por el profesor
suizo Niklaus Wirth a finales de los años 60. Su objetivo era crear un lenguaje
que facilitara el aprendizaje de la programación a sus alumnos. Sin embargo con
el tiempo su utilización excedió el ámbito académico para convertirse en una
herramienta para la creación de aplicaciones de todo tipo.
Pascal se caracteriza por ser un lenguaje de programación
estructurado fuertemente tipificado. Esto implica que:
1. El código está dividido en porciones fácilmente legibles
llamadas funciones o procedimientos. De esta forma Pascal facilita la
utilización de la programación estructurada en oposición al antiguo estilo de
programación monolítica.
2. El tipo de dato de
todas las variables debe ser declarado previamente para que su uso quede
habilitado.
El nombre de Pascal fue escogido en honor al matemático Blaise
Pascal.
El lenguaje de programación C
Es un lenguaje conocido como de alto nivel.
Una de las características del lenguaje de programación en
C, es que es un lenguaje estructurado, lo que permite generar código claro y
sencillo, ya que está basado en la modularidad.
El lenguaje de programación en C, está estructurado en tres
partes fundamentales, las cuales son, una librería estándar, un programa
compilador y un preprocesador.
La librería estándar en el lenguaje de programación C, no es
más que librerías realizadas en código objeto y puede haber sido realizada en
otro lenguaje diferente que el C. Estas librerías se deben colocar el un
programa de lenguaje programación en C , en la instrucción conocida como
INCLUDE.
El programa compilador en el lenguaje de programación en C,
es el que tiene como función traducir las instrucciones del programa fuente en
C a el lenguaje conocido por las computadoras u ordenadores, el llamado
lenguaje maquina. El programa compilador, depura y detecta los posibles errores
en el lenguaje fuente, y es capaz de notificar el error ocurrido al
programador, mediante un mensaje de texto.
En el lenguaje de programación en C, el preprocesador es un
componente perteneciente propiamente al lenguaje C, el cual transforma el
programa fuente traduciendo cada instrucción del programa fuente, de la
siguiente forma: Elimina los comentarios colocados por el programador, incluye
en el programa fuente el contenido de los archivos que se encuentran declarados
en el INCLUDE, a estos archivos se le suele llamar cabeceras, y por último ,
sustituye los valores de las constantes declaradas en él define.
Por su flexibilidad y ser un lenguaje de alto nivel, es
empleado por muchos programadores.
C++
Es un lenguaje de programación diseñado a mediados de los
años 80 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 multiparadigma.
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 (enlace externo).
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.
C++ permite trabajar tanto a alto como a bajo nivel siendo
muy óptimo.
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.
COBOL
(COmmon Business
Oriented Language, lenguaje común orientado a los negocios) fue desarrollado en
1959 por un comité de CODASYL (Conference on Data Systems Languages). A pesar
del tiempo transcurrido, sigue siendo bastante usado en el ámbito de la gestión
empresarial. Como es habitual en los lenguajes que perduran después de mucho
tiempo ha sufrido distintas modificaciones de acuerdo con las nuevas
tendencias.
COBOL es considerado un lenguaje de fácil aprendizaje. Los
programas deben contener cuatro secciones: identificación, entorno, datos y procedimientos.
Una herencia de sus lejanos orígenes es el uso de una convención basada en las
columnas (por ejemplo, las sentencias deben estar entre las columnas 12 y 72),
aunque versiones modernas pueden usarse de otra forma.
Java
Es un lenguaje orientado a objeto, de una plataforma
independiente.
El lenguaje para la programación en Java, fue desarrollado
por la compañía Sun Microsystems, con la idea original de usarlo para la
creación de páginas WEB.
Esta programación Java tiene muchas similitudes con el
lenguaje C y C++, así que si se tiene conocimiento de este lenguaje, el
aprendizaje de la programación Java será de fácil comprensión por un
programador que haya realizado programas en estos lenguajes.
Con la programación en Java, se pueden realizar distintos
aplicativos, como son applets, que son aplicaciones especiales, que se ejecutan
dentro de un navegador al ser cargada una pagina HTML en un servidor WEB, Por
lo general los applets son programas pequeños y de propositos específicos.
Otra de las utilidades de la programación en Java es el
desarrollo de aplicaciones, que son programas que se ejecutan en forma
independiente, es decir con la programación Java, se pueden realizar
aplicaciones como un procesador de palabras, una hoja que sirva para cálculos,
una aplicación grafica, etc. en resumen cualquier tipo de aplicación se puede
realizar con ella. Java permite la modularidad por lo que se pueden hacer
rutinas individuales que sean usadas por más de una aplicación, por ejemplo
tenemos una rutina de impresión que puede servir para el procesador de
palabras, como para la hoja de cálculo.
La programación en Java, permite el desarrollo de
aplicaciones bajo el esquema de Cliente Servidor, como de aplicaciones
distribuidas, lo que lo hace capaz de conectar dos o más computadoras u
ordenadores, ejecutando tareas simultáneamente, y de esta forma logra
distribuir el trabajo a realizar.
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
(desactivadles 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 fue diseñado bajo encargo del Departamento de
Defensa de los Estados Unidos (DoD). Durante los años 1970, este departamento
tenía proyectos en una infinidad de lenguajes y estaba gastando mucho dinero en
software. Para solucionarlo se buscó un lenguaje único que cumpliese unas
ciertas normas recogidas en el documento Steelman. Después de un estudio de los
lenguajes existentes en la época se decidió que ninguno las cumplía totalmente,
por lo que se hizo un concurso público al que se presentaron cuatro equipos,
cuyas propuestas se nombraron con un color: Rojo (Intermetrics), Verde (CII
Honeywell Bull), Azul (SofTEch) y Amarillo (SRI International). Finalmente en
mayo de 1979 se seleccionó la propuesta Verde diseñada por Jean Ichbiah de CII
Honeywell Bull, y se le dio el nombre de Ada. Esta propuesta era un sucesor de
un lenguaje anterior de este equipo llamado LIS y desarrollado durante los años
1970.
Lisp
Fue diseñado a finales de los años 50 por el pionero de la
Inteligencia Artificial John McCarthy. Aunque (a diferencia de otros lenguajes
posteriores, como Prolog) no contiene mecanismos de inferencia intrínsecos,
éstos son fáciles de implementar. La estructura de datos esencial en Lisp es la
lista, una secuencia ordenada de elementos que pueden ser átomos (funciones,
nombres o números) u otras listas. Las listas son esenciales en IA debido a su
flexibilidad. Y desde luego son esenciales en Lisp, cuyo nombre deriva,
precisamente de List processing.
El Lisp original sólo tenía unas cuantas funciones de
manipulación de listas con las cuales se debía ir construyendo otras funciones,
cada vez de mayor complejidad. Las versiones actuales contienen muchas más
funciones que facilitan la programación. Aunque existen muchas variantes, la
llamada Commom Lisp sirve normalmente de referencia.
Prolog
Parte de los trabajos, a principios de los 70, de Robert A.
Kowalski, de la Universidad de Edimburgo, y Alain Colmerauer, de la Universidad
de Aix-Marseille. Forma parte de un conjunto de lenguajes llamados lógicos, ya
que implementan una lógica formal. Se dice que Prolog es adecuado para buscar
soluciones de problemas que no sabemos resolver, mientras que la mayoría de los
demás lenguajes (llamados imperativos) son más útiles cuando conocemos de
antemano la solución (que hay que «explicar» con detalle según la gramática del
lenguaje).
Prolog se extendió rápidamente por Europa y Estados Unidos,
pero quizá lo que le dio más fama fue su elección en 1982 por parte de un
programa japonés de investigación sobre ordenadores de quinta generación.
Normalmente se considera un lenguaje ligado a la investigación sobre
Inteligencia Artificial, aunque hoy en día se utiliza también en campos
diversos, incluyendo finanzas, defensa o ingeniería.
Forth
Fue creado por Charles Moore en los años 60 desarrollando
herramientas especializadas para varias aplicaciones. Fue formalizado como
lenguaje para la automatización de telescopios cuando Moore trabajaba en el
National Radio Astronomy Observatory, en 1970. Forth suele considerarse un
lenguaje para aplicaciones científicas, sin alejarse mucho del campo en que se
fraguó. Se considera especialmente adecuado para sistemas incrustados (en
inglés, embedded).
Forth cuenta entre sus ventajas el ser pequeño (ocupa poca
memoria), rápido y extensible. Y entre sus puntos débiles, que tiene una
sintaxis extraña que lo hace difícil de aprender y posiblemente de usar (aunque
sobre esto hay, como es natural, distintas opiniones). Una característica
importante es que es un lenguaje basado en el uso de una pila (en inglés,
stack). Por ejemplo, la sentencia equivalente a PRINT 5-3 (de BASIC) es 5 3 -
., donde 5 pone el número 5 en la cima de la pila, 3 pone el número 3 arriba
del 5, - resta el elemento de la cima del que está debajo, elimina ambos
operandos y pone en la pila el resultado, y . (Punto) muestra el número de la
cima y lo elimina.
Como ejemplo de las posibilidades de Forth, lo siguiente es
la definición de una función para calcular el máximo común divisor de dos
números, basada en el algoritmo de Euclides:
: GCD ( n n--n) BEGIN DUP WHILE TUCK MOD REPEAT DROP ;
Después de introducir esta definición, podemos interactuar
así con el intérprete:
12345 32325 GCD . 15 ok
FORTRAN
(de FORmula TRANslation) fue creado por John Backus a
mediados de la década de los 50 para la IBM, convirtiéndose en el primer
lenguaje de programación de alto nivel. Fue pensado para aplicaciones
matemáticas y científicas y sigue siendo muy usado en ese terreno.
Los dos estándares principales son FORTRAN 77 y Fortran 90
(a partir de esta versión se empezó a usar el término con minúsculas). El
estándar 90 incorporó novedades importantes, como notación de vectores,
localización dinámica de memoria, tipos derivados y sobrecarga de operadores,
la mayoría de las modernas estructuras de control, etc.
Definición de Lenguaje máquina
(Machine code). El lenguaje máquina es el único lenguaje que
puede ejecutar una computadora. El lenguaje de máquina es un código que es
interpretado directamente por el microprocesador.
El lenguaje está compuesto por un conjunto de instrucciones
ejecutadas en secuencia (con eventuales cambios de flujo causados por el propio
programa o eventos externos) que representan acciones que la máquina podrá
tomar. Un lenguaje máquina es específico de cada arquitectura de computadora.
Todo código fuente en última instancia debe llevarse a un lenguaje máquina
mediante el proceso de compilación o interpretación para que la computadora
pueda ejecutarlo.
El lenguaje máquina es el único que entiende directamente la
computadora, utiliza el alfabeto binario que consta de los dos únicos símbolos
0 y 1, denominados bits (abreviatura inglesa de dígitos binarios).
Lenguaje ensamblador
El lenguaje ensamblador es un tipo de lenguaje de bajo nivel
utilizado para escribir programas informáticos, y constituye la representación
más directa del código máquina específico para cada arquitectura de
computadoras legible por un programador. Fue usado principalmente en los
inicios del desarrollo de software, cuando aun no se contaba con los potentes
lenguajes de alto nivel. Actualmente se lo utiliza particularmente en ambientes
académicos y de investigación, especialmente cuando se requiere la manipulación
directa de hardware, se pretenden altos rendimientos o un uso de recursos
controlado y reducido.
Muchos dispositivos
programables (como los microcontroladores) aun cuentan con el Assembly como la
única manera de ser manipulados.
Definición de Comando
Comando
(informática)
Un comando (calco del inglés command, «orden, instrucción»)
o mandato es una instrucción u orden que el usuario proporciona a un sistema
informático, desde la línea de comandos (como una shell) o desde una llamada de
programación. Puede ser interno (contenido en el propio intérprete) o externo
(contenido en un archivo ejecutable).
Suele admitir parámetros (argumentos) de entrada, lo que
permite modificar el comportamiento predeterminado del comando. Suelen
indicarse tras una barra "/" (en sistemas operativos DOS) o un guión
simple "-" o doble "--" (en sistemas operativos Unix).
Un comando es una orden que se le da a un programa de
computadora que actúa como intérprete del mismo, para así realizar una tarea
específica. Generalmente un comando se le da a una interfaz de línea de
comandos, como un shell. Por ejemplo, el comando "dir" dentro de
MS-DOS lista los archivos y subdirectorios del directorio actual. En Unix, la
misma función la hace el comando "ls". Muchos comandos permiten
argumentos, es decir, información que se le pasa a un comando para que cambie
su comportamiento. Por ejemplo, "ls -l" ya no muestra una simple
lista de nombres de archivos y subdirectorios, sino que además de los nombres
indica fecha de creación, dueños, permisos, etc. En programación, un comando es
una instrucción (o sentencia) dentro del código fuente.
Conclusiones. En este trabajo se hablo sobre algunos
lenguajes de programación de alto, medio y bajo nivel, así como también sus
definiciones, ahora sabemos que el usuario es aquel que puede interactuar con
la máquina para poder realizar algún trabajo, y los lenguajes de programación
son los que usan las pc para poder realizar alguna actividad pero solo son
entendidos por las personas que se dedican a la programación.