Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

py2html

Este mes, cuando empecé a escribir código Python y quise publicarlo en mi blog, quería que se vea bien. Probé algunos coloreadores de código que encontré en la web, pero no me convencieron. Quería algo mas simple.

Entonces escribí un pequeño script que haga lo que yo quería, lo escribí logeado en la sesión ssh donde chequeaba mi correo electrónico.. y funciono! :-)

Le hice algunos arreglos antes de publicarlo, el más importante es la capacidad de aceptar muchos archivos como argumentos, entonces se puede usar por ejemplo así:

juanjo@platon:$ ./py2html.py *.py

Archivo comparacion.py procesado.

Archivo divisible.py procesado.

Archivo funcionesPF.py procesado.

Archivo maxRecurDeep.py procesado.

Archivo nullShell.py procesado.

Archivo py2html.py procesado.

Archivo tartaglia.py procesado.

Archivo whiteSpaces.py procesado.

Dejó el código fuente disponible por si a alguien le interesa, creo que es un buen ejemplo para empezar: py2html.py

¡Sugerencias son bienvenidas!


encontre mi carpeta de Algoritmos! :-D

Luego de estar desaparecida por más de dos años (Diciembre 2003), ayer apareció. Empecé a acomodar mi pieza (lang: dormitorio, habitación) --todavía no terminé-- y entre otras cosas (polvo, casettes, disquettes, revistas, libros, comida, una talent msx) desaparecidas encontré mi ya dada por perdida carpeta de Algoritmos y Estrucuturas de Datos:

Conversación entre A y B:

A: ¿Qué edad tienen tus tres hijos?

B: El producto de sus edades es 36 y la suma es igual al número de ventanas de la casa que vemos enfrente.

A: Necesito preguntarte algo más, ¿qué color de ojos tiene tu hijo mayor?

B: Azules

A: Entonces ya se las edades de tus 3 hijos.

El enunciado fué dado por el Profesor Marina durante los primeros días de cursado, pero no se la respuesta :-( ¿Alguien la sabe? ¿alguien puede adivinar las edades? En un margen tengo anotado: RTA: 9,2,2 ... pero no se por qué.. :-)


gnuplot

El año pasado escribí una guía sobre este programa para el proyecto Gleducar, en la introducción decía algo que cuando lo leí reien me gustó:

Los autores iniciales de gnuplot son Thomas Williams y Colin Kelly, quienes decidieron crear un programa que les permitiera visualizar las ecuaciones matemáticas de las clases de electromagnetismo y ecuaciones diferenciales. Ellos eran estudiantes igual que ustedes, se encontraron con un problema (ya que no contaban con una herramienta como esta) y le dieron una solución. Gracias a su generosidad, hoy está disponible para todos.

Lo encontré en la web con el formato de media wiki (el sistema que usan en Wikipedia) -- muy lindo, gracias a quien lo haya pasado!! les dejo el link por si quieren leerlo http://wiki.gleducar.org.ar/wiki/index.php/Manual_GNUPlot


Una pizca de Programación Funcional en Python

Otra cosa que leí es el apéndice A de TPiP : A Selective and Impressionistic Short Review of Python. Encontré muchas cosas interesantes que no conocía y encontré algunas cosas sobre programación funcional que estaba buscando: funciones anónimas, lambda, map, filter y reduce... siga leyendo!

Funciones anónimas:

Python toma de la programación funcional la posibilidad de definir funciones anónimas,

la desventaja de estas es que solo las podremos usar una vez, no podemos invocarlas por su nombre, no tienen :-)

Pero justamente esta es la idea, no tener que definir funciones (simples) que solo se usaran una vez, para usar por

ejemplo (aquí es donde las estoy usando) en funciones que esperan funciones como algunos de sus argumentos (ej: map, filter)

Estas fucniones no pueden (de forma natural) ejecutar más de una sentencia.

Ejemplos para probar en el intérprete:

Ejemplo 1:

>>> lambda x: x+1 # x es el argumento de la función anónima

function _lambda at 0x40219e2c_

Si bien la función fue definida, ya no podemos usarla, no tenemos como referenciarla.

Ejemplo 2:

>>> map(lambda x: x+1, [0, 1, 2, 3])

[1, 2, 3, 4]

Ejemplo 3: una forma de darle un nombre a una función definida mediante 'lambda'

>>> nombre = lambda x: x+1

>>> nombre(5)

6

map, filter y reduce:

Escribí un script con ejemplos sobre estas funciones: funcionesPF.py


tartaglia.py

La primer vez que escribí un código para el triángulo de tartaglia lo hice en Prolog y se me ocurrió que podría hacerlo en Python para practivar, lo hice de 4 formas distintas: tartaglia.py


Bases en Python

Hola, estuve leyendo algunas cosas estos días:

How to Think Like a Computer Scientist -- Learning with Python a pesar de ser un texto introductorio a la programación, me pareció muy piola para ordenar ideas dispersas sobre Python que venía leyendo en distintos lugares. Leí los 4 primeros capítulos, y el capítulo 7 sobre cadenas de caracteres (strings):

Capítulo 1: The way of the program: da una introducción a los programas de computadoras, intérpretes y compiladores. También introduce a Python como lenguaje a usar en el curso.

For example, Linux is an operating system that contains thousands of lines of code, but it started out as a simple program Linus Torvalds used to explore the Intel 80386 chip. According to Larry Greenfield, "One of Linus's earlier projects was a program that would switch between printing AAAA and BBBB. This later evolved to Linux." (The Linux Users' Guide Beta Version 1)

Capítulo 2: Variables, expressions and statements Introduce algo que me parece muy importante en Python, el shell interactivo --el autor lo usa para dar sus ejemplos--. Cuando en una terminal ejecutamos python:

$ python

accedemos al shell interactivo en el que podemos probar cosas que luego usemos en nuestros scripts:

Python 2.3.4 (#2, Aug 31 2005, 09:12:07)

[GCC 3.3.4 (Debian 1:3.3.4-9ubuntu5)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> 3+4

7

Capítulo 3: Functions Usar funciones, cómo definirlas.. no menciona lambda que es lo que yo esperaba encontrar :-).

Capítulo 4:Conditionals and recursion Este capítulo estuvo lindo, y mientras lo leía hice algunas pruebas simples:


Aprendiendo Python

Python es un lenguaje de programación interpretado[1], imperativo[2], dinámicamente tipado, multiparadigma[3] y usa bloques basados en la indentación (en lugar de llaves {...} como por ejemplo C).

[1] El código se compila a byte-code (como Java). Se lo suele llamar interpretado por que no requiere que para probar un cambio en un programa se pase por el ciclo de modificar-compilar-enalzar-probar, separando explícitamente la compilación. Utiliza una máquina virtual, como Small-Talk.

[2] No es declarativo como Prolog (paradigma lógico)

[3] Permite tanto una programación procedural, orientada a objetos o funcional (básico).

No se mucho más que esto (más algunas cosas que empecé a leer sobre su sintaxis y las estructuras de datos que provee --como listas, tuplas y diccionarios--). Siga leyendo!

Voy a ir aprendiéndolo de a poco y voy a ir publicando aca mis avances, con ejemplos de código para que quien quiera pueda usarlos para aprender. Incluso podemos ir aprendiendo juntos, espero leer comentarios.

Material de Estudio:

Un artículo escrito por Eric Raymond: http://www.linuxjournal.com/article/3882 (a modo de motivación)

Nos seguimos leyendo por aca! (en busca del cinturón amarillo-python)


Rivendel: lista de correos

Hace una semana empezamos con unos amigos una lista de correos llamada Rivendel, como la ciudad de los Elfos en El Señor de los Anillos. Allí compartimos noticias sobre computación en general. Pueden encontrar más información en esta dirección.



The Art of Unix Programming

TAOUP Cover

Este es un libro que me gustaría leer completo, por suerte puedo hacerlo desde mi computadora por que está completamente disponible en internet: http://www.catb.org/~esr/writings/taoup/

Título: The Art of Unix Programming

Autor: Eric S. Raymond

The Art of Unix Programming attempts to capture the engineering wisdom and philosophy of the Unix community as it's applied today — not merely as it has been written down in the past, but as a living "special transmission, outside the scriptures" passed from guru to guru. Accordingly, the book doesn't focus so much on "what" as on "why", showing the connection between Unix philosophy and practice through case studies in widely available open-source software.