En los últimos años los lenguajes de programación han ido evolucionado en el desarrollo de sistemas o software, con el objetivo principal de facilitar al usuario las actividades que realiza día con día; por tal motivo, como programador, es importante conocer los conceptos básicos de programación, los tipos de lenguajes que se utilizan para el desarrollo y su funcionamiento para la interpretación de algoritmos, así como para dar solución a los problemas que pudieran presentarse.
Código de programación HTML
En términos generales, un lenguaje de programación es una herramienta que permite desarrollar software o programas para computadora. Los lenguajes de programación son empleados para diseñar e implementar programas encargados de definir y administrar el comportamiento de los dispositivos físicos y lógicos de una computadora. Lo anterior se logra mediante la creación e implementación de algoritmos de precisión que se utilizan como una forma de comunicación humana con la computadora.
A grandes rasgos, un lenguaje de programación se conforma de una serie de símbolos y reglas de sintaxis y semántica que definen la estructura principal del lenguaje y le dan un significado a sus elementos y expresiones.
Programación es el proceso de análisis, diseño, implementación, prueba y depuración de un algoritmo, a partir de un lenguaje que compila y genera un código fuente ejecutado en la computadora.
La función principal de los lenguajes de programación es escribir programas que permiten la comunicación usuario-máquina. Unos programas especiales (compiladores o intérpretes) convierten las instrucciones escritas en código fuente, en instrucciones escritas en lenguaje máquina (0 y 1).
Los intérpretes leen la instrucción línea por línea y obtienen el código máquina correspondiente.
En cuanto a los compiladores, traducen los símbolos de un lenguaje de programación a su equivalencia escrito en lenguaje máquina (proceso conocido como compilar). Por último, se obtiene un programa ejecutable.
Para entender mejor la forma como se estructura un lenguaje de programación, observa la siguiente imagen (en este apunte se utilizará el lenguaje C).
En particular, este lenguaje está caracterizado por ser de uso general, de sintaxis compacta y portable. Así, un lenguaje de programación es una herramienta informática que permite desarrollar programas para computadoras.
Características del lenguaje C
El lenguaje C es muy empleado porque puede ser utilizado para desarrollar programas de diversa naturaleza, como lenguajes de programación, manejadores de bases de datos o sistemas operativos. Su sintaxis es compacta, ya que emplea pocas funciones y palabras reservadas, comparado con otros lenguajes, como Java; además, es portable, toda vez que se utiliza en varios sistemas operativos y hardware.
Profesor de matemáticas e inventor en la universidad de Cambridge, Inglaterra, a mediados del siglo XIX, Charles Babbage fue el primero en concebir la idea de un lenguaje de programación, al predecir varias de las teorías en las que se basan las computadoras actuales.
Babbage desarrolló la idea de una máquina analítica programable que, por limitaciones tecnológicas de su época, no pudo ser construida. Junto con él, su colaboradora Ada Lovelace es considerada como la primera programadora de la historia, ya que escribió los primeros programas para la máquina concebida por Babbage en tarjetas perforadas, siguiendo una lógica de programación muy similar a la empleada en nuestros días. Estos programas nunca pudieron verse ejecutados debido a que la máquina no fue construida.
Las técnicas empleadas por Babbage y Ada fueron seguidas por los primeros programadores de computadoras, quienes se valieron de tarjetas perforadas para introducir sus programas en las computadoras.
En 1823, con el apoyo del gobierno británico, se aprobó el proyecto de construcción de una máquina de diferencias. Esta máquina era un dispositivo mecánico diseñado para realizar sumas de forma repetitiva. Babbage abandonó el proyecto para dedicarse a su máquina analítica, influenciado por la creación de un fabricante de telas francés, Joseph Marie Jacquard, que había desarrollado una máquina tejedora con la capacidad de reproducir patrones de tejidos, leyendo información codificada en tarjetas perforadas de papel rígido.
Desde entonces, Babbage se propuso construir una máquina que efectuara cálculos matemáticos de precisión, empleando 20 dígitos, y que pudiera ser programada mediante tarjetas perforadas. Aun cuando esta idea quedó sólo en el proyecto, fue una contribución muy importante para el diseño y funcionamiento de las computadoras actuales.
Revisa la siguiente información sobre las cinco unidades básicas con las que contaba la máquina de Babbage.
Mediante la cual se insertaban las tarjetas perforadas para introducir las instrucciones y datos en la máquina.
Almacenaba los datos y resultados intermedios.
Regulaba la secuencia de ejecución de las instrucciones.
Realizaba las operaciones matemáticas y lógicas.
Entregaba los resultados obtenidos por los procesos internos de la máquina.
Charles Babbage es considerado el padre de la informática. A pesar de que su máquina nunca pudo ser desarrollada, sus ideas y diseños sirvieron para la construcción y el progreso de las primeras computadoras modernas.
Cuando surgió la primera computadora, la ENIAC (Electronic Numerical Integrator And Calculator), su programación se basaba en componentes físicos, o sea, se programaba invirtiendo directamente el hardware de la máquina: se cambiaban de sitio los cables para conseguir así la programación. La entrada y salida de datos se realizaba mediante tarjetas perforadas.
Para crear un lenguaje de programación es necesaria una herramienta que lo traduzca. Se describe a continuación cómo ha ido evolucionando esta herramienta en los últimos 50 años.
Revisa la siguiente información sobre las fechas más representativas del diseño de lenguajes de programación.
Durante la década de 1960 comenzaron a aparecer nuevos lenguajes de programación cada vez más completos, concebidos a partir diversos enfoques, características y propósitos que se describen más adelante.
En la actualidad, hay más de dos mil lenguajes de programación y cada día son creados otros que emplean de forma más eficiente los recursos de las computadoras y hacen posible la tarea de programación para los usuarios.
Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos únicos niveles de tensión simbolizados con el cero (0) y el uno (1). Por eso, el lenguaje de máquina utiliza sólo dichos signos.
Un lenguaje de bajo nivel es trasladado fácilmente a lenguaje de máquina (la palabra bajo se refiere a la abstracción reducida entre el lenguaje y el hardware).
Y los lenguajes de programación de alto nivel se caracterizan por expresar los programas de una manera sencilla.
Revisa la siguiente información sobre la clasificación de los tipos de lenguajes.
Es el sistema de códigos interpretable directamente por un circuito microprogramable, como el microprocesador de una computadora. Este lenguaje se compone de un conjunto de instrucciones que determinan acciones que serán realizadas por la máquina. Y un programa de computadora consiste en una cadena de estas instrucciones de lenguaje de máquina (más los datos). Normalmente estas instrucciones son ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje máquina es específico de cada máquina o arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas.
Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de una computadora. Consecuentemente, su trasladado al lenguaje máquina es fácil. El término ensamblador (del inglés assembler) se refiere a un tipo de programa informático encargado de traducir un archivo fuente, escrito en un lenguaje ensamblador, a un archivo objeto que contiene código máquina ejecutable directamente por la máquina para la que se ha generado.
Los lenguajes de programación de alto nivel se caracterizan porque su estructura semántica es muy similar a la forma como escriben los humanos, lo que permite codificar los algoritmos de manera más natural, en lugar de codificarlos en el lenguaje binario de las máquinas, o a nivel de lenguaje ensamblador.
Ejemplos de lenguajes de alto nivel
Revisa la siguiente información para saber cuáles son y en qué consisten los lenguajes de alto nivel.
Fue diseñado a mediados de la década de 1980 por Bjarne Stroustrup. Abarca dos paradigmas de la programación: la estructurada y la orientada a objetos.
Fue desarrollado en la década de 1950 y es empleado activamente desde entonces. Acrónimo de formula translator, Fortran se utiliza principalmente en aplicaciones científicas y análisis numérico.
Lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de 1990. 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.
El lenguaje práctico para la extracción e informe es este lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del C, del lenguaje interpretado shell sh, AWK, sed, Lisp y, en grado inferior, de muchos otros lenguajes de programación.
Es empleado frecuentemente para la creación de contenido para sitios web con los cuales se pueden programar las páginas HTML y los códigos de fuente. PHP es un acrónimo que significa PHP hypertext pre-processor (inicialmente, PHP tools o personal home page tools), y se trata de un lenguaje interpretado que se aprovecha para la creación de aplicaciones para servidores o contenidos dinámicos de sitios web. Últimamente también sirve para crear otro tipo de programas que incluyen aplicaciones con interfaz gráfica, librerías Qt o GTK+.
Fue hecho por Guido van Rossum en 1990. En la actualidad se desarrolla como un proyecto de código abierto administrado por la Python Software Foundation. La última versión estable del lenguaje es la 2.5 (septiembre 2006).
Se puede decir que el problema principal de los lenguajes de alto nivel es su gran cantidad, además de las diferentes versiones o dialectos que se han desarrollado de algunos de ellos. Es difícil establecer una clasificación general de ellos, ya que en cualquiera que se realice habrá lenguajes que pertenezcan a más de uno de los grupos definidos.
Una clasificación muy extendida, atendiendo a la forma de trabajar de los programas y la filosofía en la que fueron concebidos, es la siguiente.
Revisa la siguiente información sobre las principales características de los siguientes lenguajes.
Emplean instrucciones como unidad de trabajo de los programas (Cobol, Pascal, C, Ada).
Los programas se construyen mediante descripciones de funciones o expresiones lógicas (Lisp, Prolog).
El diseño de los programas se basa más en los datos y su estructura. La unidad de proceso es el objeto y en él se incluyen los datos (variables) y operaciones que actúan sobre ellos (Smalltalk, C++).
Están diseñados para problemas específicos, principalmente de gestión; suelen ser generadores de aplicaciones.
Están desarrollándose nuevos lenguajes con el objetivo de aproximar el diseño y construcción de programas al lenguaje de las personas.
Otra clasificación se da con base en el desarrollo de los lenguajes desde la aparición de las computadoras, que sigue un cierto paralelismo con las generaciones establecidas en la evolución de las aquéllas.
Desarrollo de lenguaje
Evolución de los lenguajes de programación
Periodo | Influencias | Lenguajes |
1950-55 | Ordenadores primitivos |
Lenguaje ensamblador Lenguaje experimental de alto nivel |
1956-60 |
Ordenadores pequeños, caros y lentos Cintas magnéticas Compiladores e intérprete Optimización del código |
Fortran Algol 58 y 60 Cobol Lisp |
1961-65 |
Ordenadores grandes y caros Discos magnéticos Sistemas operativos Leng. De propósito general |
Fortran IV Cobol 61 Extendido Algol 60 Revisado Snobol APL(como sólo notación) |
1966-70 | Ordenadores de diferentes tamaños, velocidades y costes Sistemas de almacenamiento masivo de datos (caros) SO multitarea e interactivos Compli. Con optimización Leng. Estañador. Flexible y generales |
PL/I Fortran 66 (Estándar) Cobol 65 (Estándar) Algol 68 Snobol 4/Simula 67 Basic/APL/360 |
1971-75 |
Microordenadores Sistema de almacenamiento masivo de datos pequeños y baratos Progr. Estructurada/ingeniería del software Leng. Sencillos |
Pascal Cobol 74 PL/1 |
1976-80 |
Ord. baratos y potentes Sistemas distribuidos Prog. tiempo real/Prog. interactiva Abstracción de datos Prog. con fiabilidad y fácil mantenimiento |
Ada Fortran 77 Prolog C |
Los lenguajes de programación no han dejado de ser un conjunto de símbolos con una estructura gramatical, reglas semánticas y de sintaxis. En este orden, los lenguajes de alto nivel han facilitado su uso al implementar un lenguaje parecido al inglés, más reducido y formal, para establecer condiciones como if-then-else, indicar el tipo de dato que se va a manejar, como integer, real, double, o señalar eventos como print. De igual manera, hay signos y operadores que ayudan a estructurar operaciones matemáticas o lógicas, como suma, resta, multiplicación (+, -, *, /), etcétera.
Revisa la siguiente información sobre los componentes generales de un lenguaje de programación.
Las estructuras de datos son elementos de los lenguajes de programación que permiten manipular de forma más eficiente variables diversas: numéricas o tipo texto (cadenas de caracteres), y otras más complejas, como vectores, matrices y apuntadores, etcétera.
Son estructuras gramaticales predefinidas, muy parecidas al lenguaje humano, para generar secuencias de acciones que conformen un programa. Van desde los operadores aritméticos y lógicos básicos (sumas, restas, and, or) hasta instrucciones más especializadas para realizar diversas acciones dentro del programa, como guardado de archivos, volcado de pantalla de un texto, etcétera.
Se refiere a la secuencia de acciones de un programa. En ocasiones, dentro de la secuencia de instrucciones, hay puntos donde el programa debe tomar decisiones con base en el valor de una variable o el cumplimiento de una cierta condición. El tipo de instrucciones que posibilitan dichas acciones son, precisamente, las de control de flujo: condicionales (if-then-else), de bucle (for o while) o selección (case).
Funciones y objetos
Con la aparición de la programación estructurada también surge el empleo de funciones: una serie de instrucciones localizadas fuera del cuerpo principal del programa que realizan una tarea específica y regresan un resultado; pueden ser empleadas a lo largo de un programa una o varias veces. Los lenguajes de alto nivel, además de las funciones predefinidas por el propio lenguaje, permiten al programador diseñar y construir sus propias funciones.
Funcionamiento de un intérprete
De igual manera, con el paso del tiempo y la aparición de la programación orientada a objetos, surgen los objetos en el ámbito de la programación: una serie de entidades que combinan las estructuras de datos (atributos del objeto) e instrucciones aplicables a un objeto (métodos del objeto).
Así como las funciones, este tipo de lenguaje hace que el programador defina sus propios objetos para facilitar su tarea.
Un intérprete es un programa que analiza y ejecuta un código fuente, toma un código, lo traduce y a continuación lo ejecuta. Por lo tanto, el PHP, Perl y Python son lenguajes interpretados.
En cuanto a un compilador es un programa (o conjunto de programas) que traduce un programa escrito en código fuente, generando un programa en código objeto (proceso conocido como compilación). Después, al código objeto se le agregan las librerías a través de un programa (linker) y se obtiene el código ejecutable.
C, C++ y Visual Basic son lenguajes que utilizan un compilador.
Las notas harán referencia al lenguaje C y en éste se realizarán los ejemplos. El compilador de C lee el programa y lo convierte a código objeto. Una vez compilado, las líneas de código fuente dejan de tener sentido. Este código objeto puede ser ejecutado por la computadora.
El compilador de C incorpora una biblioteca estándar que proporciona las funciones necesarias para llevar a cabo las tareas más usuales.
Fases de la compilación
La compilación permite crear un programa de computadora que puede ser ejecutado por ésta y comprende tres pasos:
Fases de compilación
Algunos procesos de compilación podrían presentar variaciones, pero en general se presenta así:
Proceso de compilacion
Pero ¿en qué se distingue un compilador de un intérprete? Los compiladores realizan la traducción en tiempo de desarrollo; es decir, el programa aún no se está ejecutando. El compilador recibe todo el código fuente, lo analiza, optimiza y traduce a lenguaje máquina dejando un programa completo listo para su ejecución. Por ejemplo, el C o el Pascal son lenguajes compilados.
En cambio, los intérpretes realizan la traducción en tiempo de ejecución, o sea, a medida que el programa se va ejecutando, el intérprete traduce instrucciones al lenguaje máquina. Basic es un lenguaje interpretado.
Es importante mencionar que los lenguajes de programación son una herramienta principal para el desarrollo de software o sistema. Una de las funciones de la programación es llevar a cabo una comunicación entre la máquina y el usuario por medio de un software. Por ello es importante saber los tipos de lenguaje, características y, sobre todo, el tipo de plataforma que utilizan, ya que dependiendo del tipo de trabajo que se vaya a realizar, ya sea el usuario o empresa, se deberá elegir el lenguaje de programación más adecuado para agilizar y realizar tales actividades.
Actividad. Lenguajes de programación
La importancia del lenguaje de programación, así como su definición, características y funciones, proporciona un conocimiento útil para el desarrollo de tus actividades y solución de problemas, por lo que en la siguiente actividad deberás poner en práctica lo aprendido a lo largo del tema.
Ubica el concepto que corresponde a la definición que se presenta enseguida:
Autoevaluación. ¿Qué tanto aprendí sobre el lenguaje de programación?
Ahora es momento de verificar qué tanto has aprendido sobre el tema. Identifica cuáles de las siguientes aseveraciones son falsas o verdaderas. Al finalizar podrás conocer tu desempeño.