Un lenguaje de programación es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo.
Por otro lado, el término «lenguaje natural» define un medio de comunicación compartido por un grupo de personas (por ejemplo: inglés o francés).
Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como protocolos de comunicación. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programación es muy estricto:
A CADA instrucción le corresponde UNA acción de procesador.
El lenguaje utilizado por el procesador se denomina lenguaje máquina. Se trata de datos tal como llegan al procesador, que consisten en una serie de 0 y 1 ( datos binarios).
El lenguaje máquina, por lo tanto, no es comprensible para los seres humanos, razón por la cual se han desarrollado lenguajes intermediarios comprensibles para el hombre. El código escrito en este tipo de lenguaje se transforma en código máquina para que el procesador pueda procesarlo.
El ensamblador fue el primer lenguaje de programación utilizado. Es muy similar al lenguaje máquina, pero los desarrolladores pueden comprenderlo. No obstante, este lenguaje se parece tanto al lenguaje máquina que depende estrictamente del tipo de procesador utilizado (cada tipo de procesador puede tener su propio lenguaje máquina). Así, un programa desarrollado para un equipo no puede ser portado a otro tipo de equipo. El término «portabilidad» describe la capacidad de usar un programa de software en diferentes tipos de equipos. Para poder utilizar un programa de software escrito en un código ensamblador en otro tipo de equipo, ¡a veces será necesario volver a escribir todo el programa!
Por lo tanto, un lenguaje de programación tiene varias ventajas:
- es mucho más fácil de comprender que un lenguaje máquina:
- permite mayor portabilidad, es decir que puede adaptarse fácilmente para ejecutarse en diferentes tipos de equipos.
Lenguajes de programación imperativos y funcionales
Los lenguajes de programación generalmente se dividen en dos grupos principales en base al procesamiento de sus comandos:
- lenguajes imperativos
- lenguajes funcionales
Lenguaje de programación imperativo
Un lenguaje imperativo programa mediante una serie de comandos, agrupados en bloques y compuestos de órdenes condicionales que permiten al programa retornar a un bloque de comandos si se cumple la condición. Estos fueron los primeros lenguajes de programación en uso y aún hoy muchos lenguajes modernos usan este principio.
No obstante, los lenguajes imperativos estructurados carecen de flexibilidad debido a la secuencialidad de las instrucciones.
Lenguaje de programación funcional
Un lenguaje de programación funcional(a menudo llamado lenguaje procedimental) es un lenguaje que crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de otras funciones. Cuando una función se invoca a sí misma, hablamos de recursividad.
Interpretación y compilación
Los lenguajes de programación pueden, en líneas generales, dividirse en dos categorías:
- lenguajes interpretados
- lenguajes compilados
Lenguaje interpretado
Un lenguaje de programación es, por definición, diferente al lenguaje máquina. Por lo tanto, debe traducirse para que el procesador pueda comprenderlo. Un programa escrito en un lenguaje interpretado requiere de un programa auxiliar (el intérprete), que traduce los comandos de los programas según sea necesario.
Lenguaje compilado
Un programa escrito en un lenguaje «compilado» se traduce a través de un programa anexo llamado compilador que, a su vez, crea un nuevo archivo independiente que no necesita ningún otro programa para ejecutarse a sí mismo. Este archivo se llama ejecutable.
Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa anexo para ser ejecutado una vez que ha sido compilado. Además, como sólo es necesaria una traducción, la ejecución se vuelve más rápida.
Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que cada modificación del archivo fuente (el archivo comprensible para los seres humanos: el archivo a compilar) requiere de la compilación del programa para aplicar los cambios.
Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del código fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje legible, hace que cualquier persona pueda conocer los secretos de fabricación de un programa y, de ese modo, copiar su código o incluso modificarlo. Por lo tanto, existe el riesgo de que los derechos de autor no sean respetados. Por otro lado, ciertas aplicaciones aseguradas necesitan confidencialidad de código para evitar las copias ilegales (transacciones bancarias, pagos en línea, comunicaciones seguras, etc.).
Lenguajes intermediarios
Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python, etc.) dado que el programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilación intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo tanto diferente al archivo fuente ) y no ejecutable (requeriría un interprete). Los applets Java, pequeños programas que a menudo se cargan en páginas web, son archivos compilados que sólo pueden ejecutarse dentro de un navegador web (son archivos con la extensión .class).
Listado de Lenguajes de Programación
A continuación, encontrará una lista bastante completa de los lenguajes de programación existentes:
Lenguajes como COBOL y FORTRAN eran (y en algunos casos siguen siendo) utilizadas por las grandes aplicaciones de computadoras de tipo MainFrame, dando soporte a bancos y empresas de esa envergadura.
Para aplicaciones potentes y eficientes, generalmente no hay nada como el lenguaje C o C++, dependiendo de si es un programa de consola u orientado a objetos (cuenta con interfaz gráfica, interactividad, etc.). Sin embargo, para aplicaciones que no son de misión crítica, el Visual Basic suele ser una elección muy común dada la simplicidad de su sintaxis y el poder de su modelo de programación, así como de todos los componentes que pueden incorporarse al mismo con gran facilidad. Para aplicaciones multiplataforma, como se mencionó anteriormente, JAVA es la elección por defecto, debido a que bastan con codificar una vez el programa para que pueda corrrer en un sinnúmero de configuraciones de hardware diferentes, desde una computadora, una tablet, un teléfono o incluso un aparato de cocina. JAVA ha logrado convertirse en un estándar para este tipo de propósito debido a que, siendo gratuito y muy poderoso, modulable y escalable, fue rápidamente adoptado por los desarrolladores y se convirtió en una alternativa muy viable para los fabricantes de hardware que requerían de un software de garantías que pudiera cumplir con el objetivo de ser ligero y, dentro de todo, eficiente. Actualmente, algunos sistemas operativos de teléfonos celulares o tablets, como Symbian (que ya va de salida), Android o el mismo BlackBerry, estan basados sobre JAVA.
Por otro lado, con el crecimiento que ha tenido internet, y la infinidad de aplicaciones que han hecho uso de esta red, surgieron varias alternativas a los lenguajes tradicionales, las cuales nacieron con la conectividad en sus raíces así como la intención de obtener resultados con el menor esfuerzo posible y de la forma más amigable. Si bien no son precisamente nuevos (algunos datan desde principio de los 90’s) sí son mucho más modernos que otros mencionados con anterioridad. Algunos de estos lenguajes son Perl, PHP, Python y Ruby, los cuales son ampliamente utilizados en sitios de internet por todo el mundo, y para una gran variedad de aplicaciones. Aunque son lenguajes interpretados y, como se explicó previamente, esto implica que no son compilados y por ende los scripts creados no lograrán alcanzar el poder o eficiencia de un programa desarrollado en C, por ejemplo, dadas las capacidades actuales de los equipos, sobretodo si se trata de servidores de web, las diferencias en velocidad de procesamiento para la mayoría de los usos no son tan drásticas como para elegir una opción más compleja. Por poner un ejemplo, mientras que hace mucho tiempo haber creado un servidor de web en las herramientas convencionales habría requerido seguramente de bastantes líneas de código, con Python es posible lograrlo solamente con la siguiente sentencia:
python -m SimpleHTTPServer
Si bien es que algunos de estos lenguajes fueron muy utilizados en su momento, como puede ser CLIPPER (para manejar bases de datos) o PASCAL, las necesidades de hoy en día así como la evolución en las aplicaciones, los equipos y los dispositivos han hecho que varios de ellos ya estén prácticamente obsoletos y que su uso sea ya más educativo o para dar mantenimiento a plataformas legacy, que corren todavía al día de hoy pero son sistemas muy antiguos que por alguna razón no han sido migrados a nuevas versiones o alternativas de hardware y/o software.
Como se podrá haber visto en el presente artículo, un lenguaje de programación es un elemento básico para poder desarrollar cualquier tipo de programa o aplicación que utilice un hardware, ya sea una computadora o algún equipo industrial. Dependiendo de las necesidades particulares del software así como de los objetivos de velocidad, fiabilidad, practicidad, así como de la plataforma en particular que se usará, será la elección del lenguaje de programación a emplear.
Fuente: kioskea.net, jorgesaavedra, IMECAF