Na wstępie muszę zaznaczyć, że sposobów użytkowania pakietu numerycznego jest tyle, co jego użytkowników, co powoduje, że każda recenzja jest jeszcze bardziej subiektywna.
Programów, które mają robić to samo, co Octave, jest kilka. Octave wyróżnia się tym, że z jednej strony jest darmowy i otwarty, a z drugiej strony używa tego samego prostego języka programowania i tych samych komend, co Matlab (płatny, zamknięty). Z założenia, kod działający w Matlabie ma działać w Octave'ie. Założenie to jest pierwszą rzeczą, z której (według mnie), Octave'a należy rozliczać. I jak w praktyce to wygląda? Nieźle, ale do ideału daleko. Daleko, bo jest wiele obszarów funkcjonalności Matlaba, o których w Octave'ie możemy na razie pomarzyć (tj. np. grafika 3D, animacje), albo które w wolnym odpowiedniku nie działają tak samo (wygodnie) - mam tu na myśli np. grafikę 2D czy obliczenia symboliczne. Nie znaczy to jednak, że w Octave'ie nie da się sporządzić wykresu - da się, spokojnie, różnice są w szczegółach i to nie koniecznie dotyczących możliwości, a sposobu zrobienia danej rzeczy. Okno wykresu w Matlabie daje możliwość obracania, powiększania, pomniejszania itp., oraz zapisu obrazka. W Octave'ie obracać się nie da, a zapis jest tylko z linii poleceń (co znów ma oczywiście niebagatelne znaczenie przy pisaniu programów, które mają automagicznie wypluwać obrazki na dysk). Octave nie ma po prostu swojego GUI, działa w konsoli (wierszu poleceń w Windowsach), a grafikę wysyła do Gnuplota. Brak GUI jest dla niektórych wielką wadą, czego pojąć nie mogę. Dla mnie to akurat zaleta, ale jak ktoś bardzo potrzebuje, to i tak są nakładki graficzne (XOctave, QtOctave, Koctave).
Pomijając jednak bardziej zaawansowane funkcje graficzne, obliczenia symboliczne i GUI (czyli tak naprawdę sprawy z pogranicza celu istnienia takiego oprogramowania) mogę śmiało powiedzieć, że (jak dla mnie) jest dobrze.
Octave i Matlab korzystają w bardzo wielu przypadkach z dokładnie tych samych standardowych algorytmów numerycznych. Różnice mogą się pojawić jedynie na poziomie implementacji czy kompilacji, co w efekcie może np. prowadzić do różnych, ale równie poprawnych wyników numerycznych (błąd obliczeń jest takiego samego rzędu, ale np. Octave przeszacuje, a Matlab nie doszacuje).
Życiowy przykład. Student w ramach projektu testuje algorytm na swoim komputerze, w Octave'ie. W konkretnym przykładzie wychodzi mu błąd obliczeń 4,4409e-16, czyli 2*eps, gdzie eps to najmniejsza wartość, o którą dwie liczby mogą się różnić w Matlabie/Octave'ie w systemie 32-bitowym. Następnie student przynosi projekt do oceny i sprawdzający uruchamia ten sam przykład w Matlabie w pracowni i dostaje błąd -6,6613e-16, czyli -3*eps. Taka różnica, to żadna różnica.
Są ludzie, którzy narzekają na pewne konkretne braki w Octave'ie (np. w kwestii wydajności). Oczywiście, może są algorytmy, które w Octave'ie są ewidentnie gorsze (mniej wydajne, mniej dokładne, wolniej zbieżne itp), niż w Matlabie, ale ja takich sytuacji nie doświadczyłem. Nie miałem też dotąd okazji porównania Octave'a i Matlaba na tej samej maszynie i tym samym systemie. Inna sprawa, że Matlab też bezbłędny nie jest i potrafi się wywalić na prostym poleceniu.
Nie zakłada się, aby każdy kod działający w Octave'ie działał w Matlabie. Z punktu widzenia użytkownika Matlaba to źle, a z punktu widzenia użytkownika Octave'a to bardzo dobrze. Octave posiada masę drobiazgów ułatwiających życie, a nieobecnych u konkurenta. W efekcie operacja, która w Octave'ie jest realizowana jednym prostym poleceniem, w Matlabie jest czasem realizowana w trzech-pięciu liniach kodu, a nawet wymaga użycia jakiejś dodatkowej zmiennej i warunku logicznego.
Poza obliczeniami numerycznymi, Octave'a można używać jako prostego języka skryptowego wysokiego poziomu do pisania podręcznych programów. Ale o tym to już napiszę na blogu.
Ja osobiście, nawet gdybym miał na swoim komputerze zainstalowanego Matlaba, na co dzień i tak używałbym Octave'a.