REBOL

pwr-reb-tech

REBOL – etymologia nazwy to Relative Expression-Based Object Language.
Jest marginalizowany jako „jeszcze jeden język skryptowy”. Czy słusznie?
Dlaczego wogóle zajmuję się nim na stronie amigowej?

Jak doszło do powstania języka REBOL

Zapewne części czytelników znany jest fakt, że REBOL został stworzony przez Carla Sassenratha. Postać słynna głównie (i chyba jedynie) ze stworzenia kernela systemu operacyjnego Amigi. Niestety niewielu jest w stanie pochylić się nad zagadnieniem i zastanowić po co Sassenrath stworzył nowy język. Gdyby to był tylko język skryptowy byłoby to „słabe” na człowieka tego formatu.
Żeby zrozumieć „po co” trzeba cofnąć się do przeszłości, do lat schyłku Amigi.

Pisałem kiedyś o czasach Amigi pod wodzą Billa McEwena. Była wtedy mowa o AmigaDE. Wspominałem o TAO Group, o nowym języku SHEEP. To wszystko są elementy tej samej układanki. Tej samej w której jest „nasz” REBOL.
AmigaDE to cyfrowe środowisko, współpraca wielu urządzeń, idea programów pisanych pod wirtualny procesor, uniwersalnych dla każdego sprzętu.
TAO Group – fachowcy od systemów wbudowanych, firma brytyjska, działająca od 1992 roku, rozpoznawalna na rynku japońskim. To co jest związane z naszym tematem – ElateOS czyli kernel, będący rdzeniem systemu czasu rzeczywistego (tzw. RTOS) oraz intent® czyli uniwersalna platforma multimedialna oparta na autorskiej, certyfikowanej przez Suna, wirtualnej maszynie Javy. Miało to być podstawą sukcesu nowej Amigi, w oparciu o urządzenia przenośne.
SHEEP to miał być następca AREXX-a w systemie.
I do tego REBOL, jako język międzyplatformowy, bardziej nadający się do przedstawionych koncepcji niż SHEEP.

Jak to wszystko zagrało? Niestety pechowo, właściwie do niczego nie doszło.
Wouter van Oortmerssen porzucił SHEEP (w lutym 2002 r. przeszedł z Amiga Inc. do CryTeka).
TAO Group po tym jak Amiga Inc. przeobraziło się w Amino szukał innych partnerów biznesowych (m.in. robili systemy dla PDA firm Motorola i Kyocera).
Został Carl Sassenrath i REBOL.

Mamy tło, czas przybliżyć dokonania Carla. Oprócz Execa dla systemu Amigi stworzył komputer Commodore CDTV i oprogramował go („przy okazji” stworzył też format filmu CDXL).
Językami oprogramowania interesował się od lat 80-tych, REBOL dojrzewał prawie 20 lat. Jest to język przemyślany pod kątem koncepcji….systemu bez systemu.
Może się w głowach dziś nam nie mieścić, ale Carl ma podejście do komputerów takie jak twórcy Amigi. Wizjonerskie. Ma sentyment do swoich rzeczy, ale nie ma go przy tworzeniu rzeczy nowych. Liczy się innowacyjność i nowoczesność.

Carl zadbał o to by REBOL był dostępny na prawie wszystkie platformy i procesory. W archiwaliach dokopałem się do wersji dla TAO Group, i innych egotycznych platform np. SUN Sparc, IRIX na „silikonach” (SGI) czy system BeOS. Oczywiście dziś niewielka część jest rozwijana ale o tym dalej.
Nie było to „odgapienie” Javy jak zdawałoby się (REBOL powstał niedługo po niej – w 1997). Zresztą te języki są niepodobne. Jedynie są dwie analogie – programy określane są nazwą „reblet” i jest to analogia do „applet” w Javie. I druga to idea zadziałania na każdym urządzeniu.

Czym jest REBOL

W założeniach język jest prosty. Idea to „proste rzeczy robić w prosty sposób”. Składnia jest podobna do wyrażeń z języka angielskiego, ale nie jest to rozwlekłe jak zapomniany COBOL. Jest to język interpretowany (jak BASIC). Nie ma zmiennych.
REBOL służy wymianie danych i współpracy aplikacji działających w różnych środowiskach i korzystających z różnych systemów operacyjnych. Przeznaczenie REBOL-a to głównie obliczenia rozproszone (z wykorzystaniem sieci), wszelkie aplikacje działające z użyciem internetu, ale także różne specjalistyczne oprogramowanie gdzie liczy się zwarty i szybki kod.

Carl w wywiadach chętnie opowiadał o swojej wizji komputerów, o „Internet X”. Naturalną koleją rzeczy było powstanie IOS (Internet Operating System) w 2001 r. oraz AltMe (Alternative Messaging Environment) w 2002 r.. Oba te rozwiązania były oparte o REBOL i służyły komunikacji grupowej.

deskdbIOS to był taki internetowy system operacyjny oparty o REBOL, ale przeznaczony dla firm. Powyżej REBOL/IOS uruchomiony pod linuksem (źródło: LinuxFocus, marzec 2002 r.).

Poniżej narzędzia dla użytkownika IOS.
deskutil

desk Największy program w zestawie to klient czatu grupowego Messenger – ma prawie 15 KB. Wszystkie programy w pokazywanym IOS mają łącznie 610 KB. Jak to ma się do dzisiejszego „bloatware”?

Kolejne było wypuszczenie wtyczki do przeglądarek umożliwiającej korzystanie z REBOL-a (2004 r.) bez konieczności instalacji „środowiska” czy interpretera. Choćby nie wiem jak byłoby to małe – wtyczka jest rozwiązaniem łatwiej akceptowalnym przez użytkowników, wygodniejszym, a więc bardziej sprzyjającym popularyzacji (niestety „na dziś” nie ma aktualnej wtyczki do współczesnych przeglądarek).

I tu dochodzimy do ciekawostki: kompletne środowisko, zawierające GUI, waży mniej niż 1 MB. Mistrzostwo świata. Są programy które zajmują tylko kilka linijek kodu.
Myślę że najlepszą zachętą będzie zajrzenie do REBOL/View Demo Gallery

REBOL miał zasadniczo dwie wersje: /View (graficzna) i /Core (konsola). Obie były i są darmowe. Płatne było SDK oraz wersja /Command. Ta ostatnia dawała dostęp do zewnętrznych bibliotek (DLL), wywołanie poleceń powłoki, uruchamianie zewnętrznych aplikacji i dostępu do baz danych poprzez ODBC. I kosztowała niemało – 349 $.

Myślę że ideę języka najlepiej określi sam autor:

„W ramach przykładowego porównania, język C posiada 5 prymitywnych typów danych (liczba całkowita, zmiennoprzecinkowa, znak, itd.). REBOL 3 posiada ich 58. Ten element sprawia, że REBOL pozwala nadać wyrażeniom całkiem inny wymiar. A wyrażenia, to właśnie serce języka programowania.”

A powody dlaczego REBOL nie stał się popularny? Myślę że brakło szerszego spojrzenia niż tylko „skrypt CGI”, no i masowości na sprzęcie. Sassenrath wypowiadał się tak:

„Trzeba mieć na uwadze, że za sukcesem języka programowania nie stoją tylko pieniądze. Java pochłonęła miliardy dolarów, aby być tym, czym jest teraz, a języki typu Ruby nie potrzebowały ani centa!
Sukces napędza stałe przyciąganie nowych deweloperów i użytkowników. Aby tak się stało, język programowania nie może zostać pozostawiony samemu sobie. Musi być częścią jakiegoś systemu. Dla przykładu, C był językiem dla Unixa, Perl dla serwerów sieciowych, PHP dla „server-side scripting” (język skryptowy służący do tworzenia programów oraz interpreter wykonujący je po stronie serwera – przyp. tłum.). Przykłady można mnożyć. To, co czyni język popularnym są jego ostateczne zastosowania.”

Sytuacja obecna

Co stało się z REBOL-em?
Żyje. Oficjalna stabilna wersja to 2.7.8.x. (są różnice w numeracji, najnowsza to 2.7.8.3.1 dla Windows). Sassenrath odpuścił temat w 2011 r. Zajął się nowym projektem, w okolicach 2013 r. przepadł całkowicie. To nie znaczy że porzucił REBOL. Odbyło się to w ten sposób, że w 2012 r. powstał REBOL 3 który jest projektem otwartym opierającym się na licencji Apache 2.0. Bazuje on na wersji 3 alpha z 2008 roku.
REBOL 3 nie jest całkowicie ukończony, jest żywy, choć rozwijana jest tylko wersja /Core, i w sumie dawno nie było aktualizacji. Być może powodem jest powstanie odgałęzień Red i boron. Twórca zastrzegł sobie prawo do „rdzenia” by język nie rozwijał się w dowolny sposób, reszta jest otwarta.

A co robi Carl?
Mieszka w Ukiah (6 miejsce w USA na liście najlepszych miejsc do życia) w Kalifornii, uprawia winorośle Cabernet Sauvignon i Merlot, interesuje się krótkofalarstwem i elektrodynamiką kwantową. A zawodowo – prowadzi firmę Roku produkującą urządzonka do strumieniowania wideo.

carl-sassenrath-roku-2013

Amigowych „gratów” z czasów pracy w Amiga Commodore sukcesywnie pozbył się (ogłaszał się z tym na swoim Twitterze kilkukrotnie – potrzebował po prostu przestrzeni). Ale pojawił się na obchodach 30 lecia Amigi.
W styczniu tego roku wypuścił nową wersję REBOL-a na platformę ARMv7. Przy okazji przyznał się do używania dwóch urządzonek na tych procesorach, Odroid XU3 i Odroid C1.

Jak uczyć się języka?

Przede wszystkim jest bardzo obszerna i łatwo dostępna dokumentacja. Mimo niewidoczności w głównym nurcie są książki, strony z zasobami, materiały wideo i fora.
Najpierw trzeba pobrać i zainstalować środowisko. Potem wklejać najprostszy kod i obserwować rezultat. Sprawdzać znaczenie użytych poleceń. Zastanawiać się nad tym co jak działa. I po przerobieniu wszystkich przykładów – zacząć samodzielnie coś pisać.

rebol_windowsPowyżej zrzut spod Windows. Widoczny saper to 14 KB. Jest dołączone wiele przykładów. Część nie będzie działać (nie ma oryginałów linkowanych na serwerze) ale to co jest wystarczy aby się zorientować.

Najlepiej wejść w folder Public, potem Library, Scripts i kolejny A-Z. Tam są skrypty ułożone alfabetycznie. Prawym przyciskiem myszy klik daje właściwości. Przykładowo niżej właściwości dla effect-lab.r (pliki REBOL-a mają rozszerzenie *.r) czyli programiku Face Effect Lab

rebol_info

Klik w Edit daje podgląd jak to jest napisane i możliwość edycji

rebol_edit

Obrazek poniżej to rzeczony skrypt do prostej manipulacji zdjęciem – widoczny przykładowy uzyskany efekt, a właściwie kilka – widać użyte kolejno (są wciśnięte przyciski): Image, Colorize, Gradcol, Contrast, Color, Oval i Multiply.

rebol_effectlabTen program zajmuje tylko 5 kilobajtów!

REBOL i Amiga

Dla Amigi ostatnia wersja to archaiczna REBOL/View 1.2 i REBOL/Core 2.5.
Na szczęście (wrzesień 2010) ukazała się wersja R3 A107. Ostatnia wersja dla Amigi z gałęzi 3 to 2.100.111.1.3 (marzec 2011 r.). Można ją pobrać tam gdzie inne wersje REBOL-a 3 – REBOL 3 Downloads. Posiada niewielkie błędy.
Być może z tego powodu Brian Deneen (szef klubu amigowców w Sacramento, U.S.A.) promuje AmiREBOL 1.2 jako ostatnią wersję dla Amigi. Powołał firemkę Infocessories gdzie można go zakupić wysyłkowo na CD.
Wersja ta była testowana na AmigaOS 3.x i 4.x, także na komputerze AmigaOne X1000.
Poniżej prezentacja z AmiWest 2013. Trochę nudzi, zamieszczam ponieważ odbyła się na komputerze SAM 440ep.

Film jest w HD i można go pobrać do oglądania, ale moim zdaniem są lepsze materiały do nauki. W każdym razie jest namacalny dowód że tego da się używać nawet na słabszych konfiguracjach.

Czy jest sens zajmować się tym?

Zależy jakie wyznaczymy sobie cele i co będzie kryterium użyteczności. Samo amigowanie przecież jest dziwactwem i uwstecznieniem w ramach informatyki. Skoro użyteczny jest nierozwijany od 1992 roku AREXX to i kilkanaście lat młodszy REBOL powinien.

Intencją moją było pokazanie dosyć zapomnianego tematu, i chciałem raczej zachęcić niż zniechęcić. Myślę że nawet z powodu osoby Carla Sassenratha warto rzucić na to okiem.

Na zakończenie kilka przykładów które wydały mi się interesujące

TextureLab czyli generator tekstur
rebol_texturetexture-lab.r (26 KB)

A to gra którą pamiętam z czasopisma „PROBLEMY” w odległym PRL. „Gra w życie” oparta na pomyśle Johna Conwaya. Dziś już nikt nie ma czasu na takie czasochłonne i bezsensowne zabawy, młodsze pokolenie z pewnością tego nie zrozumie.
rebol_lifegame-of-life-variation.r, 5 KB.

Chcąc zrobić z tego komercyjną grę trzeba dodać wiele opcji i jednocześnie spłycić ideę (koncepcja jest rozbudowana i opisana tutaj). Przykładowo można wprowadzić wybór 3 wielkości plansz jak w Saperze (albo dowolny rozmiar określając jedynie minimalną i maksymalną planszę), wygodniejszy edytor układu początkowego (wypełnianie pól na zasadzie malowania pędzlem), licznik rund i możliwość zapisu wyniku do tablicy rekordów, zapis ulubionych początkowych konfiguracji startowych.

Poniżej Pongo, przykład jak zrobić klon Arkanoida. Nie wiem czy jest więcej plansz, bo powyżej 20 pkt piłeczka przyspiesza niemiłosiernie.
rebol_pongopongo.r (9 KB)

No i na koniec nieśmiertelne fraktale. Proste generatory bez żadnych opcji.
rebol_mandelbrotmandelbrot.r (2 KB) i mandelbrot2.r (3 KB)

Linki

Programowanie

dokumentacja i samouczki
http://www.rebol.com/docs.html

polecam to – „za rączkę” i dużo obrazków
http://easiestprogramminglanguage.com/easiest_programming_language.html

tworzenie aplikacji biznesowych
http://business-programming.com/business_programming.html

AmiREBOL do kupienia w Infocessories
http://infocessories.com/pb/wp_e94f3642/wp_e94f3642.html

Programming with REBOL
http://www.codeconscious.com/rebol/
Blog, są wytłumaczone różnice między REBOL 2 i 3, jak zmienić kod na nowszą wersję i inne obowiązkowe zagadnienia

Pozostałe treści

wywiady po polsku
Carl Sassenrath (07.08.2003)
http://www.ppa.pl/publicystyka/carl-sassenrath-07.08.2003.html

Carl Sassenrath (05.05.2007) (z tego wywiadu pochodzą użyte przeze mnie cytaty)
http://www.ppa.pl/publicystyka/carl-sassenrath-tlumaczenie-05.05.2007.html

profil Rebol 3 na Twitterze prowadzony przez Sassenratha
https://twitter.com/rebol3

archiwalne dystrybucje w tym dla egzotycznych platform
http://www.rebol.com/release-archive.html

Reklamy

1 thought on “REBOL”

  1. Naprawdę bardzo interesujący tekst. Szkoda że autor Rebola nie interesuje się zbyt mocno Amigą ;). Od niedawna jestem posiadaczem AmigaOS 4.1 classic i działam sobie pod Winuae bo na nową Amigę na razie mnie nie stać, a na sensowną używkę jakoś nie trafiam. Jednak mimo wszystko pozostanę przy C. Programowanie to jest to czym chciałbym się bawić na Amidzę.
    Gdyby w ostatecznym rozrachunku zapał do Amigi zamienił się na gorycz, to zawsze pozostanie mi zdobyta wiedza w C. W sumie kiedyś sam interesowałem się odroidem w czasach gdy marzył mi się minipc na Androidzie ;). Teraz gdy to już się jakoś klaruje (np. RemixOS) to mi się znudziło i postanowiłem jednak wejść z powrotem w Amigę ;).

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s