Czerwony (język programowania) - Red (programming language)
Paradygmat | imperatyw , funkcjonalny , symboliczny |
---|---|
Zaprojektowany przez | Nenad Rakočević |
Deweloper | Nenad Rakočević |
Po raz pierwszy pojawiły się | 2011 |
Wersja stabilna | 0.6.4 ( Alfa ) / 7 grudnia 2018 r. |
OS | Linux , Windows , OS X , sylaba |
Licencja | zmodyfikowane BSD i Boost |
Rozszerzenia nazw plików | .czerwony, .czerwony |
Strona internetowa |
www |
Wpływem | |
Rebol , Scala , Lua |
Czerwony to język programowania zaprojektowany w celu przezwyciężenia ograniczeń języka programowania Rebol . Red został wprowadzony w 2011 roku przez Nenada Rakočevića i jest zarówno imperatywnym, jak i funkcjonalnym językiem programowania . Jego składnia i ogólne zastosowanie pokrywają się z interpretowanym językiem Rebol.
Wybory implementacyjne Red mają na celu stworzenie języka programowania pełnego stosu : Red może być używany do programowania bardzo wysokiego poziomu ( DSL i GUI ), jak również programowania niskiego poziomu ( systemy operacyjne i sterowniki urządzeń ). Kluczem do tego podejścia jest to, że język ma dwie części: Red/System i Red .
-
Red/System jest podobny do C, ale jest spakowany w strukturę leksykalną Rebol - na przykład zamiast pisać .
if x > y [print "Hello"]
if (x > y) {printf("Hello\n");}
- Czerwony jest językiem homoikonicznym zdolnym do metaprogramowania, z semantyką podobną do Rebola. Biblioteka uruchomieniowa Reda jest napisana w Red/System i wykorzystuje podejście hybrydowe: kompiluje to, co może wywnioskować statycznie, aw przeciwnym razie używa wbudowanego interpretera . Mapa drogowa projektu zawiera kompilator just-in-time dla przypadków pomiędzy, ale nie został jeszcze wdrożony.
Red stara się pozostać niezależnym od innych narzędzi ; robi własne generowanie kodu. Dzięki temu możliwe jest krzyżowe kompilowanie programów Red z dowolnej platformy, którą obsługuje, na dowolną inną, za pomocą przełącznika wiersza poleceń. Zarówno Red, jak i Red/System są dystrybuowane jako oprogramowanie open-source na zmodyfikowanej licencji BSD . Biblioteka uruchomieniowa jest rozpowszechniana na bardziej liberalnej licencji Boost Software License .
Od wersji 0.6.4 Red zawiera odśmiecacz "Simple GC".
Wstęp
Red został wprowadzony w Holandii w lutym 2011 roku na konferencji Rebol & Boron przez jej autora Nenada Rakočevića. We wrześniu 2011 r. język programowania Red został zaprezentowany szerszej publiczności podczas Dnia Wolności Oprogramowania 2011. Rakočević jest wieloletnim programistą Rebol znanym jako twórca serwera HTTP Cheyenne .
Cechy
Składnia i semantyka Reda są bardzo zbliżone do tych z Rebol . Podobnie jak Rebol, silnie obsługuje metaprogramowanie i języki specyficzne dla domeny ( DSL ) i dlatego jest wysoce wydajnym narzędziem do dialektowania (tworzenia wbudowanych DSL). Red zawiera dialekt o nazwie Red/System, język poziomu C, który zapewnia funkcje programowania systemu. Red jest łatwy do zintegrowania z innymi narzędziami i językami jako DLL (libRed) i bardzo lekki (około 1 MB). Jest również w stanie skompilować krzyżowo na różne platformy (patrz sekcja Kompilacja krzyżowa poniżej) i tworzyć pakiety dla platform, które ich wymagają (np. .APK na Androida). Red zawiera również w pełni reaktywny wieloplatformowy system GUI oparty na reaktywnym silniku przepływu danych, dialekcie rysunkowym 2D porównywalnym do SVG, obsłudze makr w czasie kompilacji i w czasie wykonywania oraz ponad 40 standardowych typach danych.
Cele
Poniżej znajduje się lista celów Red's przedstawionych podczas Dnia Wolności Oprogramowania 2011:
- Prostota ("IDE nie powinno być konieczne do pisania kodu.")
- Kompaktowość („Wysoka ekspresja maksymalizuje produktywność”).
- Szybkość („Jeśli jest zbyt wolny, nie może być wystarczająco uniwersalny”).
- Bądź „zielony”, miej niewielki ślad („Ponieważ zasoby nie są nieograniczone”).
- Wszechobecność („Rozprzestrzeniaj się wszędzie”).
- Przenośność, Write raz uruchamiany wszędzie („To najmniej oczekiwane od języka programowania”).
- Elastyczność („Nienajlepsze, ale dobrze nadające się do każdego zadania!”)
Rozwój
Rozwój Red's planowany jest w dwóch fazach:
- Faza początkowa: kompilatory Red i Red/System napisane w Rebol 2
- Faza Bootstrap : Kompilatory Red i Red/System uzupełnione o kompilator Red JIT, wszystkie napisane w Red
Kompilacja krzyżowa
Czerwony obsługuje obecnie następujące cele kompilacji krzyżowej:
- MS-DOS : Windows, x86 , aplikacje konsolowe (i GUI)
- Windows : Windows, x86, aplikacje GUI
- Linux : Linux , x86
- Linux-ARM: Linux , ARMv5 , armel (soft-float)
- Raspberry Pi : Linux , ARMv5 , armhf (hard-float)
- FreeBSD : x86
- Darwin : Aplikacje OS X Intel, konsolowe (i GUI)
- Sylaba : sylaba OS , x86
- Android : Android, ARMv5
- Android-x86: Android, x86
(Uwaga: ta lista będzie się powiększać z czasem i dlatego należy ją uważać za niekompletną).
Witaj świecie!
Red [Title: "Simple hello world script"]
print "Hello World!"
Przykład czynnikowy
WAŻNE: Są to przykłady składni. Dopóki Red nie będzie obsługiwał 64-bitów , przykład liczby całkowitej bardzo szybko przepełni 32-bitową liczbę całkowitą. Zmiana tego na „float!” posunie się dalej, ale służą one jedynie do pokazania składni języka.
Poniżej znajduje się czynnikowy przykład w kolorze czerwonym:
Red [Title: "A factorial script"] ; Note: The title is optional.
factorial: func [
x [integer!] ; Giving the type of an argument in Red is optional
][
either x = 0 [1][x * factorial x - 1]
]
Poniżej znajduje się ten sam przykład czynnikowy w Red/System (w tym bardzo prostym przypadku kod źródłowy jest bardzo podobny do wersji Red):
Red/System [Title: "A factorial script"]
factorial: func [
x [integer!] ; This is compulsory in Red/System
return: [integer!] ; This is compulsory in Red/System
][
either x = 0 [1][x * factorial x - 1]
]