Czerwony (język programowania) - Red (programming language)

czerwony
Czerwone Logo (stylizowana Wieża Hanoi)
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 .red-lang .org Edytuj to na Wikidata
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".

Schemat architektury Red Language

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:

  1. Faza początkowa: kompilatory Red i Red/System napisane w Rebol 2
  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:

(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]
]

Zobacz też

Bibliografia

Zewnętrzne linki