2 puntos por GN⁺ 2024-02-17 | 1 comentarios | Compartir por WhatsApp
  • Libro introductorio de Python para personas que están aprendiendo a programar por primera vez o que tuvieron dificultades en intentos anteriores; se puede pedir la 3.ª edición en papel y en formato ebook
  • Todo el libro está en formato de Jupyter notebooks, así que se puede leer el texto, ejecutar código y resolver ejercicios dentro del mismo flujo
  • Los notebooks de cada capítulo se pueden ejecutar directamente en Colab, por lo que es fácil empezar a estudiar sin instalar nada aparte
  • La 3.ª edición reorganiza el recorrido de aprendizaje con una revisión del contenido, algunos cambios en el orden de los capítulos y más ejercicios
  • Las sugerencias al final de cada capítulo sobre cómo usar ChatGPT y Colab AI sirven como apoyo para obtener explicaciones adicionales y ayuda con los ejercicios cuando uno se atasca

Libro introductorio de Python para quienes empiezan desde cero

  • Think Python es un libro introductorio de Python para personas que recién se acercan a la programación, o que ya lo intentaron antes pero tuvieron dificultades
  • La 3.ª edición en papel y en ebook se puede pedir en Bookshop.org y Amazon
  • La página oficial del libro en Green Tea Press se puede ver en Think Python 3rd Edition
  • La 3.ª edición está compuesta enteramente como Jupyter notebooks, reuniendo en un solo lugar el texto, el código ejecutable y los ejercicios
    • Los notebooks se pueden ejecutar en Colab, lo que reduce la necesidad de instalación
    • El contenido fue revisado de forma importante y algunos capítulos fueron reordenados
    • Hay más ejercicios
    • Al final de cada capítulo se incluye cómo usar ChatGPT y Colab AI para el aprendizaje y la resolución de ejercicios

Notebooks de Colab y materiales para usar en clase

1 comentarios

 
GN⁺ 2024-02-17
Opiniones en Hacker News
  • Esta noticia me alegra muchísimo. Cuando publicamos Practical Deep Learning for Coders con Jupyter Notebook, hablé con Allen de hacer lo mismo con algunos de sus libros.
    Ahora eso ya está en marcha y, mejor aún, sumaron herramientas geniales como turtle basado en Jupyter, que muestra gráficos en línea dentro del notebook.
    Creo que, cuando salga, tiene muchas posibilidades de convertirse en la mejor forma de aprender programación en Python.
    Recuerdo que antes también mostré una prueba de concepto convirtiendo parte de la 2.ª edición de este libro a notebooks de nbdev: https://github.com/fastai/nbdev_cards/blob/master/01_deck.ip...
    Ese notebook se renderiza en este HTML: https://fastai.github.io/nbdev_cards/deck.html

    • Me gustaron mucho Think Bayes y Think Stats, pero cuando todos los demás estaban usando notebooks, se sentía un poco desfasado.
      Cuando aprendo un lenguaje nuevo con cosas como AdventOfCode, mi primera tarea siempre es crear una imagen de Jupyter para ese lenguaje.
    • Este tipo de código ocultable se ve muy bueno para documentación. Llevaba un tiempo buscando algo así.
  • La 2.ª edición de Think Python cambió el rumbo de mi vida. Tomé una clase de Java y la odié tanto que abandoné la programación, pero unos años después, trabajando como ingeniero de redes, apareció un problema que parecía poder resolverse con scripts; tomé Think Python y terminé enganchándome con Python y con la programación en sí.

    • Justo lo que necesitaba leer ahora.
      Estoy pensando en cambiar el rumbo de mi vida hacia roles de comunidad/maker/docente, y tengo una idea de freelance/pequeño negocio para enseñar, pero necesito material de “currículo flexible”.
      Durante mi trabajo como desarrollador web profesional nunca necesité Python, así que ahora lo estoy aprendiendo. He usado casi todos los lenguajes centrados en la web, incluidos Perl y Ruby.
      Python parece un lenguaje adecuado para enseñar conceptos generales, y creo que tener un libro de referencia ayudaría.
    • Como contraejemplo, empecé con bash/Perl, pasé a Python y al principio me encantó, pero empecé a tener problemas por el tipado dinámico.
      Por esa época el lenguaje principal del equipo se definió como Java, y después de ver las ventajas del tipado estático, ya no pude volver atrás.
      Desde entonces Python también mejoró mucho gracias al soporte de tipado opcional y a IDEs que lo hacen cumplir, pero hoy estoy completamente inclinado hacia lenguajes de tipado estático.
      Para escribir scripts utilitarios, todavía me gusta Python, que es mucho más pulido que usar solo bash. Pero si puedo elegir un lenguaje para una aplicación completa, prefiero Java/Scala, etc. Rust también es excelente, pero para la mayoría de la gente común la curva de aprendizaje es demasiado empinada.
      No he usado personalmente el tipado opcional de Python con soporte de herramientas como PyCharm, así que es posible que gracias a las herramientas la experiencia se haya vuelto parecida a la de un lenguaje de tipado estático. Si alguien ha usado IntelliJ Community Edition con la aplicación obligatoria de tipos en Python activada, me gustaría conocer su experiencia.
    • A mí me pasó algo parecido. Aprendí un poco de Java, Matlab, C y Perl, pero recién al leer la 2.ª edición de Think Python quedé completamente atrapado, y después de leer varios libros hice la transición a una carrera en software.
    • A mí también. Me había mudado de ciudad y estaba buscando trabajo; imprimí este libro y empecé a leerlo capítulo por capítulo, y gracias a él me convertí en ingeniero de software.
    • Gracias a Think Python, por primera vez entendí de verdad la programación orientada a objetos, que no había logrado comprender ni después de clases de C++, Java, etc.
  • Me gusta Think Python y se lo he recomendado a muchos estudiantes. Equilibra muy bien varios aspectos que un libro para nuevos programadores debe cuidar.
    Allen Downey publicó varios otros libros con un enfoque parecido: https://greenteapress.com/wp/
    Creo que algunos se fueron un poco de más hacia reducir el rigor, pero en general los libros que revisé me parecieron bastante buenos.
    Una vez compartí mesa con Allen en una conferencia, y cuando le conté con qué frecuencia recomendaba o compraba sus libros, creo que pensó que estaba exagerando.

    • El hijo de un amigo está en su último año de universidad y quizá vaya a Olin, que yo le recomendé. También conocí Olin gracias a Think Python.
  • Perdón por desviar un poco el tema, pero si uno ya tiene experiencia práctica y la sigue acumulando en el trabajo, ¿hay materiales de calidad similar para un desarrollador Python intermedio/avanzado?
    Siempre siento que hay grandes partes del lenguaje o de la biblioteca estándar que no conozco.

    • Empecé a aprender con la documentación oficial en tiempos de Python 1.5.2, y todavía creo que es un buen recurso.
      https://docs.python.org/3/tutorial/index.html
      https://docs.python.org/3/library/index.html
      Cada vez que sale una versión nueva leo el documento What’s New.
      Además, me gusta leer el código fuente de la biblioteca estándar y de paquetes populares de terceros. Este consejo se aplica en general no solo a Python, sino también cuando aprendes o retomas un lenguaje nuevo.
    • Effective Python me pareció bueno. Es un libro en formato de tips con recomendaciones acompañadas de casos de uso y ejemplos de aplicación.
    • Fluent Python es un buen libro para ese nivel, y también sirve como referencia mientras trabajas.
    • Me gusta https://effectivepython.com/
      Y muchas veces, con solo leer las implementaciones anuales de Advent of Code de Norvig, obtengo ideas sobre cómo escribir código Python elegante y conciso.
    • Fluent Python y Effective Python son buenos libros. El primero es muy grueso y, en la práctica, casi parece varios libros metidos en uno solo.
  • El autor publica en su blog sus proyectos recientes de Python, principalmente trabajos de análisis bayesiano de datos, en https://www.allendowney.com/blog/, y los estoy siguiendo con bastante interés.

  • ¿Qué libros hay para programación intermedia a avanzada en Python? Ya conozco Python y la programación en general, pero quiero mejorar más mis habilidades en Python.
    Por ahora solo conozco más o menos Fluent Python y CPython Internals.

    • Vale la pena considerar libros que muestren cómo se aplican las técnicas en código práctico real.
      Por ejemplo, Effective Pandas 2 muestra patrones comunes para trabajar con datos tabulares. En el proceso usa comprensiones, lambdas, desempaquetado, etc., y también muestra cómo refactorizar con pytest y cómo usar visualizaciones para entender los datos.
      Como referencia, yo soy el autor.
    • Con Fluent Python es suficiente. El resto de las características del lenguaje las vas entendiendo al leer el manual de referencia oficial.
    • También puedes mirar libros más generales sobre algoritmos y estructuras de datos, o libros relacionados con diseño.
      En https://www.redblobgames.com/ también hay muchos artículos muy ingeniosos.
    • También vale la pena revisar la 2.ª edición de Exercises in Programming Style, de Cristina Videira Lopes.
      Es un libro no tan conocido que explora varios estilos de programación para resolver el mismo problema bajo distintas restricciones.
    • Al final, ¿no se trata de documentación y código fuente?
      Cuando pasas cierto nivel de dominio, es decir, más allá del nivel básico de alguien que trabaja en la práctica, lo único que queda es leer y escribir código.
  • Artículos relacionados:
    Think Python 2e - https://news.ycombinator.com/item?id=35421096 - abril de 2023, 30 comentarios
    Think Python: How to Think Like a Computer Scientist - https://news.ycombinator.com/item?id=1586000 - agosto de 2010, 9 comentarios

  • Qué suerte. Justo empecé a mentorear a alguien en Python, y soy un gran fan de Downey. Es un educador y hombre renacentista realmente sobresaliente.
    Definitivamente voy a estar pendiente de este libro.

  • Este libro también me cambió la vida cuando aprendí a programar por primera vez. No tanto por un cambio de carrera, sino porque la forma en que estaba escrito y algunos conceptos hicieron que, de pronto, todo tuviera sentido para mí, que era un principiante absoluto.
    Ahora, al ver la 3.ª edición 10 a 15 años después, me da mucha nostalgia, y nunca me cansaré de recomendar este libro.

  • En la edición anterior, Think Java, me gustaba especialmente este pasaje: https://files.catbox.moe/v1vgdc.jpg
    Otra parte genial es esta:

    Lo genial fue lo que ocurrió después. Jeff Elkner, un profesor de preparatoria de Virginia, adoptó mi libro [Think Java] y lo tradujo a Python. Me envió la traducción, y tuve la peculiar experiencia de aprender Python leyendo mi propio libro.