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

Un fin de semana en UPG

Unidad de Producción Guadalupe es el nombre del pequeño campo que tiene mi familia en Carlos Pellegrini. Allí, además de la producción tradicional de la zona, tenemos algunos elementos no tan comunes; principalmente una huerta grande y distintos animales de granja. Hace unos fines de semanas estuvimos comiendo un asado con motivo del regreso de mi hermana de Brasil acompañados por la familia amiga Los Perotti (aproveché la ocasión para sacar algunas fotos), también estuvimos ahí el 25 de diciembre con mi primos y tíos, y muchos otros fines de semana. En la siguiente galería intercalo estas fotos con otras tomadas en los últimos meses para presentarles el lugar.

[gallery]

El título original del post quedó corto; terminé incluyendo fotos de muchos fines de semana!


Por qué nos gusta Python

El siguiente texto era parte del informe del proyecto final de carrera de Juan José Conti y Cecilia Lorena Puccinelli, titulado Desarrollo Ágil de un Sistema de Gestión de Negocios Inmobiliarios con Software Libre. Finalmente no fue incluido en la versión definitiva del mismo por lo que lo rescatamos en este blog.

Python

Python es un lenguaje de programación de propósito general de alto nivel. Su filosofía de diseño hace énfasis en lograr productividad para los programadores y legibilidad del código.

Fue creado en el año 1990 por Guido Van Rossum y desde entonces ha sido desarrollado como un proyecto del Software Libre por desarrolladores alrededor del mundo.

A menudo es comparado con lenguajes como C, Java, Perl y Lisp, pero tiene muchas características distintivas que marcan su identidad propia:

Intérprete interactivo

Python viene acompañado de un intérprete interactivo o read-eval-print-loop que permite agilizar el desarrollo de programas ya que se pueden probar ideas y rápidamete ver como resultan sin necesidad de escribir un programa entero en el cual envolverla. Otros lenguajes como Smalltalk, Haskell o Scheme también tienen esta herramienta.

El siguiente es un ejemplo sencillo de uso del intérprete interactivo, los comandos ingresados por el usuario están precedidos por >>>:

>>> 1 + 2

3

>>> "hola"

'hola'

>>> nombre = "fabio"

>>> "hola " + nombre

'hola fabio'

Tipos de datos poderosos

Python incluye de forma nativa tipos de datos poderosos muy útiles a la hora de programar. Las listas y tuplas son secuencias de objetos:

lista = [1,2,3, “cuatro”, Cliente()]

tupla = ('u', 1, 3)

Ambos tipos de datos pueden almacenar cualquier tipo de objetos en orden. La principal diferencia entre estos dos tipos de datos es que las listas pueden cambiar en forma dinámica su tamaño mientras que las tuplas son de tamaño fijo (se dice que es un objeto inmutable, como los números o cadenas de texto).

Los diccionarios son una estructura de datos sin orden que permite almacenar valores asociados a una clave para luego poder recuperarlos a partir de esta. Solo objetos inmutables pueden ser clave de un diccionario.

dicc = {'a': 1, 'b': 10}

dicc['a'] obtiene el objeto 1

dicc[3] = ‘tres’ agrega al diccionario el objeto ‘tres’ asociado a la clave 3 .

Espacios en blanco con significado

En Python los bloques se delimitan mediante el uso de indentación en lugar de utilizar llaves:

if carteles == 0:

    print “No hay carteles disponibles.”

else:

    print “Hay %d carteles disponibles.” % carteles

Esto tiene como objetivo forzar una correcta indentación que redunde en una mayor legibilidad del código escrito.

i = 20

while i > 0:

    print i

    i -= 1

Tipado de pato

El nombre tipado de pato surge de la idea: “si un objeto camina como pato y come como pato, entonces debe ser un pato”.

Las restricciones de tipo no son checkeadas en tiempo de compilación, sino que las operaciones sobre los objetos siempre se intentan llevar a cabo y fallan en tiempo de ejecución si el objeto no puede responder al mensaje que se le envió.

Supongamos que definimos la función saludar como sigue:

def saludar(o):

    print “hola %s“ % o.nombre

A esta función no lo interesa el tipo del objeto o, recibido como parámetro, lo único que le importa es que tenga el atributo nombre.

Así, si la variable m referencia un objeto de la clase Mujer y la variable h referencia un objeto de la clase Hombre y ambas clases tienen un atributo llamado nombre, entonces las siguientes llamadas se ejecutarán sin problemas:

saludar(m)

saludar(h)

Si la variable ‘a’ referencia a un objeto de la clase Anonimo y ésta no tiene un atributo llamado nombre, la llamada a:

saludar(a) lanzará una excepción.

Librería estándar amplia

Python viene con las baerías incluidas!

Al igual que Java, Python cuenta con una amplia librería estándar que acompaña al lenguaje. Ésta incluye módulos para manejar expresiones regulares, crear interfaces gráficas, conectarse a bases de datos entre muchos otros.

Ésta es una de sus mayores ventajas y a esto se debe la popular expresión “Python viene con las baterías incluidas”.

Librerías externas

Además de los muchos componentes incluidos en la librería estándar de Python, hemos utilizando algunas librerías externas:

  • PIL: librería para manejo de imágenes.
  • Pysicopg: conector para el motor de bases de datos PostgreSQL.
  • ReportLab: librería para generar documentos PDF.
  • BeautifulSoap: librería para procesar documentos HTML. Su uso es descrito en la sección 1.1.37.
  • Pynum2word: módulo que convierte números en palabras.


Automóviles y programas

"Si la industria automovilística hubiera seguido el mismo desarrollo que las computadoras, un Rolls-Royce costaría hoy 100 dólares, circularía un millón de millas con 3,7 litros y explotaría una vez al año, eliminando a todo el que estuviera dentro en ese momento"

-- Robert X. Cringely

Un clásico que mi amigo Joel me leyó hace muchos años cuando estábamos en la secundaria.

Robert X. Cringely, es el seudónimo de Mark Stephens, periodista estadounidense de temas informáticos, así como un seudónimo utilizado por varios columnistas de la revista Infoworld.

Este post es parte de Citas sobre programación.



Código re-editable

"Debo confesar un fuerte prejuicio en contra de la moda del código reusable. Para mí, "el código re-editable" es mucho, mucho mejor que una caja negra intocable."

-- Donald E. Knuth

Donald Ervin Knuth, es uno de los más reconocidos expertos en ciencias de la computación por su seminal investigación dentro del análisis de algoritmos y compiladores. Es Profesor Emérito de la Universidad de Stanford.

Se le conoce principalmente por ser el autor de la obra The art of computer programming (El arte de programar computadoras), una de las más respetadas referencias en el campo de las ciencias de la computación. Sentó las bases de y dio nombre al análisis de algoritmos y ha realizado numerosos aportes a varias ramas teóricas de la informática. Es el creador de TEX, del sistema de diseño de tipos METAFONT y del estilo de programación conocido como programación literaria (Literate programming).

Fuente: Wikipedia

Página web del autor: http://www-cs-faculty.stanford.edu/~knuth/

Este post es parte de Citas sobre programación.


Aprender a programar

"La formación en informática no puede convertir a nadie en experto programador, de la misma forma que estudiar pinceles y pigmentos puede hacer a alguien un experto pintor"

-- Eric S. Raymond

Lo que se necesita es practicar, practicar y practicar. Juntar horas de vuelo. Malcolm Gladwell publicó hace poco un libro en el que expone (junto con muchos otros ejemplos de otros ámbitos) que genios como Bill Gates y Bill Joy lograron sus éxitos como programadores gracias a las miles de horas que le dedicaron a esta actividad durante sus años en la universidad.

Eric Steven Raymond, también conocido como ESR, es el autor de The Catedral and the Bazar (La Catedral y el Bazar) y el responsable actual del Jargon File (The New Hacker's Dictionary). Si bien con el Jargon File obtuvo fama como historiador de la cultura hacker, se convirtió después de 1997 en una figura líder en el Movimiento del Open Source y el Código abierto. Hoy día es uno de sus personajes más famosos y controvertidos.

Fue el coordinador del cliente de correo electrónico Fetchmail. También colaboró con los modos de edición de Emacs y coescribió porciones de la biblioteca GNU ncurses.

Fuente: Wikipedia

Página web del autor: http://catb.org/~esr/

Este post es parte de Citas sobre programación.


Los chicos malos

"Esto es lo que ocurre con la gente que piensa que odia las computadoras. Lo que realmente odia es a los malditos programadores"

-- Larry Niven

Por suerte muchos mortales aún no saben de nuestra existencia :-).

Larry Niven, nacido en la ciudad de Los Angeles (EE. UU.) en 1938, es un escritor de ciencia ficción estadounidense. Conocido sobre todo como el autor de la serie Mundo Anillo y también por el universo creado bajo el nombre de Espacio Conocido (Known Space), el éxito de su carrera como escritor de ciencia ficción lo acreditan sus varios premios Hugo y Nébula. Se ha dedicado a la escritura profesionalmente desde 1963.

La mayoría de las historias de Niven tienen lugar en un universo de ficción denominado "Espacio conocido", que presenta un escenario futuro en el que la una humanidad ultratecnificada comparte los mundos de diversos sistemas cercanos al Sol con más de una docena de razas alienígenas entre las que se incluyen especies como los agresivos kzin o los cobardes titerotes de Pierson, los subyugados kdatlyno o los pulpoides Jotoki. Muchos alienígenas son encarnados en personajes que, con frecuencia, acompañan a los protagonistas o son los propios protagonistas de las novelas de Niven.

Fuente: Wikipedia

Fans club del autor: http://www.larryniven.org

Este post es parte de Citas sobre programación.


Nosotros, los programadores

"La mayoría de ustedes están familiarizados con las virtudes del programador. Son tres, por supuesto: pereza, impaciencia y orgullo desmedido"

-- Larry Wall

De las tres, la pereza es la más importante. Nos impulsa a resolver problemas. Muchas veces me encuentro escribiendo programas con el objetivo de evitar hacer tareas repetitivas, difíciles de hacer "a mano" o aburridas.

Larry Wall (nacido el 27 de septiembre de 1954) es un programador, lingüista y autor, más conocido por haber creado el lenguaje de programación Perl en 1987.

Wall es el autor del programa rn (lector de artículos de Usenet) y del casi universal patch. Ha ganado el IOCCC (concurso internacional de código C ofuscado) dos veces y recibió el primer premio de la Free Software Foundation para el avance del software libre en 1998.

Más allá de sus habilidades técnicas, Wall es conocido por su irónico sentido del humor, que manifiesta en sus comentarios en el código fuente o en Usenet. Por ejemplo (traducción libre): "No me gusta hacer cosas estúpidas, excepto si son a propósito".

Fuente: Wikipedia

Este post es parte de Citas sobre programación.


Citas sobre programación

A partir de hoy, 1º de enero, van a ir apareciendo durante siete días seguidos en este blogs citas, principalmente relacionadas con el acto de programar, que en muy pocas palabras encierran conceptos muy importantes: a veces superficialmente divertidos y otras más profundos. Además de la cita, voy a completar los posts que aparezcan con información del autor, links, fotos o alguna que otra anécdota para ilustrarla.

La primera es de Alan Kay.

"La mayoría del software actual es muy parecido a una pirámide egipcia, con millones de ladrillos puestos unos encima de otros sin una estructura integral, simplemente realizada a base de fuerza bruta y miles de esclavos" -- Alan Kay

Querido programador, espero que nunca te encuentres bajo el látigo construyendo una pirámide :).

Alan Kay, es un informático estadounidense, conocido por su trabajos pioneros en la programación orientada a objetos y el diseño de sistemas de interfaz gráfica de usuario. Kay colaboró en la creación de Squeak, un entorno para la creación y experimentación multimedia en 1995 mientras trabajaba en Apple y todavía sigue colaborando con el proyecto.

Fuente: Wikipedia


Meta analogía

El problema con las analogías es que son como las fotocopias, nunca se parecen  al original.