Wizualnym językiem programowania (ang. Visual Programming Language, skrót VPL) jest dowolny język programowania, który umożliwia użytkownikom tworzenie programów, manipulując jedynie graficznie elementami aplikacji, a nie określając je tekstowo. Program VPL umożliwia programowanie wyrażonymi wizualnie układami symboli tekstowych i graficznych, używanymi jako elementy jego składni. Wiele programów wizualnych opiera się na idei "pól i strzałek", gdzie pola lub inne obiekty ekranu są traktowane jako platformy, połączone strzałkami, liniami lub łukami reprezentującymi relacje.
VPL mogą być dalej klasyfikowane, w zależności od rodzaju i zakresu użytej wizualizacji: języki oparte na ikonach, języki oparte na formach i języki diagramowe. Środowiska programowania wizualnego udostępniają graficzne lub ikoniczne elementy, które mogą być manipulowane przez użytkowników dla budowy programu .
Aktualnie podejmuje się próby zintegrowania programowania wizualnego z „tradycyjnymi” językami programowania, aby mieć natychmiastowy efekt w wybranym języku tekstowym, umożliwiając równoległość zapisu programu poprzez automatyczne generowanie rezultatów w tejże składni. Nadal nastręcza to jednak wielu problemów.
Języki wizualne pomagają użytkownikom w szczególności dowiedzieć się, jak zrobić program komputerowy, poznać logikę rządzącą w tej dziedzinie, ułatwiają do niej dostęp, poprzez ułatwienia składniowe, przed którymi początkujący stają rozpoczynając przygodę z programowaniem
Programowanie wizualne przebyło długą drogę od pierwszych prób w latach siedemdziesiątych, ale nadal zastosowanie ich pozostawia pewien niedosyt. Tworzenie programów poprzez przemieszczanie elementów graficznych, w przeciwieństwie do edycji tekstowej kodu źródłowego to pomysł bardzo kuszący, ale większość spośród języków wizualnych zostało przygotowanych jedynie w celach edukacyjnych, niektóre powstawały z myślą o użyciu rozrywkowym jako gry lub w pojedynczych przypadkach jako swego rodzaju eksperyment z zamiarem zbadania czy dany produkt się przyjmie na rynku (w tej kategorii są pomysły firm o ugruntowanej pozycji na rynku, które mogły sobie pozwolić na tego rodzaju próby).
Najbardziej interesującą dla tej pracy kategorią są języki edukacyjne (ang. educational programming language), czyli takie, których głównym zadaniem jest nauka, a nie pisanie konkretnych, rozbudowanych programów. Na anglojęzycznej stronie Wikipedii pod tym hasłem (List of educational programming languages) można znaleźć następujące języki, z podziałem na wiek :
Przybliżony wiek Odpowiednie języki
3-7 Logo, Karel, Scratch Jr, Scratch, Kodu, Stagecast Creator, Lightbot
7-9 AgentSheets, Logo, Kodu, RoboMind, Scratch, Etoys, Stagecast Creator, Lightbot
10-14
(w zależności od stopnia posiadanego doświadczenia) AgentSheets, Alice, Kodu, Lego Mindstorms, Etoys, Microsoft Small Basic, RoboMind, Gambas, BASIC, Stagecast Creator, Mama, Lightbot, Squeak, Greenfoot, Pascal, Python, Ruby
14-17
(w zależności od stopnia posiadanego doświadczenia) AgentSheets, Squeak, Microsoft Small Basic, RoboMind, BASIC, Greenfoot, Pascal, Mama, Python, Ruby, Visual Basic, Squeak, BlueJ, newLISP, Oz, Python,
18+ Greenfoot, BlueJ, newLISP, Python, Visual Basic, BASIC, Haskell , Oz , Scheme , Squeak, Python
Wiele z tych języków jest w Polsce niemal nieznanych i nie używanych w celach edukacyjnych, warto jednak w kilku zdaniach omówić także te mało popularne w naszym kraju propozycje, by zakończyć na językach najpopularniejszych i najczęściej stosowanych do nauki wśród Polskich nauczycieli. Klucz wiekowy posłuży nam do podziału charakteryzowanych środowisk, jednak zostanie on nieco przystosowany do polskiego systemu szkolnego, który zaistniał po 1. września 2017 roku. Postaramy się zidentyfikować ich mocne i słabe strony pod względem wyrazistości i łatwości użycia. Nie jest to wyczerpująca lista, a i kategoryzacja zapewne pozostanie dyskusyjna.
1.1 Dzieci najmłodsze 3-6 lat (przedszkole):
Przywołana wcześniej tabela dla dzieci najmłodszych proponuje następujące języki: Logo, Karel, Scratch Jr, Scratch, Kodu, Stagecast Creator, Lightbot. Propozycjami znanymi szerzej w Polsce, spośród wymienionych są zapewne Logomocja, która czerpie z Logo (promowana w naszym kraju przez Ośrodek Edukacji Informatycznej i Zastosowań Komputerów w Warszawie), Scratch (Znany z projektu Godzina Kodowania oraz podręczników Wydawnictw Szkolnych i Pedagogicznych), Kodu (jako produkt Microsoftu) oraz Lightbot (znana jako gra dla najmłodszych). Przegląd rozpoczniemy jednak od propozycji praktycznie nieznanych polskiemu odbiorcy, czyli Karel i Stagecast Creator.
1.1.1 Karel
Karel jest językiem programowania dla początkujących, stworzonym przez Richarda E. Pattisa, opisanym w jego książce „Karel Robot: łagodne wprowadzenie do sztuki programowania”, na początku lat osiemdziesiątych XX wieku. Autor używał języka w swoich kursach na Uniwersytecie Stanford w Kalifornii. Nazwa języka wywodzi się od Karela Čapeka, czeskiego pisarza, który wprowadził i spopularyzował słowo „robot”.
Tworzony program jest używany do sterowania prostym robotem nazwanym Karel, który mieszka w środowisku składającym się z siatki ulic (lewy-prawy) i alei (góra-dół). Karel rozumie pięć podstawowych instrukcji:
move (Karel przesuwa się o jeden kwadrat, pole w kierunku, w którym jest zwrócony);
turnLeft (Karel skręca o 90° w lewo);
putBeeper (Karel stawia obiekt - beeper - na polu, na którym stoi);
pickBeeper (Karel podnosi obiekt - beeper - z pola, na którym stoi);
turnoff (Karel się wyłącza, program kończy się).
Karel może również zadawać pytania logiczne dotyczące jego najbliższego otoczenia, pytając, np. czy istnieją obok niego przeszkody. Programista może tworzyć dodatkowe instrukcje, definiując je w kategoriach pięciu podstawowych instrukcji i używając instrukcji warunkowych if i while.
Program ten trafił na podatny grunt w Czechach, gdzie, go zmodyfikowano. Robot porusza się po prostokątnym układzie szachownicy, zastosowano tłumaczenie podstawowych komend na język czeski. Opracowano szeroką metodologię z różnymi materiałami dydaktycznymi w celu nauczania najmłodszych dzieci..
Inną propozycją jest język zainspirowany Karelem, zwany „robot Emil” wykorzystuje widok 3D na świat robota. Oferuje dużą paletę obiektów, które można umieścić w celu obrazowania ścian, okien (przezroczystości), wody i trawy. Kamera może być swobodnie poruszana w środowisku 3D. Robot może być kontrolowany programami napisanymi w języku programowania Karela podobnym do Emila.
Odrębny język, używający również nazwy Karel, służy do programowania robotów FANUC Robotics. Jednak FANUC Karel pochodzi od Pascala.
Język został również zaimplementowany jako Karel the Dog w Javie przez CodeHS. Programiści korzystają z prostego słownictwa Karela w zakresie realizacji zadań programowania. Karel Dog stawia i bierze kule tenisowe.
Karela zaktualizowano do paradygmatu programowania obiektowego w nowym języku programowania o nazwie Karel ++ . Jest aplikacją, która umożliwia łatwe wprowadzenie do programowania komputerowego dla początkujących. Karel ++ jest oparty na Karelu, ale używa zupełnie nowej składni podobnej do Java . Pomimo swojej prostoty, zawiera ona większość ważnych pojęć obejmujących pełne języki programowania, takie jak C ++, Java.
Karel jako język edukacyjny wydaje się nieatrakcyjny i trudny dla dzieci w wieku, dla którego został przyporządkowany. W Polsce jest obecnie nieznany i zdaje się, że nie ma on szans, aby wejść do użycia w związku z jego interfejsem przypominającym gry z początku lat osiemdziesiątych.
Niewątpliwym wkładem jest fakt, że dał on impuls do rozwoju podobnych języków edukacyjnych.
1.1.2 Stagecast Creator
Stagecast Creator to wizualny język programowania przeznaczony do nauki dzieci. Opiera się on na programowaniu według koncepcji demonstracji, w której tworzone są reguły, dając przykłady działań, jakie powinny mieć miejsce w danej sytuacji. Może być użyty do konstruowania symulacji, animacji i gier, które działają pod Java. Umożliwia dziecku skonstruowanie własnych symulacji, redukując zadanie programowania do czegoś, co może obsłużyć każdy. Programowanie w nim wykorzystuje graficzne reguły przepisywania wzbogacone o nie-graficzne testy i działania.
Autorami języka są Allen Cypher and David Canfield Smith pracujący w Advanced Technology Group w firmie Apple.
Projekt został udostępniony 13 maja 1996 roku. Wydano trzy wydania: DR1 w dniu 31 października 1996 roku, DR2 w czerwcu 1997 roku, DR3 w czerwcu 1998 roku W 1997 roku rozwiązano w Apple dział ATG. Wówczas autorzy zachowali prawa do stworzonego przez siebie projektu.
Stagecast Creator jest narzędziem, które umożliwia użytkownikom stworzenie swoich światów, a następnie pozwala animować je według potrzeb - bez konieczności znajomości zasad programowania.
Dla przykładu - symulacja przedstawiająca bohatera chodzącego po polu, wskakującego na skały, które napotyka. Taką symulację rozpocznie się od budowy pola zabaw, w tym przypadku linii ikon reprezentujących trawę i kilka kamieni.
Następnie bohater zostaje umieszczony na polu gry i należy kliknąć dwukrotnie, aby otworzyć edytor reguł. Edytor reguł rozpocznie się od wyświetlenia aktualnych warunków, czyli „postać” stoi na trawie. Poniżej znajduje się obszar, w którym można umieścić różne warunki "po", w tym przypadku użytkownik przeciągnie domyślną siatkę na dwie spacje, przeciąga znak do nowej komórki siatki i zamka edytor reguł.
Jeśli symulacja zostanie rozpoczęta w tym punkcie, postać zacznie chodzić po polu gry w prawo, aż osiągnie pierwszą skałę. Ponieważ nie ma reguły określającej, co ma się stać, gdy na drodze pojawia się skała, postać po prostu się zatrzymuje. W tym momencie edytor reguł zostanie ponownie otwarty, ale teraz pokazuje nowy warunek, który ma zastosowanie. Działania w tym przypadku to dwa kroki, pierwszy pokazujący postać poruszającą się w prawo, następny w dół i w prawo. Kiedy symulacja zostanie ponownie uruchomiona, postać będzie chodzić w prawo, a następnie "skakać" na skały. W tym przypadku bohater przestanie poruszać się, gdy dotrze do boku ekranu, a w tym miejscu można dodać nową zasadę, aby skręcić w lewą stronę.
Dodatkowe zasady można dodawać "na bieżąco", aby zmodyfikować symulację. Aby symulacja była interaktywna, można wyłączyć reguły "ruchu automatycznego" i zastąpić je tymi, które poruszają się tylko wtedy, gdy klawisze kursora są przytrzymane i skok tylko wtedy, gdy użytkownik naciśnie spację. Wtedy symulacja staje się prostą grą.
Aby zapewnić kompatybilność między platformami, cały system został przeniesiony na język programowania Java. Pomimo niewątpliwie wielu zalet, niewątpliwym utrudnieniem jest brak polskiej wersji językowej oraz fakt, że jest to płatna aplikacja.
1.1.3 Lightbot
Lightbot to edukacyjna gra do nauki zasad programowania, opracowana przez Danny’ego Yaroslavskiego. Jest dostępna jako gra flash w Internecie oraz aplikacja na telefony komórkowe z systemem Android i iOS. Lightbot został zbudowany na bazie Flash i OpenFL.
Celem tej gry jest nakazanie małemu robotowi poruszania się po labiryncie i włączania światła. Gracze umieszczają symbole na ekranie, aby robot chodził, skręcał, przeskakiwał, włączał światło i tak dalej. Labirynt i lista symboli stają się bardziej skomplikowane w miarę postępów lekcji.
Podczas korzystania z takich poleceń użytkownicy uczą się koncepcji programowania, takich jak pętle, procedury i inne, bez wprowadzania kodu w jakimkolwiek języku programowania .
Początkowo nie planowano, aby była to gra edukacyjna jednak po wydaniu jej nauczycieli programowania zwrócili na Lighbota uwagę. Następnie używali go jako wprowadzającego narzędzia do nauczania .
W programie Lightbot gracze programują robota używając ikon:
Naprzód()
Skręć w lewo()
Skręć w prawo()
lub
Skok()
lub
Światło()
Dodatkowo do dyspozycji mamy ikony procedur, które mogą skrócić zapis programu, np.
lub
1.1.4 Kodu Game Lab
Kodu jest wizualnym językiem programowania stworzonym specjalnie do tworzenia gier Ma on być przystępny dla dzieci i łatwy dla użytkownika w każdym wieku. Wizualna natura języka pozwala na szybką iterację projektu.
Jest eksperymentem firmy Microsoft, który pozostaje wciąż w fazie opracowywania. Jest to środowisko programistyczne skierowane dla dzieci, które pozwala każdemu na budowę własnych gier bez pisania pojedynczej linii kodu.
Program jest atrakcyjny wizualnie, co sprawia, że użytkowanie go daje wrażenie gry. Zawiera lekcje i gry próbne, które dają możliwość poznania Kodu przed rozpoczęciem pracy i ułatwiają ją. Można użyć gotowych przedmiotów, znaków i przeszkód, które można ustawiać za pomocą klawiatury i myszy oraz specjalnego systemu kart.
Istnieją pewne ograniczenia dla Kodu, ponieważ jest przeznaczony dla dzieci z małym lub bez żadnego doświadczenia w programowaniu. Niemniej jednak jest zabawną, kolorową drogą, dzięki której można zacząć od hobbystycznego tworzenia gier.
Jest to intuicyjna aplikacja skierowana dla dzieci. Nie wymaga od użytkownika jakiejkolwiek wiedzy programistycznej, czy też wykorzystania skomplikowanych bibliotek graficznych, całość obsługiwana może być jedynie przy użyciu myszki.
Na każdym etapie program oferuje szereg porad i wskazówek, a także prostych samouczków, pomagających zrozumieć sposób jego działania. Co więcej, każda mini-gra pokazywana w filmie pomocniczym może zostać przez użytkownika edytowana, dzięki czemu może on podejrzeć sposób realizacji konkretnych operacji i wykorzystać go we własnym projekcie. Zaletą narzędzia jest przyjazny, dopracowany oraz dostępny w polskiej wersji językowej interfejs graficzny.
Tworząc od podstaw własną grę zaczynamy od kreowania świata, w którym będzie się ona toczyć. Kodu Game Lab pozwala szybko i wygodnie edytować podłoże, podnosić i obniżać teren, dodawać wodę i ustalać jej poziom, a także nanosić na projekt najróżniejsze obiekty - drzewa, owoce, monety, statki, samoloty, chmury, kamienie oraz wiele innych. Dla większości z nich program przewiduje zestaw predefiniowanych dźwięków. Narzędzie oferuje również możliwość tworzenia ścieżek, po których np. przemieszczać się będą ulokowane w projekcie obiekty.
Na uwagę zasługuje również całkiem spory pakiet opcji, pozwalających dostosowywać do własnych preferencji świat naszej gry. Do dyspozycji użytkownika pozostają ustawienia dynamiki pracy kamery, wyświetlania informacji na temat dostępnych w grze zasobów, sile takich zjawisk jak wiatr czy fale, kolor nieba i oświetlenia, głośności dźwięków itp. Na każdym etapie możemy zobaczyć efekty naszej pracy i przetestować zastosowane ustawienia.
1.1.5 Scratch
Scratch to najpopularniejsza obecnie aplikacja umożliwiająca programowanie wizualne. Z zamyśle skierowany jest do osób w wieku 8-16 lat. Dostępny w ponad 40 językach, używany w większości krajów świata (obecnie ok. 150). Jest językiem stworzonym przez Mitchela Resnicka. Użytkowanie Scratcha jest podobne do zabawy wirtualnymi klockami, z których każdy jest ważny i ma swoje zadanie. Zdaje się, że nie ma to znamion formalnego języka programowania, ale niewątpliwie takim jest.
Nazwa pochodzi od słowa „scratching”, oznaczającego w informatyce powtórne użycie kodu. Skutecznie wykorzystywane do innych projektów, nowych scenariuszy, co jest kluczową funkcją Scratcha - „remix”. Funkcja ta pozwala młodym adeptom pracować na publicznych projektach przesyłanych przez innych użytkowników.
Umożliwia to rozumienie nowych technologii w celu lepszego uczenia się oraz poszerzenia możliwości tworzenia grup, które wspierają się w tworzeniu projektów, umożliwiając młodym ludziom planowanie i programowanie własnych pomysłów.
To jedno z łatwiejszych instrumentów programistycznych, opracowane zostało w Massachusetts Institute of Technology (MIT) przez Grupę Life Kleong Kindergarten prowadzoną, jak wcześniej wspomniano przez przez Mitchela Resnicka. Pierwszą wersję Scratch in Desktop udostępniono w 2003. Jego celem była pomoc w nauce programowania. Scratch 2 został wydany 9 maja 2013 roku
Scratch to bardzo intuicyjne narzędzie pozwalające dziecku metodą wizualną tworzyć gry, historyjki, pokazy i inne. Jego zaletą jest natychmiastowy efekt, jaki widzi autor uruchamiając go. Ma to duże znaczenie zwłaszcza przy nauce najmłodszych, chcących zobaczyć szybkie rezultaty swojej pracy. Pozwala też podtrzymać ich uwagę i motywację do kolejnych zadań.
Do niewątpliwych zalet Scratcha należy fakt, że umożliwia on łatwe robienie aplikacji mogących posługiwać się dźwiękiem, rysować, zestawiać kolory. Działa na wszystkich systemach operacyjnych i jest darmowy, co czyni go przystępnym dla ucznia. Interesującym jest fakt, że przygotowane aplikacje można udostępnić w Internecie, czy umieścić na stronie internetowej. Aplikacje w tym programie tworzy się w edytorze bloków funkcjonalnych. Konstrukcja tworzonego programu jest przejrzysta i klarowna dzięki temu, że wszystkie komendy są wypisane na blokach, w języku polskim, które w zależności od swojej funkcji, mają różne kolory. Nie potrzeba wcześniejszej znajomości żadnego języka programowania, dlatego jest używany jako język wprowadzający. Tworzenie ciekawych programów jest stosunkowo łatwe, a umiejętności można wykorzystać do innych podstawowych języków programowania, takich jak Python i Java .
Elastyczność w zastosowaniu tego programu pozwala nauczycielom tworzyć ciekawe lekcje wizualne oraz zadania w laboratorium naukowym, ponieważ jest on pomocnym narzędziem do tworzenia animacji, które przydatne są do obrazowania trudnych pojęcia. Można tworzyć quizy, gry i ćwiczenia, które stymulują umysł ucznia i rozbudzają ciekawość. Korzystanie ze Scratcha umożliwia uchwycić sens i logikę programowania, kreatywnie tworzyć i współpracować.
Wykładowca Uniwersytetu Harvarda, dr David J. Malan preferuje używanie Scratch jako wstępu do powszechnie używanych języków programowania, takich jak Java czy C. Jak czytamy: „pozwala początkującym informatykom skoncentrować się na problemach, na opanowaniu logiki programowania, a nie na składni. Składnia, oczywiście, przyjdzie później. Na razie skupiamy się na programowaniu. Dzięki temu programowanie, będzie bardziej jak układanie zagadki niż jak pisanie po grecku” .
Z językiem Scratch związany jest także projekt „godzina kodowania”, polegający na rozwiązywaniu łatwych zadań programistycznych, w których najczęściej występują postacie znane z animacji Disneya i innych znanych kreskówek. Całość ma formę zabawy dla dzieci, co zaważyło o jej atrakcyjności wśród młodszych dzieci. Zaletą tego projektu jest dodanie pomiędzy różnymi łamigłówkami krótkich filmów wyjaśniających zastosowanie poszczególnych klocków Scratcha. Po zakończonym zadaniu możemy również wyświetlić stworzony z elementów graficznych kod zapisany w języku Java. Witryna Code.org zawiera wiele przykładów i propozycji zajęć lekcyjnych wykorzystujących programowanie w tym języku.
Programu można używać poprzez przeglądarkę internetową. Po kliknięciu „stwórz” pojawia się aplikacja, w której obszar podzielony jest na trzy kolumny. W pierwszej kolumnie od góry znajduje się menu główne, poniżej miejsce aby wpisać nazwę programu, zielona flaga rozpoczyna skrypt, a czerwony ośmiobok zatrzymuje program. Pod nimi znajduje się scena, na której możemy zobaczyć efekty zaprogramowanych instrukcji. W tej kolumnie znajdują się jeszcze sekcje umożliwiające dodanie tła i wybór tzw. duszka czyli postaci, która wykonuje zakodowane przez użytkownika polecenia.
W drugiej kolumnie znajdują się trzy zakładki pozwalające na przekształcenie zawartości sekcji - domyślnie wyświetla skrypty. Zmieniając na napis „Kostiumy/Tła” możliwe jest dokonanie przemiany w wyglądzie swoich duszków, czy transformację scen. Opcja „Dźwięki” pozwala na dodanie do projektu odgłosów, melodii i innych efektów audio. Bloki niezbędne do utworzenia programu pogrupowane są w kategorie:
W trzeciej kolumnie jest miejsce na skrypt, który budujemy poprzez przeciąganie w to miejsce i łączenie różnych pasujących do siebie klocków-poleceń.
Scratch Jr jest uproszczoną wersją Scratcha, z niego także można korzystać online poprzez stronę WWW.
Z tym programem małe dzieci (w wieku 4-7 lat) mogą zaprogramować własne proste interaktywne historyjki i gry. W trakcie pracy uczą się rozwiązywać różne problemy. Użytkownicy tworzą z kolorowych klocków prosty kod (zamiast komend mamy bloki z obrazkami), który powoduje, że postacie poruszają się czy wydają dźwięki.
Szata graficzna tego programu jest uproszczona w stosunku do pierwowzoru. Scratch Jr jest wyposażony w mniej dostępnych poleceń, a pętle dotyczą całego skryptu, a nie poszczególnych jego części. Uproszczenia ułatwiają najmłodszym użytkownikom korzystanie z aplikacji - ograniczają ilość możliwości popełnienia błędów. Jest niezwykle intuicyjny, większość poleceń ma charakter obrazkowy . Chcąc rozpocząć nowy projekt, ustawiamy kursor na ikonce domku, a następnie klikamy „+”. Z lewej strony umieszczony jest panel postaci - „duszków” - początkowo widoczny jest kot, ale i tu symbol „+” pozwala znaleźć więcej opcji. Program pozwala także narysować własnego „duszka”. Edytor umożliwia również zmieniać postaci domyślne. Wskazane jest również przygotowanie tła dla projektu, w tej materii można skorzystać z domyślnych lub stworzyć własne.
Podobnie jak w Scratch kod tworzony jest z kolorowych klocków, w odróżnieniu jednak od niego nie w pionie ale w poziomie, dysponujemy 6 kategoriami:
Programowanie należy zacząć od żółtych klocków startowych.
Działanie programu możemy rozpocząć poprzez przeciągnięcie na obszar roboczy zielonej flagi. Chcąc usunąć jakiś klocek upuszczamy go poza tym obszarem.
Niebieskie klocki kodują ruch (możliwe przemieszczenie w prawo, w lewo, w górę, w dół, oprócz tego duszek może kręcić się w obie strony, wracać do punktu początkowego i podskakiwać). Wpisując odpowiednią wartość można określić dystans do przebycia naszej postaci.
Fioletowe bloczki odpowiadają za wielkość i wygląd programowanych bohaterów. Zielone mają za zadanie dodawanie dźwięków do projektu. Klocki z pomarańczowej kategorii mają za zadanie uproszczenie kodu, to tu znajdują się odpowiedniki procedur i pętli. Bloczki czerwone kończą kodowanie danej postaci. Każdy duszek musi być osobno zaprogramowany. Gotowy kod może wyglądać następująco:
1.1.6 Logomocja
Kolejnym programem umożliwiającym obiektowe programowanie jest Imagine, znane w Polsce jako projekt Logomocja . Przeznaczony jest do nauczania programowania w szkołach podstawowych i średnich. W założeniu stanowi on kontynuację języka Logo, który jako edukacyjny język programowania, zaprojektowany został w 1967 roku przez Wally’ego Feurzeiga , Seymour Papert i Cynthię Solomon . Nazwa pochodzi od greckiego słowa logos (λόγος), oznaczającego „słowo”, „myśl”, „sens”. Autorzy w ten sposób odróżnili się od innych języków programowania. Pierwsze cztery lata pracy nad projektem, rozwojem i nauczaniem Logo przeprowadzono w firmie BBN (Bolt, Beranek i Newman). Pierwsze wdrożenie Logo, nazwane było Ghost, zostało napisane w LISP. Celem było stworzenie matematycznej ziemi, w której dzieci mogłyby bawić się słowami i zdaniami. Korzystanie z wirtualnych łuków pozwoliło na natychmiastową wizualną reakcję i debugowanie programów graficznych. Logo znany jest z użycia grafiki żółwia, używa jednak również robota. Pierwszy robot żółw został stworzony w 1969 roku. W BBN Paul Wexelblat przygotował żółwia o nazwie Irving, który miał czujniki dotykowe i mógł poruszać się do przodu, do tyłu, obracać i dzwonić. Wirtualne i fizyczne żółwie po raz pierwszy użyli uczniowie w szkole Bridge w Lexington w latach 1970-71. Język został stworzony po to, aby uczyć koncepcji programowania i dopiero później, aby umożliwić uczniom zrozumienie, przewidywanie i wyjaśnianie ruchu żółwia. Istnieją znaczne różnice w wielu odmianach Logo, a problem stanowi konsekwentne stosowanie we wszystkich grafiki żółwia.
Logo jest zwykle językiem interpretowanym, chociaż zostały opracowane skomplikowane dialekty Logo (takie jak Lhogho i Liogo).
Logomocja jest promowana w Polsce przez Ośrodek Edukacji Informatycznej i Zastosowań Komputerów. Program powstał w 2001 roku na Słowacji, podobnie jak Logo Komeniusz jest on dziełem zespołu pracowników Uniwersytetu Komeniusza w Bratysławie: Ivana Kalaša, Petera Tomcsányi, Andreja Blaho i Lubomira Salanci.
Imagine obecnie istnieje w 6 opcjach językowych - angielskim, słowackim, portugalskim, brazylijskim portugalskim, polskim i węgierskim. Każda edycja programu ma swój własny język interfejsu użytkownika (jest to język, w którym napisane jest menu, okna dialogowe i pomoc), a także język poleceń (jest to język programowania używany przez programistów logo).
Język interfejsu użytkownika zależy od pliku exe, który jest uruchomiany. Język poleceń może być zmieniony. Jednak jeden projekt może używać tylko jednego języka poleceń.
Uczeń pisze polecenia w języku ojczystym. Na początku komendy wprowadzane są poprzez linię poleceń, ale stopniowo z zestawu poleceń pogrupowanych w procedurach i kompletnych projektach.
1.2 Edukacja wczesnoszkolna 7-9 lat (klasy I-III):
Na tym etapie edukacyjnym nowa podstawa programowa wskazuje na naukę programowania wizualnego, posiłkując się umieszczoną wcześniej tabelą, w której na tym etapie zalecane są omówione wcześniej: Logo, Kodu, Scratch, Stagecast Creator, Lightbot dodaje jednak następujące propozycje: dostępny w polskiej wersji RoboMind oraz AgentSheets, Etoys - propozycje nieznane w Polsce.
1.2.1 AgentSheets
AgentSheets to narzędzie, które pozwala tworzyć własne gry i symulacje oraz publikować je w Internecie za pomocą interfejsu przeciągnij i upuść. Twórcą projektu jest Alexander Repenning wykładowca informatyki na Uniwersytecie Colorado w Boulder, który postawił sobie za cel upowszechnianie edukacji informatycznej i programowania.
Pierwotnym celem jego badań było zbadanie nowych modeli myślenia obliczeniowego. Pierwszy prototyp AgentSheets działał w 1989 roku na Uniwersytecie Colorado. Nowe pomysły poszerzały obszar zainteresowania i zmieniały się możliwości technologiczne. Doprowadziło to do rozpoczęcia tworzenia języka programowania wizualnego. W 1996 roku AgentSheets staje się pierwszym na świecie środowiskiem programistycznym pozwalającym na pracę metodą „przeciągania i upuszczania”. Przeciągając i upuszczając warunki, akcje, reguły, a nawet metody na agentów użytkownicy widzą konsekwencję wywołania fragmentu programu bez konieczności pisania programu testowego. Podobną metodę pracy zastosowano później w Scratchu.
W 2010 roku wydano AgentSheets 3 był pierwszym środowiskiem programistycznym wspierającym myślenie obliczeniowe. W przeciwieństwie do klasycznego programowania wizualnego, pomagającego tylko w zachowaniu prawidłowej składni, programowanie konwersacyjne w AgentSheets 3 pomaga w semantyce, stawiając problemy natury: Czy ta zasada zadziała? Dlaczego ta zasada nie działa? Uczy w ten sposób myślenia algorytmicznego.
Program umożliwia określanie zachowań agenta (stąd nazwa) za pomocą programu Visual AgenTalk, wizualnego języka programowania, dzięki, któremu możemy programować: elementy animowane, dźwięki.
Ristretto to nazwa technologii, która umożliwia użytkownikom końcowym przekształcanie projektów programu AgentSheets bezpośrednio do Java bez konieczności umiejętności programowania w Javie. AgentSheets z Ristretto jest środowiskiem, które pozwala szybko tworzyć własne symulacje i gry oraz publikować je w sieci.
Program ten umożliwia:
- symulacje umożliwiające testowanie teorii, badanie procesów w różnych dziedzinach nauki.
- budowanie gier uczy koncepcji informatyki, logiki i myślenia algorytmicznego.
Natychmiastowy efekt podjętego działania powoduje motywację do dalszych poszukiwań.
W celu utworzenia nowego projektu należy, na początku nazwać projekt, określić miejsce jego zapisu oraz wybrać „agenta”, którego można edytować. W następnym kroku tworzymy w arkuszu roboczym planszę, która będzie nam służyła jako tło. Po tym można otworzyć edytor zachowań – reguł. Otwieramy paletę reguł, które następnie – podobnie jak w scratchu – przeciągamy do okienka zachowań.
Gdy projekt jest gotowy, aby go przetestować, należy włączyć symulację. Następnie można obserwować, jak działa stworzony program. Użytkownik może dokonywać zmian w czasie symulacji, zatrzymywać ją, przesuwać po jednym kroku. Utworzoną kompletną interaktywną symulację, która działa na komputerze autora można umieścić w Internecie tworząc aplet w Java.
1.2.2 RoboMind
RoboMind to oprogramowanie specjalnie opracowane w celu wspierania edukacji technologicznej. Jest dostępny jako aplikacja dla systemu Windows, Linux i Mac OS X. Pierwsze wydanie opublikowano w 2005 roku, został opracowany przez Arvida Halma, absolwenta Uniwersytetu w Amsterdamie. Od 2011 RoboMind wydany jest przez Research Kitchen Uczniowie uczą się logiki, informatyki i robotyki programując robota. Łączy to myślenie logiczne z rozwiązywaniem problemów napotykanych w codziennym życiu. Oparty jest na nowym, prostym języku programowania nazwanym ROBO, który jest przeznaczony do zapoznania się z podstawowymi zasadami informatyki podczas programowania własnego robota. Ponadto wprowadza do zagadnień z obszarów robotyki i sztucznej inteligencji.
Język jest zaprojektowany w taki sposób, że można rozpocząć programowanie bez przygotowania, zawiera zwięzły zestaw zasad i ma na celu programowanie robota. Robot użytkownika jest w stanie wykonać kilka czynności. Może jeździć, „rozejrzeć się”, przenosić przedmioty i malować. To wszystko można zrobić w różnych środowiskach, które składają się z bloków.
Ujmując technicznie ROBO jest proceduralnym językiem programowania. Język składa się z kilku podstawowych poleceń sterujących robotem, pętli powtarzania, warunkowych, możliwości definiowania instrukcji przez samego siebie, tworząc procedury.
ROBO posiada całkowicie zintegrowane środowisko programistyczne, które pozwala na monitorowanie skryptu za pomocą jednego kliknięcia. Interfejs użytkownika jest elastyczny, ale również był prosty. W rzeczywistości wszystkie skrypty to zwykłe pliki tekstowe. Oznacza to, że możesz używać dowolnego edytora tekstu (takiego jak notatnik) do pisania programów. Następnie można je załadować do RoboMind. Zintegrowany edytor tekstów oferuje jednak dodatkową funkcjonalność, która sprawia, że programy do pisania są tak proste, jak to możliwe.
Podstawowe polecenia:
Do przodu (n) Przesuń n kroków do przodu
Do tyłu (n) Przesuń n kroków do tyłu
lewo() Skręć w lewo o 90 stopni
prawo() Skręć w prawo o 90 stopni
RoboMind ma być pierwszym wprowadzeniem do automatyzacji i programowania bez wstępnych wymagań. Ponieważ można wykonać różne ćwiczenia, poziom trudności może być dostosowany do odbiorców.
1.2.3 Etoys
Program oparty na języku Squeak. Rozwój Etoysa stworzonego przez Alana Kaya rozpoczął się po przejęciu projektu przez Disneya. Program ten wpłynął na rozwój środowiska programowania edukacyjnego Squeak, co doprowadziło do powstania Scratcha.
W 2009 roku powstaje Fundacja Squeakland jako pierwszy krok, aby kontynuować rozwój i wykorzystanie Etoys jako medium edukacyjnego. System Etoys oparty jest na idei programowalnych wirtualnych podmiotów działających na ekranie komputera. Zapewnia bogate środowisko autorskie, zawiera grafiki 2D i 3D, obrazy, tekst, cząstki, prezentacje, strony internetowe, filmy, dźwięk i MIDI, możliwość współużytkowania komputerów stacjonarnych z innymi użytkownikami Etoy w czasie rzeczywistym.
Praca w środowisku otwartym, takim jak Etoys, zachęca do myślenia o rozwoju własnego projektu, pomaganiu innym i określeniu ich dylematów programowania, a także sprzyja świadomości procesu uczenia się.
1.3 Informatyka w klasach IV-VIII (10-14 lat):
W cytowanej wcześniej tabeli, oprócz omówionych już programów pojawiają się jeszcze: Alice, Lego Mindstorms, Microsoft Small Basic, Gambas, BASIC, Mama, Lightbot, Squeak, Greenfoot, Pascal, Python, Ruby. Przyjęta podstawa programowa nauczania informatyki, na tym etapie również stawia na pierwszym planie programowanie wizualne. Tym miejscu pracy omówione zostaną programy: Alice i Lego Mindstorms, pozostałe wymienione zostaną przedstawione w starszej grupie wiekowej.
1.3.1 Alice
Alice jest innowacyjnym środowiskiem programistycznym 3D, który ułatwia tworzenie animacji 3D. Nadaje się idealnie do wprowadzania do obiektowo zorientowanego programowania. Umożliwia naukę elementarnych zagadnień programowania w czasie tworzenia prostych gier 3D oraz animowanych filmów. Alice powstała jako narzędzie do przeprowadzania projektów związanych z tzw. wirtualną rzeczywistością (VR). Jego twórcą jest Randy Pausch (+2008). Program okazał się nie tylko świetnym instrumentem do wspierania badań nad VR, ale także był platformą do badań nad stworzeniem dostępu dla szerszej społeczności programistycznej w zakresie grafiki 3D. Następnym ważnym etapem w tworzeniu aplikacji, było przystąpienie do rewolucji w kodowaniu poprzez zastosowanie metody „przeciąganie i upuszczanie”. W tym samym czasie twórca projektu podczas stażu w Walt Disney Imagineering Virtual Reality Studio poznał Alana Kaya i eToys oraz wczesne odkrycia dotyczące kodowania metodą przeciągania i upuszczania.
Zespół zdawał sobie sprawę, że istnieją szanse na transfer do środowiska opartego na tekstowych kodowaniach. W tym celu zespół zaczął pracować nad badaniem podejścia łączącego zalety obu typów programowania w celu przejścia z kodowania opartego na bloku do tekstu opartego na funkcjach aplikacji. Udoskonalenia te zostały po raz pierwszy zrealizowane podczas uruchomienia programu Alice 3.
Z pomocą Alice, możemy zaprojektować trójwymiarowy świat i umieścić w nim swoje postaci, a z ich pomocą, stworzyć animację lub grę. Możemy poruszać w zasadzie każdą częścią ciała bohaterów, dlatego animacje mogą być bardzo realistyczne. Wymaga to jednak cierpliwości i nakładu pracy. Program został stworzony z myślą o nauce obiektowego programowania. Pozwala użytkownikom zrozumieć podstawy kodowania w kontekście tworzenia przedmiotów 3D. Zawiera obiekty 3D, np. ludzi, pojazdów, zwierząt. Tworzenie programu, który porusza tymi obiektami jest zadaniem ucznia. Graficzne kafelki, które są przeciągane i upuszczane, tworzą program.
Przypomina instrukcje, takich języków, jak Java, C++ i C#. Program umożliwia bezzwłoczny podgląd animacji, lub programu.
1.3.2 Lego Mindstorms
Słusznie kojarząca się ze znaną marką klocków nazwa projektu łączy w sobie elementy robotyki i programowania . Znany producent od lat dążył o „ożywienia” swoich produktów, nawiązując współpracę z naukowcami. Już w 1988 roku współpraca Lego z Massachusetts Institute of Technology doprowadziła do opracowania „inteligentnego klocka”, który wcześniej zaprogramowany umożliwiał ruch składanych z kloców robotów. Jednak pre-programowane zabawki nie dawały możliwości zmiany sposobu ich zachowania. Pierwsze programowalne roboty zaprezentowane zostały w 1998 roku jako seria RCX. Umożliwiała ona wykonywanie przez zabawkę prostych czynności.
Kolejnymi wersjami były NXT 1.0 i NXT 2.0, które w znaczący sposób poszerzały możliwości programowania robotów.
Ogromny postęp technologiczny daje jednak wydany na piętnastolecie prezentacji RCX Lego Mindstorms EV3 pozwalający na skonstruowanie siedemnastu różnych robotów. Najwięcej udoskonaleń zastosowano w programowalnym klocku, nazwanym EV3, która jedynie wyglądem przypomina ten z zestawów NXT 2.0. Zwiększono wydajność mikrokomputera, instalując nowocześniejszy procesor o lepszym taktowaniu i większej pamięci. Pojawiły się nowe funkcje: możliwość podpięcia karty SD, możliwość bezprzewodowego połączenia z kostką (Bluetooth), port USB daje możliwość podłączenia wtyczki WiFi. Za pomocą urządzeń mobilnych (tablet, smartphone), dzięki specjalnym aplikacjom można kierować. Uproszczone zostało środowisko programistyczne, pozwalając na intuicyjne tworzenie programów, nie tylko na komputerach i na urządzeniach mobilnych, za pomocą metody „przeciągnij i upuść” spośród podanych klocków. Jest to język poleceń, a nie kodu. Lego Mindstorms Ev3 w prosty sposób daje możliwość programowania robota.
Zielone są bloki działań. Sterują one działaniami programu: obrotami, a także obrazem, dźwiękiem i światłem.
Żółte – bloki czujników, które umożliwiają programowanie reakcji na sygnały z czujnika koloru, czujnika dotyku czy czujnika podczerwieni.
Bloki przepływy danych są pomarańczowe i odpowiadają za prawidłowe działanie programu. W tej grupie znajduje się rozpoczynający wszystkie programy blok startowy.
Kolejne opisane poniżej dwie grupy niedostępne są w przypadku programowania przez urządzenia mobilne.
Czerwone – bloki przetwarzania danych, pozwalają zapisywać i odczytywać zmienne, porównywać wartości.
Bloki zaawansowane są ciemnoniebieskie. Umożliwiają zarządzanie pozostałymi funkcjami.
Do robotów Lego tworzą oprogramowanie także firmy zewnętrzne, często w swoich projektach umożliwiając większą funkcjonalność niż programy dedykowane. Wśród nich są na przykład: oparty na języku C++ BrickOS, EV3Basic stworzony na bazie Microsoft Small Basic, Ev3_scratch (korzystający ze Scratcha), czy LeJOS oparty na Javie i wiele innych.
Niewątpliwie programowanie Lego Mindstorms stanowi świetną zabawę, a jednocześnie uczy programowania robotów, co może być nieocenioną umiejętnością w życiu dorosłym. Zestawy dostępne są w Polsce, jednakże cena jest jeszcze stosunkowo wysoka.
W programach wizualnych podstawowe elementy programowania są ogólnie reprezentowane jako bloki, z graficznymi wskazówkami, jak mogą być stosowane i łączone ze sobą. Tak więc, aby tworzyć programy, użytkownik może gromadzić bloki tak jak klocki Lego, układając je w taki sposób, który "pasuje". Dlatego niewłaściwe wyrażenia mogą po prostu być niemożliwe do zastosowania. Ponadto bloki są zazwyczaj prezentowane w centralnym katalogu istniejących, więc użytkownik nie musi czytać dokumentacji ani odgadywać, które funkcje są dostępne. Te dwa punkty praktycznie usuwają główne problemy początkujących podczas nauki składni języka programowania, co pozwala skupić się na logice swojego programu.
1.3.3 Mama
Mama jest obiektowym językiem programowania, mającym na celu pomoc młodszym uczniom w rozpoczęciu programowania, zapewniając wszystkie elementy językowe w macierzystym języku uczniowskim. Język programowania Mama jest dostępny w kilku językach, niestety brak polskiej wersji.
Nowy wariant Mama został zbudowany na bazie środowiska rozwojowego Alice Carnegie Mellon, wspierając scenariusze obiektów trójwymiarowych. Ten nowy wariant Mama został zaprojektowany, aby pomóc młodym uczniom rozpocząć programowanie, tworząc animacje 3D i gry.
Budowanie animacji w Mama składa się z dwóch głównych części: edycji sceny i edycji programu. W związku z tym środowisko programistyczne zawiera dwa podstawowe tryby edycji: tryb edycji sceny i tryb edycji programu. W trybie edycji sceny zostanie otwarte okno 3D, w dolnym oknie zostanie wyświetlona galeria obiektów, a odpowiednie okno zawiera elementy sterujące służące do edycji . W trybie edycji programu (tryb domyślny) dolne okno jest obszarem edycji programu , a prawym oknem jest obszar edycji zdarzenia.
Zbiór wszystkich obiektów i zdarzeń w bieżącej sesji nazywa się światem.
Podsumowanie
Środowisko programowania aplikacji języków wizualnych (VLP) jest często połączone z uproszczonym środowiskiem wykonawczym, dzięki czemu użytkownicy mogą szybko i łatwo uruchomić program i zobaczyć wyniki. Jest to ważny czynnik ułatwiający początkującym uzyskanie pierwszego uruchomionego programu bez obawy o kwestie techniczne.
Innym zagadnieniem jest to, że programowanie wizualne może ułatwić oglądanie dużego obrazu. Program jest określony przez jego kształt, więc początkujący i zaawansowani użytkownicy mogą uzyskać wizję programu w skrócie. Kształty i kolory wykorzystują również możliwości wzrokowe użytkownika w większym stopniu niż wcięcie kodu i kolorowanie, aby uczynić źródło bardziej czytelnym. Pomaga to łatwiej opisać program: można go przedstawić innym osobom i wyjaśnić główne punkty, nawet tym, którzy nie znają się na języku, który został użyty, pokazując graficzny kod źródłowy bezpośrednio, zamiast rysować abstrakcyjny diagram.
Poza niektórymi konkretnymi dziedzinami, zwłaszcza edukacją, wizualne języki programowania nie są tak popularne jak języki klasyczne.
Jednym z powodów jest to, że w odróżnieniu od ręcznie rysowanych algorytmów, które możemy zaimplementować do różnych języków, w VPL nie zawsze posiadamy klocki, którymi moglibyśmy odwzorować algorytm. Opierają się one na przyjętych założeniach i kontekście - nie mogą być interpretowane bezpośrednio w celu stworzenia programu.
I chociaż wizualne języki mogą ułatwić naukę i zmniejszyć trudności związane z poznawaniem składni, jednak każdy rodzaj programowania wymaga od użytkowników poznania ogólnych, a także specyficznych pojęć dla danego języka programowania. Aby móc pisać program z VPL, należy zacząć myśleć jak programista. Kiedy patrzymy na profesjonalistów, którzy codziennie piszą programy, programowanie wizualne może wydawać się mało przydatne. Programista zna składnię języka programowania i musi pracować z wieloma rożnymi komponentami lub bibliotekami, w tej sytuacji zalety VPL nie są zbyt interesujące. Tekst daje więcej możliwości, klocki w programie wizualnym są ograniczone. Mimo że niektóre języki wizualne łączą kształty i tekst, jednak ich reprezentacje wizualne w ogóle nie mogą konkurować z gęstością informacji w tekście.
Także środowisko programistyczne VPL jest czasami specjalistyczne, stosowane do zredukowanej domeny (na przykład projektowanie gier). W ten sposób programy mogą być wykonywane bezpośrednio w zintegrowanym środowisku wykonawczym. Innym czynnikiem jest fakt, że nawet „ambitne” projekty typu VPL mają techniczne braki, zwłaszcza w szybkości ich wykonywania.
W zakresie czytelności kodu wizualne języki programowania posiadają niezaprzeczalne zalety, niestety ograniczenia tych projektów również są duże.