software2

TIMTOWTDI vs TSBO-APOO-OWTDI

2018-04-19, Comentarios

TIMTOWTDI significa “No es más que una manera de hacerlo”, un enfoque promovido por el Perl de la comunidad.

La mentalidad detrás de ella se obtiene se examinan en más detalle por el lenguaje del creador, Larry Wall, en una charla que dio en 1999: “Perl, el primer posmoderno en el lenguaje informático”. Él atribuye el lema de su hija, Heidi, quien dice que es una estrategia que funciona bien en su clase de matemáticas; y ella lo asocia con otra diciendo que se utiliza en la escuela: “Tsall Buena”. Esto no significa que todo está bien, o incluso todo lo que tiene buena bits. Esto significa que, en general, las cosas son buenas. Ver la imagen en grande.

Perl es la personificación del este. Es ecléctica e integradora, el apoyo a una variedad de estilos. One-liner? Bien! Como un script de shell? Seguro! Programación estructurada, orientada a objetos, funcional? Por qué no! Tsall buena.

Me gusta que.

Pero no me siento de esa manera acerca de la programación?

Un contraste mantra aparece en el Zen de Python, una lista de aforismos, el cual resume los principios rectores de Python diseño. Número de artículo 13 establece que “debería ser uno y preferiblemente sólo de una manera obvia de hacerlo”.

Tal vez dándose cuenta de que esto suena demasiado prescriptiva, esta regla es templado por el artículo 14, “a Pesar de que manera puede no ser evidente a primera, a menos que usted está holandés.”

Guido van Rossum, el de Python BDFL — Dictador Benevolente Para la Vida — sería el holandés persona que encuentra cosas obvias. Eso es correcto: el Dictador. Los programadores no les gusta que les digan qué hacer más de dos años de edad. Entonces, ¿cómo ha de Python vuelto tan popular?

Tal vez el énfasis recae en debe. No debe ser sólo una manera obvia de hacerlo: es sólo que — neerlandés o de otra manera — no hemos llegado allí todavía.

Por ejemplo, no es más que uno de Python. Obviamente hay Python 2 y Python 3, pero es menos obvio que va a utilizar. No te olvides de PyPy. Cada vez más Python viene con el procesamiento de datos y la visualización de las extensiones, que se sirve como un Jupyternotebook.

Hay más de un programa de módulo de opciones.

Cuando empecé con Python había getopt, el uno y único de la línea de comandos controlador. Viniendo de una C/C++ fondo yo estaba muy feliz de usar algo parecido a GNU getopt. Luego optparse apareció. Ahora hay argparse. Todas estas bibliotecas están fácilmente disponibles. Que debo usar? No optparse, que es obsoleto, a menos que ya estoy utilizando y funciona, que es. Con respecto a los demás contendientes, la documentación archly notas:

Los usuarios que no están familiarizados con el C getopt() la función o la que le gusta escribir menos código y obtener una mejor ayuda y mensajes de error deben considerar el uso de la argparse móduloen su lugar.

Hay otros que no-estándar de Python opciones para analizar una línea de comandos demasiado: que generar código a partir de el uso de notas, o por inspeccionando el código que se desea exponer.

Hay más de una manera de hacerlo.

Hay más de una unidad en el marco de prueba. La más obvia, unittest, como getopt, dibuja la inspiración de otros lugares — en este caso Java Junit. Por desgracia, el puerto es muy fieles, y usted tendrá que heredar de super clases etc para probar algo. Me gusta mucho PyTest, que se flexiona el lenguaje en sí para ofrecer la prueba de afirmaciones como afirmans.

También hay un doctest módulo en la biblioteca estándar que se ejecuta y comprueba el código que se encuentra en las cadenas (mantén ese pensamiento!), y hay muchas otras no estándar de los marcos de las pruebas.

Hay más de una manera de hacerlo.

No es más que una forma de cadenas de formato.

Como hemos visto hay más de uno Python, y las bibliotecas son siempre para la reinvención. Podría decirse que esta es la evolución en lugar de una multiplicidad de opciones. Es decir, la más reciente forma de hacerlo debe ser preferido.

Cuando se trata de formato de cadena, sin embargo, no ha siempre sido más que una manera de hacerlo, y más formas aún se están agregando.

¿El uso de "único" o "doble" de cotizaciones para una cadena? """Triple""" comillas. Raw cadenas? De materias primas con un r o de materias Primas con un R? TIMTOWTDI.

Lo que si desea incrustar el valor de una variable en una cadena? Los usuarios familiarizados con C printf() función podría preferir % formato. Los Fans de $shell $parámetro $de expansión puede utilizar la plantilla de las cadenas.

Avanzadas de formato de cadenastr.formato de — apareció en Python 3.0, adaptado para Python 2.6. No hay duda de que tiene ventajas sobre el % de formato, pero para mí es un poco más oscuro y un poco menos obvio. Python 3.6 presenta el f-cadenas , que se basan en str.formato y derribar mis reservas. La sintaxis permite evaluar expresiones en las cadenas: evidentemente Python es la partida en el Perl de la dirección.

Vamos a terminar volviendo a Perl, y a Larry Pared de la conferencia de 1999.

Cuántas veces hemos escuchado que el mantra de que un programa debe hacer una cosa y hacerla bien?

Perl no es ese programa. Perl quiere hacer todo bien. Se integra características y no hace ningún intento de homogeneizar a ellos.

Todos ustedes han escuchado el dicho que dice: Si todo lo que tienes es un martillo, todo lo que empieza a parecerse a un clavo.

Perl no es martillo: se ha memorable sido descrito como un ejército Suizo motosierra, pero Larry Wall compara a un más convencional de la herramienta.

Si todo lo que usted tiene es la cinta adhesiva, todo comienza a verse como un conducto. A la derecha. Cuándo fue la última vez que se utilizó cinta adhesiva en un conducto?

Python puede aspirar a ofrecer una manera obvia de hacer algo. Falla espléndidamente, siendo más cinta adhesiva de martillo.


He presentado en este blog como un rayo hablar en PyDiff un par de días atrás. Las diapositivas están aquí. La charla fue grabada demasiado: me aparecen unos 24 minutos.

Software almacen de Cea Ordenadores

Comentarios desactivados en TIMTOWTDI vs TSBO-APOO-OWTDI