Esta pregunta es extremadamente subjetiva y abierta. Incluso puede sonar como algo que debería investigar por mí mismo y tomar mi propia decisión. Pero me gustaría publicarlo y obtener algunos pensamientos de otros.
Larga historia corta: me quemé con la carrera de ratas y estoy en un año sabático autofinanciado este año. Gran parte de esto es tomar un descanso de la rutina corporativa y viajar, pero también quiero jugar con las nuevas tecnologías y hacer algunos proyectos de autoaprendizaje, estar al día en la programación y, bueno, me encanta jugar con programación, cuando no hay presión!
Aquí está la cosa: soy un programador de C / C ++ / Java de por vida. Soy un poco snob de corchetes desde que he estado trabajando con esta familia de lenguajes durante toda mi carrera de programación. Así que me gustaría aprender un idioma que no esté tan estrechamente relacionado sintácticamente con este grupo. Lo que básicamente estoy buscando es un lenguaje que tenga un propósito relativamente general, divertido de aprender, tenga algunos conceptos nuevos que sean diferentes de C ++ / Java y tenga una buena comunidad. Una consideración secundaria es que tiene buenos marcos de desarrollo web. Una consideración terciaria es que no es totalmente académica (léase: hay trabajos del mundo real que la usan).
Lo he reducido a Ruby o Python. Mi impresión de Ruby es que está extremadamente orientada a la web, que su única aplicación real es como un lenguaje de script del lado del servidor para hacer cosas web (principalmente Ruby on Rails). No tengo mucha impresión de Python en absoluto, excepto que parece tener una base de fanáticos apasionados y parece ser un lenguaje bastante versátil.
TL; DR y para decirlo de la manera más sucinta posible: ¿cuál de estos sería mejor para que un chico de C ++ / Java aprenda a obtener nuevas perspectivas sobre la programación? ¿Y cuál es el propósito más abierto y general y aplicable a un conjunto más amplio de aplicaciones? Me estoy inclinando hacia Ruby en este momento, pero me preocupa hasta cierto punto que parezca que se usa como nada más que un lenguaje web del lado del servidor.
Respuestas:
No dejes que el hecho de que Ruby haya subido al lenguaje común en gran parte debido a Rails (el marco de la aplicación web) te engañe. Es un lenguaje de programación de uso general, y puede usarlo para cualquier cosa para la que pueda usar cualquier otro lenguaje.
Juegue con Ruby y vea si se enamora de él. O lo harás o no lo harás. Es algo así como la música de Grateful Dead; o lo amas o no puedes soportarlo.
Ruby estirará tu cerebro. En muchos aspectos, está lo más lejos posible de C ++ / Java. Vengo de un fondo C y C #, y encontré que la dinámica y el poder de metaprogramación de Ruby eran bastante intoxicantes.
Dicho esto, Python es un lenguaje absolutamente sobresaliente y te sacará de tu rizo.
¿Por qué no aprender ambos? Utilizo ambos regularmente: Ruby para programar con Rails y Python para trabajar con Google AppEngine.
fuente
Apenas he usado Ruby, es cierto, pero aquí están mis impresiones de Python:
Esas dos cosas se destacan para mí.
fuente
object
). Además,len(obj)
es un atajo para llamarobj.__len__()
yfor i in range
también abstrae los detalles operativos de los objetos generadores operativos. Creo / equivalente pero diferente / es más preciso.Si está tomando un año sabático completo, le sugiero que pase una semana o dos aprendiendo cada uno y luego decida por usted mismo cuál le gusta más. Tengo experiencia con ambos y, en mi opinión, ambos son tan capaces que realmente solo tienes que decidir cuál prefieres.
fuente
OMI, deberías ir con Python. La razón es que es más versátil, puedes usarlo para casi todo. Ruby es, como notaron, más utilizado en el desarrollo web debido a sus marcos web. A diferencia de Python, Ruby no es tan bueno para el desarrollo de aplicaciones de escritorio gui, programas numéricos, estadísticos o de procesamiento de imágenes.
fuente
Ruby ha existido mucho más tiempo que los rieles, así que déjenme exponerlo en el mundo
Ruby != web
, aunque lo hace muy bien. Hay una gran cantidad de cosas relacionadas con los sistemas que puede hacer y hace. Parece que todo el marco de Rails se tragó el resto del mundo Ruby. Y sí, soy fanático de Ruby.Python, por otro lado, tiene muchas posibilidades, y se ha integrado con casi todo en Linux. Eso me dice que probablemente sea bastante fácil incorporarlo a programas más grandes (en comparación con Ruby, Java, etc.). Hay una buena cantidad de infraestructura Ubuntu Linux escrita con Python, que me dice que Python tiene aplicación en la programación de sistemas. Escuché que su marco web es realmente agradable, todavía no he jugado con él.
Dicho esto, tanto Ruby como Python son lenguajes igualmente capaces, y encontrarás que te hacen la vida mucho más fácil. Ruby tiene muchos más jefes web en su comunidad, pero esa no es la totalidad de la comunidad. Lo he usado en varios proyectos de infraestructura también.
fuente
Este es un caso especial de " Secuencia ideal de aprendizaje del lenguaje de programación" y preguntas similares . Lo que necesita no es "el único idioma perfecto", necesita múltiples paradigmas de lenguaje y múltiples experiencias de aprendizaje para abrir su mente.
Sé que dijiste que lo redujiste a Ruby y Python, pero te sugiero que comiences con Racket (un esquema popular). Está diseñado para el aprendizaje y estirará su cerebro hacia la programación funcional, la programación interactiva y la escritura dinámica. No hay trabajos (literalmente cero), una comunidad muy pequeña y fragmentada, y ningún marco web importante, que es exactamente la razón por la que no se quedará atrapado en él; freír el cerebro por un tiempo y luego seguir adelante.
En segundo lugar, desea aprender Ruby o Python para posibles trabajos. Te sugiero que aprendas ambos. Aprender el segundo de esos dos será mucho más fácil que el primero a pesar de sus diferencias. En cuanto a los posibles trabajos, mi intuición es que hay más trabajo de Ruby debido a Rails, pero sé que también hay algo de trabajo de Zope en esta área. Invierta en al menos uno de ellos, pero también consulte el otro al menos el tiempo suficiente para construir algo pequeño.
Honestamente, probablemente aprenderá más su primera semana en el trabajo con cualquiera de ellos de lo que aprendió usted solo; Ambos tienen grandes ecosistemas con muchas herramientas, cultura y modismos.
tl; dr: Ambos y Scheme.
fuente
Yo también provenía de Java / C ++ y he estado programando en Python con el framework Django durante los últimos 4 meses y es realmente genial. Siempre que tengo un problema o una pregunta, puedo encontrar explicaciones sobre las publicaciones existentes. No puedo responder por Ruby ya que aún no lo he usado, pero definitivamente lo intentaré cuando tenga algo de tiempo.
Personalmente, me gusta cómo puedes hacer cosas muy rápido con Python, ya que tiene muchas funciones útiles incorporadas.
fuente
Yo votaría por Ruby. Vengo de .Net y C #, probé Python primero, pero Ruby simplemente me encantó =)
Estoy escribiendo muchas cosas del sistema, y algunos desarrolladores de Rails. Es capaz como Python en la programación del sistema, y es increíble en la web. Y se siente más pulido para mí ...
fuente