Hola. Bienvenidos a Python para informática.
Veremos el capítulo I.
Soy Charles Severance de la Universidad de Michigan,
autor y conferencista en línea de este 1er capítulo del libro.
Esta conferencia, como las diapositivas y el libro,
son contenido libre, materiales libres.
Tienen licencia de atribución de Creative Commons,
lo mismo que este video.
Menciono esto por la importancia de los derechos de autor.
REQUISITO: INSTALAR PYTHON
Así que... si no lo han hecho todavía, por favor, instalen Python.
Tendrán que hacerlo tarde o temprano,
y mejor hacerlo antes de la conferencia.
Podrían verla sin tener Python,
pero si lo instalan podrán probar algunas cosas,
e incluso programar algo en esta conferencia.
Y así pueden seguirme con Python en otra ventana.
Está en pythonlearn.com/install.php
Tiene instrucciones para MS Windows y Macintosh.
Y no está en esta diapositiva, pero recién cargué...
instrucciones de instalación para la Raspberry Pi,
la nueva y genial computadora de 25 dólares.
Son instrucciones muy sencillas, con imágenes de pantalla paso a paso.
No tardan más de diez minutos.
Pueden detenerlas, iniciarlas, bajarlas a su disco duro.
Los encaminarán a instalar Python o el editor de texto, si es necesario,
luego a correr su primer programa en Python.
¡Y tendrán que correr un programa en Python!
Así que... es el mejor momento...
para detenerse, instalarlo, y regresar, ¿les parece?
Bueno, regresemos a la introducción.
Entonces.... las computadoras más que nada quieren ser útiles.
Están programadas—
Este es un microprocesador, una pieza electrónica.
Tiene circuitos y alambres dentro.
Y alguien dedicó mucho tiempo de ingeniería para crearlo
de manera que estas patas de atrás
reciban instrucciones de nosotros,
de sistemas operativos, del disco duro, de la memoria.
Aquí entran instrucciones, acá salen resultados.
Es como una calculadora muy programable
y nuestro trabajo es meterle instrucciones.
Esta cosa, en cierto sentido, está diseñada...
para ser curiosa sobre lo que sigue;
Como si preguntara: «¿Qué sigue?»
¿Qué sigue?, ¿qué sigue?, y después, ¿qué sigue?
Hace eso un millardo de veces por segundo.
Esta pieza es la base.
Podemos decir que en un teléfono inteligente como este,
todos los botones dicen: ¿Qué sigue?
Cada uno de ellos es algo que pide mi atención.
Algún diseñador de aplicaciones ha creado una aplicación genial
que dice: «¡Por favor, úsame! ¡Presióname!»
«No soy nada sin ti».
Los humanos hacemos que las computadoras actúen.
Y esta estará ahí feliz hasta que yo le pida hacer algo.
Bien... ¡Ay! (Ruido de aparato que cae)
Espero que esté bien.
Sí, parece estar bien.
Tremendo golpe y sigue funcionando.
Entonces, cualquiera puede usar uno de estos.
Dicen que incluso un animal puede usar un iPhone,
Así que no hace falta ser programador, pero...
para lograr que esto haga lo que quieres,
necesitas aprender un lenguaje diferente:
el lenguaje de las instrucciones... para decirle qué hacer.
Así que eso haremos: aprender a hablarle. ¡Oye!
Porque nos está preguntando... y debemos darle respuesta.
Bueno, ¿qué es un programador? Es alguien que escribe un programa,
es decir un script o juego de instrucciones
que le dicen a uno de estos aparatos
qué se supone que debe hacer.
A veces se corre un programa como Moodle,
un sistema de aprendizaje libre, o Sakai, otro sistema parecido.
Y algunas veces incluso te pagan por hacerlo.
A veces es gratis, a veces te pagan, y otras veces lo haces por gusto.
Por todas las aplicaciones de mi iPhone, alguien ha ganado dinero.
Quizá no tanto como para dejar su empleo,
pero muchos han podido renunciar e iniciar compañías pequeñas.
Aunque sea compañías pequeñas.
Entonces estas personas que pueden poner aplicaciones en nuestras computadoras
son programadores, porque entienden... la forma de hablarles.
En parte quiero que dejen de pensar como el usuario final,
que cree que esto es sólo algo para presionar,
y piensen como el programador que está dentro, tratando de salir.
Al ir del usuario al programador, vamos de afuera hacia dentro.
Pensamos en el mundo exterior, decimos: ¿Qué botón van a presionar?
Esta es una imagen de eso.
Entonces, por fuera somos usuarios, presionamos botones,
hacemos clic en páginas web, etcétera, etcétera.
Pero lo que en realidad sucede dentro de todo eso,
es que hay una computadora con un montón de software dentro,
lo mismo que datos, redes, otra información.
Y el software... es lo que da sentido a todo eso.
Así que algo que quiero que hagan
es dejar de pensar cómo usar estas cosas desde el exterior
y empezar a pensar como programadores.
Estamos dentro con la CPU, con la memoria, con la conexión de red.
Hacemos cosas por el usuario... y se las presentamos.
¿Para qué ser programador?
Esta clase no pretende convertirlos en programadores profesionales,
aunque me enorgullecería mucho que después de cinco o diez clases...
ya fueran programadores, pero ese no es el propósito de esta clase.
A veces sólo desean concluir algo. Tienen una hoja de Excel en el trabajo...
y los datos no están bien. Alguien más se los pasó,
y hay espacios extra donde no debería haberlos,
le faltan campos, o deben hacerle algo que Excel no puede hacer, y piensan:
«Querría modificar estos datos para hacer mi trabajo, pero...
¡Qué fastidio! Pasarlos a un editor de textos, como MS Word,
e ir línea por línea para limpiar los datos».
Pueden escribir un programa para eso, como los que haremos aquí.
Los programas satisfacen necesidades. Están en la computadora para servirnos.
Los programadores profesionales tienden a construir cosas para los demás.
Tienden a crear cosas para los demás.
Pero... nosotros las haremos principalmente para nosotros.
Bien, ¿qué es el código? ¿Qué es el software?
Usamos estas palabras casi indistintamente: un programa.
En realidad es una secuencia de instrucciones guardadas.
Aprendemos el lenguaje hablado por esto,
luego introducimos las instrucciones, una por una.
Las lee una a la vez, da un resultado; le damos la siguiente, y la regresa.
Toma, da, toma, da. Entonces es una secuencia de instrucciones guardadas,
pero... es más que eso; es como nuestra creatividad.
Si han usado mis programas, como MOOC, dediqué... como un mes a escribirlo.
Y es como si fuera yo. Es mi visión de cómo debe funcionar algo genial.
Entonces, es más que lograr que se hagan las cosas.
Implica un sentimiento de orgullo y logro,
especialmente si hacen algo que le sirve a otros.
Es algo... muy creativo.
Es lo que me llevó a ser programador en primer lugar:
poder aprovechar las capacidades de esto
para hacer cosas geniales en beneficio del usuario.
Entonces... código, software, un programa.
Veamos un ejemplo no tan técnico de eso.
Les he puesto un vínculo a YouTube para esto.
Es... La Macarena, una canción que lleva un baile...
que todo el mundo parece conocer, o aprender muy rápido.
Entonces voy a parar para que vean la Macarena, y regresamos.
Bienvenidos otra vez. Espero que lo hayan disfrutado.
En cierto sentido lo que vimos es... un programa.
Un programa para seres humanos.
Quizá lo aprendieron en un club donde les dijeron qué hacer.
Bien, yo puedo enseñarles a bailar la Macarena
escribiendo un programa sencillo. Ahora mismo.
Aquí esta mi Macarena:
Mientras la música suena...
significa que lo harán una y otra vez a un ritmo.
Las computadoras trabajan a un ritmo como de 3 millardos de pulsos por segundo.
Eso es ritmo. Entonces, haremos esto varias veces.
Y tenemos este grupo de instrucciones que vamos a seguir, ¿sí?
Mano izquierda adelante, palma arriba. Mano derecha adelante, palma arriba.
Voltear mano izquierda, voltear la derecha.
Mano izquierda al hombro derecho.
Mano derecha al hombro izquierdo, etcétera, etc.
Ahora, este programita en particular tiene un error; de hecho, varios.
Quiero que traten de encontrarlos.
Bueno, aquí están los errores.
El error es:
Jamón derecho a la nuca,
y Mano izquierda a golpe derecho, en lugar de cadera.
Si están en un bar, toman un jamón, y golpean a alguien en la nuca,
no es agradable, aunque lo hagan bailando la canción.
Estos se llaman errores lógicos.
Un humano que lea esto dirá: "Creo que aquí quisieron decir mano".
Pero una computadora es mucho más literal que la gente.
Haremos un par de ejercicios donde veremos que la gente puede corregir
pequeños errores como este, pero las computadoras no pueden.
Así que debemos corregir estos errores,
y decir mano, en lugar de jamón, y cadera en lugar de golpe.
Debemos ser explícitos, porque las computadoras
hacen lo que les decimos, no lo que les queremos decir.
Entonces, limpiemos eso.
Aquí hay otro ejemplo. Veamos como sale.
PROGRAMAS PARA PYTHON
Se supone que deben contar el número de veces
que la palabra «the» aparece en esta oración.
Cuenten... la palabra "the". ¿Cuántas veces?
Bien... es su turno.
Bien, esto... no es algo para lo que los humanos seamos buenos.
Moví la oración, toqué una melodía, los confundí,
les puse una tarjeta con un payaso en la esquina superior derecha, etc.
Pues resulta que las computadoras, una vez que les decimos qué hacer,
son muy buenas para concentrarse.
Fácilmente pueden ver 30 palabras y encontrar la más común,
o 3 millones de palabras
y encontrar la más común,
sin nunca cometer un error.
Pero antes debemos darle un grupo de instrucciones.
Entonces, no quiero que aprendan esto ahora mismo.
Pero esto es un programa en Python.
Digamos que quiero que cuenten palabras en archivos.
Les digo: ¡Oye! Sé programar en Python.
Te enviaré un correo con un programa.
Sólo mételo en Python
y te contará las palabras.
Tienes un millón de palabras,
un millón de líneas en un archivo
y buscas la palabra más común.
Así que ahí va.
Te enviaré este archivo llamado «words.py»
que yo hice,
como regalo para ti.
Y esto es lo que escribí.
Les daré una especie de resumen de lo que hace:
Primero abrirá un archivo y lo leerá.
Luego dividirá las líneas y archivos en palabras
basándose en los espacios.
Luego acumulará cifras:
esta palabra es 1, esta palabra es 1,
Oh, está repetida, la cambiaré a 2.
Esto es un bucle que corre una y otra vez,
una para cada palabra.
Luego lo que haremos es escribir otro bucle
que va a descubrir cuál es la palabra más común,
viendo todos esos pequeños histogramas
que acabamos de construir
e imprimirá el resultado al final.
Y es lo que puede hacer python words.py
Leyó clown.txt
y dice que la palabra «the» ocurre siete veces.
Puede ir y descubrir que otro archivo tiene la palabra «dos»
y aparece 16 veces.
Y es así de rápido.
Y sí, tienen que aprender el lenguaje
y decirle qué hacer,
pero en cuanto se lo digan,
lo hará con un millón o un millardo de palabras,
sin esfuerzo.
Ustedes no tendrán que hacer...
trabajo menor.
Una vez que aprendan a decirle a la computadora cómo hacerlo.
Bien...
Siempre se empiezan las clases de programación con...
arquitectura de hardware.
No creo que sea esencial,
así que no se emocionen mucho con el tema.
Es bueno como terminología,
para conocer palabras,
y si alguien dice CPU no entren en pánico.
O memoria, o RAM o disco duro...
y no se asusten.
No quiero hacerlos expertos en hardware.
Sólo que aprendan unas cuantas palabras
para que puedan hablar de lo de dentro.
Porque, en cierto sentido vamos a escribir programas
para hacer cosas con datos, instrucciones, etc.
Entonces...
tengo aquí algo que compré hace unas semanas,
y me encanta: es la Raspberry Pi.
Es una computadora con una sola placa.
Tiene almacenamiento en una tarjeta SD.
Justo ahí.
Es el sistema operativo y los datos.
Y tiene tanto el microprocesador como la memoria aquí dentro también.
Y se conecta por USB y HDMI a varias cosas.
Y si quieren, en este curso quizá puedan hacer
toda la tarea...
en una Raspberry Pi, si lo desean.
Entonces así se ve el hardware.
Es el interior de algo.
Normalmente viene en una carcasa para que no se vea.
Y así se ve: con ese color verde,
plateado y dorado.
Creo que son hermosos.
Muy bonitos.
Es mucha ingeniería la que llevan estas cosas.
Entonces podemos hacer un diagrama negro
de lo que sucede aquí.
Y hay alguna terminología:
el cerebro de todo...
Bueno, dibujamos este diagrama en parte porque—
y esto es de... ¡Ah!, se desprendió una pieza.
Ya sé que fue.
Está bien, no sirve de todos modos.
Si tienen una computadora de escritorio, así se ve por dentro.
Esto es la tarjeta madre.
Y es lo que conecta todas las piezas.
Tiene muchos alambres. Cada pequeña línea es uno.
Está cubierta con cierta laca.
Y hay cosas que la penetran y conectan los diversos chips.
Y... todo esto está representado por esta imagen.
Pero en realidad conecta muchos componentes.
La unidad de procesamiento central, de la que hablé antes,
la puse abajo,
es lo más cercano que la computadora tiene a un cerebro,
muy limitado.
Es más bien una calculadora programable y súper rápida.
La hacemos flexible por nuestra creatividad al escribir programas.
La hacemos parecer inteligente.
La gente es quien aporta sus conocimientos
y los pone dentro.
Esto no tiene inteligencia propia.
No hay por qué temerle.
No es tan inteligente.
Entonces... esto es lo que se programa
para preguntar ¿qué sigue?
Y debemos tener un grupo de instrucciones
que la alimenten muy rápido,
un millardo de veces por segundo.
Y eso es esto: la memoria de acceso aleatorio.
Tiene chips de memoria que van todos conectados
a la tarjeta madre.
Entonces tenemos... la memoria principal
y la unidad de procesamiento central.
Y de aquí provienen nuestras instrucciones a alta velocidad,
aquí se almacenan los datos rápidos,
y esto es lo que pregunta: ¿qué sigue?
y lee las instrucciones de acá.
Ahora no están conectados, pero van conectados.
No se preocupen por este hardware; está viejo y descompuesto.
No le pasa nada.
Lo que sigue son los dispositivos de entrada/salida.
Así que regreso a mi Raspberry Pi.
La Raspberry Pi tiene USB
donde se puede conectar
un ratón o un teclado.
Tiene HDMI para conectar un monitor también.
Y un conector a ethernet.
Todos estos son ejemplos
de dispositivos de entrada/salida.
Y lo último en pantalla
es la memoria secundaria.
Entonces, en la Raspberry Pi la CPU, unidad de procesamiento central,
y la RAM están en este chip del centro.
Se llama SOC o «sistema en un chip»
donde hay más piezas aún.
Y en cierto sentido...
concentraron...
esto...
y esto...
y mucho de esto...
en la Raspberry Pi...
en un solo chip.
Pero la arquitectura sigue igual: una CPU...
memoria, tarjetas de gráficos, etcétera.
Entonces...
Esto tiene dispositivos de entrada/salida también,
como USB, teclado y monitor, etc.
Así que son muy similares, sólo que este es nuevo
y este es viejo.
Todo se va reduciendo...
entre más nuevo sea.
Muy bien...
Lo último que veremos... es la memoria secundaria.
¡Oh!
Cuando se corta la corriente
esto se borra.
Los datos de esta RAM
desaparecen. Está diseñada para ser muy rápida,
pero no permanente.
Así que necesitamos un lugar permanente,
eso es la memoria secundaria.
Para eso es la memoria secundaria.
Es permanente.
Esta es rápida.
Zas, zas, zas, es muy rápida.
Pero esta es permanente, y más lenta.
¿Sí?
Entonces hay dos tipos de memoria secundaria.
Oh, Dios, están en el suelo.
Dos tipos de memoria secundaria:
empezaré con la Raspberry Pi.
La memoria secundaria de la Raspberry Pi
es esta tarjeta SD.
Es como un disco duro.
Es permanente,
no necesita energía para conservar los datos.
Los datos son permanentes.
Así que en el futuro veremos...
más de estas memorias flash o SD.
Entonces la Raspberry Pi apunta al futuro.
Hay una unidad de disco aquí que no es un disco,
también es una memoria «flash».
Pero en los viejos tiempos...
en los buenos tiempos, cuando yo era niño,
nuestra memoria secundaria
era... una unidad de disco
que tenía placas, giraba y hacía un ruido muy «satisfactorio».
Esto entraba y salía para leer datos.
Les mostraré un video en unos minutos.
Así que esto registraba los datos
en una placa magnética
que al cortar la energía seguía magnetizada.
Esto se movía al lugar preciso,
girando, y leía los datos.
Y repito: este está totalmente arruinado.
Entonces, ahí está.
Unidad de Procesamiento Central,
el cerebro de la operación,
memoria principal, rápida, pero se borra al cortar la energía.
Dispositivos de entrada/salida: teclados, etc.
Y almacenamiento que mantiene
sus datos después de desconectar.
Bueno, ya dije todo esto...
Entonces la pregunta es...
¿Cuál es el papel de ustedes?
¿Dónde viven los programas? ¿Dónde los escribimos?
Y la respuesta es: viven, por decirlo así, en la memoria.
Lo que se hace es poner...
los programas en la memoria,
luego la CPU los saca de la memoria.
Entonces debemos escribir programas...
y ponerlos en la memoria.
Cuando los corremos estamos cargándolos en la memoria...
para que sean alimentados rápidamente a la CPU.
Y las computadoras en realidad no trabajan en Python,
como la instrucción if x<3:print,
como tendemos a escribir,
sino que trabajan con...
algo llamado «lenguaje de máquina»
que es una serie de ceros y unos
traducidos directamente
en lo que entra por estas patas:
voltajes que suben y bajan.
Ese es el lenguaje de máquina.
El código fuente, como el de Python,
se escribe en una forma más conveniente.
Por lo menos más conveniente.
El lenguaje de máquina es lo más conveniente...
para el hardware.
Así que tenemos que traducir código fuente a lenguaje de máquina.
Y eso es lo que Python hace por nosotros.
Escribimos en Python,
y Python traduce a lenguaje de máquina.
Entonces, tengo un par de videos que dan una idea...
de cómo funciona todo esto.
Empezaremos con el de la CPU,
que les mostrará la intensidad de tanta electricidad...
lo que se calienta dentro de sus computadoras
es este pequeñito.
Y en este video veremos
cuánto puede calentarse.
(CPU completamente caliente)
Bueno, bienvenidos de nuevo.
En el siguiente video...
Ya les mostré un disco duro inservible
y ahora les mostraré un video breve
sobre el funcionamiento los discos.
Alguien le quitó la tapa a uno y le aplicó energía.
No lo vayan a hacer, si tienen un disco duro.
He leído, y algunas personas dicen,
que se puede hacer por unos minutos luego la unidad se destruye
si la encienden sin la tapa puesta.
Veamos el video.
(Disco duro en acción)
Bueno, ahora hablemos un poco acerca de Python.
Python es un lenguaje de programación.
Python es una manera de comunicarnos.
Y Python no fue inventado por computadoras.
Los humanos inventamos Python como una forma de encapsular
nuestras instrucciones.
Hay muchos lenguajes diferentes:
Python, Java script,
C++, toneladas de ellos.
Python es sólo uno que yo enseño en esta clase.
Empezaré con una cita de Harry Potter:
Parsel es el lenguaje de las serpientes
y quienes conversan con ellas.
A quien puede hablar parsel se le conoce como parsel-hablante.
Es una habilidad muy rara, y puede ser hereditaria.
Casi todos los hablantes de parsel descienden de Salazar Slytherin.
Esa es la cita de Harry Potter.
Python es el lenguaje del intérprete de Python
y quienes pueden conversar con él.
Vamos a conversar con el interior de la computadora muy pronto.
A quien puede hablar Python se le conoce como pythonista.
Es una habilidad muy rara y puede ser hereditaria.
También puede no ser hereditaria.
Casi todos los pythonistas usan software diseñado originalmente
por Guido van Rossum.
Guido van Rossum, este amigo de aquí...
Hey, Guido, ¿qué hay?
Pongámosle un bigote.
Hey, Guido.
Lo siento. Debería ser amable con él.
Es el inventor de Python. Python tiene más de 20 años.
Él lo inventó como un lenguaje sencillo,
pero es igualmente poderoso.
Por eso es un gran lenguaje para iniciar su aprendizaje.
Es un lenguaje poderoso, pero diseñado para ser fácil de usar.
¿Puede alguien adivinar... por qué se llama Python?
Bueno, veamos.
♪(Música de circo)♪
Python tomó su nombre de un famoso programa de comedia inglés
de los sesenta o setenta, creo...
llamado Monty Python,
El circo volador de Monty Python.
Creo que trató de capturar el aspecto lúdico,
bobo y divertido de Python.
Y así es.
Basta de eso, ¿ya acabamos?
Sí, la música ya terminó, gracias a Dios.
Entonces, repito: este es un lenguaje
y este Guido lo inventó para nosotros.
Él tomó decisiones:
Pongamos un punto y coma aquí,
y aumentemos la sangría aquí.
Así que tomó decisiones.
Y a la gente le gustan más unos lenguajes que otros.
Es como elegir pinturas.
Y me gusta comparar esto con...
el aprendizaje de un idioma para hablar,
con gente, humano.
Cuando somos bebés no sabemos hablar
y empezamos con un balbuceo:
bla, bla, bla, bla...
Quizá lo primero que hacemos sea llorar.
Es como estar en un planeta extraño,
y tener que comunicarnos.
Debemos aprender su lenguaje, y no es de un día para otro.
No estudias toda la noche y ya. No se puede.
Aunque puede ser una buena manera de enseñar programación.
Quizá deba usar algunas de esas ideas.
Entonces... la diferencia entre un idioma humano
y un lenguaje de programación
es que... un idioma humano es para hablar con humanos
que nos pueden a corregir.
Así que... Si digo mal una palabra como...
mamajaggghhh...
Eso sonó muy tonto.
Alguien dirá: ¡Ah, ya sé qué dijo!
Pero Python y las computadoras...
en realidad no escuchan. Son un poco tontas.
No pueden corregir nuestros errores...
porque no nos entienden. Son realmente tontas.
Son muy literales.
Así que... es bastante común,
cuando uno empieza,
enojarse
porque decimos algo que nos parece simpático
y nos contesta: «Error de sintaxis».
Decimos: «Voy a intentar esto», y contesta: «Error de sintaxis».
A mí me pasaba cuando empecé a programar,
Le decía: «Tengo este programa. ¿Te gusta?»
Y decía: Error de sintaxis.
Podrían cambiar los mensajes por otros más amables, quizá,
pero el error de sintaxis no quiere decir:
eres un fracaso.
En realidad significa:
No sé qué estás diciendo. Estoy confundido.
Sólo sé unas cuantas cosas...
y... lo que acabas de decir no es algo que pueda entender.
Así que en lugar de pensar que Python es algún tipo de
monstruo... malvado y demoníaco
que los odia y no deja de decir «Error de sintaxis»,
imagínenlo más como un...
perro... ¿sí?
A un perro no le pueden decir:
¡Qué bonito atardecer!
¿Verdad?
Porque los perros no entienden eso.
Los perros entienden algunas cosas
como comida, baño, paseo,
pero no entienden las obras de Shakespeare.
Así que al hablarle a un perro...
deben tener cuidado
de usar el vocabulario que el perro conoce.
Y esa es la clave... cuando empiecen a aprender.
Python sólo entiende cierto vocabulario.
Resulta que es más fácil enseñarles a ustedes Python,
que enseñar a Python a escuchar lo que ustedes le quieran decir.
Cosas como Google hacen que parezca inteligente.
Ni hay que escribir nada en Google, ¿verdad?
Sí... con muchos millardos de dólares,
al menos en cosas sencillas,
Google parece saber de qué le hablan.
En términos de programación,
es mucho más fácil que ustedes descifren
la mejor forma de decir algo,
que gastar millones para que Python
descifre lo qué ustedes quieren decir en sus programas.
Bueno...
Empecemos a hablarle a Python.
Le hablamos a Python.
Si instalaron bien Python,
ya sea en una Mac, una Windows o en una Raspberry Pi,
en algún punto se encontrarán en una terminal
y escribirán Python
para que Python corra en modo interactivo.
Quizá tengan que escribir «C:\algo\python» en Windows,
pero en algún punto estarán corriendo Python.
Python mismo es un programa,
un programa que les pide escribir en lenguaje Python.
Y lo interesante es que verán un indicador que parece de la Chevron
que... es como otra versión de ¿qué sigue?
Les dije que este hardware está diseñado
para esperar siempre la siguiente instrucción.
Bueno, al arrancar Python
éste no tiene idea de qué hacer.
Espera que ustedes le digan qué hacer.
Bien.
Déjenme ver si puedo poner algo aquí.
Bien... Ahí está.
Y ahora voy a escribir...
Lo voy a acercar.
Voy a iniciar Python.
El sistema operativo me pregunta ¿qué sigue?
Y le contesto: «Ah, ahora quiero correr Python».
Bien, aquí estamos,
ante el intérprete de Python.
Y nos pregunta: «¿Qué sigue?»
Bien... es como si yo acabara de aterrizar en... un planeta...
y dijera: «Llévame con tu líder».
«Llévame con tu líder». Es lo que se dice al llegar a otro planeta
y se encuentran con un robot.
Y les dice: «Error de sintaxis».
Recuerden que es un perro, y acaba de decir: «Arfff».
Podrían decirle: «Llévame con tu líder»
Guauu. ¿Sí?
«¿Eres amistoso?»
No sé si lo escribí bien.
«Error de sintaxis»
¿Eres estúpido?
«Error de sintaxis»
Muy estúpido.
¡Odio las computadoras!
«Error de sintaxis»
Parece no tener sentido del humor.
Intenten esto: Toc, toc.
No tiene sentido del humor.
Ese es el problema.
Sí nos quiere... No nos odia.
Sólo quiere saber qué queremos que haga.
Entonces...
necesitamos saber el lenguaje Python.
Por suerte sé un poquito.
Así que voy a decir: «Oye, Python».
«Escribiré algunos datos».
Quiero crear una variable llamada «X»,
un lugar en tu memoria, ve a buscarlo.
Busca un lugar vacío en tu memoria.
Y quiero que pongas un cien ahí.
¡Hazlo!
Ahora... ¡está feliz!
Porque conozco el lenguaje.
¡Bonjour!
Conocemos el lenguaje.
Pero me dice: «Y ahora, ¿qué?»
Debemos meter un programa.
Bien, veamos... voy a decir:
¡Oye, Python!
Haré una variable llamada «Y», otro espacio en tu memoria...
llamada «Y», y ¿recuerdas la «X» que te di antes? Ve por ella,
agrégale 50, y pon todo en «Y».
Y ahora tengo algo en «X», y algo en «Y».
Y... vamos a imprimir «Y».
¿Qué hay en «Y»?
Ve lo que hay en «Y»... e imprímelo.
Ciento cincuenta.
Entonces...
Son cosas sencillas.
Y un programa es una serie de cosas sencillas
El número de enunciados diferentes que pueden hacer...
es relativamente pequeño.
Entonces, le estamos hablando... a Python.
Vamos a regresar las diapositivas. Ahí está.
Así que...
Le di una serie de órdenes, ustedes pueden hacer lo mismo,
y...
escriban «Exit» o «Quit», con paréntesis,
para salirse cuando acaben.
Eso finaliza la sesión interactiva.
Esto es Python interactivo, que nos pregunta orden por orden...
y luego interpreta cada orden al correr el programa...
al terminar. Bien...
Trabajarán en una ventana.
Es diferente en Windows.
Mis documentos de instalación en pythonlearn.com
les dice todo lo que tienen que hacer.
Así que estamos hablándole a Python.
Bien... Aún tengo que enseñarles este lenguaje.
¿QUÉ DECIR?
Bien... ¿qué tipo de cosas se dicen al entrar a Python?
ELEMENTOS
Como en cualquier... lenguaje...
humano...
Existe un vocabulario, de palabras básicas.
Hay «variables» y «palabras reservadas» en Python.
Y las combinamos en líneas...
para formar oraciones, que por sí solas no cuentan una historia.
Luego formamos la historia con ellas, pero...
la historia está en lenguaje Python, no en inglés ni francés
ni otro idioma humano, pero sigue siendo como...
una secuencia de...
partes pequeñas que forman partes más grandes que luego...
forman todo un programa.
Así que... aquí está, otra vez, el mismo programa.
¿Sí? El que cuenta la palabra más común de un archivo.
Les había mencionado que al empezar abre el archivo,
lee los datos del mismo,
lo divide en palabras,
las cuenta todas, encuentra la mayor, y luego la imprime.
Entonces...
«Name» es como una palabra,
«Igual que» es otra, «Raw» es otra,
Estas son palabras.
Cada una de estas es como una oración.
Hay bloques de cosas: son como párrafos.
Este es uno, este es otro.
Usaré un color diferente aquí.
Este es como un párrafo.
Y otro... y otro.
Y al fin de cuentas, una vez que lo entiendan...
Y lo harán antes de que esto termine,
esto es como una historia:
tiene coherencia, principio, parte media y final.
Repito:
Ignoren los detalles. Tenemos...
muchos capítulos para cubrirlos.
No se desanimen con este programa,
sólo quiero que sepan que... lo entenderán.
Iniciaremos por lo básico.
Entonces... lo primero que deben aprender...
en Python, es lo que no deben hacer.
porque...
estas palabras, significan algo muy especial en Python.
Es como decir....
«No te daré comida hoy» a un perro,
que oye la palabra «comida», y nada más.
Por lo que «comida» es palabra reservada para perros
«Paseo», «baño», son otras.
Entonces, no pueden usarlas, excepto para lo que significan en Python
«Print», le dice que imprima cosas...
«Return» se usa en funciones...
«Else», «If», estas son palabras que si...
Python ve la palabra «If»
dirá: «Esto significa algo».
No la usen con ningún otro propósito, excepto el específicado.
Ya veremos cuáles son.
Bien, si hablamos de oraciones, en Python son como líneas,
formadas por varias partes.
Estas son tres partes de código.
Una es «x = 2» que significa:
Encuéntrame un trozo de memoria...
en tu RAM, asignada,
llámala «X», y ponle un 2.
Es como decir: mueve un 2 a X.
Luego... esto dice:
Ve por «X», agrégale 2, y pon la suma en «X»
Pequeñas oraciones, como sujeto y predicado.
¿Sí? Especialmente esta asignación.
Luego, «Print», que es una palabra reservada,
estaba en la lista de la diapositiva anterior,
Luego, lee esa variable. Entonces...
Estas son como tres oraciones.
En nuestro nuevo lenguaje.
PÁRRAFOS DE PROGRAMACIÓN
Bien, esas son oraciones. Ahora...
Párrafos... Hablemos de párrafos.
Los párrafos son la combinación de oraciones
para formar un pensamiento.
Varias oraciones. Varias líneas.
El Python interactivo que les acabo de mostrar...
está...
bien para correr una, dos, cinco o seis órdenes,
pero... con el tiempo escribiremos cosas más largas.
Así que escribimos lo que llamamos un script...
o un programa en Python. Y...
lo ponemos en un archivo.
y a manera de...
prerrequisito...
me han visto ponerlo en un editor de texto...
guardarlo en un archivo, y luego correrlo desde el archivo Python.
¿Sí?
Así que al nombrar estos archivos les ponemos punto «py» al final.
Le estamos dando un script a Python para ejecutarlo.
UN PROGRAMA SENCILLO
Entonces, es interactivo porque escriben...
directamente en Python y ejecuta sobre la marcha.
Se sigue el orden, porque el orden importa...
Y un script es un archivo donde se escribe todo de una vez.
PASOS O FLUJO DEL PROGRAMA
Ahora... al escribir una de estas cosas...
hay patrones para combinarlas.
Hacemos cosas... a estas líneas para tratarlas diferente.
Es como una receta.
Un juego de instrucciones.
Empezamos... ch, ch, ch, ch.
Pero es algo más complicado que eso.
Algunos pasos son sucesivos.
Otros van por saltos.
Algunos pueden hacerse varias veces.
Y otras veces tenemos grupos de pasos que hacemos una y otra vez.
Aquí tengo algunas ilustraciones.
y...
aquí hay cuatro líneas de Python, un párrafo muy sencillo.
Y tiene una oración que dice «x=2»
«print x»
«x=x+2» que significa ve por el antiguo valor de «x»,
agrégale 2 y ponlo de nuevo en «x»
e imprime «x»
La salida de este programa es 2, luego 4.
Porque imprimimos «x» que era 2,
luego la imprimimos de nuevo, y era 4.
No los pondré a dibujar estos diagramas de flujo.
Sólo son para facilitar la comprensión de lo que sucede.
Entonces... «x=1»
es el primer paso de la secuencia, que sigue con la impresión.
«x=x+1», sigue con la impresión
Esto es muy obvio.
Tiene más sentido cuando vemos cosas más complicadas.
Este programa inicia de forma natural, desde el principio,
y avanza hacia abajo hasta el final.
Son pasos en secuencia.
Es el orden normal de trabajo.
Bien...
Un condicional... es un paso que puede o no ser ejecutado.
Si no fueran más que secuencias, los programas serían aburridos.
¿Sí? Serían como: «bla, bla, bla, bla, alto».
Hay cosas como...
¡Qué tal si hago esto o aquello! Así que usamos el «si»...
Si dedicas más de 14 hr te pagaré una tarifa diferente...
que si dedicas menos tiempo.
Esos son condicionales.
La palabra «If»
Así que en Python expresamos esto con la palabra clave «If»
Decimos: «x=5»
Luego decimos: Si «x» es menor que diez,
Aquí se está haciendo una pregunta:
¿Es «x» menor que diez? ¿Sí o no?
Si lo es, ejecutamos la parte sangrada
Si no lo es, la ignoramos.
En este caso, como «x» es cinco...
la ejecutamos...
luego regresamos aquí...
y hacemos otro.
Si «x» es mayor que veinte...
resulta ser falso.
Así que lo ignoramos.
«Mayor» no se ejecuta.
Esa línea nunca se ejecuta, así que el resultado es «Menor»
Y fin.
Bien...
Aquí podemos verlo en el diagrama.
Corremos x=5
Hacemos una pregunta
—no afecta a «x» que hagamos la pregunta—
¿Es «x» menor que 10?
La respuesta es «Sí», así que seguimos este sendero.
Imprimimos «Menor», luego regresamos a la carretera.
¿Es «x» menor que veinte?
¡No! Así que continuamos.
Así que este nunca se ejecuta.
Pueden verlo de cualquier forma:
pueden verlo al estilo Gestalt, y decir:
Si esto es cierto, haz lo que tiene sangría...
o pueden imaginar un carro avanzando por una carretera
eligiendo dónde dar vuelta.
Son equivalentes.
Con el tiempo...
probablemente empiecen a verlo así,
y empiecen a pensar así,
pero a veces ayuda verlo de esta forma,
por un tiempo.
Bien...
Lo que quiero mostrarles a continuación son los pasos repetidos
pasos que se ejecutan una y otra vez
¿Sí?
Y cuando dije que las computadoras son buenas con millones de palabras,
eso implica que debe hacer un bucle o sección repetida,
uno para cada palabra.
Así que...
Entonces aquí vamos... y en Python...
Voy a poner otro color de texto.
Usaré el morado.
Aquí está el programa. Este es el principio.
Establece la variable «n» con un 5.
Luego una palabra clave, la palabra reservada «while».
«While» n sea mayor que cero —estamos haciendo una pregunta—
Es... una pregunta.
¿Es n mayor que cero?, es una pregunta.
Si sí, haremos esto; si no, haremos eso.
Aquí, si es verdad, ejecutaremos lo que está con sangría.
Luego volveremos a hacerlo de nuevo.
Si es falso, saltaremos al siguiente paso.
Entonces es como un condicional,
excepto que lo hará una y otra, y otra, vez.
Entonces...
entra, pone un 5 en «n», ¿es n mayor que cero? Sí, claro.
Así que imprime «n», que resulta ser 5.
Luego dice: «n» igual a «n-1», así que «n» es 4.
Voy a cambiar de color.
Luego regresa arriba.
Regresa arriba.
Y vuelve a preguntar.
Y es cuatro.
Sigue siendo mayor que cero.
Así que sigue.
Imprime 4.
Resta 1.
Y ahora es 3.
Regresa arriba.
¿Es «n» cero?
¿Es «n» mayor que cero. Sí.
Imprime 3.
Resta 1, ahora es 2.
Así que cuento 3 y 2.
Y vuelve arriba.
¿Aún mayor que cero? Sí, todavía.
Imprime 2.
Ah, no. Era 1.
Ahora al restar 1 resulta 0.
¿Es mayor que cero? No. Por fin nos vamos.
Y por fin bajamos.
Y lo último que se imprime es «Vámonos».
Así que esto es un bucle.
Correremos esta pequeña sección de código...
cinco veces.
[Cof, cof] Perdón.
Correremos este pedazo de código cinco veces.
Y... los bucles tienen las llamadas variables de iteración,
como esta «n».
Es una variable que cambia cada vez que pasa el bucle.
Así podemos controlar más o menos el bucle:
Podemos decidir su inicio y fin.
Podemos decir si es el primero o el último.
Utilizaremos muchos bucles.
Esta es una variable de iteración, porque repetimos...
o iteramos varias veces el bucle.
¿Sí?
¿Alguna pregunta? Je, je....
Como si pudiera responder. Bueno...
Así que ahora...
si regresamos...
a la historia que yo—
Ya habrá oportunidad de entender. No se preocupen.
Tienen como hasta el capítulo nueve.
Así que no traten de entender todo ahora.
Solo quiero darles una muestra...
de lo que se van a encontrar. ¿Sí?
Entonces...
Esta es una secuencia de declaraciones,
porque no tienen sangría.
Esas cinco líneas están en secuencia.
Van una después de la otra.
Luego tenemos «o».
Y tiene sangría.
Este es un bucle. Correrá un montón de veces.
Luego de eso tenemos más cosas en secuencia.
Ahora tenemos un cuarto bucle, que correrá un montón de veces.
Luego tenemos un «If», que puede o no correr.
Es este bloquecito de código.
Se ejecuta con una condición, y esta es la pregunta que estamos haciendo.
Esa es la pregunta.
Y al final ordenamos imprimir. Y repito...
No se esfuercen mucho con esto.
Solo quiero mostrarles...
Secuencia.
Repetición.
Condicional.
¿Entienden?
Esos conceptos aparecen en casi cualquier programa.
Muy bien.
Bien.
Hagamos un par más de ejercicios que les muestren...
la mentalidad de los programadores,
y como tienen que pensar en los problemas...
de una manera diferente.
Pues, aquí vamos.
Esto es a lo que yo llamo una historia corta animada.
Y su trabajo...
Les daré varios grupos de números
y quiero...
que encuentren el número mayor de la lista.
Bien...
Saber cuál es el número mayor, no es tan importante...
como fijarse cómo su mente...
aborda el problema.
Qué hacen sus ojos.
Qué hace su mente. Cómo dividen un problema en partes más pequeñas.
Cómo un humano resuelve este problema. Y me concentraré en...
la forma en que una computadora vería el problema.
¿Sí? Así que no solo obtengan la respuesta.
Eso no importa tanto.
Piensen cómo llegan a la respuesta.
Así que no lo busquen en YouTube
tramposamente para saber la respuesta.
Piensen en...
resolver el problema y aparte monitorear lo que su mente...
va pensando. Entonces...
Aquí vamos.
Entonces les doy una lista de números...
y deben decirme...
cuál es el número mayor.
¿Listos?
Prepárense.
Ahora.
No la puse fácil.
Busquen el número mayor.
¿Lo resolvieron?
¿Lo tienen?
¿Tuvieron que ver un par de veces?
En verdad no me importa la respuesta
La cuestión es...
¿Qué hizo su mente...
para resolverlo. Pero querrán la respuesta.
El número mayor es 198
Por supuesto lo moví para dificultarlo.
Pero hay una cosa.
Los humanos ¿cómo...
vemos esto?
Miraron el 25, luego el 1 y después el 114?
¿Vieron lentamente uno a la vez?
¿Así?
¿O no? Lo dudo.
O quizá sean una computadora.
¡Quizá todos sean computadoras!
Yo no; quizá ustedes sí.
Muy bien. Basta de eso.
No. Probablemente no lo hayan hecho así.
Deben haber movido la vista alrededor de todo con mucha rapidez.
Y lo primero que deben haber notado, es que había...
bloques de un dígito, bloques medianos y grandes morados.
Y lo primero que notaron...
inmediatamente, fue que no tenía caso...
ver...
ninguno de los bloques pequeños.
Su cerebro eliminó los bloques pequeños con mucha rapidez.
Luego dicen: «Bien, dado que no hay números de 4 dígitos, sino de 3...
Luego quizá buscaron el primer dígito...
Dijeron: «Mira, hay unos. ¿Habrá algún dos?»
Rápidamente decidieron que no había ningún dos.
Así que supieron que debían buscar los bloques grandes
Y que el segundo dígito era lo que importaba.
Luego llegaron a los nueves. Dijeron: «Oh, hay algunos nueves»
Y eso significa que es uno, nueve, algo.
Luego quizá tuvieron que verificar y encontrar el...
Oh, ¿dónde quedó el ciento noventa...
¡Ja!
¡Oh! Ciento noventa y ocho. Justo ahí.
Aunque le cambié el color, no lo veía.
Muy bien.
Pero el caso es que...
los humanos somos muy buenos...
para eliminar las malas soluciones
con mucha rapidez.
Y probablemente viendo cuánto morado había en la pantalla,
eliminaron las áreas con menos morado porque sabían que—
su cerebro rápida e instintivamente notó...
que entre más morado...
mayor era el número.
Las computadoras no hacen nada de eso.
Nada de eso.
Entonces...
Para que se sientan más como una computadora...
tengo otra prueba.
Y repito...
La meta no es solo encontrar el número mayor,
sino...
monitorear sobre la marcha lo que están pensando...
mientras lo hacen. ¿Está bien?
¿Entendido?
¿Cómo abordan el problema?
¿Qué sienten mientras abordan el problema?
¿Son una computadora, o no?
Aquí vamos. Les daré unos segundos.
Entonces...
¿Qué les salió?
Lo que pienso es...
que la mayoría de ustedes simplemente dijo...
«No me importa».
«Este problema es muy difícil
«Es estúpido» o «Trataré de voltear mi cabeza al revés».
O algo.
Es un problema difícil.
El otro fue bastante fácil.
Quizá no lo hayan resuelto, pero tienen el instinto para abordarlo.
Bien, les mostraré la respuesta correcta.
El resultado es...
Justo ese...
Es ciento...
noventa y siete.
Sí
Bien. No pueden, aunque les diga que ahí está...
lo que es. ¿Qué es esto? ¿Quinientos? o...
Dos...
cero, cero.
¿Cómo... ah, agg, ag?
En realidad solo podría lograrlo si lo volteo.
Los humanos no somos buenos para esto.
Esto es más parecido a cómo las computadoras ven el mundo, pero...
el que los datos estén al revés o al derecho no debería ser problema.
¿Sí?
Las computadoras...
necesitan una estrategia.
Debemos darles una estrategia.
Bien.
Aquí vamos.
Un...
último...
experimento.
Ahora...
les mostraré números, uno a la vez.
Y al final...
quiero que me digan cuál fue el número mayor.
¿Listos?
Aquí vamos.
Primer número.
¿Cuál fue el número mayor?
En realidad, ¿cómo resolvieron el problema?
Lo resolvieron...
casi seguro...
porque no vieron todos los números a la vez, así que probablemente...
crearon... una variable en su mente, sin darse cuenta.
y pusieron en esa variable—
la llamaron...
el número mayor que he visto hasta ahora.
y...
si no han visto ninguno, digamos que el número mayor que han visto es -1
Luego, les muestro un tres.
Y ustedes piensan: Bueno...
Uno negativo no es el mayor número que he visto.
Así que guardaré ese.
Guardaré el tres. Es el mayor hasta ahora.
Luego veo el cuarenta y uno. ¡Ah!
Cuarenta y uno es mayor que tres,
así que lo guardaré.
Y ahora veo un doce.
El doce es basura...
porque ni se acerca a cuarenta y uno, así que conservaré el cuarenta y uno.
Y ahora...
Oh, nueve.
No se acerca al cuarenta y uno, así que lo desecharé.
¿Setenta y cuatro?
Mejor... mejor... lo conservo. Me sirve.
Conservo el setenta y cuatro.
Y el último número es quince,
—No sabía que es el último—
pero no lo conservamos, así que ya terminamos.
Entonces sabemos que al final...
lo que durante el bucle fue el mayor hasta el momento...
es en realidad el mayor de todos los números.
Y no recordamos exactamente cuantos números...
había.
Y esto es pensar como un programa... como una ventana corrediza.
No importa si les hubiera dado un millón de números... o cinco.
Creo que eran cinco.
Esta idea del mayor hasta el momento es muy poderosa.
De hecho...
es el centro del programa que les he mostrado.
No traten de entender esto.
Pero, esta parte morada...
Esta parte morada...
en realidad dice:
Voy a correr en bucle para contar todas las palabras.
Si hay una palabra como... «The» está quince veces, y...
«Clown» está cuatro veces.
Y va a ver cada par de palabras y combinaciones.
Y dirá: Revisaré las cuentas que tengo...
y verificaré si la cuenta que estoy viendo es mayor...
que la cuenta mayor que he visto hasta ahora.
Y si lo es la recordaré.
Pero...
no se preocupen; no veremos esto hasta los capítulos 2, 3, 4, 5 y 6.
Pero esto es un algoritmo...
un párrafo...
un patrón...
que les permite encontrar el número mayor.
Volveremos a ver esto al detalle en capítulos siguientes.
Esto es, más o menos, la forma de pensar de una computadora:
tener una ventana corrediza a través de una larga lista de números...
y llegar a algo...
que sea la respuesta... que necesitamos.
Muy bien.
Este es el final de la conferencia.
Lean el capítulo 1.
Escriban su programa de «Hola mundo».
Si no lo han hecho asegúrense...
de instalar Python...
mientras leen este capítulo...
e incluso mientras instalan Python...
o mientras escriben su primer programa...
no se atoren en los detalles.
Yo estuve confundido como ocho semanas—-
seis semanas en mi primera clase de programación.
Les pasará a ustedes también.
Solo síganme. No deserten.
Comenzará a tener sentido en un punto que depende de ustedes.
Yo no puedo decirles cuándo lo entenderán.
Así que... no...
se queden viendo todo fijamente. Solo sigan escarbando...
sigan entendiendo, sigan jugando...
y tarde o temprano le hallarán mucho sentido.
Lo prometo.
Hasta la próxima.