Solo una precisión ;o) 2010/2/8 Chema Cortes <pych...@gmail.com>: > El día 8 de febrero de 2010 16:39, Olemis Lang (Simelix) > <olemis...@gmail.com> escribió: > >> pero los bloques de código de Ruby son muy cómodos y potentes (y no >> hay nada como eso en Python) > > Cómodos sí, pero no diría tanto como que no hay nada en python. En > python puedes hacer casi lo mismo con iterables, con la posibilidad de > usar la sencillez de la comprensión de listas para manejarlos (compara > código anidando bloques de código, por ejemplo). >
No creo estar completamente de acuerdo. Hay varias cuestiones entre ambos enfoques q creo q hay que destacar : - Si el tema es sobre el uso de bloques con `each` entonces esto es completamente corecto - Pero los bloques no se limitan necesariamente a eso. - Por ejemplo, en el caso de IO asíncrona muy frecuentemente se utilizan callbacks. En Python la única solución es escribir una función o «clase invocable» (i.e. callable) y pasarla como parámetro a alguna función o mecanismo de registro q tenga la API. Esto puede ser engorroso. En Ruby los casos sencillos pueden ser descritos con un bloque de código inline y queda más legible y menos «verbose» (más conciso). - Otro ejemplo, la solución al `case` o `switch` de Python basada en dict(s) implica q a cada llave se le asigne algo q, al ejecutarlo, se realiza lo q sea específico de esa alternativa. Pasa algo más o menos semejante, en Python resulta engorroso escribir una función para cada alternativa, sin el propósito de reutilizarla (sino solo para suplir una carencia del lenguaje) y la legibilidad es pésima, porq todo está separado y disperso y con un vistazo no se puede tener idea de lo q pasa. Con bloques inline como los de Ruby se podría mejorar esto. Claro, q en todos estos casos se pudiera utilizar un objeto de typo `code`, la función `compile`, o `exec`, pero el efecto no es el mismo ... IMO >> y, además, en Python no hay >> continuaciones *EXPLÍCITAS* , como sí las hay en Ruby . Por tanto si >> estos temas fueran objetos de estudio entonces Ruby sería más >> apropiado q Python > > El peligro de las "continuaciones" es el mismo que tenían los "gotos" > de no saber por dónde acabará el hilo de ejecución. > Lo más probable es > que desaparezcan del lenguaje tal como han desaparecido de jruby y > están desaconsejadas en ruby 1.9. No me gustaría q desaparecieran, pero bueno, estoy muy alejado de influir en esa decisión. > En python lo más parecido sería la > "función" yield. Sí, por eso dije *EXPLÍCITAS*, las funciones generadoras y las corutinas de Python hacen una continuación, pero implícita ;o) -- Regards, Olemis. Blog ES: http://simelo-es.blogspot.com/ Blog EN: http://simelo-en.blogspot.com/ Featured article: PEP 391 - Please Vote! - http://feedproxy.google.com/~r/TracGViz-full/~3/hY2h6ZSAFRE/110617 _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/