Grado de Multimedia Universitat Oberta de Catalunya

Lenguajes de programación: clasificación, tipos y recursos de aprendizaje

Ferran Adell

Introducción

Lev Manovich definió los nuevos medios según cinco principios básicos: representación digital, modularidad, automatización, variabilidad y transcodificación. De estos principios, la representación digital es la condición de posibilidad de todo el resto; si no hubiéramos sido capaces de codificar numéricamente la información, la revolución digital como la entendemos no sería posible.

La codificación de la información, la transformación del lenguaje natural en datos numéricos que el ordenador puede interpretar, es la base de los lenguajes de programación. Estos lenguajes permiten comunicar a la máquina la información en un formato con el que esta puede interpretar y programar determinadas acciones con un objetivo determinado.

Los lenguajes de programación permiten reproducir las relaciones que se establecen entre los objetos para automatizar procesos con un objetivo concreto.

Tipos de lenguajes de programación

Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden reproducir máquinas. Se usan para crear programas que controlan el comportamiento físico y lógico de una máquina y para expresar algoritmos con precisión. Los llamamos lenguaje porque están formados por un conjunto de símbolos, reglas sintácticas y semánticas que definen su estructura y el significado de los elementos y expresiones.

Desde la creación de los primeros lenguajes se han formalizado diferentes clasificaciones, que, a la hora de la verdad, se entrecruzan entre sí. Clasificamos los lenguajes de programación según el nivel de abstracción, según la forma de ejecución y de procesar pedidos, según el paradigma de programación que usan, entre otros.

Una de las clasificaciones más útiles es aquella que clasifica los lenguajes según el paradigma de programación. A continuación, se enumeran algunos de los paradigmas más importantes.

Paradigma imperativo: Describe la programación como una secuencia de instrucciones o pedidos que cambian el estado de un programa. Se basa en las órdenes condicionales que permiten retomar en el programa un bloque de órdenes determinado si se cumple una condición. Estos serían los primeros lenguajes de programación y es el paradigma en el que se basa el lenguaje máquina (0 y 1). Todavía muchos lenguajes usan estos principios. Uno de sus principales inconvenientes es la falta de flexibilidad debido a la secuencialidad de las instrucciones. En este paradigma, se incluye el paradigma procedimental y es contrario al paradigma declarativo.

Paradigma funcional/estructurado: La programación se divide en bloques (procedimientos y funciones) que pueden comunicarse entre sí o no hacerlo. Cada función recoge un procedimiento cerrado y se podría entender como un pequeño programa en sí mismo. Las funciones permiten, mediante la subdivisión de los procesos en pequeñas acciones, el aprovechamiento del código para otros objetivos o en otras partes de un programa.

Otros paradigmas interesantes son el paradigma orientado a objetos, el paradigma lógico o el paradigma funcional. Por su parte, otra gran clasificación importante se da entre los lenguajes interpretados y los lenguajes compilados.

Lenguajes interpretados: La máquina solo entiende el lenguaje binario. Los lenguajes interpretados son aquellos que por definición no están escritos en código binario y que requieren de un programa auxiliar (el intérprete), que traduce el lenguaje para que la máquina lo pueda procesar y ejecutar. Son ejemplos de ello BASIC, MADLAB, PHP y Perl.

Lenguajes compilados: En los lenguajes compilados, un programa anexo llamado compilador hace el proceso de transformación a un lenguaje inteligible por la máquina, antes de la finalización del programa. El archivo resultante se puede ejecutar sin la necesidad de ningún otro programa intermediario, es lo que se denomina archivo ejecutable. Son ejemplos de ello C, C++, Cobol, ADA y Pascal.

Los lenguajes compilados tienen la gran ventaja de no necesitar de ningún apoyo externo para ejecutarse; no obstante, son menos flexibles, puesto que cada modificación en el código original, o en las fuentes del programa, implica necesariamente una recompilación del programa para aplicar los cambios.

Los lenguajes de programación más usados

C es un lenguaje de programación orientado a la implementación de sistemas operativos, concretamente UNIX. C es uno de los lenguajes más eficientes en cuanto a código resultante y es el lenguaje más popular para crear software de sistemas. Es un lenguaje muy versátil, ya que trabaja tanto a bajo como a alto nivel y permite un alto control sobre la máquina.

Manual de C http://www.fismat.umich.mx/mn1/manual/

Historia http://www.faqs.org/docs/artu/c_evolution.html

 PHP es un lenguaje de programación basado en scripts en el servidor. Fue creado originariamente para el desarrollo de contenido dinámico en la web y fue uno de los primeros lenguajes que se podían incorporar en un documento HTML. El servidor interpreta el código y genera la página web resultante.

Información del grupo PHP http://es2.php.net/

Manual y FAQ de PHP http://us.php.net/manual/en/faq.general.php

Curso en catalán de PHP http://ca.programacionweb.net/cursos/curso.php?num=10

Curso de PHP http://www.phpya.com.ar/

Recopilación de cursos de PHP http://www.aulaclic.net/cursos/mostrar.php?id=25&texto=PHP&clase=c

Historia del lenguaje http://www.php.net/history

Python es un lenguaje de programación interpretado, centrado en producir un código limpio y legible con una sintaxis muy clara, lo que lo hace especialmente interesante para introducirse en el mundo de la programación puesto que, si bien es muy sencillo empezar a programar con Python, las opciones de programación avanzada son también muy interesantes. Es un lenguaje de programación multiparadigma (orientación a objetos, programación imperativa) y también es multiplataforma. Está publicado bajo una licencia abierta.

Java es un lenguaje de programación que deriva principalmente de C y C++, necesita ser compilado y se puede ejecutar en cualquier arquitectura gracias a la máquina virtual Java (JVM). Java es un lenguaje de propósito general basado en clases y orientado a objetos. La principal virtud del código Java es que se compila independientemente de la máquina donde se tenga que ejecutar, lo que permite lo que se denomina WORA (write once, run anywhere). En la actualidad, es uno de los lenguajes más usados con más de 10.000.000 de usuarios y se usa principalmente para crear aplicaciones de cliente-servidor en web.

Web para desarrolladores en Java http://learncodethehardway.org/

Especificación del lenguaje http://docs.oracle.com/javase/specs/

Historia http://www.cad.com.mx/historia_de el_lenguaje_java.htm

Clasificación de los lenguajes más usados http://blog.uchceu.es/informatica/indice-tiboe-ranking-de-lenguajes-de-programacion-mas-utilizados/

Hoy en día, el número de lenguajes disponibles está en constante evolución. Poco a poco, los lenguajes evolucionan y dan lugar a nuevos lenguajes enfocados a tareas concretas como la programación visual, la programación para sistemas operativos móviles o el arte. Algunos ejemplos más son Processing, Ruby y Javascript.

Recursos para aprender a programar de forma gratuita en la Red

Hoy en día, hay muchos portales dedicados a ofrecer de forma gratuita cursos de programación y espacios para practicar de forma interactiva con un servidor que verifica el código y nos ayuda a aprender a programar en los diferentes lenguajes de programación disponible. La mayoría permiten crear un perfil personal y hacer un seguimiento de la evolución y de los diferentes cursos emprendidos.

CodeAcademy http://www.codecademy.com/#!/exercises/0

Google Code University http://code.google.com/edu/

Mozilla Developer Network https://developer.mozilla.org/en-us/learn

Khan Academy https://www.khanacademy.org/cs/tutorials/programming-basics

EloquentJavascript http://eloquentjavascript.net/

LearnRuby http://rubykoans.com/

Codeschool http://www.codeschool.com/ 

Ferran Adell es especialista y docente en Tecnología y Sociedad. Estudió Filosofía y realizó un Máster sobre Filosofía contemporánea enfocado a la comprensión de la sociedad actual. Sus temas centrales...