Czy programowanie może być zabawą?

Czy programowanie może być zabawą?

  • Comments 9
  • Likes

Udzielenie odpowiedzi na tytułowe pytanie "czy programowanie może być zabawą" nie jest wcale takie proste. Kiedyś zabawą mogło być. Domowe, ośmiobitowe komputery posiadały prawie zawsze wbudowany interpreter języka BASIC i każdy, komu znudziło się granie, mógł się prosto nauczyć, o co chodzi w programowaniu nawet, jeżeli szczytem osiągnięć były dwie pętle FOR malujące na ekranie choinkę z gwiazdek. A kto pamięta LOGO? Proste to było do bólu, ale uczyło myślenia. Spośród wielu znanych mi osób programujących kiedyś w takim skrajnie prostym środowisku, znacząca część wyrosła na niezłych fachowców od IT, przy czym naprawdę tylko garstka z nich została programistami.

A teraz? Programowanie może być sztuką (zawsze mogło), może być źródłem ogromnej satysfakcji (też zawsze mogło), może być sposobem zarabiania na życie (i tym również mogło dawniej być) i wreszcie sposobem na praktyczne użycie informatyki do jakiegoś doraźnego celu. Pozornie nic się nie zmieniło, z jednym wyjątkiem: programowaniem trudno się bawić.

W systemie DOS, podobnie jak w ośmiobitowcach (nie wnikam czy było to Atari, Commodore, Spectrum czy jeszcze coś innego) proste środowisko programistyczne było dostępne od ręki. A teraz? Sam po sobie widzę, że nawet uważając się za nienajgorszego fachowca, nie mogę sobie poradzić z takim skonfigurowaniem środowiska programistycznego, żeby kompilowało mi kod wykonywalny pod IA-64. Wszyscy mówią, że się da, a co spróbuję – jakoś nie chce się udać. Pomijam już to, że środowiska programistyczne zazwyczaj są olbrzymimi pakietami oprogramowania, które zachowują się nieraz tak, jakby były samodzielnymi systemami. Środowiska Microsoftu chcą instalować bazy SQL, środowiska Borlanda wymagają zainstalowania wcześniej kilkunastu innych pakietów oprogramowania, kompilator Intela nie będzie działał, jeżeli nie wykryje SDK i tak dalej i tak dalej. Zainstalowanie i uruchomienie środowiska do programowania jest tak dużym wyzwaniem, że nawet najlepsi w tej branży fachowcy uważają, że prościej jest kombinować z maszynami wirtualnymi niż raz a dobrze skonfigurować całość na własnym komputerze.

Pomijając kwestie środowiska, programowanie w XXI wieku nie jest tak proste jak kiedyś. Dawniej dało się napisać program mieszczący się w jednym pliku, bez tony #include i innych Using. Składający się z jednej linii i działający poprawnie. Taki, w którym każdy kawałek był od razu jasny i przeznaczony do konkretnego celu, zgodnego z intencjami autora. Nie wymagający znajomości tysięcy sztuczek i niejawnych informacji o tym skąd bierze się dana funkcjonalność. Nie wymagający do działania serwera WWW ani nie potrzebujący rozróżnienia czy to build debug czy release.

Tak wiem. Numerowane linie są złe. Instrukcje goto są złe. Brak kreatorów i destruktorów jest zły. Myślenie inne niż obiektowe jest złe. Niejawne użycie czegoś, czego nie można w kodzie zobaczyć jest złe. Mieszanie wyglądu z logiką jest złe. Znam te teorie lub jak ktoś woli – paradygmaty. Tylko, czy przypadkiem nie stało się tak, że zginęła w tym radość z napisania czegoś, co działa? Czy dzisiaj dziesięciolatek ma szansę siąść i napisać kilka albo kilkadziesiąt linii kodu, które zapytają o imię i wyświetlą okienko, w którym to imię zostanie wstawione w komunikat "Jasio umie programować!"? Ma szansę na własne "Hello world!"? Nie bardzo. Chyba przesadziliśmy ze specjalizacją, z pogonią za hiperpoprawnością kodu i dbaniem o dobre nawyki. W efekcie, taki umowny dziesięciolatek jest w praktyce bez szans. Nie napisze swojego kodu, nie zrozumie cudzego, nie dotknie, nie sprawdzi, nie zechce pójść krok dalej. Może i założenie, że trzeba albo coś robić dobrze albo wcale ma jakiś sens... Ale z drugiej strony, chyba trochę przesadziliśmy. Starsi z programistów zaczynali na BASICu i do czegoś doszli. Młodsi – zaczęli zazwyczaj programować w okolicach początku studiów. A może by tak powrót do korzeni? Dać coś, co jest proste, przyjemne, DAJE RADOŚĆ i pozwala coś prostego stworzyć? Coś, co nauczy myślenia o programowaniu. Co wyrobi analityczne podejście i ten magiczny, programistyczny, analityczny do granic, sposób patrzenia na wyzwania wynikające z próby zagonienia informatyki do zrobienia czegoś, co jest w danym momencie potrzebne. Wydaje mi się, że lepiej dziesięciolatka nauczyć języka BASIC i pozwolić mu na samodzielne odkrywanie świata, w którym świadomie zdecyduje się na coś bardziej zaawansowanego niż zbyt wcześnie zniechęcić go w szkole jakimś C++ albo w ogóle zaniedbać ten aspekt rozwoju aż do studiów.

Mówiąc w największym skrócie: Jestem za powrotem BASICa do łask!

I "do łask" nie znaczy wcale "do szkół". Mało co tak skutecznie zabija ciekawość świata jak obowiązek nauczenia się czegoś na ocenę, zwłaszcza w zestawieniu z nie do końca kompetentnym nauczycielem. Po prostu uważam, że każdy komputer, na którym pracuje młody człowiek, powinien zostać wyposażony w proste środowisko programistyczne, które ów młody człowiek odkryje sam dla siebie. Z ciekawości i dla przyjemności. Coś, co nie będzie wymagało walki z materią przy instalacji a później nie przestraszy tym, co wyświetli na ekranie. Po prostu potrzebny jest zwykły, dobry BASIC. Poza tym, środowisko takie potrzebne jest administratorom oraz innym tak zwanym IT Pro. PowerShell jest świetny – do zarządzania. Ale czasem przydałoby się "wystrugać" jakiś kilkuliniowy programik. Z Visual Studio zazwyczaj rezygnuję zanim zacznę. Z prostym BASICem – byłoby łatwo i przyjemnie.

Jeżeli ktoś dał się przekonać – zachęcam do pobrania ze stron Microsoftu pakietu SmallBasic.

Całość składa się z jednego, mającego niecałe 5MB pliku MSI, który w razie potrzeby pobierze .NET 3.5. Instalacja nie może być prostsza.

Środowisko zostało wymyślone i zbudowane przez Microsoft, jest bezpłatne i tak proste jak to tylko możliwe. Trochę obiektowości, trochę procedur, edytor w którym jest 11 przycisków włącznie z Copy/Paste i Undo/Redo.

sb1

Kontekstowa, ładnie rozbudowana pomoc, Intellisense i wystarczy.

sb2

sb3

Całość pomyślana tak, żeby sama się odkrywała przed użytkownikiem. Do tego proste publikowanie online i kompilowanie do plików *.exe wymagających do pomocy małego DLL, który automatycznie wrzucany jest do stosownego katalogu. Trzeba czegoś więcej?

Całość jest tak prosta, że zrozumie ją nawet IT Pro, nie mówiąc o ciekawych świata dziesięciolatkach.

Jeżeli chodzi o sam język, to lepiej rozpoznać go samodzielnie niż o nim czytać. Nie ma numerowanych linii, nie ma deklaracji zmiennych, są funkcje. Systemowe funkcje woła się obiektowo, ale do własnych kawałków kodu obiektowe myślenie wcale nie jest potrzebne. Istnieje tryb tekstowy albo grafika, włącznie z grafiką żółwia. Da się obsłużyć OnMouseDown, a do pobierania obrazków z Flickr są gotowe funkcje. Wszystko, co dla purystów oznacza, że BASIC jest przeklęty. Czyli dokładnie wszystko to, co może się przydać do zabawy w programowanie.

I programowanie znowu może być zabawą jak było nią kiedyś na Atari czy Commodore. A może to tylko ja tak o tym myślę...?

Autor: Grzegorz Tworek [MVP]

Comments
  • 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...

  • 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 :)

  • 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ć.

  • 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 ;)))

  • 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ę..

  • 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ć

  • Whoohohoho .. .super ;) ... gdyby jeszcze trochę podpowidał co ma być w argumentach itp to byłoby super. Ale i tak jestem pozytywnie zaskoczony :).

  • @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.

  • Ciekawy głos przeciw:

    http://www.w-files.pl/czy-programowanie-moze-byc-zabawa/

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment