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.

sb1

Kontekstowa, ladnie rozbudowana pomoc, Intellisense i wystarczy.

sb2

sb3

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]