2010-10-24 9 views
14

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 tengo que decidir en un idioma para obtener mi tiempo extracurricular. Los demás aprenderé lo suficiente como para hacer un gran bien en el curso.¿Qué ganará un programador de Python aprendiendo Ruby?

Estoy lo suficientemente familiarizado con Haskell y Prolog para saber que aprenderlos me enseñará algunos conceptos muy importantes de la informática. No estoy tan seguro de Ruby.

Pasando por algunos tutoriales y presentaciones, me da la impresión de que el rubí es un montón de magia superficial. Ahora le pregunto a la gente de ruby: ¿Qué habría ganado? Si decidiera no volver a utilizarlo nunca, después de haber pasado medio año aprendiéndolo, Python ya no me había enseñado.

Esta pregunta no pretende "hacer el caso" para ruby, aunque me doy cuenta de que este es un tema potencial de gran argumentación.

Uso Python para todos mis trabajos de CS ahora. He hecho bastante programación funcional con él también. También estoy bastante familiarizado con la programación orientada a objetos (en Java, Python y C#). Y, como dije, haré 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 divertido programas o aplicaciones web fresco. Solo estoy interesado en la Computadora Science bits. Implementando algoritmos, estructuras de datos, etc. (Aunque divertirse seguramente no hará daño)

  • Idealmente, los conceptos discutidos deben poder aprenderse en aproximadamente 1.000 horas.

  • No me interesan en absoluto Rails. Cualquier tecnología que oculte la complejidad es, en este caso, perjudicial.

No puedo evitar que esta pregunta sea controvertida. Pero una respuesta ideal a esta pregunta mencionará un concepto profundamente importante de la informática teórica que el rubí ayuda al programador a usar y comprender para obtener conocimiento científicamente adyuvante.

A los candidatos que se me ocurrieron son Meta-programación y Multi-threading. No sé si el rubí es particularmente bueno para aprender alguno de ellos.

+5

¿Una nueva apreciación para Python? :-) – paxdiablo

+2

A veces echo de menos la vieja etiqueta "subjetiva". – Pointy

+3

@Pointy: esta no es una pregunta subjetiva. Puedes dar una respuesta objetiva, cuáles son las características y paradigmas de Ruby, eso sería nuevo para Pythonist. – Nakilon

Respuesta

8

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 tienes Haskell como 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, entonces Ruby está lejos de ser un lenguaje de elección. Ruby y muchas de sus bibliotecas rompen un montón de dogmas estándar de OOP que creo que muchos académicos encontrarían repulsivos (esto se basa principalmente en mis charlas sobre idiomas con varios profesores).

Desde una perspectiva académica, creo que Haskell sería el más atractivo para usted. Si estás interesado en IA o lógica, entonces Prolog también es una excelente opción.

+0

Para ser justos, si está aprendiendo cómo diseñar OO 'de la manera correcta', puede hacerlo por su cuenta. Ruby incluso te da un objeto básico con el que perder el tiempo que contiene casi nada más que la mecánica básica de lo que significa ser un objeto en Ruby, por ejemplo. El diseño es puramente de él. Las API son solo cosméticas. – egervari

1

Si quieres aprender cosas sobre informática, aprende Scala. Ese es el lenguaje informático del futuro. Vea si puede aprender eso;)

De lo contrario, Ruby es un buen lenguaje para aprender si quiere hacer más comercializables después de sus estudios, ya que es probablemente el más fácil obtener un trabajo después.

Los algoritmos y las estructuras de datos están muy bien, pero no se olvide de la arquitectura y el diseño de alto nivel.Esto es realmente importante: poder diseñar cosas a gran escala que no apestan a un diseño deficiente. De las 3 opciones, Ruby tiene mucho que mostrarte aquí. Lo mismo ocurre con Scala.

Todos los idiomas pueden hacer cosas de CS, por lo que no veo cómo un lenguaje será en detrimento. Claro, un idioma puede ser más elegante que otro, pero la gente solía expresar cosas del nivel CS en C y C++ en el pasado, así que realmente, no puedes equivocarte si solo estás tratando de aprender el concepto y no volverte 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.

+0

He editado mi pregunta en respuesta a su respuesta. ¿Podría ampliar sus pensamientos sobre Program Architecture y Ruby? También debería haber mencionado que ya soy muy versado en informática, no soy un principiante. –

+1

Ruby es un buen lenguaje de los 3 porque puedes hacer básicamente todo con él, y tiene el efecto secundario de ser útil después de tus estudios. Es realmente una obviedad. – egervari

+1

No es tanto que un idioma sea en detrimento, sino que Haskell y Prolog son tan * completamente diferentes que serán beneficiosos. Realmente no se puede desarrollar una comprensión profunda de, por ejemplo, la programación lógica de retroceso mientras se trabaja, por ejemplo, en C, sin hacer todo el trabajo pesado por sí mismo. Por otro lado, trabajar en Prolog más o menos requiere y alimenta esa comprensión. Haskell es similar con su pureza y poderoso sistema de tipos. No obtendrás una buena comprensión de algo así dentro de Ruby, no sin Grappensing serio, que es una pérdida de tiempo para todos. –

4

Ruby y Python son bastante similares en términos del CS real que su cerebro obtendrá de él; las diferencias son en gran parte estéticas y pragmáticas. Áreas en las que son esencialmente las mismas:

  • Ambos idiomas tienen un fuerte y dinámico tipado.
  • Ambos admiten 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 lo explícito es mejor que lo implícito.

Si usted está interesado en los intérpretes, los marcos y las pruebas, puede ser vale la pena battle los dos, pero desde un punto de vista teórico que aprenderán mucho más de Haskell o Prolog.

3

He estado programando profesionalmente durante más de 20 años, y tengo muchos idiomas diferentes, desde ensamblador y C hasta varios SQL. Tener ese rango me da una buena caja de herramientas para elegir cuando necesito hacer algo.

Cada idioma tiene sus puntos fuertes y saber lo que son ayudará a medida que avanza en su carrera. Ningún idioma es el final, todos los lenguajes de programación y cuantos más idiomas conozca, más podrá lograr y más fácil le resultará aprender nuevos lenguajes.

+0

Esa es una respuesta muy buena, pero no se relaciona con mi pregunta. en absoluto. :-) –

+0

En más de 20 años, puede que te sientas diferente. –

4

La respuesta a las dos preguntas siguientes son, en general, la misma:

  • Si ya sé Python, ¿qué voy a aprender de Ruby?
  • Si ya conozco a Ruby, ¿qué aprenderé de Python?

La respuesta a ambas ser:

  • Nada importante, aparte de una manera ligeramente diferente de hacer las cosas.

Ambos son lenguajes OO dinámicos. Ruby se presta a ser un poco más funcional, mientras que Python tiene otras cosas que son agradables (lista de comprensión). Sin embargo, en general, no vas a aprender mucho que generalmente se aplica a la informática yendo de uno a otro.