Estoy buscando lo mejor que puedes hacer en unas pocas líneas de código simple. Estoy seguro de que puedes escribir un conjunto de Mandelbrot en Haskell en 15 líneas, pero es difícil de seguir.
Mi objetivo es inspirar a los estudiantes que la programación es genial .
Nosotros sabemos que la programación es genial, porque se puede crear cualquier cosa que imagine - es la última salida creativa. Quiero inspirar a estos principiantes y superar la mayor cantidad posible de jorobas de aprendizaje temprano.
Ahora, mis razones son egoístas. Estoy enseñando un curso de Introducción a la Computación a un grupo de 60 estudiantes de mitad de ingeniería y mitad de negocios; Todos los estudiantes de primer año. Son los estudiantes que vinieron de escuelas secundarias desfavorecidas. A partir de mi experiencia pasada, el grupo se divide en general, de la siguiente manera: un par de estrellas de rock , algunos que tratan muy duro y tipo de conseguirlo, los pocos que tratan muy duro y casi no lo consigue, y los pocos que no me importa. Quiero llegar a tantos de estos grupos tan efectivamente como pueda. Aquí hay un ejemplo de cómo usaría un programa de computadora para enseñar:
Aquí hay un ejemplo de lo que estoy buscando: un script VBS de 1 línea para que su computadora se comunique con usted:
CreateObject("sapi.spvoice").Speak InputBox("Enter your text","Talk it")
Podría usar esto para demostrar el orden de las operaciones. Mostraría el código, dejaría que jugaran con él, y luego les explicaría que están sucediendo muchas cosas en esa línea, pero la computadora puede entenderlo porque conoce las reglas. Entonces les mostraría algo como esto:
4(5*5) / 10 + 9(.25 + .75)
Y puedes ver que lo primero que necesito hacer es (5 * 5). Entonces puedo multiplicar por 4. Y ahora he creado el Objeto. Dividir por 10 es lo mismo que llamar a Speak: no puedo hablar antes de tener un objeto, y no puedo dividir antes de tener 100. Luego, en el otro lado, primero creo un InputBox con algunas instrucciones sobre cómo mostrarlo. . Cuando presiono enter en el cuadro de entrada, evalúa o "devuelve" lo que haya ingresado. (Sugerencia: 'oooooo' hace un sonido gracioso) Entonces, cuando digo Hablar, el lado derecho es qué hablar. Y lo obtengo de InputBox.
Entonces, cuando haces varias cosas en una línea, como:
x = 14 + y;
Debes ser consciente del orden de las cosas. Primero agregamos 14 e y. Luego colocamos el resultado (lo que evalúa o devuelve) en x.
Ese es mi objetivo, tener un montón de estos ejemplos geniales para demostrar y enseñar a la clase mientras se divierten. Probé este ejemplo con mi compañera de cuarto y, aunque puede que no lo use como la primera lección, a ella le gustó y aprendió algo.
Algunos buenos programas matemáticos que hacen gráficos o formas hermosas que son fáciles de entender serían buenas ideas y las analizaré. Aquí hay algunos ejemplos complicados de ActionScript, pero eso es demasiado avanzado y no puedo enseñar flash. ¿Qué otras ideas tienes?
fuente
Respuestas:
Recibí una gran respuesta de mis hijos con un script VB rápido para manipular un personaje de Microsoft Agent. Para aquellos que no están familiarizados con MS Agent, es una serie de personajes animados en pantalla que se pueden manipular a través de una interfaz COM. Puede descargar el código y los caracteres en la página de descarga del Agente de Microsoft .
Las siguientes líneas harán que el personaje de Merlín aparezca en la pantalla, vuele, toque la pantalla para llamar su atención y salude.
Hay muchos otros comandos que puedes usar. Chequehttp://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx para más información.
EDITAR 2011-09-02 Recientemente descubrí que Microsoft Agent no está instalado de forma nativa en Windows 7. Sin embargo, se ofrece como una descarga por separado aquí . No he probado esto, así que no puedo verificar si funciona.
fuente
Ingrese este código en su barra de direcciones (en su navegador) y presione Intro. ¡Entonces puedes editar todo el contenido de la página web!
Ese es el "one-liner" más genial que conozco =)
fuente
javascript:
yvoid 0
son repetitivos: el equivalente deint main() {
yreturn 0; }
en C. Y las otras dos líneas son solo API de navegador diferentes que hacen lo mismo: la primera es la API de IE, la segunda es la API de NetScape. HTML5 utilizacontentEditable
, por lo que, a menos que le importe admitir Firefox 1.5 o algo así, el código real equivale a:document.body.contentEditable='true';
Cuando escribí esto por primera vez.
Se voló la gente! ¡La computadora recordó su nombre!
EDITAR: solo para agregar a esto. Si puede convencer a un nuevo programador, esto es lo mejor que puede hacer, se convertirán en buenos programadores. En estos días, puede hacer casi cualquier cosa que desee con una línea de código para ejecutar una biblioteca que alguien más escribió. Personalmente no obtengo ninguna satisfacción al hacerlo y veo pocos beneficios en enseñarlo.
fuente
PHP: la junta de Sierpinski, también conocida como la Trifuerza
OK, son 15 líneas de código, ¡pero el resultado es increíble! Ese es el tipo de cosas que me hicieron enloquecer cuando era niño. Esto es del manual de PHP:
fuente
Microsoft tiene Small Basic , un IDE para "niños".
Está específicamente diseñado para mostrar cuán genial es la programación.
fuente
Tiendo a pensar que las personas están impresionadas con cosas con las que pueden relacionarse o que son relevantes para sus vidas. Intentaría basar mis 10 líneas de código en algo que ellos saben y entienden. Tomemos, por ejemplo, Twitter y su API. ¿Por qué no utilizar esta API para crear algo que sea genial? Las siguientes 10 líneas de código devolverán la "línea de tiempo pública" de Twitter y la mostrarán en una aplicación de consola ...
Mi ejemplo de código podría no ser el mejor para sus alumnos. Está escrito en C # y usa .NET 3.5. Entonces, si les va a enseñar PHP, Java o C ++, esto no será útil. Sin embargo, mi punto es que al asociar sus 10 líneas de código con algo "genial, interesante y relevante para los estudiantes, su muestra también se vuelve genial, interesante y relevante.
¡Buena suerte!
[Sí, sé que me he perdido algunas líneas de usar declaraciones y el método Main, pero supongo que las 10 líneas no tenían que ser literalmente 10 líneas]
fuente
Este es un servidor Telnet de Python que le pedirá el nombre de los usuarios y los saludará. Esto se ve genial porque te estás comunicando con tu programa desde una computadora diferente a través de la red.
fuente
Creo que es difícil ser un educador informático en estos días. Yo soy. Nos enfrentamos a una batalla cuesta arriba cada vez más empinada. Nuestros estudiantes son usuarios increíblemente sofisticados y se necesita mucho para impresionarlos. Tienen tantas herramientas accesibles para ellos que hacen cosas increíbles.
¿Una calculadora simple en 10 líneas de código? ¿Por qué? Tengo una TI-86 para eso.
¿Un guión que aplica efectos especiales a una imagen? Para eso es Photoshop. Y Photoshop elimina todo lo que puede hacer en 10 líneas.
¿Qué tal copiar un CD y convertir el archivo a MP3? Uhh, ya tengo 50,000 canciones que obtuve de BitTorrent. Ya están en formato MP3. Los juego en mi iPhone. ¿Quién compra CD de todos modos?
Para presentar a los usuarios expertos la programación, tendrá que encontrar algo que sea:
a) aplicable a algo que encuentran interesante y genial, y b) hace algo que ya no pueden hacer.
Suponga que sus alumnos ya tienen acceso al software más costoso. Muchos de ellos tienen la versión completa de Adobe CS5.5 (precio minorista: $ 2,600; precio real: gratis) y pueden obtener fácilmente cualquier aplicación que normalmente rompería el presupuesto de su departamento.
Pero la gran mayoría de ellos no tiene idea de cómo funciona realmente alguna de estas "cosas de computadora".
Son un grupo increíblemente creativo: les gusta crear cosas. Solo quieren poder hacer o hacer algo que sus amigos no puedan hacer. Quieren alardear de algo.
Aquí hay algunas cosas que he encontrado que resuenan con mis alumnos:
Ninguno de estos implica ninguna programación en el sentido tradicional. Pero sí aprovechan bibliotecas poderosas. Pienso en ellos como un tipo diferente de programación.
fuente
He encontrado un gran favorito (en GWBASIC) es:
He descubierto que los estudiantes principiantes tienen algunas concepciones que necesitan ser reparadas.
Buena suerte con tu clase. Estoy seguro de que lo harás bien.
PD: Estoy seguro de que entiendes que, junto con el material y la habilidad, también estás enseñando una actitud, y eso es igual de importante.
fuente
Este código C puede ser ofuscado, pero lo encontré muy poderoso
Y aquí está el resultado ... En solo 3 líneas ... Una especie de fractal
Hello World
...fuente
¿Qué le parece mostrar que puede tomar cualquier navegador web e ingresar JavaScript en la barra de direcciones y obtener el código para ejecutar?
EDITAR: vaya a una página con muchas imágenes e intente esto en la barra de direcciones:
fuente
Podría hacer una aplicación que elija un número aleatorio. Y tienes que adivinarlo. Si te equivocas, dice: más alto o más bajo. Y si lo has adivinado, un buen mensaje.
Es genial jugar para los estudiantes.
Versión simple de Python sin verificación de errores adecuada:
Erik sugiere que la computadora adivine el número. Esto también se puede hacer dentro de 10 líneas de código (aunque ahora la falta de verificación de errores adecuada es aún más grave: los números válidos fuera del rango causan un bucle infinito):
fuente
eval(raw_input(prompt))
. Ver entrada .De vuelta en la clase de informática en la escuela secundaria, yo y un par de amigos enseñamos a la clase cómo programar con Delphi. La clase se centró principalmente en la programación con Pascal, por lo que Delphi fue un buen siguiente paso. Demostramos la naturaleza impulsada por los eventos de Delphi y sus capacidades RAD. Al final de la lección, mostramos a la clase una aplicación de muestra y les pedimos que la reprodujeran. La aplicación le preguntó " ¿Estás borracho? " Con dos botones Sí y No . ... Creo que sabes lo que viene después ... el botón No cambió la ubicación del mouse y fue casi imposible hacer clic.
Los estudiantes y el maestro obtuvieron una buena patada.
El programa solo requería unas pocas líneas de código escrito por el usuario con una ecuación simple para calcular dónde mover el botón. No creo que ninguno de los otros estudiantes lo haya descubierto, pero algunos estaban cerca.
fuente
Cuando descubrí por primera vez el bash forkbomb, pensé que era realmente dulce. Tan simple, pero ordenado en lo que puede hacer:
fuente
Esto es trampa, y ni siquiera remotamente simple, pero una vez escribí un shoot'em en 20 líneas de C ++, usando la biblioteca de gráficos Allegro. No hay criterios reales para lo que era una línea , pero fue hace un poco, y fue hecha por pura diversión. Incluso tuvo efectos de sonido crudos.
Así es como se veía:
20 líneas http://img227.imageshack.us/img227/8770/20linesxx0.png
Y aquí está el código ( debería compilar):
fuente
En la actualidad, JavaScript es una excelente manera de mostrar cómo puede programar utilizando algunas herramientas realmente básicas, como el bloc de notas.
¡Los efectos de jQuery son un excelente punto de partida para cualquiera que quiera sorprender a sus amigos!
En este, simplemente haga clic en el espacio en blanco de la página.
fuente
Una cosa que podría considerar es algo como Robocode , en el que se abstrae una gran cantidad de codificación y básicamente le dice a un robot qué hacer. Una simple función de 10 líneas puede hacer que el robot haga mucho, y tiene un resultado muy visual y fácil de seguir.
Quizás Robocode en sí no sea adecuado para la tarea, pero este tipo de cosas es una buena manera de relacionar el código escrito con las acciones visuales en la computadora, además es divertido observarlo cuando necesita dar ejemplos.
fuente
Entonces, un día, decidí que ya había tenido suficiente. Me gustaría aprender piano. Ver a personas como Elton John dominando el dominio del teclado me aseguró que esto era lo que quería hacer.
En realidad, aprender piano fue una gran decepción. Incluso después de completar ocho grados de lecciones de piano, todavía no me impresionaba cómo mi imagen mental de tocar el piano era tan diferente de mi visión original de disfrutar la actividad.
Sin embargo, lo que más disfruté fueron mis tres grados de rudimentos de teoría musical. Aprendí sobre la construcción de la música. Finalmente pude pasar del mundo de la interpretación de música escrita a escribir mi propia música. Posteriormente, pude comenzar a jugar lo que quería jugar.
No intentes deslumbrar a los nuevos programadores, especialmente a los jóvenes programadores. Toda la noción de "menos de diez líneas de código simple" parece provocar un ambiente de "Muéstrame algo inteligente ".
Puede mostrarle a un nuevo programador algo inteligente. Luego puede enseñarle al mismo programador cómo replicar este "rendimiento". Pero esto no es lo que los engancha a la programación. Enséñeles los rudimentos y déjelos sintetizar sus propias diez líneas de código inteligentes.
Le mostraría a un nuevo programador el siguiente código de Python:
Me doy cuenta de que no tiene que asignar
line
aedited_line
. Sin embargo, eso es solo para mantener las cosas claras y para mostrar que no estoy editando el documento original.En menos de diez líneas, he verificado un documento. Por supuesto, también asegúrese de mostrarle al nuevo programador todos los métodos de cadena disponibles. Más importante aún, he mostrado tres cosas fundamentalmente interesantes que puedo hacer: asignación de variables, un bucle, archivo IO y uso de la biblioteca estándar.
Creo que estará de acuerdo en que este código no deslumbra. De hecho, es un poco aburrido. No, en realidad es muy aburrido. Pero muestre ese código a un nuevo programador y vea si ese programador no puede reutilizar cada parte de ese script en algo mucho más interesante dentro de la semana, si no el día. Claro, será desagradable para usted (tal vez usando este script para hacer un analizador HTML simple), pero todo lo demás solo requiere tiempo y experiencia.
fuente
Como la mayoría de los otros comentaristas, comencé a escribir código para resolver problemas matemáticos (o para crear gráficos para juegos realmente terribles que diseñaría, como Indiana Jones versus Zombies).
Lo que realmente me sorprendió (tanto en matemáticas como en programación) fue pasar de textos, elegir sus propios juegos de estilo de aventura ... a más juegos basados en gráficos. Comencé coloreando papel cuadriculado y trazando píxeles, hasta que me metí en la geometría ... y descubrí cómo usar ecuaciones para trazar curvas y líneas, cuadros, etc.
Mi punto es que realmente podría haberme metido en algo como el procesamiento ( http://processing.org/ ) donde un programa típico se parece a esto:
Para mí, este es el "Logotipo" del futuro.
Hay ejemplos fáciles de "hola mundo" que pueden hacer que alguien dibuje y cambie código rápidamente y vea cómo se rompen las cosas y qué extraños "accidentes" se pueden crear ... hasta una interacción más avanzada y la creación de fractales ...
fuente
Podría usar un script escrito con AutoIt , que difumina la línea entre el uso de una aplicación tradicional y la programación.
Por ejemplo, un script que abre el bloc de notas y hace que su propia computadora los insulte en él y mediante un cuadro de mensaje, y luego no deja rastro de sus acciones:
fuente
Recuerdo que cuando comencé a codificar bucles siempre me impresionó. Escribe de 5 a 10 líneas de código (o menos) y se imprimen cientos (o la cantidad que especifique) de líneas. (Aprendí primero en PHP y Java).
fuente
Creo que un buen lugar para que un estudiante comience podría ser Greasemonkey . Hay miles de scripts de ejemplo en userscripts.org, muy buen material de lectura, algunos de los cuales son muy pequeños. Las secuencias de comandos de Greasemonkey afectan a las páginas web, que los estudiantes ya estarán familiarizados con el uso, si no con la manipulación. Greasemonkey en sí ofrece una manera muy fácil de editar y habilitar / deshabilitar scripts durante las pruebas.
Como ejemplo, aquí está el script "Google Two Columns":
fuente
Este es un programa de C # basado en texto muy rudimentario que simula la acción giratoria de una máquina tragamonedas. No incluye diferentes probabilidades de ganar o pagos en efectivo, pero eso podría ser un buen ejercicio para los estudiantes.
Lo siento, son más de 10 líneas.
fuente
Con Tcl , tiene un editor de texto simple con un botón de guardar en aproximadamente 12 líneas de código (pero no abierto, eso tomaría otras 8 líneas). Funciona en todas las plataformas estándar:
Me doy cuenta de que el objetivo era 10 líneas, por lo que si desea mantener 10 líneas o menos, un editor de texto simple sin cargar o guardar es solo dos líneas. Eso no está muy mal.
Ejecute cualquiera de los bloques de código anteriores con " nombre de archivo deseado " en la plataforma de su elección. Wish viene con la mayoría de * nix's y mac, pero tendrás que instalarlo manualmente para Windows.
Para ir un paso más allá, esa secuencia de comandos de dos líneas también se puede escribir en Python, aunque se necesitan ocho líneas, aún debajo del objetivo de 10 líneas:
fuente
¿Qué tal un bookmarklet? Les mostraría cómo manipular algo que usan todos los días (Internet) sin necesidad de herramientas de desarrollo.
fuente
Si puede pagar el hardware, el uso de una placa Arduino + procesamiento producirá algunas cosas geniales, aunque puede ser un poco avanzado para las personas que pueden no estar interesadas en la programación.
fuente
Escribí sobre esto recientemente en un artículo "El programa más corto y útil que he escrito".
Resumen: Escribí una aplicación VB6 de 3 líneas en 1996 que todavía uso todos los días. Una vez que el exe se suelta en la carpeta "Enviar a". Le permite hacer clic derecho en un archivo en el explorador y enviar la ruta completa de ese archivo al portapapeles.
fuente
Clipboard.Clear
? Elimina todo el contenido del portapapeles, incluso los datos que no son de texto (por ejemplo, datos de imagen). Esto generalmente no es lo que quieres en absoluto.Es interesante que mencione el conjunto de Mandelbrot, ya que crear fractales con GW-BASIC es lo que despertó mi amor por la programación en la escuela secundaria (alrededor de 1993). Antes de comenzar a aprender sobre fractales, escribimos aplicaciones aburridas de desviación estándar y aún planeaba dedicarme al periodismo.
Pero una vez que vi que el programa BASIC largo y difícil de escribir generaba "terreno fractal", me enganché y nunca miré hacia atrás. Cambió mi forma de pensar sobre las matemáticas, las ciencias, las computadoras y la forma en que aprendo.
Espero que encuentres el programa que tenga el mismo efecto en tus alumnos.
fuente
Primeros pasos de wxPython
marco simple.py http://zetcode.com/wxpython/images/simple.jpg
fuente
Estoy seguro de que se convertiría en más de 10 líneas de código, pero ¿ha considerado una aplicación basada en formularios en la que presionar los botones hace cosas como cambiar el color del fondo o cambiar el tamaño del texto? Esto les mostraría cómo funcionan los programas interactivos. También les mostraría que ellos, como programadores, tienen el control total de lo que hace la computadora (programa).
Esperemos que les lleve a hacer sugerencias sobre otras cosas que podrían cambiar y luego a otras cosas que quieran hacer.
fuente