Escribiendo un manual de programación para niños

Iniciado por haiku, 11 Octubre 2013, 13:56 PM

0 Miembros y 1 Visitante están viendo este tema.

haiku

Estoy escribiendo un manual de programación en python  para mi sobrino de 12 años, y de momento solo estoy con los conceptos generales y un poco de historia de la programación , y quería ponerlo aquí para que me dierais vuestra opinión sobre como voy :

......................
Imagina que tienes una maquina para construir seres humanos, el problema es a esta maquina solo acepta diseños en átomos. ¿te imaginas lo que es tener que construir un ser humano átomo a átomo? y sin cometer errores, seria una tarea muy complicada.

En un ordenador pasa algo parecido, todo lo que funciona en un ordenador (programas, juegos etc,) no son otra cosa que millones de impulsos eléctricos ordenados por grupos. Una especie de código morse eléctrico.

Para poder gestionar estos millones de impulsos eléctricos, ordenarlos y juntandolos por grupos para que se conviertan en información (en el ejemplo del código morse, por si solo, son solo golpes, ordenados

son un códigos de sonido o lo que es lo mismo, Información) se necesita un microcontrolador, que es en electrónica la pieza que controla la electricidad que entra y la ordena convirtiéndola en códigos de información.

El microcontrolador funciona con lo que hoy en día se conoce como Lenguaje maquina, compuesto por 2 únicos niveles de tensión: abierto o cerrado, es decir, pasa la electricidad o no pasa, y se representa con los números 0 y 1, por eso el lenguaje de máquina sólo utiliza estos numeros.

A cada uno de estos números, (los ceros y unos) en informática se decidido hace tiempo llamarlos Bit o bits en plural que son las iniciales de Binary Digit, es decir Dígito binario en ingles, por que solo esta compuesto de dos dígitos, 0 y 1

Siguiendo con nuestro ejemplo del código morse, los ceros serian los silencios y los 1 los golpes,(entra el sonido o no entra) por lo que en el típico  S.O.S  del código morse  (... --- ... ) donde las rayas se suelen hacer con un golpe y una pausa cuando se usan sonidos y no un telégrafo, en nuestro ejemplo de programación lo tendríamos que representar asi:

111 0 101010 0 111 (prueba a hacerlo en una mesa)

¡¡ Felicidades eso es programar !!


Bien entonces, tenemos claro que los microcontroladores hacen que en nuestro ordenador todo funcione, a base de ordenar impulsos eléctricos, y que representamos con los signos 0 y 1 a los que llamamos bits, mediante el Lenguaje Maquina, y así controlar si queremos dejar pasar o no estos impulsos.

Pero ahora viene el primer problema con el que los Ingenieros Informáticos se toparon en su dia.

Siguiendo con el ejemplo anterior, imagínate que queremos programar un S.O.S que suene durante todo un día. ¿Te imaginas cuantos bits tendríamos que poner en el papel? y asegurarnos ademas de que todo este en el orden correcto. y si después de 400 paginas de bits hay alguno que esta mal puesto, ¿Imaginas lo que significa tener que revisar todo eso hasta encontrar ese bit mal puesto?

Por este motivo se invento el primer lenguaje de programación, El Lenguaje Ensamblador. Este lenguaje trabaja con nemónicos, que son simplemente grupos de letras y números que representan las órdenes o tareas que queremos que el microcontrolador haga. Y para que nuestro ordenador (que recordemos solo habla en ceros y unos) entienda estos nemonicos, se usa un programa llamado Ensamblador que funciona como traductor.

Por ejemplo, en el ejemplo anterior del S.O.S, si lo escribiésemos con nuestro propio lenguaje ensamblador en lugar de en código maquina escribiríamos "S.O.S" y usando un programa ensamblador le diríamos al microcontrolador que cuando nosotros queremos hacer una S en el código morse significa que estamos diciendo que deje pasar 3 impulsos (111). De esta forma es mas sencillo poner "S.O.S" varias veces que tener que poner "111 0 101010 0 111" varias veces.  ¿Lógico verdad?


Pero si el lenguaje maquina solo tiene 2 posibilidades, como podemos usar nemonicos en lenguaje ensamblador para decirle a la maquina que trabaje con mas de 2 opciones?

como hemos hablado antes, el microcontrolador no solo se encarga de gestionar los impulsos, para dejarlos entrar o no si no que ademas tiene la capacidad de mandarlos a distintos sitios por los circuitos, y así, ordenarlos en grupos, si usamos estos grupos, con un sistema binario podemos crear mas de 2 combinaciones diferentes.


¿que es un sistema binario?


En nuestro sistema de números, en cada espacio nosotros usamos hasta 10 posibilidades por eso se llama sistema Decimal, por que usamos 0,1,2,3,4,5,6,7,8 y 9 ¿y cuando necesitamos mas números por ejemplo para poner un 10? pues añadimos un nuevo espacio, con  otras 10 posibilidades mas para números, este nuevo espacio si te fijas siempre se añade a la izquierda.

En el sistema binario es igual solo que en lugar de tener 10 posibilidades solo tenemos 2: el 0 y el 1

En el sistema decimal se multiplica cada casilla de la izquierda por 10 de forma que si tenemos un numero de 3 dígitos como por ejemplo 345 sabemos automáticamente, que el numero 3 al estar en la tercera casilla, contando desde la derecha hay que multiplicarlo por 100 y el que esta en medio por 10. Por lo que ese numero seria (3*100) + (4*10) + 5 en Binario como solo tenemos 2 posibilidades y no 10, cada casilla a la izquierda vale el doble de la que tiene a su derecha. y no 10 veces mas como con el sistema decimal. Ejemplo: 128-64-32-16-8-4-2-1 (recuerda que siempre se empieza a contar desde la derecha)

Imagina que tenemos 8 bombillas y cada una vale lo mismo que hemos dicho antes (128-64-32-16-8-4-2-1) ¿que bombillas tienes que encender para sumar 22? la sexta bombilla no por que esa vale 32 y nos pasaríamos, asi que tendríamos que empezar encendiendo la 5º bombilla que vale 16 ya que es el numero mas alto sin pasarse, la 4º bombilla tampoco podemos encenderla por que entonces serian 16+8 y eso es 24 y también seria pasarse, asi que tenemos que ir a la anterior aun la que vale 4 de esta forma ya tenemos 16+4 que son 20, asi que solo nos quedaría encender la que vale 2 para sumar 22 ¿no?

pues esto en binario seria 00010110 fíjate como los 1 corresponden a las bombillas que estan encendidas, por lo que contando desde la derecha serian 2+4+16 =32 ¿facil no? ¿y si encendiésemos las 8 bombillas?

pues entre todas sumarían 255.


Los Bytes:

Un Byte es un grupo de 8 bites. (igual que en el ejemplo de las bombillas) y sabemos que un grupo de 8 bits nos permite 255 posibilidades. Es por eso que cada byte que es la unidad mas pequeña que se usa en informática, tiene un valor entre 0 y 255.

Slava_TZD

Vaya tostón...No es por quitarte la ilusión, pero a esa edad tu sobrino está para empezar a hacerse pajillas o para pensar en el tanga de la morena que se sienta delante de él en clase, no para aprender python. En cualquier caso, si es un niño aventajado o tiene inquietudes fuera de lo común, cómprale un libro que para eso están.


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.

haiku

Cita de: Tzhed\ Kyperf/ en 11 Octubre 2013, 15:42 PM
cómprale un libro que para eso están.

claro, y para que va a usar software libre o hacer programas, mejor compra un programa de pago que para eso estan  ;D

Eleкtro

#3
Cita de: haiku en 12 Octubre 2013, 05:59 AMclaro, y para que va a usar software libre o hacer programas, mejor compra un programa de pago que para eso estan  ;D

No le encuentro sentido a que como respuesta a lo que te ha comentado el compañero digas esas chorradas, ¿que tendrá que ver el software libre con comprar un libro?.

¿Es que acaso comprar un libro que puede estar escrito por varios programadores expertos y con ejemplos visuales para poder aprender, eso es lo mismo que no querer comprar una app porque puedes hacerla tu?...

...en ese caso estarías dando por hechodos cosas que yo las definiría como ignorancia,
la primera es creer poder llegar a escribir un libro que iguale la calidad de contenido de un libro profesional, y la segunda cosa es creer poder igualar la calidad de una aplicación desarrollada por un equipo de varios programadores profesionales.

¿En serio crees que si escribes un tocho de libro para tu sobrino le vas a hacer un favor y este va a aprender mejor o igual que con un buen libro cualificado?
Por ese motivo, y como ya te han comentado, si reálmente quieres hacerle un favor al chaval, cómprale un buen libro, totálmente en serio.

De todas formas si ese es tu hobbie, como crítica constructiva te sugiero que mejores las comparaciones para niños (y las de adultos también), explicando/comparando el código morse cometes errores,
un niño debe aprender bien aprendido desde el inicio para no tener tener que volver a aprender lo mismo en la vida adulta,
si un niño empieza "aprendiendo" que el código morse son "golpes", y que solo hay dos tipos de "golpes" (según tu, silencio y golpe) vamos mal, hay pulsaciones de duracion corta, de duración más larga, y pausas (silencio), no te pido que te pongas a explicar las características de las ondas electromagnéticas, ni el alfabeto morse, pero no se... podría estar mucho mejor comparado, aunque por otro lado, ¿A quien le importa aprender código morse xD?, pero es que el ejemplo podría ser aplicado a las siguientes comparaciones que hagas en el futuro.

De hecho yo a la comparación del código morse no le encuentro mucho sentido (pensando con lógica) porque no es una comparación suficiéntemente equitativa,
estaría mucho mejor comparado con un "SI o NO", un "On u Off" o un "True o False", pues es un "0 y 1", y vamos, creo que eso lo puede entender cualquier niño,
de hecho la representación del código binario está en los circuitos electrónico ("on/off", "true/false"), no tiene más historia, pero tu estás reinventando la rueda poniendo como ejemplo algo complejo para un niño como puede ser el código morse y liando mucho más la lógica de las explicaciones, y así vamos mal, http://en.wikipedia.org/wiki/Binary_number , la comparación de las bombillas ya es otra cosa, eso sí, on, off.

Otra cosa que veo es que al principio del post dices que estás escribiendo un "manual de python", pero solo veo conceptos básicos, y explicados cada uno en menos de 20 lineas,
o haces un manual de conceptos básicos de programación e informática, o haces un manual de python, al menos así lo veo yo.

Como manual de programación (para niños o no) eso no tiene futuro, la propia documentación/experiencia del autor o al menos la forma de expresarla no la considero demasiado buena,
y seamos sensatos porfavor, nada de lo que puedas llegar a escribir va a poder compararse con el peor de los libros de programación,
no creo que ni tu, ni yo, ni nadie de los aquí presentes esté capacitado para escribir algo que no sea "más basura",
para escribir un buen manual/libro semejante (y además querer escribirlo por uno mismo sin supervisión...), como minimo hay que tener la experiencia de 1-2 décadas en la materia y además saber expresar las cosas con claridad, de lo contrario solo se escriben tutoriales que no valen para nada ni aportan nada nuevo, como los que suele postear la gente en los foros y algunos son de muchos programadores que se consideran expertos, esto es así.

Saludos!








haiku

#4
ves, esto ya me parece una critica mas constructiva (y util).

Citar¿Es que acaso comprar un libro que puede estar escrito por varios programadores expertos y con ejemplos visuales para poder aprender, eso es lo mismo que no querer comprar una app porque puedes hacerla tu?...

bueno también hay aplicaciones echas por programadores expertos con diseños visuales muy chulos y no por ello la gente deja de preferir hacer las suyas, en lugar de usar por ejemplo itunes.


que las comparaciones se pueden mejorar... ok aceptado pero si me he decidido a escribir uno es por que lo que he visto (y he visto mucho) no me gusta, ni en la forma, ni en sus ejemplos. y o son tremendamente basicos o pegan un salto bestial sin que exista un proceso gradual de aprendizaje.

y si en teoria el manual es de python pero primero hay que explicar algunas cosas basicas, entrar en un lenguaje de programacion sea el que sea si no se entiende ni que es... ni por que es lo que es... no me parece util


discrepo contigo en que no hay que ser un mega experto en programacion en un lenguaje para enseñar a nivel basico a alguien mas novato. lo unico que hay que hacer es dominar el conocimiento que se pretende enseñar. y buscar la mejor forma de explicarlo que es lo que pretendo yo, que no es otra cosa que un mini manual para un niño de 12, no publicar un libro sobre ello.

pero vamos, algunas cosas de las que has dicho te doy la razon, asi que tendre que revisar el texto aun mas.

mr.blood

Hay algunas incongruencias como ya te comentaron. Está redactado de forma aburrida, monótona y con un léxico poco comprensible para un niño.

Yo le enseñaría directamente algunas instrucciones sencillas. No es necesario saber la historia para programar. Y todo ese tocho acerca de los microcontroladores? Quieres enseñarle Python, no a programar un Arduino. Si le interesa ya lo investigará más adelante. Lo único que conseguirás con ese texto es desanimar a cualquiera que quiera aprender.

Sin ánimo de ofender ni desanimarte, creo que está mal planteado.

Sa1uDoS

daryo

#6
meeee aburrido   :silbar:

no reinventes la rueda ya hay libros para niños sobre programacion e leido partes de algunos y son bastante entretenidos sino dificilmente obtendra la atencion de un niño, mira como estan escritos y con base a ello haz algo mas o menos parecido.

aca un ejemplo http://www.taringa.net/posts/ciencia-educacion/14771119/EBook-Python-para-ninos-de-8-anos-o-mas.html

PD:recuerda cuando eras niño como te hubiera gustado que te lo explicaran o como hubieran logrado que te llame la atencion?
buenas

haiku

jaja supongo que tienes razon daryo lo que pasa es que hace muchooooo que yo no soy niño, en mi epoca, a los niños pijos le regalaban la primera sega el resto nos conformabamos con que nos dejasen usar la comodore... asi que imagina.

ese de doma de serpientes no lo conocia, tiene buena pinta ire a echarle un vistazo.

Eleкtro

Cita de: haiku en 12 Octubre 2013, 14:01 PMdiscrepo contigo en que no hay que ser un mega experto en programacion en un lenguaje para enseñar a nivel basico a alguien mas novato. lo unico que hay que hacer es dominar el conocimiento que se pretende enseñar.

Tienes razon, cuando dije eso me centraba en explicar "a lo grande" xD, pero para enseñar lo básico pues solo hay que saber lo básico, si

suerte con el  manual
un saludo