30 abr. 2014

Los lenguajes de programación

Esta semana se cumplen los 50 años de la creación del lenguaje de programación BASIC. Su creadores, John George Kemeny y Thomas Eugene Kurtz tenían el objetivo de acercar la programación de computadores a todo el mundo.


Pero, ¿qué es un lenguaje de programación? Pues hablando simplemente, es el “idioma” con el que podemos comunicarnos con nuestro ordenador o móvil para enseñarle a hacer... prácticamente cualquier cosa. En efecto, todos los programas que tenemos en nuestro ordenador, el control automático de la temperatura de un aire acondicionado, todas las increíbles apps que tenemos en nuestro teléfono móvil, todos sin excepción están desarrollados usando un lenguaje de programación.



Ahora bien las máquinas, al contrario de lo que pensamos, son “tontas”: hacen justo justo lo que les pedimos que hagan, ni más ni menos. Por eso un lenguaje de programación consiste en unas instrucciones muy sencillas y muy precisas, para que no haya líos. Y por ello, programar puede llegar a ser algo realmente complicado, pues para que el ordenador nos entienda debemos ceñirnos estrictamente a su “idioma” o le sucederá lo que normalmente llamamos “quedarse colgado”. Un ejemplo de programa muy sencillo para que nos hagamos una idea de lo complejo que puede llegar a ser el asunto:










mostrar(¿Cuántos asteriscos quiere?);
entrada(n);
Para i=1 to n
mostrar(*)
Fin Para;




Estas cinco líneas extrañas se llaman “código”, y reflejan un programa muy simple que pregunta al usuario cuántos asteriscos quiere imprimir por pantalla, y luego guarda su respuesta en la variable “n”. A continuación enseña el carácter asterisco “n” veces, las que le hayamos dicho, con lo cual aparecerán en la pantalla los asteriscos pedidos. Fijaos qué programa tan tonto; y sin embargo cuánta complejidad tiene... Así que imaginaos una app como “whatsapp” o un videojuego como “FIFA” cuán difícil es de desarrollar. No en vano, los programas actuales no son hechos por una persona, sino por un equipo completo, y contienen varios cientos de miles de líneas de código.



Aunque el lenguaje BASIC suponía una revolución por su sencillez, sigue siendo complicado hacer un programa interesante en él. Con interesante me refiero a que tenga efectos visuales y sonidos tal y como estamos acostumbrados. Por suerte, en la actualidad han surgido numerosas alternativas de lenguajes de programación “para niños” para que prácticamente cualquiera pueda hacer sus propias aplicaciones, incluyendo juegos.


Una de ellas es “Scratch”. Sólo tienes que pinchar el enlace y empezar a programar casi directamente. Su principal ventaja es que no tienes que
instalar nada, pues se ejecuta en el navegador, y además prácticamente no hay que escribir código. En lugar de escribir palabras clave, el lenguaje está formado por bloques gráficos que puedes arrastrar para crear el código de tu programa.




Así que ya estás tardando, todo lo que necesitas es Internet y paciencia (esto último es más difícil de encontrar) para empezar a hacer tus propios videojuegos. No olvides que muchos grandes juegos, como el “Comecocos” o el “Tetris” son programas relativamente simples que fueron desarrollados por una persona (generalmente estudiantes).

¡Lo importante es tener una buena idea!


20 nov. 2013

La (no) estructura de los números primos


Si hay un tema que ha fascinado a matemáticos y no matemáticos durante siglos son los números primos. Cuando era pequeño siempre me preguntaba por qué usaban esa relación de parentesco con esos números (¿primos de quién?), hasta que ya de adulto comprendí que primo era sinónimo de primario.

Y es que los números primos son para el conjunto de números enteros $\mathbb Z$ como los colores primarios son al arco iris; o como los sabores primarios son a la gastronomía. Son también como los elementos de la tabla periódica: todo lo que podemos tocar, ver u oler está hecho combinando adecuadamente esas piezas básicas.

En efecto, los números primos son los ladrillos indivisibles (átomos) que permiten construir todos los demás; multiplicativamente hablando, claro está. Desde el punto de vista de la suma, el asunto es trivial: todos los número nacen a partir del uno. En terminología de teoría de grupos podemos decir que los números primos son un sistema generador de $(\mathbb Z, \cdot)$.

Mucho se ha investigado acerca de qué comportamiento tiene la aparición de estos números dentro de $\mathbb Z$, pero poco se ha descubierto. La aparición de números primos aparenta tener un comportamiento caótico, y aunque se han encontrado ciertas "regularidades", queda mucho por conocer. Es quizá uno de las cuestiones matemáticas fáciles de formular (no hace falta ser un genio para entender el problema) que siguen sin ser resueltas.

Entendamos bien la cuestión. Los número pares, por ejemplo, tienen un comportamiento muy previsible: uno sí uno no. Si hablamos de los múltiplos de 6, sabemos que hay mucha regularidad, pues cada 6 números enteros hallamos uno de la familia.  Conjuntos de números más complicados, como los cuadrados perfectos, pueden ser descritos con alguna fórmula, como $n=k^2, k\in \mathbb Z$ en ese caso. Por muy rebuscado que busquemos la colección de números en cuestión, siempre se encuentra un método para describirla, así que, ¿cómo es posible que para un conjunto tan importante como el de números primos no tengamos casi nada?

La cuestión no es sólo mera curiosidad, que también (esa y no otra suele ser la principal motivación del matemático puro). El comportamiento de los números primos juega un papel crucial en la Criptología o teoría del cifrado de información, tan importante en el mundo de las transacciones digitales, las comunicaciones militares o la televisión de pago. Pues bien, a pesar de la presión económica que existe sobre el tema, los número primos siguen aguantando el tirón, ocultando su tan bien guardado secreto.

A la hora de descifrar el misterio de los números primos, además de técnicas de matemáticas avanzadas, como la función "zeta" de Rienman ζ(s), se han intentado muchos trucos visuales como la espiral de Ulam. El último que he conocido, y que me ha motivado a escribir esta entrada, es este de aquí:


Es impresionante ver cómo aparecen los números primos (círculos perfectos) cuando menos te lo esperas. Pero no menos sorprendente es que podamos distinguir de un simple vistazo los números que son potencias de dos, o potencias de tres, o de cinco. O la estructura tan parecida que tienen el 243 y el 162, debido a que ambos tienen "en su interior" a $3^4$ (ojo, $243=3^4 \cdot 3$ y $162=3^4 \cdot 2$).
243
162

































Asimismo es llamativo que los números que nos parecen raros tienen un "aspecto circular", apenas tienen estructura interna (por ejemplo el 183). En cambio, los "números redondos" tienen mucho nivel de organización interna (mirad el 200).
183

200


En definitiva, estos diagramas no revelan el misterio de los números primos pero proporcionan un pequeño avance, pues creo que la visualización es el germen de cualquier buena idea matemática.


27 mar. 2013

Blog en pausa

Bueno, esta entrada es sólo para avisar a los (pocos) seguidores del blog de que el mismo no está abandonado, sólo en pausa hasta que vuelva a sacar tiempo y motivación para seguir con él, lo cual espero que suceda pronto. Las cuestiones de secundaria prácticamente van a desaparecer, pues ahora trabajo con el alumnado a través de la plataforma Edmodo. Sinceramente, la recomiendo a todos los docentes.

Próximamente seguiremos con artículos de divulgación matemática y sus derivados. Un saludo.

2 oct. 2012

Hoja de problemas para 1º ESO

Aquí dejo esta hoja para los alumnos de 1º C, para que practiquéis para el examen. Puedes descargarla e imprimirla o usarla desde aquí.

Hoja de problema 1º ESO Tema 1 Números Naturales

24 sept. 2012

El sistema de numeración decimal, el "ordenador" del siglo XIII

Que el sistema de numeración decimal es importante es algo que uno sabe desde chiquitito, desde siempre, pues ya cuando uno está en los primeros años del colegio le van metiendo en la cabeza la idea de que hacer paquetes de 10 es bueno. Pero yo personalmente, he sido realmente consciente de esta importancia relativamente tarde. Y es que, claro, con la edad uno va ampliando sus conocimientos en otras materias distintas a la Matemática y empieza a comprender las cosas en su situación histórica.

Situémonos por un momento en el siglo XIII, en prácticamente cualquier parte de Europa, en tu país, en tu pueblo... Hagamos el pequeño esfuerzo de concienciarnos de la poca o casi nula tecnología del momento. Hagamos el pequeño esfuerzo de pensar en la ausencia de electricidad, de agua corriente. Hagamos el pequeño esfuerzo de mentalizarnos de la dureza de enfrentarse a la difícil tarea de sobrevivir sin ninguna de las comodidades de hoy día. Además, a todas esas carencias añadámosle una más, la ausencia del sistema decimal. Imaginémonos a los ciudadanos de la época contando con números romanos, o un caso más extremo todavía, haciendo una marca en una tabla por cada unidad que se quiera contar.

Bien, pues a pesar de todo, había comercio, y había transacciones económicas. Había agricultura, y era necesario controlar las cantidades que se producían. Había ganadería, y era necesario llevar una contabilidad de los animales que se tenían. ¿Cuántas horas se perderían en hacer una simple división o una multiplicación? A día de hoy tenemos tan interiorizado que dividir un número entre otro es algo inmediato que es muy difícil que nos imaginemos vivir en un mundo en el que era prácticamente saber cuánto es 1654 entre 253. Cuesta mucho comprender la gran limitación que ello supone al desarrollo de la tecnología.

Un ejemplo concreto. Vas a comprar un terreno, y sabes que una mide 259 m de largo por 723 m de ancho. Sin embargo ves otro por el mismo precio que mide 360 m por 659 m. Como multiplicar esos grandes números era prácticamente imposible ¡NO SABRÍAS CON CUÁL QUEDARTE!

Seguramente, los primeros árabes que utilizaron el sistema decimal (copiado de los hindúes, por cierto) fueron considerados como magos, prácticamente. La ventaja de cálculo con la que contaban seguro que les reportó grandes beneficios (imagínate la que podrían haber formado en un mercado comprando y vendiendo a individuos que eran incapaces de multiplicar y dividir). Y es que el sistema decimal es maravilloso, pues permite utilizar unos sencillos métodos para realizar operaciones, mientras que los otros no.

Pensemos en el sistema unario: el número $N$ se representa por $N$ rayitas. Ya de partida este sistema presenta una clara desventaja, pues para representar el número 259 hay que hacer 259 marcas, y ello es una pérdida considerable de tiempo. Si somos capaces de hacer cuatro o cinco rayas por segundo necesitamos más o menos un minuto para escribir el número. Vamos, un atraso.
Para sumar no hay demasiado problema, pues por ejemplo para sumar 259 y 164 basta con escribir uno seguido del otro. Para restar, casi lo mismo: escribo el primer número y luego voy borrando tantas rayas como indique el segundo. Bueno, parece que no todo es malo en este sistema.

Pero ahora vamos a multiplicar, por ejemplo, 3 por 4. Es decir
multiplicado por
Para ello bastará con sustituir cada raya verde por el "número tres", o sea, escribir cuatro veces el tres.

Parece fácil pero, ¿y para multiplicar 259 por 723? Prefiero ver seguidas todas las temporadas de Arrayán antes que esa multiplicación.
Pero es que además hay problemas aún más sutiles. Imaginemos que me he armado de paciencia y he conseguido hacer la multiplicación anterior para calcular el área del terreno que decíamos más arriba. Ahora ya que estamos me pongo y multiplico igualmente 360 por 659. Quince años después ya he terminado y ahora quiero decidir con qué terreno me quedo. O sea, qué número es más grande. Pero pensemos que lo que tengo es un montón de montones de rayas en un sitio y otro montón en otras. Es difícil saber cuál es mayor, a no ser que las hayamos ido dibujando en fila con mucho cuidado, todas del mismo tamaño y equiespaciadas, de manera que la fila más larga será el número mayor.

En cambio, con el sistema decimal, en cinco minutos podemos tomar una decisión, pues el algoritmo usual de multiplicación funciona como por arte de magia (¡en realidad no lo es!) y nos permite operar y comparar cantidades en poco tiempo. Y esta facilidad de cálculo dio pie a esa ambición humana que consiste en adivinar el futuro a nuestro beneficio: si siembro tantas tomateras para venderlas a tal precio ganaré más que si siembro esta otra cantidad pero a este otro precio; si en vez de utilizar este material para construir este martillo en lugar de este otro puede que me ahorre tanto dinero; y más recientemente, si Movistar me ofrece un móvil "gratis" pero las llamadas me cuestan tanto es que se cree que soy tonto.

En definitiva, el sistema decimal abrió la puerta del diseño, de la planificación, y por tanto supuso una auténtica revolución en la Ciencia y la Tecnología. Tanto como en el siglo XX y XXI ha supuesto la aparición del microprocesador y los ordenadores.

Esta entrada participa en la Edición 3.141592 del Carnaval de Matemáticas alojado en el blog ZTFNews.org.