Hola
Escribo este texto como orientación a todas las personas que desean iniciarse en el mundo de la programación y no saben por donde empezar:
--------------- CONSIDERACIONES PREVIAS -------------------
1. Un buen programador no solo conoce "lenguajes de programación". Conoce en profundidad el sistema operativo para el que trabaja y si programa aplicaciones cliente/servidor también conoce como funcionan las comunicacioens entre ordenadores.
2. Un buen programador conoce varios "lenguajes de programación" y decide en cada caso la mejor forma de "atacar" el problema.
3. Un buen programador sabe lo importante que son los "fundamentos informáticos". Cuando estudias te enseñan algoritmos, estructura de la información y conceptos como por ejemplo 'estructura de una base de datos sql' que a mucha gente le parecen una tontería. Pues esas "tonterías" son FUNDAMENTALES.
----------------- ¿QUÉ LENGUAJE DEBO APRENDER? -------------
Pues eso depende. Por que cada lenguaje tienen unas ventajas y unos inconvenientes. Por tanto la respuesta a esa pregunta es ¿Qué es lo que quieres hacer con la programación?
1. Quiero hacer aplicaciones que gestionen bases de datos.
En este caso tendrás que conocer la base de datos que
pretendes atacar. Hoy en día las bases de datos mas
usuales son (en orden de importancia) access, mysql,
informix, sql server, oracle.
Access se utiliza en entornos muy pequeños en un entorno
windows. Generalmente son aplicaciones monousuario y
muy limitadas.
Las otras son bases de datos sql multiusuario. Suelen ser
bases de datos remotas a las que accedes como cliente por
lo que tendrás que conocer la base de datos y dominio de
técnicas de programación cliente/servidor.
Generalmente estas bases de datos funcionan en entornos
de servidor Unix/Linux por lo que a menudo los clientes
accederán a ellas mediante un servidor WEB instalado en el
servidor. En un entorno de servidor Unix/Linux te interesa
por tanto conocer PHP y javascript para consultar de forma
remota esta base de datos.
Caso aparte es SQL Server que funciona en servidores
windows y por tanto para acceder de forma óptima a estos
datos deberías pensar en ASP y VbScript en vez de en PHP
y javascript.
Habitualmente estas bases de datos son atacadas por
varios usuarios a la vez por lo que tendrás que conocer
técnicas de programación de Cliente/Servidor y
funcionamiento de comunicaciones entre ordenadores.
2. Quiero hacer aplicaciones tipo antivirus, firewalls,
dreamweaver, photoshop, ...
Estos programas se realizan en C++ y Delphi
3. Quiero hacer aplicaciones para internet.
En este caso debes conocer PHP, javascript o bien ASP,
VbSCript y desde luego HTML. PHP y javascript es mejor
para acceder a servidores Unix/Linux. ASP, VbScript es
mejor para acceder a servidores Windows. Esto no quiere
decir que con PHP no se pueda acceder a una base de datos
sql server en un servidor Windows. Eso sería falso. Se
puede.
4. Quiero hacer aplicaciones de tipo Sistema Operativo.
Este tipo de aplicaciones se realizan en C++ y ensamblador.
----------- CONSIDERACIONES ADICIONALES ---------------
En general se puede decir que las cosas de Microsoft funcionn mejor con lenguajes de Microsoft. Se integran mejor y con menos esfuerzo consigues mejor resultado. Aunque a menudo hay mejores opciones en el mercado el mundo microsoft "pesa mucho" y se encuentran multitud de servidores y soluciones pensadas por y para microsoft.
Los Servidores Unix/Linux Son mejores y mas estables por lo que están muy extendidos. Por ello lenguajes como PHP y javascript son una muy buena opción.
Lo mismo se puede decir en el mundo Solaris. Java es una opción a tener en cuenta.
---------------- POR ULTIMO ------------------------
Para conseguir un empleo no te valdrá conocer catorce lenguajes. Un posible puesto de trabajo puede requerir conocimientos de visual basic+ASP+SQL SERVER. Si conoces esto tienes trabajo seguro.
Si conoces ORACLE tienes trabajo seguro.
Conocer HTML+PHP+javascript y una base de datos sql (empieza por mysql) es una buena opción para desarrollar páginas web.
Mucha gente cree que la programación cliente/servidor supone saber manejar los sockets. Pues sí, hay que saber esto, pero también como funciona la red, como van a moverse los paquetes por la red, si ejecutar un procedimiento en el servidor o en el cliente, si se van a hacer réplicas de datos, como van a funcionar los bloqueos, Que pasará ante procesos concurrentes, ...