Bueno antes que nada bienvenido/a al foro.
Te tendría que borrar la respuesta por revivir un tema tan antiguo (dale una leída a las reglas cuando puedas) pero no lo haré para que no creas alguna cosa rara como que te borro la respuesta porque no estoy de acuerdo con lo que has dicho o algo similar (doy fe que a otros moderadores les ha pasado).
no quiero ser antipatico pero siempre me ha molestado quienes piensan que sabiendo C saben mas...cada lenguaje te da algo, si sabes c++ sabrás de apuntadores, si sabes de ruby sabras de metaprogramación (algo que no es moco de pavo tampoco) y si sabes de lenguajes de lenguajes funcionales como alguno de la familia lisp o haskell sabrás muchisimas cosas que ni te imaginas. Para ser sincero, yo programé en c++ y es poco lo que me deja el lenguaje a la hora de aprender otros lenguajes que no me hubiese dejado ruby, python, etc , si bien te enseña programación a mas bajo nivel, es algo que al menos hoy en día en el 99% de las aplicaciones que escribas es inutil (a menos que escribas un software de muy bajo nivel donde el rendimiento sea necesario)...en cambio cuando aprendí common lisp y clojure me sirvió de mucho, es otra optica de programar, muy diferente a C y es algo que sabiendo C no se aprende, es como empezar de cero...la gran diferencia es que aprendiendo common lisp te hace mejor programador en cualquier otro lenguaje, no lo digo yo, lo dicen todos los programadores de la familia lisp...ahora que lisp no es popular......ya es otra cosa, al menos con clojure ahora se puede escribir sobre la maquina virtual de java, codigo casi tan rapido, mas "inteligente" que el codigo java y en menos lineas...
Primero que nada no creo que nadie piense que sabiendo C sabe mas que otro o tal vez haya gente que si, pero no es mi caso. Se sabe mas de otras cosas por supuesto por las características inherentes al lenguaje, pero esto obviamente aplica para cualquier área de la vida y por supuesto para cualquier lenguaje de programación.
En mi opinión, aprender C favorece mucho la ejercitación para lograr que gente que nunca programo en su vida comience a pensar como un programador. Esto se puede hacer con cualquier lenguaje? seguramente que si, a mi me parece que C es el mas simple para hacerlo y te da una buena base para aprender luego lo que gustes. No te deja malos hábitos, te fuerza a conocer lo que estas haciendo, y la sintaxis es similar a lenguajes de mas alto nivel como Java o C# por lo que la transición es mas sencilla.
Se puede aprender programación con Python? seguro que si, nadie dijo que no. En mi opinión no es lo mejor concatenar una cadena haciendo string + string y pensar que eso funciona así mágicamente.
Al aprender un lenguaje por primera vez estas "nimiedades" son importantes. Seguro que Python, Ruby, y demás, pueden enseñarte muchisimas cosas a nivel diseño y/o lógica de programación, pero luego de cuanto tiempo? hay que ponerse en el contexto de alguien que toca un lenguaje por primera vez en la vida.
Sinceramente si dices que comenzaste aprendiendo C++ y lo único con lo que te has quedado es con el manejo a bajo nivel, entonces lamento decirte que no has aprendido C++ como se debe, pero eso es un tema aparte.
en cuanto a la popularidad, para mi no tiene sentido, java es popular porque en muchas universidades es lo que enseñan y muchos "profesionales" salen aprendiendo solo a programar java y pensando que java es sencillo y divertido...solo cuando aprenden un lenguaje script abren los ojos...python esta creciendo al igual que ruby, javascript, lua...son lenguajes del futuro
Hablar de Java en reglas generales es un poco difícil puesto que es muy amplio y abarcas desde sistemas web, aplicaciones de escritorio, y tantos etc que es muy difícil comparar "Java" como tal contra otras tecnologías.
Si te puedo decir que su "popularidad" no se debe a que se haya enseñado en las universidades si no a las facilidades de uso, a su licencia, a la multitud de tecnologías (frameworks, servers, y mil cosas mas) para trabajar con Java y muchas cosas mas que lo hacen un buen lenguaje y uno de los mas usados en el mercado laboral.
En las universidades se enseñan lenguajes por sus ventajas en el aprendizaje y/o para amoldar a los futuros profesionales a las necesidades actuales del mercado. Por eso se enseña Java, por eso se enseña C#, no porque se les haya salido de la galera.
Sea cual sea el motivo por el cual se enseña un lenguaje; si es por lo primero es porque el lenguaje puede aportarte algo en el aprendizaje, y si es por lo segundo es porque el lenguaje supo ganarse su cuota de mercado. Si supo ganarse su cuota de mercado es porque algo tuvo para que las compañías y/o los profesionales lo acepten como una herramienta valida. Esto es una regla de oro y funciona así siempre aunque nosotros personalmente consideremos otros lenguajes como "mejores".
en si me parece que tu argumento es de alguien que no le gusta aprender y que se conforma con saber solo un lenguaje, cada lenguaje deja algo, en cada lenguaje se aprende algo y sobretodo cada lenguaje es mejor para hacer alguna cosa determinada, es mejor aprender poco a poco varios, conociendo sus beneficios y sus desaciertos y luego aplicarlo, que enfrascarse en uno, se pierde menos tiempo aprendiendo y utilizando el adecuado que solo sabiendo uno y matandose en escribir todo tipo de codigos con él.......
Me parece que estas prejuzgando sin saber desconociendo todo lo que he estudiado y todo lo que estudio. No voy a mencionar los lenguajes que conozco y/o uso en mi trabajo porque me parece innecesario exponer mi "curriculum" y sinceramente me molesta cuando la gente usa eso como base para argumentar, pero me parece valido aclarar que estas opinando sin saber y sin conocerme.
No estoy de acuerdo con lo que has dicho. Me parece que es mejor aprender un lenguaje BIEN sea cual sea y luego aprender las tecnologías que necesites o que te parezcan atractivas. Pero al hacerlo lo harás con una buena base en programación y no solo sabiendo hacer un hola mundo; esa base de programación no se logra tocando de oído varios lenguajes.
Ir vagando de lenguaje en lenguaje aprendiendo un 5% de cada uno no te hace llegar nunca a a ser un buen programador. Todo lo contrario, solo hace que seas un buen aficionado familiarizado con 3 o 4 lenguajes y poco mas, y así uno no puede trabajar de esto. Para trabajar de esto uno tiene que estar especializado en determinadas tecnologías relacionadas al área que mas te guste o a la que hayas tenido la suerte de entrar.
si no me crees te pongo el reto que aprendas haskell, un lenguaje funcional donde todo es inmutable, a ver que tan dificil o sencillo se te hace viniendo de C, te aseguro que aprenderas muchas cosas nuevas y tu codigo en cualquier lenguaje mejorará, por cierto, en el code jam siempre haskell gana por una gran ventaja, lo que demuestra que sus programadores tienen mejor logica (programar es cuestion de logica no de estar declarando tipos y manejando apuntadores)...he aqui un articulo
Lamentablemente no me queda mas alternativa que pasar del reto de aprender Haskell. No tengo el tiempo y sinceramente no lo necesito ni creo que pueda aportarme nada a mi manera de programar y/o diseñar software. O tal vez si, pero nunca lo sabre hasta que alguien me convenza con argumentos mas sólidos de porque debería aprender Haskell y que me enseñaría que otros lenguajes en menor medida no me han enseñado ya. Cuando uno trabaja de esto, el tiempo que se gasta en aprender un lenguaje es dinero, las capacitaciones son dinero, y se hacen en base a requerimientos claros.
Si crees que puedes aportar algo para los que recién comienzan con la programación, o si quieres exponer lo que vos consideras que son ventajas a la hora de aprender determinadas tecnologías para los que ya somos profesionales, sos libre de hacer un nuevo hilo!
Saludos!