Última actualización: 25/08/2017
Bueno, como no paro de leer esta pregunta por el foro he decidido abrir un hilo para ello. Voy a intentar ser lo más objetivo que pueda con los distintos lenguajes.
¿Cuál es el objetivo del hilo? Explicar de forma rápida y sencilla la diferencia entre los lenguajes y tecnologías más usadas.
¿Cuál NO es el objetivo del hilo? Informar sobre las últimas tendencias, lenguajes nuevos, tecnologías revolucionarias, etc.
Antes quiero aclarar unos conceptos:
Framework: literalmente significa "marco de trabajo". Para que todos lo entendáis podríamos decir que un framework son un conjunto de librerías o archivos para facilitar el trabajo con los distintos lenguajes de programación. Cada lenguaje tiene sus propios frameworks y cada uno está orientado a ciertas cosas. Como no me cuesta explicarlo de forma fácil, os pondré un ejemplo aplicado al mundo real. Imaginaos un pastelero que hace pasteles. En este caso, un framework podrían ser los distintos moldes que usa para agilizar su trabajo y no tener que hacer cada vez una forma desde 0. Es una explicación un poco vaga, pero os podéis hacer la idea. Si queréis una explicación algo más técnica y más detallada: http://es.wikipedia.org/wiki/Framework
CMS: Un CMS es un sistema de gestión de contenidos. Es parecido a un framework aunque más desarrollado. Más que una herramienta para agilizar el trabajo es una herramienta ya hecha a la que se le puede hacer modificaciones. En nuestro ejemplo del pastelero, un CMS podría ser una tarta congelada comprada en el Mercadona a partir de la cual hace otras tartas. En el mundo web hay CMS como MediaWiki (a partir del que está hecha la Wikipedia), WordPress, Joomla y Drupal (que son páginas web completamente funcionales pero a las que el usuario puede añadirles funcionalidades nuevas y personalizarlas de la manera que deseen).
Programación orientada a objetos: Es un concepto un poco complejo y no puedo explicarlo en pocas líneas. Para entenderlo bien tendríais que leer sobre los distintos paradigmas de programación. ¿Y qué mejor sitio que la Wikipedia para hacerlo? http://es.wikipedia.org/wiki/Paradigma_ ... aci%C3%B3n
Empiezo:
C/C++: - Creo que todos hemos oído hablar de estos lenguajes. Son los "clásicos". Los he puestos juntos pese a que no son el mismo lenguaje. Son lenguajes de medio-bajo nivel. Cuanto más bajo sea el nivel, más parecido al código máquina será y por tanto más difícil de aprender. Por el contrario, un lenguaje de alto nivel será más fácil de entender para el programador pero más difícil para la máquina y por tanto, menos eficiente.
La diferencia entre ambos es que C++ está orientado a objetos. Se creó como una extensión de C porque éste carecía de la prorgamación orientada a objetos.
C es el lenguaje de programación por excelencia y conocerlo bien te hará mejor programador.
Más información:
- https://es.wikipedia.org/wiki/C_%28leng ... %C3%B3n%29
- https://es.wikipedia.org/wiki/C%2B%2B
Java: Otro grande y muy conocido. Hay personas que lo aman y otras que lo odian. A diferencia de C, es un lenguaje interpretado y a la vez compilado, es decir, se compila pero se necesita la máquina virtual para ejecutarse. Esto quiere decir que el ordenador por sí mismo no puede correr las aplicaciones hechas en Java. Ahí es donde entra la JVM (Java Virtual Machine). Que viene a ser un programa que casi todos tenemos instalado que nos permite ejecutar los programas desarrollados en Java. Es un lenguaje de medio-alto nivel.
Hay varias versiones. Java SE, que es la edición estándar para aplicaciones, JAVA EE, que está orientada al mundo web, Java Mobile, que como su nombre indica se usa para programación en móviles.
Hoy en día se usa para todo. Al ser multiplataforma los programas hechos en Java puede ejecutarse en cualquier sistema operativo siempre que tengamos la JVM instalada. Un ejemplo sería JDownloader. También hay juegos como Minecraft, Project Zomboid, Terasology, Terraria, etc. Todos pueden ser usados en cualquier sistema operativo sin problema alguno.
En el mundo laboral Java se usa mucho, muchísimo para hacer aplicaciones web a empresas. No me refiero a página webs pequeñitas, sino a grandes aplicaciones web que soporte bastante carga. GMail y Google Docs están hechos con Java. Si pensáis en entrar a trabajar de programadores en cualquier empresa es un lenguaje a tener muy en cuenta.
Android. Las aplicaciones de Android están hechas en Java. Aunque no usa la JVM, usa otra máquina virtual creada por Google y optimizada para Android, pero el lenguaje a usar es el mismo.
Java es un lenguaje menos eficiente que C, por ejemplo, pero a cambio nos ofrece la posibilidad de hacer grandes cosas en muy poco tiempo.
Cabe mencionar que Java tiene 2 frameworks muy importantes, Spring y Struts. Gracias a jjy por la corrección. También me gustaría mencionar Grails, otro framework para desarrollo web de Groovy (lenguaje basado en Java que corre sobre la plataforma Java).
Más información:
- https://es.wikipedia.org/wiki/Java_(len ... aci%C3%B3n
- https://es.wikipedia.org/wiki/Plataforma_Java
C#: C# fue creado por Microsoft en respuesta a Sun Microsystems por Java. Son lenguajes muy parecidos. Se usa principalmente para hacer aplicaciones de escritorio para Windows.
A día de hoy (mediados de 2017) varias partes del nucleo del lenguaje se publicaron bajo una licencia libre y su soporte multiplataforma ha mejorado. Pese a todo sigue siendo un lenguaje fuertemente ligado a Microsoft y controlado por ellos.
Más información:
- https://es.wikipedia.org/wiki/C_Sharp
- https://es.wikipedia.org/wiki/Proyecto_Mono
Objective-C: En el momento de crear este hilo, Objective-C era el lenguaje en el que se programaban las aplicaciones para iOS y para Mac OS. De ahí que su cuota de mercado sea bastante alta. Ahora ha sido sustituido por Swift.
Es un lenguaje que solo debéis aprender si vuestro objetivo es programar aplicaciones para la App Store.
Más información:
- https://es.wikipedia.org/wiki/Objective-C
PHP: El gran lenguaje de la web. Hay mucha gente que recomienda huir de PHP porque hay lenguajes mejores. Es posible, no voy a negarlo, pero PHP tiene a su favor varias cosas. La gran mayoría de webs que visitamos están hechas en PHP. La comunidad de PHP es enorme. Todos los grandes CMS están hechos en PHP. PHP es libre, gratuito y multiplataforma.
Obviamente es un lenguaje solo para aquellos que quieran trabajar en el mundo web.
Como he dicho antes hay gran cantidad de CMS en PHP para todo tipo de webs y que son usados frecuentemente por los programadores. WordPress, Jooma y Drupal se usan para crear páginas webs. PrestaShop se usa para crear tiendas virtuales. WikiMedia se usa para crear Wikis (Wikipedia está hecha con WikiMedia). Estos CMS ahorran muchísimo trabajo a los desarrolladores ya que no tienen que reinventar la rueda cada vez que quieran hacer una página nueva.
También existen frameworks de PHP muy conocidos y extendidos como Zend Framework, Symphony, Yii o Laravel.
Lo más importante respecto a PHP es siempre usar un enfoque moderno y olvidar el PHP de hace 10 años. Nunca miréis PHP de la versión 5.4 para abajo.
Más información:
- https://es.wikipedia.org/wiki/PHP
- http://www.phptherightway.com (MUY IMPORTANTE)
Python: Es un lenguaje multiplataforma también interpretado. En las distribuciones Linux y Mac OS suele venir preinstalado. En Windows hay que descargarlo.
Es un lenguaje de prototipado rápido, esto quiere decir que el código se puede escribir bastante rápido porque apenas se usan corchetes, llaves, paréntesis, etc.
El uso de Python es muy variado. Se usa tanto para aplicaciones de escritorio como para aplicaciones web. Es versátil, fácil de aprender y muy útil.
Como frameworks de Python me gustaría mencionar Django, un framework MVC para crear aplicaciones web y PyGame, como su nombre indica, para crear juegos.
Es un lenguaje que os animo a todos a aprender.
Más información:
- https://es.wikipedia.org/wiki/Python
- http://www.pygame.org/wiki/about
Ruby: es un lenguaje totalmente orientado a objetos. Muy usado en aplicaciones web con su framework Ruby on Rails.
Aunque hace unos años empezó a popularizarse, a día de hoy no parece que esté creciendo mucho aunque sí tiene una cuota de mercado decente.
Twitter se programó en un principio en RubyOnRails.
Más información:
- https://es.wikipedia.org/wiki/Ruby
JavaScript: si tenéis pensador ser programadores web, JavaScript es un lenguaje que estáis obligados a conocer. Se ejecutado en el lado del cliente, es decir, en el navegador y su principal función suele ser añadir funcionalidades gráficas y efectos a las páginas.
Hay un gran abanico de frameworks y librerías que facilitan el trabajo con JavaScript una barbaridad. A día de hoy (2017) salen a diario diferentes librerías y frameworks escritos en JavaScript.
Entre las tecnologías más usadas actualmente están AJAX, node.js, Angular, Vue y no sigo porque podría hacer la lista interminable.
Además es un lenguaje que se ha extendido más allá de la web. Diferentes sistemas operativos o entornos gráficos soportan JavaScript para crear aplicaciones o interfaces de usuario.
Más información:
- https://en.wikipedia.org/wiki/JavaScript
- https://en.wikipedia.org/wiki/Compariso ... frameworks
Rust: es un lenguaje joven desarrollado por Mozilla publicado bajo una licencia libre. Es un lenguaje de propósito general similar a C/C++ pero creado para evitar problemas de memoria.
Mozilla está usando Rust para escribir Servo, el nuevo motor de renderizado de Firefox. Tor también está escrito en Rust.
Según las encuestas anuales de StackOverlow, en 2015 fue el tercer lenguaje más querido por los usuarios. En 2016 y 2017 pasó a la primera posición.
Más información:
- https://es.wikipedia.org/wiki/Rust_(len ... aci%C3%B3n
Go: es un lengujae de código abierto creado por Google. Go está diseñado para ser rápido como C pero también para ser eficiente a la hora de programar con él.
No creo en absoluto que sea un lenguaje para gente sin experiencia.
Más información:
- https://es.wikipedia.org/wiki/Go_(lengu ... aci%C3%B3n
R: seguramente sea el lenguaje más "raro" de la lista. R es un languaje usado principalmente para estadística. Se suele ver tanto en la asignatura de estadística de las ingenierías como en las carreras de economía.
Está publicado bajo la licencia GPL y forma parte del proyecto GNU.
Se usa muchísimo en el mundo del Big Data.
Más información:
- https://es.wikipedia.org/wiki/R_(lengua ... aci%C3%B3n
- https://es.wikipedia.org/wiki/Big_data
####
Hay otros muchos lenguajes que se están usando actualmente a nivel profesional pero siendo esta una lista para aclarar dudas a gente que se está adentrando en el mundo de la programación no creo que haga falta ponerlos.