Czy programowanie może być zabawą?
Udzielenie odpowiedzi na tytulowe pytanie "czy programowanie moze byc zabawa" nie jest wcale takie proste. Kiedys zabawa moglo byc. Domowe, osmiobitowe komputery posiadaly prawie zawsze wbudowany interpreter jezyka BASIC i kazdy, komu znudzilo sie granie, mógl sie prosto nauczyc, o co chodzi w programowaniu nawet, jezeli szczytem osiagniec byly dwie petle FOR malujace na ekranie choinke z gwiazdek. A kto pamieta LOGO? Proste to bylo do bólu, ale uczylo myslenia. Sposród wielu znanych mi osób programujacych kiedys w takim skrajnie prostym srodowisku, znaczaca czesc wyrosla na niezlych fachowców od IT, przy czym naprawde tylko garstka z nich zostala programistami.
A teraz? Programowanie moze byc sztuka (zawsze moglo), moze byc zródlem ogromnej satysfakcji (tez zawsze moglo), moze byc sposobem zarabiania na zycie (i tym równiez moglo dawniej byc) i wreszcie sposobem na praktyczne uzycie informatyki do jakiegos doraznego celu. Pozornie nic sie nie zmienilo, z jednym wyjatkiem: programowaniem trudno sie bawic.
W systemie DOS, podobnie jak w osmiobitowcach (nie wnikam czy bylo to Atari, Commodore, Spectrum czy jeszcze cos innego) proste srodowisko programistyczne bylo dostepne od reki. A teraz? Sam po sobie widze, ze nawet uwazajac sie za nienajgorszego fachowca, nie moge sobie poradzic z takim skonfigurowaniem srodowiska programistycznego, zeby kompilowalo mi kod wykonywalny pod IA-64. Wszyscy mówia, ze sie da, a co spróbuje – jakos nie chce sie udac. Pomijam juz to, ze srodowiska programistyczne zazwyczaj sa olbrzymimi pakietami oprogramowania, które zachowuja sie nieraz tak, jakby byly samodzielnymi systemami. Srodowiska Microsoftu chca instalowac bazy SQL, srodowiska Borlanda wymagaja zainstalowania wczesniej kilkunastu innych pakietów oprogramowania, kompilator Intela nie bedzie dzialal, jezeli nie wykryje SDK i tak dalej i tak dalej. Zainstalowanie i uruchomienie srodowiska do programowania jest tak duzym wyzwaniem, ze nawet najlepsi w tej branzy fachowcy uwazaja, ze prosciej jest kombinowac z maszynami wirtualnymi niz raz a dobrze skonfigurowac calosc na wlasnym komputerze.
Pomijajac kwestie srodowiska, programowanie w XXI wieku nie jest tak proste jak kiedys. Dawniej dalo sie napisac program mieszczacy sie w jednym pliku, bez tony #include i innych Using. Skladajacy sie z jednej linii i dzialajacy poprawnie. Taki, w którym kazdy kawalek byl od razu jasny i przeznaczony do konkretnego celu, zgodnego z intencjami autora. Nie wymagajacy znajomosci tysiecy sztuczek i niejawnych informacji o tym skad bierze sie dana funkcjonalnosc. Nie wymagajacy do dzialania serwera WWW ani nie potrzebujacy rozróznienia czy to build debug czy release.
Tak wiem. Numerowane linie sa zle. Instrukcje goto sa zle. Brak kreatorów i destruktorów jest zly. Myslenie inne niz obiektowe jest zle. Niejawne uzycie czegos, czego nie mozna w kodzie zobaczyc jest zle. Mieszanie wygladu z logika jest zle. Znam te teorie lub jak ktos woli – paradygmaty. Tylko, czy przypadkiem nie stalo sie tak, ze zginela w tym radosc z napisania czegos, co dziala? Czy dzisiaj dziesieciolatek ma szanse siasc i napisac kilka albo kilkadziesiat linii kodu, które zapytaja o imie i wyswietla okienko, w którym to imie zostanie wstawione w komunikat "Jasio umie programowac!"? Ma szanse na wlasne "Hello world!"? Nie bardzo. Chyba przesadzilismy ze specjalizacja, z pogonia za hiperpoprawnoscia kodu i dbaniem o dobre nawyki. W efekcie, taki umowny dziesieciolatek jest w praktyce bez szans. Nie napisze swojego kodu, nie zrozumie cudzego, nie dotknie, nie sprawdzi, nie zechce pójsc krok dalej. Moze i zalozenie, ze trzeba albo cos robic dobrze albo wcale ma jakis sens... Ale z drugiej strony, chyba troche przesadzilismy. Starsi z programistów zaczynali na BASICu i do czegos doszli. Mlodsi – zaczeli zazwyczaj programowac w okolicach poczatku studiów. A moze by tak powrót do korzeni? Dac cos, co jest proste, przyjemne, DAJE RADOSC i pozwala cos prostego stworzyc? Cos, co nauczy myslenia o programowaniu. Co wyrobi analityczne podejscie i ten magiczny, programistyczny, analityczny do granic, sposób patrzenia na wyzwania wynikajace z próby zagonienia informatyki do zrobienia czegos, co jest w danym momencie potrzebne. Wydaje mi sie, ze lepiej dziesieciolatka nauczyc jezyka BASIC i pozwolic mu na samodzielne odkrywanie swiata, w którym swiadomie zdecyduje sie na cos bardziej zaawansowanego niz zbyt wczesnie zniechecic go w szkole jakims C++ albo w ogóle zaniedbac ten aspekt rozwoju az do studiów.
Mówiac w najwiekszym skrócie: Jestem za powrotem BASICa do lask!
I "do lask" nie znaczy wcale "do szkól". Malo co tak skutecznie zabija ciekawosc swiata jak obowiazek nauczenia sie czegos na ocene, zwlaszcza w zestawieniu z nie do konca kompetentnym nauczycielem. Po prostu uwazam, ze kazdy komputer, na którym pracuje mlody czlowiek, powinien zostac wyposazony w proste srodowisko programistyczne, które ów mlody czlowiek odkryje sam dla siebie. Z ciekawosci i dla przyjemnosci. Cos, co nie bedzie wymagalo walki z materia przy instalacji a pózniej nie przestraszy tym, co wyswietli na ekranie. Po prostu potrzebny jest zwykly, dobry BASIC. Poza tym, srodowisko takie potrzebne jest administratorom oraz innym tak zwanym IT Pro. PowerShell jest swietny – do zarzadzania. Ale czasem przydaloby sie "wystrugac" jakis kilkuliniowy programik. Z Visual Studio zazwyczaj rezygnuje zanim zaczne. Z prostym BASICem – byloby latwo i przyjemnie.
Jezeli ktos dal sie przekonac – zachecam do pobrania ze stron Microsoftu pakietu SmallBasic.
Calosc sklada sie z jednego, majacego niecale 5MB pliku MSI, który w razie potrzeby pobierze .NET 3.5. Instalacja nie moze byc prostsza.
Srodowisko zostalo wymyslone i zbudowane przez Microsoft, jest bezplatne i tak proste jak to tylko mozliwe. Troche obiektowosci, troche procedur, edytor w którym jest 11 przycisków wlacznie z Copy/Paste i Undo/Redo.
Kontekstowa, ladnie rozbudowana pomoc, Intellisense i wystarczy.
Calosc pomyslana tak, zeby sama sie odkrywala przed uzytkownikiem. Do tego proste publikowanie online i kompilowanie do plików *.exe wymagajacych do pomocy malego DLL, który automatycznie wrzucany jest do stosownego katalogu. Trzeba czegos wiecej?
Calosc jest tak prosta, ze zrozumie ja nawet IT Pro, nie mówiac o ciekawych swiata dziesieciolatkach.
Jezeli chodzi o sam jezyk, to lepiej rozpoznac go samodzielnie niz o nim czytac. Nie ma numerowanych linii, nie ma deklaracji zmiennych, sa funkcje. Systemowe funkcje wola sie obiektowo, ale do wlasnych kawalków kodu obiektowe myslenie wcale nie jest potrzebne. Istnieje tryb tekstowy albo grafika, wlacznie z grafika zólwia. Da sie obsluzyc OnMouseDown, a do pobierania obrazków z Flickr sa gotowe funkcje. Wszystko, co dla purystów oznacza, ze BASIC jest przeklety. Czyli dokladnie wszystko to, co moze sie przydac do zabawy w programowanie.
I programowanie znowu moze byc zabawa jak bylo nia kiedys na Atari czy Commodore. A moze to tylko ja tak o tym mysle...?
Autor: Grzegorz Tworek [MVP]
Comments
Anonymous
January 01, 2003
@Tomek: Co do podpowiadania argumentów - czasem trochę jest w panelu z prawej strony, tak jak na przykład w DrawLine. Myślę, że akurat podpowiedzi będa się rozwijać. Chwilami denerwuje mnie sam tryb podpowiadania, ale to trochę kwestia nawyków i może się kiedyś coś w IDE zmieni. @d.mateusz & dpathx: No właśnie to mnie w tym środowisku urzekło. Wysokość pierwszego stopnia schodów na jaki trzeba wejść, żeby zacząć coś sobie programować. Tu jest naprawdę niewielka. W Visual Studio - ogromna.Anonymous
January 01, 2003
Ciekawy głos przeciw: http://www.w-files.pl/czy-programowanie-moze-byc-zabawa/Anonymous
January 01, 2003
No właśnie też mam takie wspomnienia i wróciły hurtem jak przypadkiem trafiłem na Small Basic. Pewnie z perspektywy długie tygdnie przed klawiaturą wydają się dzisiaj chwilką, ale mam nieodparte wrażenie, że gdybym musiał teraz napisać coś, co pisałem wtedy (na przykład grę w węża) - straciłbym na to znacznie więcej czasu. A Small Basic odpalasz i piszesz. Jak masz prosty problem, to od stwierdzenia, że chcesz, przez ściągnięcie, instalację, uruchomienie i kodowanie aż po uruchomienie minie pewnie z 5 minut. Nie 5 tygodni. Pewnie piszemy straszne herezje z punktu widzenia developerów, ale na szczęście to w końcu blog ITPro ;)))Anonymous
January 01, 2003
Kiedyś były... Teraz niby jest PowerShell, ale to zupełnie nie to. Na forum Small Basic widziałem posty, żeby włączyć to środowisko do Windows 7. Choć to nierealne, to jednak idea jest ciekawa. Co do serii Express - ciężko mi powiedzieć. To już jest ten poziom, że ktoś zainteresowany tymi narzędziami jest w stanie już samodzielnie do nich dotrzeć i zainstalować je. W przypadku Small Basic - ten pierwszy stopień, na który trzeba wejść jest nieco niższy. I słusznie :)Anonymous
January 01, 2003
Ale mi wspomnienia przywołałeś... Ten Commodore jakoś tak jak miałem chyba 10 lat i pierwsze programy w Basicu. Wtedy za mój wielki sukces uznałem napisanie (i ciągłe poprawianie, ulepszanie) książki adresowo-telefonicznej w Basicu. Miała wiele opcji - dodawanie, edytowanie, wyszukiwanie, filtrowanie, itp. Wielkim jej minusem było to, że na C64 nie miałem stacji dyskietek a tylko kasety - więc jak się można domyślić wgrywanie jej trwało czasem 10 minut. Więc jak chciałem sprawdzić numer telefonu do cioci to była to taka sztuka dla sztuki. Ale za to jaka WCIĄGAJĄCA :) Do dziś się cieszę, ze wtedy własnie były gazety typu Bajtek czy inne gdzie pokazano mi świat Basica. Aż teraz z wielką chęcią bym sobie zobaczył jak wyglądała moja książka telefoniczna. niestety kasety chyba się nie uchowały, więc zostają tylko mgliste wspomnienia :) A meritum sprawy - też wydaje mi się, że minimum podstaw dzieciaki powinno poznawać.Anonymous
April 08, 2009
Grzesiek, podpisuję się pod Twoim postem obiema łapkami. Jestem za tym, żeby w każdej instalacji windows były preinstalowane narzędzia programistyczne. Jednak moim zdaniem, poza pakietem, do którego dałeś link, powinny być również narzędzia z serii express...Anonymous
April 08, 2009
To Was chyba zaskoczę, na C64 nigdy nie pisałem, nie wiedziałem że coś takiego można było zrobić, z drugiej strony nie miał też kto powiedzieć.. Duże znaczenie było otaczające środowisko, nie każdy miał.. Grześ dobrze piszesz, niektórzy na studiach dopiero widzą C++ którego klepie się w Borlandzie 6 a z programem strasznie szybko gonią. Co do wytłumaczenie o co chodzi, konstruktory, ~, k kopiujące, itd.. kolejno stosy, kolejki i znowu itd... to naprawdę ciężko nadążyć przy czym nie ma kto wytłumaczyć. C# w Visual Studio dopiero na 4 roku i o czym tu rozmawiać. Długo by się rozwodzić z tematem. Krótkim słowem, paranoja :( A byłbym zapomniał spotyka też się ludzi, którzy mieli Pascala wcześniej w szkole i oto cyt. "tylko że nic się nie kompilowało.." Czy czasy wspomniane w tytule przez Ciebie wrócą ? Chciałbym dla tych co dopiero idą ale szczerze w to wątpię..Anonymous
April 08, 2009
zgadzam się w 100 procentach, chociaż jestem programistą z zawodu (ale itpro z przekonania) :) każdy powinien mieć możliwość spróbowania swoich sił bez stawiania barier nie do przejścia (dla 10cio latka to zainstalowanie i skonfigurowanie środowiska IDE). Większość z nas w pewnym okresie chciała czegoś więcej niż ponga albo prince of persia i poszła o krok dalej, zobaczyła że istnieje możliwość stworzenia czegoś samemu (taka moja pierwsza definicja informatyki) i że nie jest to wcale takie trudne. w tym czasie w szkole nawet nie słyszano o informatyce, więc człowiek uczył się w domu. dzisiaj dzieciakom jest trochę łatwiej bo mają internet, ale z drugiej strony mając tyle informacji (google na hasło 'programowanie' zwraca ponad 7 000 000 odpowiedzi) że trudno się w tym wszystkim połapaćAnonymous
April 08, 2009
Whoohohoho .. .super ;) ... gdyby jeszcze trochę podpowidał co ma być w argumentach itp to byłoby super. Ale i tak jestem pozytywnie zaskoczony :).