Sage policzy to za Ciebie

Z pewnym żalem obserwuję czasem wśród moich kolegów z uczelni prawie że kompletny brak umiejętności posługiwania się oprogramowaniem matematycznym. Rozumiem jednak niechęć do MATLAB-a, a nawet do samej matematyki; ze wstydem przyznaję też, że sam, po blisko czterech latach na politechnice, posiadam wciąż bardzo ubogi aparat matematyczny i z trudem udaje mi się zmusić komputer do tego, do czego został stworzony, czyli do… liczenia.

Chcąc nie chcąc, uczyłem się w ramach zajęć na ETI wykorzystywać MATLAB-a, a więc przy okazji i Octave’a, do podstawowych obliczeń, szybko jednak zapominałem pokręconą składnię tego środowiska. Brakowało mi też wsparcia dla obliczeń analitycznych i możliwości pisania programów z użyciem wygodnej składni. Potrzebowałem czegoś, co pozwoli mi zarówno policzyć analitycznie całkę, z którą nie poradzi sobie mój kalkulator (Casio Algebra FX 2.0 Plus), wykreślić przebieg dowolnej funkcji, wyznaczyć DFT sygnału, jak i szybko zaimplementować jakiś własny algorytm.

Cóż więc mi pozostawało? SciPy, Maxima, Scilab? A może coś jeszcze innego? W końcu trafiłem na środowisko Sage.

Powiedzieć, że Sage jest programem matematycznym, to nieścisłość. Określić go jako zgrabne środowisko do wszelkiego rodzaju obliczeń to nadużycie, przynajmniej jeżeli chodzi o mój pogląd na piękno. Uważam, że tutaj najbardziej pasuje określenie „duct tape”. Jeżeli jesteś matematykiem lub cenisz eleganckie rozwiązania programistyczne (albo miejsce na twardym dysku…), Sage może nie wzbudzić Twojego zachwytu. Jeżeli jednak masz w sobie ducha MacGyveryzmu, Sage może okazać się świetnym rozwiązaniem wielu problemów.

Sage jest zbiorem programów i bibliotek matematycznych, takich jak Maxima, SciPy czy GSL, powiązanych Pythonem i okraszonych interfejsem CLI i dziwacznym GUI w postaci… strony WWW. Jego niewątpliwą zaletą jest darmowość i otwartość (możemy więc poznać sposób, w jaki przeprowadzane są obliczenia).

Korzystam z Arch Linuksa, gdzie Sage dostępny jest w repozytorium AUR jako sage-mathematics i sage-mathematics-bin. Pierwszy pakiet chyba nie chciał mi się kompilować, a w każdym razie miałem z nim jakiś problem, ściągnąłem więc źródła bezpośrednio ze strony programu i próbowałem sam go zbudować. Niestety, udało mi się rozwiązać tylko część problemów i w końcu zakończyłem na błędzie po dwóch czy trzech godzinach kompilacji. Zrezygnowany sięgnąłem po binarkę. Pomijając fakt, że pobrałem bodaj 400MB, instalacja przebiegła bezboleśnie. Co prawda z dysku zniknęło mi 1,2GB, ale nie byłem zdziwiony — o ile dobrze zauważyłem, Sage zawiera w sobie wszystkie niezbędne biblioteki i programy, więc mam teraz zdublowanego Pythona, Maximę, SciPy i pewnie sporo innych rzeczy…

Przejdźmy jednak do meritum. Po uruchomieniu program może krzyczeć o odpowiednie uprawnienia do katalogu konfiguracyjnego. Poniższa komenda powinna rozwiązać problem:

# chmod +x ~/.sage/ipython

Teraz odpalamy powłokę Sage’a i możemy przystępować do liczenia. Jednak od interfejsu linii poleceń znacznie wygodniejszy jest interfejs webowy, uruchamiany poleceniem notebook(). Jego działanie polega na wystartowaniu serwera WWW i przeglądarki z aplikacją webową. Jest to rozwiązanie w takim samym stopniu dziwne, co wygodne. Zgodnie z nazwą, serwuje nam ono coś w rodzaju notesów, w których możemy zapisywać obliczenia i ich wyniki. Przyznaję, że jest to bardzo intuicyjne rozwiązanie. Niestety, jesteśmy pozbawieni jakiegoś zgrabnego IDE, pozwalającego wykorzystać możliwości Sage’a do pisania dłuższych skryptów czy programów. Może to i lepiej…

Odłóżmy jednak na bok ironiczne uwagi i przyjrzyjmy się bliżej notebookowi. Screencasty pokazują bogate możliwości tego interfejsu. W szczególności należy zwrócić uwagę na tryb interaktywny — możliwość szybkiego napisania skryptu, który na bieżąco wizualizuje parametry ustawiane suwakiem, zrobiła na mnie wrażenie. To aż się prosi o wykorzystanie w szkołach czy na uczelniach!

Wykresy są całkiem estetyczne, do wypisywania wzorów można wykorzystać składnię LaTeX-a, a możliwość zapisania stanu pracy i powrotu w każdej chwili do obliczeń jest bardzo wygodna. Brakuje mi tylko skrótu klawiaturowego, który obliczałby wyrażenie bez przenoszenia do kolejnego wiersza (a tak działa Shift + Enter). Może jednak to tylko mój brak znajomości klawiszologii.

Jako podsumowanie cisną mi się na usta słowa: „To jest naprawdę świetne narzędzie, ale…”. Owych „ale” jest, niestety, sporo: od samej idei zlepienia różnych programów matematycznych, przez duże rozmiary aplikacji po dziwny interfejs. W zamian jednak otrzymujemy ogromne możliwości, pomysłowy tryb interaktywny i w sumie niegłupią ideę notebooków. Warto zatem instalować? Szczerze mówiąc, gdyby projekt Wolfram|Alpha wystartował trochę wcześniej, to pewnie nie sięgnąłbym po Sega’a, w każdym razie nie po to, by policzyć analitycznie kilka całek czy wykreślić przebieg funkcji. Myślę jednak, że warto spróbować przygody z tą aplikacją czy to przez LiveCD, czy przez instalację binarki. W mojej krótkiej recenzji nie zabrakło złośliwości, ale nie mam zamiaru usuwać w najbliższym czasie programu z dysku — czas pokaże, czy to narzędzie rzeczywiście okaże się niezastąpione.

Komentarzy: 1 do „Sage policzy to za Ciebie“

  1. Iks Zetowski komentuje:

    Polski artykuł o Sage

Dodawanie komentarzy

XHTML: Możesz używać tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">