Un fin de semana en UPG
[gallery]
El título original del post quedó corto; terminé incluyendo fotos de muchos fines de semana!
[gallery]
El título original del post quedó corto; terminé incluyendo fotos de muchos fines de semana!
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:
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'
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 .
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
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.

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”.
Además de los muchos componentes incluidos en la librería estándar de Python, hemos utilizando algunas librerías externas:
"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.
"El diseño de lenguajes de programación es como pasear en el parque. Bueno, en parque jurásico" -- Larry Wall
Una pequeña biografía de Larry Wall puede encontrarse en el post Nosotros, los programadores.
Este post es parte de Citas sobre programación.
"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.
"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.
"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.
"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.
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
El problema con las analogías es que son como las fotocopias, nunca se parecen al original.