Categorías
Python

Creación de un proyecto Django

 

Hoy estoy hablando a Brett Slatkin , un ingeniero de software principal de Google y el autor del libro de programación Python eficaz Python. Únase a nosotros para discutir la experiencia de trabajar con Brett Python en Google, refactorización, y los desafíos que enfrentó al escribir la segunda edición de su libro. Sin más preámbulos, vamos a entrar en ella!

Ricky: Bienvenido a real Python, Brett. Estoy contenta de que podría unirse a mí para esta entrevista. Vamos a empezar la misma manera que lo hacemos con todos nuestros clientes. ¿Cómo se obtiene en la programación, y cuándo empezar a usar Python?

Brett: Gracias por invitarme! Mi camino a la programación fue largo y variado. Pitón era un giro sorprendente al final de mi educación. Era algo que nunca esperaba, pero fue una bendición. Una vez que aprendí el idioma, me enamoré de ella.

Cuando yo era pequeña, mi familia tenía ordenadores en nuestra casa, que era un enorme privilegio. Siempre me ha gustado desmontar cosas para ver cómo funcionaban, y yo no recuerdo un momento en que no estaba usando computadoras y tratando de descifrarlos. Una de las historias favoritas de mi difunto abuelo era sobre el tiempo que estaba teniendo un problema de impresión y fijada por él. (Que tenía 3 años de edad.)

En el quinto grado, toda mi clase fue a algún día laboratorio de computación y programado con el logotipo en una IIgs Apple. Tengo la suerte de que mi madre animó mi interés en la programación después de que mediante la compra de libros de mi y me inscribirse en los campamentos de verano nerd. Solía ​​kits de LEGO Technic centro de control para programar las máquinas pequeñas. Estos fueron los precursores de Lego Mindstorms de hoy en día. También

Solía ​​Borland Delphi para construir aplicaciones GUI simples, como adivinar los juegos de números. A continuación, el personal de mi café de Internet local me mostró Unix, Linux, y C, que me voló la cabeza. Fue entonces cuando supe que quería ser un programador cuando fuera grande.

Durante la escuela secundaria, me tomó clases gratuitas en mi universidad local y estudió C, C ++, 86 de montaje, y el desarrollo del juego. Leí segunda edición de Scott Meyers’ de eficaz C ++ y se convirtió en un gran fan de C ++ y todas sus características arcanos. Un verano, tuve una pasantía no remunerada con una burbuja de inicio del punto com donde escribí aplicaciones web en ASP y VBScript. Yo estaba más que entusiasmado con la programación de la red y trató de construir mis propias versiones de DikuMUD y Línea Directa.

En la universidad, se especializó en ingeniería informática porque quería entender cómo las computadoras trabajaban a nivel de transistor. La mayor parte de mi curso era la ingeniería eléctrica, donde solía herramientas como SPICE, VHDL, y MATLAB programación. Para clases de informática, aprendí LISP y escribió una gran cantidad de Java. Yo era un ayudante de enseñanza para una variedad de clases y enseñar a otros lo disfrutamos mucho.

Por último, mi primer encuentro con Python fue en 2003 cuando estaba buscando la forma en que funcionaba el cliente de BitTorrent. (Era de código abierto en aquel entonces.) Pensé que el código era feo, porque de todos los métodos especiales __dunder__, y yo ignoraba el idioma para todos mis proyectos!

fui a Google en 2005 después de graduarse de la universidad porque parecía que el mejor lugar para aprender más acerca de la programación de la red. Pero en aquellos días anteriores de la compañía, no le dieron a escoger lo que trabajó como un nuevo empleado. Usted se acaba de asignar a un equipo.

En mi primer día, mi jefe me dio una copia del libro Python en una cáscara de nuez y me dijo que fuera una solución 25KLOC ~ base de código que se rompió. Pensé que en el trabajo que estaría escribiendo C ++ para sistemas en red, pero terminé tener que hacer algo completamente diferente. Lo que hizo fue empeorar las cosas que yo estaba en mi propia debido a que el programador original se había ido de vacaciones obligatorias debido al agotamiento!

Por suerte, Alex Martelli era un colega en el equipo me uní. Fue el autor del libro Python en una cáscara de nuez y él me ayudó a aprender el idioma. Yo era capaz de reescribir la mayor parte del código base heredé, solucionar sus problemas fundamentales, y reduce la escala de la producción de toda la flota de Google de máquinas. Lo creas o no, este código se encuentra todavía en uso hoy en día, casi 15 años después.

La productividad que se obtienen de Python fue dramático en comparación con mi experiencia con C ++ y Java. Mi perspectiva sobre la programación y lenguajes había cambiado por completo. Yo estaba emocionado ahora sobre Python!

Ricky: Ya hemos tocado en el uso de Python en Google, donde ahora eres un ingeniero de software principal, sino en su mandato, que lanzó el primer producto de la nube de Google, App Engine. Ahora usted es el responsable técnico sobre encuestas de Google, entre otros proyectos. Cómo instrumental fue Python en ayudar a desarrollar estos, y lo que el futuro de la mirada de Python como en Google?

Brett: No hay duda de que debo mi carrera en Google para Python, pero hay más a la historia. Como antecedente, es importante que usted sepa que los cinco ingenieros que fundaron App Engine fueron originalmente usando JavaScript, similar al servidor de Livewire de Netscape a partir de 1995. Sin embargo, esto fue antes de la liberación de cromo y las grandes mejoras en el rendimiento de V8, que condujo a NodeJS.

Los fundadores estaban preocupados de que del lado del servidor JavaScript haría que el sistema parece demasiado nicho. Ellos querían proporcionar a la pila LAMP, que era muy popular en ese momento. La “P” en LAMP se puso de pie para Perl, PHP, Python o. Perl fue en general en su salida de estilo, y PHP no es un lenguaje de Google utiliza internamente. Pero Python era, gracias a Peter Norvig, y así fue la elección natural.

Empecé en el equipo de App Engine con un proyecto de 20% a finales de 2006, cuando he implementado el dev_appserver en Python. Antes de eso, no había manera de ejecutar localmente una aplicación antes de implementarlo. Estaba tan emocionado por el potencial del producto y su uso de Python que me mudé a trabajar en él a tiempo completo poco después.

Guido van Rossum, que también trabajaba en Google a continuación, pronto se unió a nosotros. Tuve el privilegio de hacer interesante la demostración en vivo durante el evento de lanzamiento en 2008, donde escribí una aplicación web en Python desde cero y se despliega en tan sólo unos minutos. Colaboré con Guido en una variedad de proyectos a lo largo de los años, el más interesante de los cuales era NDB (el precursor de asyncio) que la beta probado ampliamente.

Lo que más me gustó fue que escriben aplicaciones completas con Python en el entorno de App Engine para empujar los límites del producto. Con frecuencia me gustaría romper el sistema con mis aplicaciones de demostración por golpear nuevas barreras que no nos dimos cuenta que teníamos. Esto nos llevaría a construir mejoras en la infraestructura para asegurar que la próxima aplicación que necesita a escala, como Snapchat, no afectaría a los mismos problemas.

Mi aplicación de demostración favorito era el protocolo PubSubHubbub y concentrador que Brad Fitzpatrick y yo desarrollamos juntos. El protocolo volvió canales RSS en corrientes en tiempo real. Esto llevó a la vivacidad de servicios como Twitter a la web abierta.

En su altura, nuestra aplicación concentrador estaba procesando millones de piensos y miles de peticiones por segundo, todo ello utilizando Python en App Engine. Desde entonces, el centro se ha integrado en la infraestructura de rastreo web estándar de Google. PubSubHubbub (ahora llamada WebSub) se convirtió en parte de un grupo más grande de especificaciones que compone ostatus, lo que ayudó a que Mastadon fuera de la tierra.

Google encuestas comenzaron como aplicación Python otra demostración en App Engine. Me prototipo final de punta a todo el sistema en tan sólo unas semanas. Mi co-fundador y yo tuvimos la oportunidad de demostrar que fuera a Larry Page, y él greenlit el proyecto. Hemos puesto en marcha un año más tarde con un equipo magra, gracias al apalancamiento que ofrece Python.

Nuestros servicios ahora manejan 500K + solicitudes por segundo y afectan a la mayoría de los usuarios y los ingresos de Google. El código base ha crecido de ~ 10 KLOC a más de 1MLOC, con la mayor parte de él que es en Python. Hemos tenido que migrar algunos servicios en ir, C ++ y Java como hemos golpeado varias costo de CPU y las limitaciones de latencia, pero Python todavía está en el centro de todo lo que hacemos.

Python ha encontrado su lugar en Google principalmente como herramienta para la ciencia de datos, aprendizaje automático, y DevOps / SRE. En este momento, los ingenieros de toda la compañía están trabajando para deprecating Python 2 y mover todo el monorepo a Python 3 para mantenerse en línea con la comunidad Python y paquetes de código abierto.

Ricky: En la parte superior de lo que acabamos de hablar, usted es también autor del popular libro de programación Python, Python eficaz, que previamente hemos revisado en Los mejores libros de Python. Que ha publicado recientemente una segunda edición, que tiene cambios sustanciales. ¿Qué significan los cambios incluyen, y lo que ha cambiado desde la primera edición?

Brett: Gracias por considerar mi libro de uno de los mejores! La respuesta a la primera edición ha sido maravillosa. Incluso fue traducido a ocho idiomas! Hay una gran cantidad de información sobre el nuevo libro en el sitio web oficial, incluyendo la mesa llena de contenidos con todos los títulos de los elementos, una variedad de muestras, y el código de ejemplo.

La segunda edición de eficaz Python es casi el doble de la longitud del original y revisa significativamente todos los elementos de asesoramiento, además de proporcionar más de 30 nuevos. La primera edición del libro se escribe de nuevo en 2014 con Python 2.7 y Python 3.4 en mente. Tanto se ha añadido en Python 3.5 a través de Python 3.8 en los últimos 5 años, así que no había mucho que escribir sobre! El estilo general es el mismo y que todavía incluye resaltado de sintaxis de varios colores.

El nuevo libro cubre el operador de morsa, F-cuerdas, las mejores prácticas para los diccionarios, decoradores de clase, y todas las características importantes de las funciones (incluyendo la ejecución asíncrona). De entrar en los detalles de las generalizaciones desembalaje y personalizados clasificación, instalaciones de pruebas, y el rendimiento algorítmico en la biblioteca estándar. También explico cómo aprovechar las herramientas más avanzadas, tales como el módulo de escribir y el tipo memoryview.

En esta nueva edición, mi consejo sobre metaclases ha cambiado por completo, gracias a la adición de __init_subclass__ y __set_name__ a la lengua. Mi recomendación para el uso del generador de avanzada con send () y un tiro () ahora es lo contrario de lo que era en la primera edición. (Digo, pues, para evitarlos.) Comparo los beneficios de asyncio a las discusiones y procesos, que tuvo lugar en absoluto antes. Proporciono una guía sobre cómo convertir el código sincrónico de código asíncrono, así como la forma de mezclar asyncio con hilos.

alguien por ahí que lee el libro, por favor no dude en enviarme preguntas o comentarios!

Ricky: En PyCon 2016, que dio una charla titulada Refactoring Python: ¿Por qué y cómo reestructurar su código, que hizo que nuestra lista de los 10 tienen que ver los PyCon conversaciones, también. Tengo curiosidad por conocer sus motivaciones para dar la charla. ¿Qué había en la refactorización (o la falta del mismo) que se inspiró para dar una charla al respecto? ¿Las personas parecen luchar con refactorización? Están cayendo por las mismas trampas comunes?

Brett: Gracias por incluyendo mi charla en su lista de los diez!

Cuando puse esta charla juntos, yo había estado trabajando en la misma base de código durante unos seis años. Cualquier código de esa edad necesita ser reprogramado y actualiza constantemente para evitar que se pudra y convertirse en inutilizable.

la podredumbre que estoy hablando sucede cuando dependencias cambian de manera incompatible con versiones anteriores, cuando los cambios de infraestructura subyacente tengan diferentes características de rendimiento, o cuando las decisiones de producto rompen un gran número de supuestos anteriores. Por lo tanto, la refactorización era una necesidad en curso y que estaba en mi mente con frecuencia. Esta experiencia me dio una nueva apreciación de lo importante que es la habilidad de refactorización.

gente suele hablar de cómo las pruebas, herramientas y marcos que hacen los programadores más eficaces. Pero creo que la refactorización es la gran habilidad fundamental underappreciated que las necesidades de cada programador centrarse en mejorar. ¿Por qué? En mi opinión, el mejor código es el código que no existe y ha sido eliminado o no fue escrita. El mejor programa que puede tener es un archivo .py vacía. La pregunta es ¿cómo se consigue desde donde estás en un proyecto para acercarse a ese ideal? Por refactorización.

quería ayudar a los otros programadores en mi equipo a aprender cómo llegar a ser mejor en la refactorización, pero el libro Refactoring por Martin Fowler no había sido actualizado desde 1999. Así que estaba considerando la posibilidad de escribir una versión específica de Python el libro de modernización en algo mis colegas podían leer. Sin embargo, pongo en espera de que cuando supe que Fowler estaba trabajando en la segunda edición de Refactoring , que desde entonces ha sido puesto en libertad y utiliza JavaScript como el lenguaje de implementación.

Por desgracia, aún está lejos de lo que necesito. Me gustaría ver un libro específico de Python refactorización, o un conjunto de ejemplos viables, que se aprovechan de todo lo que el lenguaje tiene que ofrecer.

Ricky: Ahora para mis últimas preguntas. ¿Qué más se puede conseguir hasta en su tiempo libre? ¿Qué otras aficiones e intereses tiene usted, aparte de Python y la programación?

Brett: Tenemos dos niños muy pequeños en casa, así que mi esposa y yo pasamos mucho tiempo con ellos. Cantar canciones y tocar música (piano principalmente, pero a veces la guitarra, ukelele, xilófono, y la armónica) han sido las mejores maneras de disfrutar de nuestro tiempo juntos. Soy terrible en todos estos instrumentos, y no un gran cantante o bien, pero todavía tenemos un montón de veces agradables.

me gusta estar afuera todos los días, ya sea caminando por las colinas de San Francisco o salir a correr (por lo general mientras empuja un cochecito). Me encanta hacer surf cuando tengo la oportunidad. Me gusta leer, especialmente de larga duración periodismo, pero en realidad, es sobre todo reddit y langostas. Me gustaría ser un mejor cocinero y encontrar el equilibrio adecuado entre la pereza y la exquisitez. También estoy tratando de enseñar a mí mismo cómo construir modelos estadísticos utilizando métodos bayesianos. Si algo he aprendido en los últimos años, es que nada es seguro.

Gracias, Brett, por acompañarme esta semana! Puede encontrar Brett en Twitter o GitHub, y aprender más sobre la segunda edición de Python eficaz en effectivepython.com.

Si hay alguien que me gustaría entrevistar en el futuro, a continuación, llegar a mí en los comentarios, o bien, enviando un mensaje en Twitter. codificación feliz!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *