Ruby o Python? [cerrado]

24

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.

Mesas Bobby
fuente
¿"Para Python no estoy tan seguro"? ¿De que? ¿Cómo es esto relevante?
S.Lott 01 de
Puedes encontrar mucho más en Ruby vs Python en StackOverflow. Me sorprende que el propio Lennart no haya comentado todavía. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/…
Trabajo
@ S.Lott: Lo siento, no estaba claro ebough. Solo quería decir que todavía no tengo una impresión muy detallada de Python. Excepto que es versátil y tiene una fuerte base de fanáticos.
Bobby Tables
99
Perl, por supuesto.
Bruce Alderman
Esto cae dentro de "¿Qué tecnología es mejor?" categoría de preguntas, que según las preguntas frecuentes se consideran fuera de tema.
ChrisF

Respuestas:

35

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.

Adam Crossland
fuente
2
+1 para una referencia Dead,;)
cschol
1
Gracias. Iré con Ruby primero y veré si me enamoro. :)
Bobby Tables
8
Llego un poco tarde a la fiesta, pero trypython.org y tryruby.org son excelentes sitios para probar los idiomas.
Michelle Tilley
17

Apenas he usado Ruby, es cierto, pero aquí están mis impresiones de Python:

  • cuando escribo pseudocódigo para dibujar una función, encuentro que lo que escribo prácticamente es Python, y a veces es necesaria una reescritura notablemente pequeña para convertirlo en código real. Incluso puede omitir el pseudocódigo todos juntos y simplemente expresar sus pensamientos directamente en Python
  • Cuando necesito hacer algo que parece una tarea común, Python tiende a tener las funciones necesarias (a un alto nivel) integradas en su biblioteca estándar. Por ejemplo, al principio, cuando quería abrir un archivo y escanearlo línea por línea, la respuesta era tan simple como 'para líneas en myFile: dostuff (líneas)'. Esto creo que lo llaman el enfoque de "baterías incluidas", y difiere de algunos otros lenguajes que he usado donde las operaciones cotidianas son mucho más complicadas

Esas dos cosas se destacan para mí.

Andrew M
fuente
Creo que esas son exactamente las razones por las que prefiero Ruby. Ruby es más OO y tiene menos palabras clave. Por ejemplo, en Ruby "[1,3,5] .length ()" y "[1..10] .each () ..." vs Python "len ([1,3,5])" y "for i en rango (1,11) "
LennyProgrammers
66
@Lenny - Rubí en realidad tiene más palabras clave: krijnhoetmer.nl/stuff/ruby/keywords vs zetcode.com/tutorials/pythontutorial/keywords - para Python 2.6, que es 31 palabras clave para Ruby 38. Además, 'más OO' parece haber aquí se usa de manera bastante subjetiva, ya que en ambos lenguajes se aplica "todo es un objeto" (e incluso más literalmente con Python 3.x, ya que todo se subclasifica object). Además, len(obj)es un atajo para llamar obj.__len__()y for i in rangetambién abstrae los detalles operativos de los objetos generadores operativos. Creo / equivalente pero diferente / es más preciso.
Wayne Werner
Tengo la sensación de que Lenny quiso decir que usas menos palabras clave en tu declaración típica, por ejemplo 'para i en rango (1,11) tiene 3 palabras clave (para, en, rango). Por supuesto, a veces más palabras es mejor.
Andrew M
55
rango no es una palabra clave, es una función
Kugel
9

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.

Jason Webb
fuente
+1, Ambos parecen bastante fáciles. Clojure, por otro lado ... es muy divertido, pero también es más difícil.
Trabajo
7

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.

Marcin
fuente
1
¿Puede señalar qué hace que Ruby "no sea tan bueno para el desarrollo de aplicaciones de escritorio gui, programas numéricos, estadísticos o de procesamiento de imágenes"? Cuando estaba programando en Ruby en 2001/2002, estaba feliz de hacer todas esas cosas.
LennyProgrammers
77
@ Lenny222. En Ruby no hay bibliotecas como numpy, scipy, sympy, PIL, matplotlib. Cualesquiera que sean las bibliotecas numéricas, están muy por detrás de Python. Del mismo modo con documentación y bibliotecas para el desarrollo de aplicaciones gui.
Marcin
1
Usted dice que Python es más versátil y luego señala las bibliotecas por qué. Te concederé que no es tan fácil hacer algunas cosas en Ruby por falta de una buena biblioteca, pero eso no significa que Ruby sea de alguna manera menos versátil.
Twisol
@Twisol es exactamente el por qué: Python es muy simple (y consistente) es la razón por la cual es tan versátil y por qué hay tantas bibliotecas útiles (IMO).
Nadir Sampaoli
6

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.

Berin Loritsch
fuente
5

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.

Jesse Millikan
fuente
1
+1 Todo lo que vi fue "el lenguaje perfecto" y "esquema". :)
dietbuddha 02 de
1

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.

chiurox
fuente
1

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í ...

Alexey Anufriyev
fuente