My favorites | Sign in
Project Home Downloads Wiki Issues Source
Repository:
Checkout   Browse   Changes   Clones    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
=======================
Python no muerde, yo sí
=======================

-----------------------------------
O: aprenda a programar en 3217 días
-----------------------------------

:Autor: Roberto Alsina <ralsina@netmanagers.com.ar>
:Versión: $Revision: 8e80f80bdea9 $

Introducción
------------

Requisitos
~~~~~~~~~~

Éste es un libro sobre Python [#]_. Es un libro que trata de explicar una manera
posible de usarlo, una manera de tomar una idea de tu cabeza y convertirla en
un programa, que puedas usar y compartir.

.. [#] ¿Por qué Python? Porque es mi lenguaje favorito. ¿De qué otro lenguaje
podría escribir?

¿Qué necesitás saber para poder leer este libro?

El libro no va a explicar la sintaxis de python, sino que va a asumir que la
conocés. De todas formas, la primera vez que aparezca algo nuevo, va a indicar
dónde se puede aprender más sobre ello. Por ejemplo:

.. code-block:: python

# Creamos una lista con los cuadrados de los números pares
cuadrados = [ x**2 for x in numeros if x%2 == 0 ]

.. admonition:: Referencia

Eso es una `comprensión de lista <http://docs.python.org.ar/tutorial/datastructures.html#listas-por-comprensi-n>`_

En general esas referencias van a llevarte al `Tutorial de Python <http://docs.python.org.ar/tutorial/>`_
en castellano. Ese libro contiene toda la información
acerca del lenguaje que se necesita para poder seguir éste.

Cuando una aplicación requiera una interfaz gráfica, vamos a utilizar PyQt [#]_.
No vamos a asumir ningún conocimiento previo de PyQt pero tampoco se va a
explicar en detalle, excepto cuando involucre un concepto nuevo.

Por ejemplo, no voy a explicar el significado de ``setEnabled`` [#]_ pero sí el
concepto de signals y slots cuando haga falta.

.. [#] PyQt es software libre, es multiplataforma, y es muy potente y fácil de
usar. Eso no quiere decir que las alternativas no tengan las mismas
características, pero quiero enfocarme en programar, no en discutir, y
**yo** prefiero PyQt. Si preferís una alternativa, este libro es libre:
podés hacer una versión propia!

.. [#] PyQt tiene una excelente `documentación de referencia <http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/classes.html>`_
para esas cosas.

Convenciones
~~~~~~~~~~~~

Las variables, funciones y palabras reservadas de python se mostrarán en el
texto con letra monoespaciada. Por ejemplo, ``for`` es una palabra reservada.

Los fragmentos de código fuente se va a mostrar así:

.. code-block:: python

# Creamos una lista con los cuadrados de los números impares
cuadrados = [ x**2 for x in numeros if x%2 > 0 ]

Los listados extensos o programas completos se incluirán sin cajas, mostrarán
números de líneas e indicarán el nombre del mismo:

.. class:: titulo-listado

cuadrados.py

.. class:: listado

.. code-block:: python
:linenos:

# Creamos una lista con los cuadrados de los números impares
cuadrados = [ x**2 for x in numeros if x%2 > 0 ]

En ese ejemplo, debería haber, en los ejemplos que acompañan al libro,
un archivo ``codigo/X/cuadrados.py`` donde ``X`` es el número del
capítulo en el que el listado aparece.

Lenguaje
~~~~~~~~

Las discusiones acerca de como escribir un libro técnico en castellano son eternas. Que en España se traduce todo todo todo. Que en Argentina no. Que decir "cadena de caracteres" en lugar de string es malo para la ecología.

Por suerte en este libro hay un único criterio superador que ojalá otros libros adopten: Está escrito como escribo yo. Ni un poquito distinto. No creo que siquiera califique como castellano, como mucho está escrito en argentino. Si a los lectores de la ex madre patria les molesta el estilo... tradúzcanlo.

Mapa
~~~~

Dentro de lo posible, voy a intentar que cada capítulo sea autocontenido, explicando un tema sin depender demasiado de los otros, y terminando con un ejemplo concreto y funcional.

Éstos son los capítulos del libro, con breves descripciones.

#. Introducción

#. Pensar en python

Programar en python, a veces, no es como programar en otros lenguajes. Acá vas a ver algunos ejemplos. Si te gustan... python es para vos. Si no te gustan... bueno, el libro es barato... capaz que Java es lo tuyo..

#. La vida es corta

Por eso, hay muchas cosas que no vale la pena hacer. Claro, yo estoy escribiendo un editor de textos así que este capítulo es pura hipocresía...

#. Las capas de una aplicación

Batman, los alfajores santafesinos, el ozono... las mejores cosas tienen capas. Cómo organizar una aplicación en capas.

#. Documentación y testing

Documentar es testear. Testear es documentar.

#. La GUI es la parte fácil

Lo difícil es saber que querés. Lamentablemente este capítulo te muestra
lo fácil. Una introducción rápida a PyQt.

#. Diseño de interfaz gráfica

Visto desde la mirada del programador. Cómo hacer para no meterse en un callejón sin salida. Cómo hacerle caso a un diseñador.

#. Un programa útil

Integremos las cosas que vimos antes y usémoslas para algo.

#. Instalación, deployment y otras yerbas

Hacer que tu programa funcione en la computadora de otra gente

#. Cómo crear un proyecto de software libre

¿Cómo se hace? ¿Qué se necesita? ¿Me conviene? Las respuestas son "depende", "ganas" y "a veces". O "así", "una idea" y "sí". O sea, no sé. Pero veamos.


#. Rebelión contra el Zen

Cuándo es mejor implícito que explícito? ¿Cuándo es algo lo suficientemente especial para ser, realmente, especial?

#. Herramientas

Programar tiene más en común con la carpintería que con la arquitectura.

#. Conclusiones, caminos y rutas de escape

¿Y ahora qué?

Este es un diagrama de dependencias. Cada capítulo tiene flechas que lo conectan
desde los capítulos que necesitás haber leído anteriormente.

Con suerte será un `grafo acíclico <http://es.wikipedia.org/wiki/Grafo_acíclico_dirigido>`_.

La línea de puntos significa 'no es realmente necesario, pero...'

.. figure:: dependencias.graph.pdf
:height: 8cm

Este libro se lee siguiendo las flechas.


Acerca del Autor
~~~~~~~~~~~~~~~~

Habrá que pedirle a alguien que ponga algo no demasiado insultante.

Change log

980492978b9d by Roberto Alsina <rals...@netmanagers.com.ar> on May 3, 2010   Diff
correcciones
Go to: 
Sign in to write a code review

Older revisions

19a0adb5140f by Roberto Alsina <rals...@netmanagers.com.ar> on Apr 19, 2010   Diff
Movido un footnote.
a24e2090a912 by Roberto Alsina <rals...@netmanagers.com.ar> on Apr 13, 2010   Diff
ajustar tamaño de una figura
356bec93c0bc by Roberto Alsina <rals...@netmanagers.com.ar> on Apr 8, 2010   Diff
Correcciones
All revisions of this file

File info

Size: 6251 bytes, 175 lines
Powered by Google Project Hosting