Szukam najfajniejszej rzeczy, którą możesz zrobić w kilku liniach prostego kodu. Jestem pewien, że możesz napisać zestaw Mandelbrota w Haskell w 15 liniach, ale trudno go wykonać.
Moim celem jest zainspirowanie studentów, że programowanie jest fajne .
Wiemy , że programowanie jest fajne, ponieważ możesz tworzyć wszystko, co sobie wyobrażasz - jest to najlepszy kreatywny rynek zbytu. Chcę zainspirować tych początkujących i sprawić, by przeszli przez jak najwięcej garbów wczesnego uczenia się.
Teraz moje powody są samolubne. Uczę się Intro do obliczeniowe Oczywiście do grupy 60 pół-engineering, pół kierunków biznesowych; wszystkich studentów pierwszego roku. Są to uczniowie pochodzący z upośledzonych szkół średnich. Z mojego doświadczenia z przeszłości, grupa jest ogólnie podzielić w następujący sposób: kilka skalnych gwiazdek , tacy, którzy bardzo się starają i rodzaj dostać, niewielu, którzy bardzo się starają i ledwo dostać, a nieliczni, którzy nie obchodzi. Chcę dotrzeć do jak największej liczby tych grup. Oto przykład, w jaki sposób użyłbym programu komputerowego do nauczania:
Oto przykład tego, czego szukam: 1-liniowy skrypt VBS, aby Twój komputer mógł z Tobą porozmawiać:
CreateObject("sapi.spvoice").Speak InputBox("Enter your text","Talk it")
Mógłbym to wykorzystać do wykazania kolejności operacji. Pokażę kod, pozwolę mu się z nim bawić, a następnie wyjaśnię, że w tej linii wiele się dzieje, ale komputer może to zrozumieć, ponieważ zna reguły. Potem pokazałbym im coś takiego:
4(5*5) / 10 + 9(.25 + .75)
I widać, że najpierw muszę zrobić (5 * 5). Następnie mogę pomnożyć przez 4. A teraz stworzyłem Obiekt. Dzielenie przez 10 jest takie samo jak wywoływanie Mów - nie mogę mówić, zanim nie mam obiektu, i nie mogę dzielić, zanim mam 100. Następnie z drugiej strony najpierw tworzę InputBox z instrukcjami, jak go wyświetlić . Kiedy klikam Enter w polu wprowadzania, ocenia lub „zwraca” wszystko, co wpisałem. (Wskazówka: „oooooo” wydaje zabawny dźwięk) Więc kiedy mówię Mów, mówisz po prawej stronie. I dostaję to z InputBox.
Więc kiedy robisz kilka rzeczy na linii, na przykład:
x = 14 + y;
Musisz być świadomy kolejności rzeczy. Najpierw dodajemy 14 i y. Następnie umieszczamy wynik (to, co ocenia lub zwraca) w x.
To jest mój cel, aby mieć mnóstwo tych fajnych przykładów, aby zademonstrować i uczyć klasę podczas zabawy. Próbowałem tego przykładu u mojej współlokatorki i chociaż nie mogę tego wykorzystać jako pierwszej lekcji, spodobała jej się i czegoś się nauczyła.
Niektóre fajne programy matematyczne, które tworzą piękne wykresy lub kształty, które są łatwe do zrozumienia, byłyby dobrym pomysłem i przyjrzę się tym. Oto kilka skomplikowanych przykładów skryptów akcji, ale jest to trochę zbyt zaawansowane i nie mogę uczyć flashowania. Jakie masz inne pomysły?
źródło
Odpowiedzi:
Moje dzieci otrzymały świetną odpowiedź dzięki szybkiemu skryptowi VB do manipulowania postacią Agenta Microsoft. Dla tych, którzy nie znają MS Agent, jest to seria animowanych postaci ekranowych, którymi można manipulować za pomocą interfejsu COM. Możesz pobrać kod i znaki ze strony pobierania Microsoft Agent .
Poniższe kilka wierszy sprawi, że postać Merlina pojawi się na ekranie, będzie latać, pukać po ekranie, aby zwrócić na siebie uwagę i przywitać się.
Istnieje wiele innych poleceń, których możesz użyć. Czekhttp://www.microsoft.com/technet/scriptcenter/funzone/agent.mspx, aby uzyskać więcej informacji.
EDIT 2011-09-02 Niedawno odkryłem, że Microsoft Agent nie jest natywnie zainstalowany w systemie Windows 7. Jest on jednak oferowany jako osobny plik do pobrania tutaj . Nie przetestowałem tego, więc nie mogę zweryfikować, czy działa.
źródło
Wpisz ten kod w pasku adresu (w przeglądarce) i naciśnij enter. Następnie możesz edytować całą zawartość strony!
To najfajniejszy „jeden-liner”, jaki znam =)
źródło
javascript:
ivoid 0
są płytkami kotłowymi : odpowiednikint main() {
iwreturn 0; }
C. Pozostałe dwa wiersze to po prostu różne interfejsy API przeglądarki, które robią to samo: pierwszy to interfejs API IE, drugi to interfejs API NetScape. HTML5 używacontentEditable
, więc jeśli nie zależy ci na obsłudze Firefoksa 1.5 lub czegoś podobnego, rzeczywisty kod wynosi:document.body.contentEditable='true';
Kiedy pierwszy raz to napisałem.
To zdmuchnęło ludzi! Komputer zapamiętał ich nazwę!
EDYCJA: Wystarczy dodać do tego. Jeśli uda ci się przekonać nowego programistę, że jest to najfajniejsza rzecz, jaką mogą zrobić, staną się dobrymi programistami. Obecnie możesz zrobić prawie wszystko, co chcesz, za pomocą jednego wiersza kodu, aby uruchomić bibliotekę napisaną przez kogoś innego. Osobiście nie czerpię absolutnie żadnej satysfakcji z tego i nie widzę żadnej korzyści z nauczania tego.
źródło
PHP - uszczelka Sierpińskiego aka Triforce
OK, to 15 linii kodu, ale wynik jest niesamowity! Takie rzeczy doprowadzały mnie do szału, gdy byłem dzieckiem. To jest z podręcznika PHP:
źródło
Microsoft ma Small Basic , IDE dla „dzieci”.
Jest specjalnie zaprojektowany, aby pokazać, jak fajne jest programowanie.
źródło
Wydaje mi się, że ludzie są pod wrażeniem rzeczy, z którymi mogą się odnosić lub które są istotne dla ich życia. Spróbuję oprzeć moje 10 wierszy kodu na czymś, co znają i rozumieją. Weźmy na przykład Twittera i jego API. Dlaczego nie wykorzystać tego interfejsu API do stworzenia czegoś fajnego. Poniższe 10 wierszy kodu zwróci „publiczną oś czasu” z Twittera i wyświetli ją w aplikacji konsoli ...
Mój przykładowy kod może nie być najlepszy dla twoich uczniów. Jest napisany w C # i używa .NET 3.5. Więc jeśli zamierzasz ich uczyć PHP, Java lub C ++, nie będzie to przydatne. Chodzi mi jednak o to, że poprzez powiązanie 10 linii kodu z czymś „fajnym, interesującym i istotnym dla studentów, twoja próbka również staje się fajna, interesująca i odpowiednia.
Powodzenia!
[Tak, wiem, że przegapiłem kilka wierszy użycia instrukcji i metody Main, ale zgaduję, że 10 linii nie musiało być dosłownie 10 liniami]
źródło
To jest serwer telnet w Pythonie, który poprosi o nazwę użytkownika i przywitać się z nim. Wygląda to świetnie, ponieważ komunikujesz się ze swoim programem z innego komputera w sieci.
źródło
Myślę, że ciężko jest być teraz nauczycielem komputerowym. Jestem. Stajemy w obliczu coraz bardziej stromej bitwy pod górę. Nasi uczniowie są niezwykle wyrafinowanymi użytkownikami i imponowanie im wymaga wiele wysiłku. Mają tak wiele dostępnych narzędzi, które robią niesamowite rzeczy.
Prosty kalkulator w 10 liniach kodu? Dlaczego? Mam do tego TI-86.
Skrypt, który stosuje efekty specjalne do obrazu? Po to jest Photoshop. A Photoshop zdmuchuje wszystko, co możesz zrobić, w 10 liniach.
Co powiesz na zgrywanie płyt CD i konwersję pliku do formatu MP3? Uhh, mam już 50 000 piosenek, które dostałem od BitTorrenta. Są już w formacie MP3. Gram na nich na moim iPhonie. Kto i tak kupuje płyty CD?
Aby wprowadzić doświadczonych użytkowników do programowania, musisz znaleźć coś, co:
a) dotyczy czegoś, co wydaje się interesujące i fajne, oraz b) robi coś, czego nie może już zrobić.
Załóżmy, że uczniowie mają już dostęp do najdroższego oprogramowania. Wiele z nich ma pełną wersję Adobe CS5.5 (cena detaliczna: 2600 USD; rzeczywista cena: bezpłatna) i można łatwo uzyskać dowolną aplikację, która normalnie zniszczyłaby budżet Twojego działu.
Ale zdecydowana większość z nich nie ma pojęcia, jak to właściwie działa.
Są niezwykle kreatywną grupą: lubią tworzyć. Chcą tylko móc zrobić lub zrobić coś, czego nie mogą zrobić ich przyjaciele. Chcą się czym chwalić.
Oto kilka rzeczy, które rezonują z moimi uczniami:
Żadne z nich nie obejmuje programowania w tradycyjnym znaczeniu. Ale wykorzystują potężne biblioteki. Myślę o nich jako o innym rodzaju programowania.
źródło
Znalazłem dużą ulubioną (w GWBASIC):
Odkryłem, że początkujący uczniowie mają kilka koncepcji, które należy naprawić.
Powodzenia w twojej klasie. Jestem pewien, że poradzisz sobie dobrze.
PS Jestem pewien, że rozumiesz, że oprócz materiału i umiejętności uczysz także postawy, a to jest równie ważne.
źródło
Ten kod C może być zaciemniony, ale uznałem go za bardzo potężny
A oto wynik ... Tylko w 3 liniach ... Rodzaj fraktala
Hello World
...źródło
Co powiesz na pokazanie, że możesz wziąć dowolną przeglądarkę internetową i wpisać JavaScript w pasku adresu i uzyskać kod do wykonania?
EDYCJA: Przejdź do strony z dużą ilością zdjęć i spróbuj tego w pasku adresu:
źródło
Możesz utworzyć aplikację, która wybiera losową liczbę. I musisz to zgadnąć. Jeśli się mylisz, mówi: wyżej lub niżej. A jeśli się domyśliłeś, fajna wiadomość.
Fajnie jest grać dla studentów.
Prosta wersja Python bez prawidłowego sprawdzania błędów:
Erik sugeruje, aby komputer odgadł numer. Można to zrobić również w obrębie 10 wierszy kodu (choć teraz brak właściwego sprawdzania błędów jest jeszcze poważniejszy: prawidłowe liczby poza zakresem powodują nieskończoną pętlę):
źródło
eval(raw_input(prompt))
. Zobacz dane wejściowe .W szkole średniej wraz z kilkoma przyjaciółmi nauczyłem klasę programowania w Delphi. Zajęcia koncentrowały się głównie na programowaniu w Pascalu, więc Delphi był kolejnym dobrym krokiem. Wykazaliśmy charakter Delphi sterowany zdarzeniami i jego możliwości RAD. Pod koniec lekcji pokazaliśmy klasie przykładową aplikację i poprosiliśmy o jej odtworzenie. Aplikacja zapytała „ Czy jesteś pijany? ” Za pomocą dwóch przycisków Tak i Nie . ... Myślę, że wiesz, co będzie dalej ... Przycisk Brak zmienił położenie myszy na myszy i prawie niemożliwe było kliknięcie.
Uczniowie i nauczyciel dobrze to wyszli.
Program wymagał tylko kilku wierszy kodu napisanego przez użytkownika za pomocą prostego równania, aby obliczyć, gdzie przesunąć przycisk. Nie sądzę, żeby którykolwiek z pozostałych uczniów to rozgryzł, ale kilku było blisko.
źródło
Kiedy po raz pierwszy wymyśliłem bash Forkbomb, pomyślałem, że to naprawdę słodkie. Tak prosty, ale schludny w tym, co może zrobić:
źródło
Jest to oszustwo, a nawet nie dość proste, ale kiedyś napisałem shoot'em w 20 liniach C ++, korzystając z biblioteki graficznej Allegro. Brak prawdziwych kryteriów określających linię , ale było to trochę wcześniej i zostało stworzone wyłącznie dla zabawy. Miał nawet prymitywne efekty dźwiękowe.
Oto jak to wyglądało:
20 linii http://img227.imageshack.us/img227/8770/20linesxx0.png
A oto kod ( powinien się skompilować):
źródło
W dzisiejszych czasach JavaScript jest doskonałym sposobem na pokazanie, jak można programować za pomocą naprawdę podstawowych narzędzi, np. Notatnika.
Efekty jQuery to świetny punkt wyjścia dla każdego, kto chce zachwycić swoich znajomych!
W tym kliknij po prostu biały obszar strony.
źródło
Jedną rzeczą, którą możesz wziąć pod uwagę, jest coś w rodzaju Robocode , w którym dużo kodowania jest oderwane i po prostu mówisz robotowi, co ma robić. Prosta funkcja 10-liniowa może sprawić, że robot zrobi wiele, i ma bardzo wizualny i łatwy do naśladowania wynik.
Być może sam Robocode nie jest odpowiedni do tego zadania, ale tego rodzaju rzecz jest dobrym sposobem na powiązanie napisanego kodu z działaniami wizualnymi na komputerze, a ponadto fajnie jest obserwować, kiedy trzeba podać przykłady.
źródło
Więc pewnego dnia zdecydowałem, że mam dość. I będzie nauka gry na pianinie. Widząc, że ludzie tacy jak Elton John władają takim opanowaniem klawiatury, zapewniłem mnie, że to właśnie chciałem zrobić.
W rzeczywistości nauka gry na pianinie była ogromnym rozczarowaniem. Nawet po ukończeniu ośmiu klas lekcji gry na fortepianie wciąż nie byłem pod wrażeniem tego, jak bardzo mój umysł gry na fortepianie różni się od mojej pierwotnej wizji czerpania przyjemności z tej gry.
Jednak najbardziej podobały mi się moje zaledwie trzy stopnie podstaw teorii muzyki. Dowiedziałem się o budowie muzyki. W końcu mogłem wyjść ze świata muzyki pisanej do pisania własnej muzyki. Następnie mogłem zacząć grać w to, w co chciałem grać.
Nie próbuj olśnić nowych programistów, zwłaszcza młodych programistów. Całe pojęcie „mniej niż dziesięć wierszy prostego kodu” wydaje się wywoływać nastrój „Pokaż mi coś sprytnego ”.
Możesz pokazać nowemu programistowi coś sprytnego. Następnie możesz nauczyć tego samego programistę replikacji tej „wydajności”. Ale nie to ich uzależnia od programowania. Naucz ich podstaw i pozwól im zsyntetyzować własne sprytne dziesięć linii kodu.
Chciałbym pokazać nowemu programistowi następujący kod Python:
Zdaję sobie sprawę, że nie trzeba przypisać
line
doedited_line
. Jednak to tylko po to, aby wszystko było jasne i pokazać, że nie edytuję oryginalnego dokumentu.W mniej niż dziesięciu wierszach zwerbowałem dokument. Oczywiście, pamiętaj również, aby pokazać nowemu programistowi wszystkie dostępne metody ciągów znaków . Co ważniejsze, pokazałem trzy fundamentalnie interesujące rzeczy, które mogę zrobić: przypisanie zmiennych, pętla, operacje wejścia / wyjścia pliku i użycie standardowej biblioteki.
Myślę, że zgodzisz się, że ten kod nie oślepia. W rzeczywistości jest to trochę nudne. Nie - właściwie to jest bardzo nudne. Ale pokaż ten kod nowemu programistowi i sprawdź, czy ten programista nie może zmienić przeznaczenia każdej części tego skryptu na coś bardziej interesującego w ciągu tygodnia, jeśli nie w ciągu dnia. Oczywiście, będzie to dla ciebie niesmaczne (być może użycie tego skryptu do stworzenia prostego parsera HTML), ale wszystko inne wymaga czasu i doświadczenia.
źródło
Podobnie jak większość innych komentatorów, zacząłem pisać kod, aby rozwiązać problemy matematyczne (lub stworzyć grafikę dla naprawdę okropnych gier, które bym zaprojektował - na przykład Indiana Jones kontra Zombies).
To, co naprawdę mnie zapoczątkowało (zarówno w zakresie matematyki, jak i programowania), to przejście od tekstu, wybieranie własnych gier w stylu przygodowym ... do gier opartych na grafice. Zacząłem kolorować papier milimetrowy i drukować piksele, aż doszedłem do geometrii ... i odkryłem, jak używać równań do kreślenia krzywych i linii, pól itp.
Chodzi mi o to, że naprawdę mogłem dostać się do czegoś takiego jak przetwarzanie ( http://processing.org/ ), gdzie typowy program wygląda mniej więcej tak:
Dla mnie jest to „Logo” przyszłości.
Istnieją proste przykłady „hello world”, które mogą szybko sprawić, że ktoś narysuje i zmieni kod i zobaczy, jak się psują i jakie dziwne „wypadki” można stworzyć ... aż do bardziej zaawansowanej interakcji i tworzenia fraktali ...
źródło
Możesz użyć skryptu napisanego za pomocą AutoIt , który zaciera granicę między używaniem tradycyjnej aplikacji a programowaniem.
Np. Skrypt, który otwiera notatnik i powoduje, że jego własny komputer obraża go w nim i za pomocą okna komunikatu, a następnie nie pozostawia śladu swoich działań:
źródło
Pamiętam, kiedy po raz pierwszy zacząłem kodować pętle, zawsze zrobiły na mnie wrażenie. Piszesz 5–10 wierszy kodu (lub mniej) i drukujesz setki (lub tyle, ile określisz) wierszy. (Nauczyłem się najpierw w PHP i Javie).
źródło
Myślę, że dobrym miejscem dla studenta może być Greasemonkey . Istnieją tysiące przykładowych skryptów na userscripts.org, bardzo dobry materiał do czytania, z których niektóre są bardzo małe. Skrypty Greasemonkey wpływają na strony internetowe, z którymi studenci będą już korzystać, jeśli nie manipulować nimi. Sam Greasemonkey oferuje bardzo łatwy sposób edycji i włączania / wyłączania skryptów podczas testowania.
Jako przykład podajemy skrypt „Google Two Columns”:
źródło
Jest to bardzo podstawowy program napisany w języku C #, który symuluje wirujące działanie automatu do gry. Nie obejmuje różnych szans na wygraną ani wypłatę gotówki, ale może to być przyjemne ćwiczenie dla studentów.
Przepraszam, że to więcej niż 10 linii.
źródło
Z Tcl masz prosty edytor tekstu z przyciskiem zapisu w około 12 wierszach kodu (ale bez otwarcia, to zajmie kolejne 8 wierszy). Działa na wszystkich standardowych platformach:
Zdaję sobie sprawę, że celem było 10 linii, więc jeśli chcesz trzymać się 10 linii lub mniej, prosty edytor tekstu bez obciążenia lub zapisu to tylko dwie linie. To nie jest zbyt obskurne.
Wykonaj jeden z powyższych bloków kodu za pomocą „wish filename ” na wybranej platformie. Wish jest dostarczany z większością * nix i mac, ale musisz zainstalować go ręcznie w systemie Windows.
Aby pójść o krok dalej, ten skrypt dwuwierszowy można również napisać w pythonie, choć zajmuje on osiem wierszy, wciąż poniżej celu 10 linii:
źródło
Co powiesz na bookmarklet? Pokaże im, jak manipulować czymś, z czego korzystają na co dzień (Internet), bez konieczności używania jakichkolwiek narzędzi programistycznych.
źródło
Jeśli możesz sobie pozwolić na sprzęt, użycie karty Arduino + spowoduje całkiem fajne rzeczy, choć może być nieco zaawansowane dla osób, które mogą nie być wcale zainteresowane programowaniem.
źródło
Pisałem o tym niedawno w artykule „Najkrótszy, najbardziej przydatny program, jaki kiedykolwiek napisałem”.
Podsumowanie: W 1996 roku napisałem 3-liniową aplikację VB6, z której wciąż korzystam każdego dnia. Gdy plik exe zostanie upuszczony w folderze „Send-to”. Pozwala kliknąć prawym przyciskiem myszy plik w Eksploratorze i wysłać pełną ścieżkę tego pliku do schowka.
źródło
Clipboard.Clear
? Usuwa całą zawartość ze schowka, nawet dane nietekstowe (np. Dane obrazu). Zasadniczo nie jest to w ogóle to, czego chcesz.Ciekawe, że wspomniałeś o zestawie Mandelbrota, ponieważ tworzenie fraktali za pomocą GW-BASICa wywołało moją miłość do programowania w szkole średniej (około 1993 r.). Zanim zaczęliśmy uczyć się o fraktalach, napisaliśmy nudne aplikacje odchylania standardowego i nadal planowałem zająć się dziennikarstwem.
Ale kiedy zobaczyłem, że ten długi, trudny do napisania program BASIC generuje „teren fraktalny”, byłem uzależniony i nigdy nie oglądałem się za siebie. Zmieniło to sposób, w jaki myślałem o matematyce, nauce, komputerach i sposobie uczenia się.
Mam nadzieję, że znajdziesz program, który ma taki sam wpływ na twoich uczniów.
źródło
wxPython Pierwsze kroki
rama simple.py http://zetcode.com/wxpython/images/simple.jpg
źródło
Jestem pewien, że zmieniłoby się to w ponad 10 wierszy kodu, ale czy zastanawiałeś się nad aplikacją opartą na formularzu, w której naciskanie przycisków powoduje zmianę koloru tła lub zmianę rozmiaru tekstu? To pokaże im, jak działają programy interaktywne. Pokazałby im również, że jako programista mają pełną kontrolę nad tym, co robi komputer (program).
Mam nadzieję, że doprowadzi ich to do zasugerowania innych rzeczy, które mogą zmienić, a następnie innych rzeczy, które mogą chcieć zrobić.
źródło