tutorial sirve que para descargar caracteristicas python ruby lisp

sirve - Aconseja sobre Ruby vs Python, para alguien a quien le gusta mucho LISP



ruby tutorial (12)

Soy un desarrollador de C ++, ingresando lentamente al desarrollo web. Me gusta mucho LISP pero no me gusta AllegroCL y los marcos web disponibles para LISP. Estoy buscando más libertad y capacidad para hacer hacks geniales en el nivel de idioma. No considero las pestañas como un crimen contra la naturaleza.

¿Cuál está más cerca de LISP: Python o Ruby?

Parece que no puedo elegir entre Python y Ruby: parecen muy similares, pero aparentemente Ruby es más funcional y orientado a objetos, lo cual es bueno, mientras que Python se parece más a Perl: un lenguaje de scripting simple. ¿Tengo la impresión correcta?

PD - Esto podría parecer un cebo de fuego, pero no es realmente así, solo estoy tratando de no volverme loco por el TOC sobre el cambio de RoR a Python / Django y viceversa.


Alex Martelli da un buen análisis del tema . Ahora está un poco anticuado, pero estoy de acuerdo con su esencia básica: Python y Ruby son dos formas diferentes de implementar lo mismo . Seguro que hay algunas cosas que puedes hacer en Ruby que no puedes hacer en Python. Y seguro que la sintaxis de Python es (posiblemente) mejor que la de Ruby. Pero cuando se llega a eso, no hay una gran cantidad de razones objetivas y científicas para preferir una sobre la otra.

Una cosa común que escucharán es esta: la plataforma es más importante que el lenguaje y Python tiene una mejor plataforma que Ruby (este argumento funciona en ambos sentidos, así que no me voten, todos ustedes rubyists). Y hay algo de verdad en eso. Desafortunadamente, no es muy relevante sin embargo. Si no le gusta la plataforma para ninguno de los dos idiomas, existen implementaciones tanto en Java como en .Net, por lo que puede usarlas si tiene dudas sobre la plataforma.


Hablando como un "Rubyista", estaría de acuerdo con Kiv. Ambos lenguajes otorgan una buena cantidad de margen cuando se trata de paradigmas de programación, pero también tienen ventajas / deficiencias. Creo que los compromisos que haces de cualquier manera son mucho sobre tu propio estilo y gusto de programación.

Personalmente, creo que Ruby puede leer más como pseudocódigo que Python. En primer lugar, Python tiene un espacio en blanco activo, que si bien es elegante a los ojos de muchos, no tiende a entrar en la ecuación cuando escribe un seudocódigo. Además, la sintaxis de Ruby es bastante flexible. Esa flexibilidad causa muchas peculiaridades que pueden confundir, pero también permite un código que es bastante expresivo y agradable de ver.

Finalmente, realmente diría que Ruby se siente más Perl-ish para mí. Eso se debe en parte a que estoy mucho más cómodo con él, así que puedo hackear guiones bastante rápido. Sin embargo, mucha de la sintaxis de Ruby fue tomada de Perl, y no he visto mucho código Python que se sienta similar (aunque, de nuevo, tengo poca experiencia con Python).

Dependiendo del enfoque de programación web que quiera tomar, creo que los tipos de marcos web disponibles en cada idioma podrían ser un factor decisivo. Yo diría que los prueba a los dos. Puedes obtener un conocimiento práctico de cada uno de ellos en una tarde, y aunque no estarás escribiendo increíbles Ruby o Python, probablemente puedas establecer una sensación para cada uno y decidir cuál te gusta más.

Actualización: creo que tu pregunta debería ser en realidad dos discusiones separadas: una con Ruby y otra con Python. Las comparaciones son menos importantes porque comienza a debatir los méritos de las diferencias, en lugar de a qué idioma funcionará mejor para usted. Si tienes preguntas sobre Ruby, estaría más que feliz de responder lo mejor que pueda.


Si necesita soporte Unicode, recuerde verificar qué tan bien es compatible. AFAIK, el soporte de Python para Unicode es mejor que el de Ruby, especialmente desde Python 3.0. Por otro lado, a Python 3 todavía le faltan algunos paquetes populares y bibliotecas de terceros, por lo que podría jugar en contra.


Soy un Pythonista; sin embargo, en función de sus requisitos, especialmente los "hacks geniales en el nivel de idioma", le sugiero que trabaje en Ruby. Ruby es más flexible en el modo Perl y puedes hacer muchos hacks; Python está orientado hacia la legibilidad , lo cual es algo muy bueno, y generalmente los hacks de lenguaje son un poco mal vistos. Los tipos básicos de Ruby se pueden modificar de una manera hackosa, lo que normalmente permiten los lenguajes prototipo, mientras que los tipos básicos de Python son más adecuados para la creación de subclases.

Por cierto, agregaría una corrección menor: tanto Ruby como Python están muy orientados a objetos, y ninguno de los dos está destinado a ser usado para guiones rápidos y sucios a la manera de Perl. Entre los dos, Ruby es sintácticamente más similar a Perl que a Python.


Soy un Rubyista que eligió el idioma basado en criterios muy similares. Python es un buen lenguaje y disfruto trabajar con él también, pero creo que Ruby es un poco más Lispy en el grado de libertad que le da al programador. Python parece imponer sus opiniones un poco más (lo cual puede ser algo bueno, pero no está de acuerdo con nuestros criterios aquí).

Python ciertamente no es más Perlish-Ruby es esencialmente un mashup Smalltalk / Perl (algunas de sus características menos utilizadas se extraen directamente de Perl), mientras que Python solo se relaciona lejanamente con cualquiera de ellas.


También recomiendo el artículo de Peter Norvig que namin publicó. Si desea ver la programación funcional en Python, consulte el módulo de functools en la biblioteca estándar.

También hay mucho espacio para hackear en Python; las variables privadas son por convención y no se aplican, por lo que puede hurgar en el estado interno de los objetos si así lo desea. Por lo general, esto no es necesario, sin embargo.

Tanto Ruby como Python están muy orientados a objetos y admiten programación funcional; No diría que ninguno es claramente superior para su proyecto; es en parte una cuestión de gusto personal.


Tanto Ruby como Python están bastante lejos de las tradiciones Lisp de datos inmutables, programas como datos y macros. Pero Ruby es casi un clon de Smalltalk (y espero que crezca más como Smalltalk ya que el fragmento Perlish está en desuso), y Smalltalk, como Lisp, es un lenguaje que lleva una idea a extremos. Basado en tu deseo de hacer hacks geniales en el nivel de idioma, me gustaría ir con Ruby, ya que hereda gran parte de la mentalidad de metaprogramación de Smalltalk, y esa mentalidad está conectada con la tradición Lisp.


elija el más popular para su dominio para que su trabajo obtenga la mayor visibilidad. algunos podrían decir ruby ​​/ rails para web, python para todo lo demás. elegir un idioma solo porque es como un ceceo no es apropiado para un profesional.


Peter Norvig , un famoso y gran celador , convertido a Python. Escribió el artículo Python for Lisp Programmers , que puede encontrar interesante con su comparación detallada de características.

Python se parece a un pseudocódigo ejecutable. Es fácil de aprender y, a menudo, usar tu intuición simplemente funcionará. Python te permite poner fácilmente tus ideas en el código.

Ahora, para el desarrollo web, Python podría parecer una opción más dispersa que Ruby, con la gran cantidad de frameworks web de Python disponibles. Aún así, en general, Python es un lenguaje muy agradable y útil para saber. A medida que los nichos de Ruby y Python se superponen, estoy de acuerdo con Kiv en que es en parte una cuestión de gusto personal cuál elegir.


Yo iría con Ruby. Tiene todo tipo de metaprogramación y pirateo de patos que hacen que sea muy fácil de extender. Las características como bloques pueden no parecer mucho al principio, pero crean una sintaxis realmente limpia si las usa correctamente. Las clases abiertas pueden depurar el infierno si te equivocas, pero si eres un programador responsable, puedes hacer cosas como 2.days.from_now (ejemplo de Rails) realmente fácilmente (Python puede hacer esto también, creo, pero con un poco más de dolor)

PD: Echa un vistazo a "Por qué Ruby es un LISP aceptable" .



Devils Advocate: Who Cares?

Ambos son buenos sistemas y tienen un ecosistema de buenos marcos web y comunidades de desarrolladores activos. Supongo que estás enmarcando tu decisión según los criterios equivocados. La pregunta parece que te preocupa si aciertas en los problemas de implementación u otras dificultades eligiendo uno sobre el otro. No lo hagas

Esto es similar a las decisiones de Java / .Net. Puede haber razones convincentes en una instancia específica, pero factores suaves como la familiaridad del arquitecto con la plataforma son un pronosticador mucho más fuerte del éxito del proyecto.

Debo admitir que he usado Python mucho más que Ruby, pero no diría que tengo ninguna gran preferencia entre los dos, aparte de la familiaridad. He usado Python una y otra vez desde aproximadamente 1998 y me gusta Smalltalkish-ness de Ruby ya que usé Smalltalk brevemente hace unos 15 años. Ambos hacen cosas similares de forma ligeramente diferente.

Me gustaría ciertas características de Ruby (o Smalltalk para el caso), pero Python no funciona de esa manera. En cambio, tiene otras características y las expresiones idiomáticas del idioma son ligeramente diferentes de Ruby o Smalltalk. Varios de los otros carteles se han vinculado a artículos que los comparan.

Si te preocupas por Rails vs. Django, eso sugiere que estás buscando una plataforma para aplicaciones web. Ambos lenguajes tienen un buen soporte de herramientas y una comunidad de desarrolladores activa. Django parece ser el ganador del combate cuerpo a cuerpo de Python y Rails parece estar en el proceso de ''cruzar el abismo'' y llevar a Ruby consigo. Ambos son sistemas razonablemente maduros y se ha demostrado que funcionan bien para volúmenes de tráfico respetables.

ProTip: la presencia de guerras religiosas es un buen indicador de que ninguna de las partes tiene un argumento convincente.

Entonces, voy a hacer de abogado del diablo y decir que preocuparse por la elección no tiene sentido. Los idiomas tienen ventajas y desventajas entre sí, pero nada que pueda verse como convincente en el caso general. Preocuparse por los méritos detallados de una plataforma u otra es enmarcar la decisión erróneamente.

Elige uno y úsalo. Podrás construir sistemas de manera efectiva con cualquiera de ellos.