Elegir lenguaje de programación es el primer paso para realizar un proyecto, pero para ello hay que saber lo que queremos conseguir con nuestro programa.
Existen una inmensa variedad de lenguajes de programación que podemos elegir para satisfacer distintas necesidades. Si bien es cierto que muchos de ellos se pueden utilizar en diferentes ámbitos, siempre suele haber algún lenguaje que destaque entre los demás para dicha área. Para alguien novato en el desarrollo de programas, elegir lenguaje de programación no suele ser tarea fácil y si pregunta las opiniones que encontrará al respecto serán muy diferentes.
Este artículo pretende ser una guía básica para que toda persona interesada en aprender a programar en un área concreta sepa por qué lenguaje o página web podría empezar. Como me es imposible mencionar todas las opciones que existen, sería fantástico que las personas que tengan experiencia en dichas áreas nos compartan su experiencia en los comentarios, siempre hay algo nuevo que aprender.
Desarrollo web
Cuando queremos hacer páginas o aplicaciones web hay que diferenciar si queremos hacer para frontend (lado del usuario) o backend (lado del servidor).
- Frontend: lo primero es aprender el lenguaje que servirá como estructura para la interfaz, su nombre es HTML y es un lenguaje de marcado, no de programación. Con el podremos poner títulos, negrita, subrayado, enlaces… etc. Para darle estilos (colores, dimensiones) usaremos CSS. Para interacción y efectos como animaciones podremos aprender JavaScript, y una vez que tengamos unos conceptos básicos de cómo funciona este claros, probablemente nos pasaríamos a librerías que con funciones de JavaScript listas para usar como JQuery para agilizar el trabajo, pero hay más alternativas.
- Backend: aquí necesitamos un lenguaje de programación que genere páginas de forma dinámica. Pensad el inmenso trabajo que sería tener que hacer una página individual para cada enlace que se pulsa. Estos lenguajes del lado del servidor buscarán en una base de datos la información que buscamos y la mostrarán en la interfaz. Un ejemplo para el lenguaje podría ser PHP, aunque Python (usando Django) o Ruby (usando Ruby on Rails) entre otros, también son otras opciones válidas. Para la base de datos también tenemos muchas opciones MySQL, SQlite o MongoDB son algunas que se me ocurren.
Para escritorio
Por cada sistema operativo pueden existir diferentes lenguajes específicos que solo servirán para dicha plataforma. Sin embargo, sería sabio pensar en desarrollar con lenguajes multiplataforma, es decir, hacer programas que se podrán utilizar en distintos sistemas. Hay una gran variedad en este aspecto, pero aquí mi opción personal para alguien que se inicia en este mundo sería el lenguaje de programación Python, principalmente por su enorme versatilidad y lo fácil que es de aprender. Podemos hacer aplicaciones que se usen en una terminal o con interfaz gráfica si lo combinamos con GTK+ o Qt entre otros. También existen distintas opciones para utilizar aplicaciones web como programas de escritorio.
Usar lenguajes multiplataforma nos permitirá** crear versiones de nuestro programa para una mayor variedad de plataformas** diferentes. Si aún así queremos que sea específico para la plataforma, os dejo un enlace para desarrollar en Windows y otro para desarrollar en Mac OS X. Para Linux no se me ocurre un lenguaje específico (¿existe?), así que os dejo un enlace para crear aplicaciones con GTK+, que servirá para los tres anteriores.
Para móvil
De la misma forma que para el escritorio, aquí también existen lenguajes específicos. También podemos usar HTML para hacer aplicaciones para móvil pero de momento al menos, la experiencia no es tan fluida como podría ser una aplicación nativa.
- Multiplataforma: podemos empaquetar aplicaciones web mediante PhoneGap.
- Android: enlace oficial para desarrollar en Android.
- iOS: enlace oficial para desarrollar en iOS.
- Ubuntu Phone: enlace oficial para desarrollar en Ubuntu Phone.
Hace poco descubrí Kivy, que sirve para hacer aplicaciones multitouch multiplataforma, incluso para el escritorio. Tiene buena pinta, no le perdáis la pista.
Para las ciencias
Para ciencias el lenguaje estrella yo diría que es Pyhon. La comunidad ha creado tantas librerías que se puede interactuar desde este con webs sobre bioinformática, astronomía, meteorología… etc. De hecho, incluso se pueden llamar a otros lenguajes desde este. De esa forma, podríamos utilizar el lenguaje de programación para estadística R dentro de Python y usar las herramientas citadas anteriormente como Qt para crear una aplicación gráfica que nos haga estadísticas. Un ejemplo de esto último es lo que han hecho los desarrolladores de open-meta. Cuando se necesita un lenguaje de programación más potente se suele recurrir a C++.
Videojuegos
En lugar de ponernos a programar todo desde el principio, podemos echarles un vistazo a los diferentes motores de juego que existen, los cuales nos permitirán desarrollar juegos sin recurrir a la programación en un principio. Una vez que aprendamos a usar el motor, estaría bien echarle un vistazo a los lenguajes de programación que soporta y crear así nuestras propias implementaciones. Unreal Engine y Unity son dos ejemplos de motores multiplataforma. En cuanto a lenguajes de programación, veremos sobretodo C++.
Dónde aprender a programar
La primera parada que recomiendo hacer es en Codecademy, una página que ofrece cursos totalmente gratuitos. La interfaz es maravilloso y muy cómoda de usar. Tiene cursos sobre crear páginas y aplicaciones web, APIs, PHP, Python. Ruby, JavaScript, JQuery y cursos creados por la comunidad.
Otros enlaces de interés
- 10 cursos online gratuitos para aprender a programar I
- 10 cursos online gratuitos para aprender a programar II
- 10 plataformas innovadoras para aprender programación
He mencionado distintas opciones que podemos usar según el objetivo que se busca. ¿Me ayudáis a completar la lista?