wtorek, 4 czerwca 2013

UUhistle - wizualizacja kodu Python

Moje doświadczenie z nauczaniem programowania pokazało, że uczącym się najtrudniej zrozumieć ideę sekwencyjności (mimo że na logikę zmiana kolejności instrukcji winna mieć znaczenie) oraz pojęcia zagnieżdżenia wywołania funkcji i rekurencji.

Niedawno odkryłem narzędzie UUhistle napisane przez Juhę Sorvę z Universytetu w Aalto, w Finlandii. Aplikacja powstała jako element pracy doktorskiej.

 
Aplikacja umożliwia wizualizację sposobu działania kodu napisanego w Python 2.X, w szczególności wizualizację stanu sterty (dostępne zmienne, ich wartości, do czego odnoszą się referencje), stosu (przy rekurencji) oraz prezentowania sposobu w jaki wykonuje się program. W obszarze "A" znajduje się kod (można wklejać), w obszarze "B" całość jest wizualizowana, natomiast "C" to kontrola wykonania programu. Aplikację można uruchamiać w trybie pojedynczej instrukcji, normalnym, a także ... cofać instrukcje. Z tej przyczyny wyłączono możliwość pracy na strumieniach danych, czyli nie można korzystać z plików, gniazd czy potoków. Oprócz tego wyłączono kilka innych możliwości języka. Najważniejsze braki dotyczą: leniwego wartościowania (yield, generatory), rozwinięcia list, dziedziczenie, rozmiaru biblioteki standardowej, możliwości stosowania lambd. Co ciekawe, klasy jako takie są obsługiwane w ograniczonym zakresie. Wszystkie ograniczenia opisano tutaj.

UUhistle wydaje się być narzędziem stworzonym wyłącznie do wizualizacji najprostszych algorytmów. Idealnie wizualizuje np. dlaczego przy zamianie wartości dwóch zmiennych musi istnieć zmienna pomocnicza. Algorytmy tej klasy trudności mogą być bez trudności realizowane za pomocą UUhistle, natomiast prawdę mówiąc jeżeli ktoś potrzebuje wyrażeń generatorowych i rozumie sens leniwego wartościowania, to prawdopodobnie nie potrzebuje UUhistle w jego podstawowym zastosowaniu.

Aplikacja zajmuje ok. 13MB i nie wymaga instalacji Python.

Przykładowy zrzut z wizualizacji sortowania bąbelkowego:



Zalety:
  • świetna wizualizacja (animacje, kolorowanie, wyodrębnianie struktur kodu) 
  • wizualizuje kod Python, a Python jest dobry w nauczaniu programowania
  • dystrybuowane jako JAR, przenośne + żadnych instalatorów
  • tryb "tutorial", tryb interaktywny
  • darmowy do celów niekomercyjnych

Wady:
  • zamknięta licencja, zamknięty kod (aczkolwiek jak się go otworzy w programie dekompresującym... )
  • okno kodu nie koloruje kodu, nie podpowiada składni
  • nie można zmienić ani zwiększyć czcionki ( Courier 9pt )
Moja prywatna opinia: poza bardzo niedopracowanym oknem kodu, cała aplikacja jest świetnie zrobiona. Bardzo polecam.

Brak komentarzy:

Prześlij komentarz