¿Qué ganará un programador de Python al aprender Ruby?
computer-science (5)
En su mayor parte, nada. La mayoría de las fortalezas / debilidades de Ruby son las mismas que las de Python, excepto que Ruby es un poco más "funcional". Sin embargo, si tiene Haskell como una opción, se puede aprender mucho más sobre la programación funcional de Haskell que de Ruby.
En segundo lugar, si estás mirando las cosas desde una perspectiva teórica de la informática, Ruby está lejos de ser un idioma de elección. Ruby y muchas de sus bibliotecas rompen una gran cantidad de dogmas OOP estándar que creo que muchos académicos encontrarían repulsivos (esto se basa principalmente en mis conversaciones sobre idiomas con varios profesores).
Desde una perspectiva académica, creo que Haskell te atraería más. Si le interesa la inteligencia artificial o la lógica, Prolog también es una excelente opción.
Voy a estar aprendiendo Ruby , Haskell y Prolog en la universidad. Ahora, me pregunto qué debería llamar mi atención. Tengo medio año para hacer los tres, lo que significa que necesito decidir en un idioma para obtener mi tiempo extraescolar. Los otros aprenderé lo suficiente para hacer muy bien en el curso.
Estoy lo suficientemente familiarizado con Haskell y Prolog como para saber que aprenderlos me enseñará algunos conceptos muy importantes de la informática. No estoy tan seguro de rubí.
Al pasar por algunos tutoriales e introducciones, tengo la impresión de que el rubí es mucha magia superficial . Ahora le pregunto a la gente de ruby: ¿Qué obtendré? Debería decidir no volver a usarlo, después de haber pasado medio año aprendiendo que Python no me había enseñado.
Esta pregunta no pretende "defender el caso" del rubí, aunque me doy cuenta de que este es un tema potencial de gran argumentación.
Ahora uso Python para todo mi trabajo de CS. También he hecho un poco de programación funcional con él. También estoy bastante familiarizado con la programación orientada a objetos (en Java, Python y C #). Y haré, como dije, algo de programación lógica con Prolog.
¿Qué queda entonces para que Ruby me enseñe?
Para diluir aún más la pregunta:
No estoy interesado en escribir programas divertidos o aplicaciones web geniales. Sólo estoy interesado en los bits de informática. Implementando algoritmos, estructuras de datos y así sucesivamente. (Aunque divertirse seguramente no dolerá)
Idealmente, los conceptos discutidos deben ser aprendibles en aproximadamente 1.000 horas.
No estoy del todo interesado en Rails . Cualquier tecnología que oculte complejidad es, en este caso, perjudicial.
No puedo evitar que esta pregunta sea argumentativa. Pero una respuesta ideal a esta pregunta mencionará un concepto profundamente importante de la ciencia de la computación teórica que Ruby ayuda al programador a usar y entender para obtener conocimientos adyuvantes científicamente.
A los candidatos que se me ocurrieron son Meta-programación y Multi-threading. No sé si el rubí es particularmente bueno aprender alguno de ellos.
He estado programando profesionalmente durante más de 20 años y tengo muchos lenguajes diferentes, desde ensamblaje y C a través de varios SQL. Tener ese rango me da una buena caja de herramientas para elegir cuando necesito hacer algo.
Cada idioma tiene sus fortalezas y saber cuáles son le ayudará a progresar en su carrera. Ningún lenguaje es el final, todos los lenguajes de programación, y cuantos más idiomas sepa, más podrá lograr y más fácil le resultará aprender más.
La respuesta a las siguientes dos preguntas es, en general, la misma:
- Si ya conozco Python, ¿qué aprenderé de Ruby?
- Si ya conozco a Ruby, ¿qué aprenderé de Python?
La respuesta a ambos es:
- Nada importante, aparte de una forma ligeramente diferente de hacer las cosas.
Ambos son lenguajes dinámicos OO. Ruby se presta para ser un poco más funcional, mientras que Python tiene otras cosas que son agradables (comprensión de lista). Sin embargo, en general, no vas a aprender mucho de lo que generalmente se aplica a la informática al pasar de una a otra.
Ruby y Python son muy similares en términos de la CS real que su cerebro logrará, las diferencias son en gran medida cosméticas y pragmáticas. Áreas en las que son esencialmente las mismas:
- Ambos lenguajes están fuertemente tipados dinámicamente.
- Ambos soportan muchos paradigmas como funcional, orientado a objetos, etc.
- Ruby tiene un poco más de pelusa / azúcar (similar a Perl), mientras que Python cree que explícito es mejor que implícito.
Si está interesado en intérpretes, marcos y pruebas, puede valer la pena battle los dos, pero desde un punto de vista teórico, aprenderá mucho más de Haskell o Prolog.
Si quieres aprender cosas de informática, aprende Scala. Ese es el lenguaje informático del futuro. Mira si puedes aprender ese;
De lo contrario, Ruby es un buen lenguaje para aprender si desea obtener una mayor comercialización después de sus estudios, ya que probablemente sea el más fácil conseguir un trabajo después.
Los algoritmos y las estructuras de datos también están bien, pero no olvide la arquitectura y el diseño de alto nivel. Esto es realmente importante: poder diseñar cosas a gran escala que no apesten a mal diseño. De las 3 opciones, Ruby tiene mucho que mostrarte aquí. Scala también.
Todos los idiomas pueden hacer cosas de CS, por lo que no veo cómo un idioma será un detrimento. Claro, un idioma puede ser más elegante que otro, pero la gente solía expresar cosas de nivel CS en C y C ++ en el pasado, así que realmente, no puedes equivocarte si solo estás tratando de aprender conceptos y no te estás convirtiendo Fluido con un lenguaje.
Una vez que conoce un conjunto de conceptos, es mucho más fácil entender cualquier lenguaje que use esos conceptos.