Červená (programovací jazyk) - Red (programming language)

Červené
Červené logo (stylizovaná Hanojská věž)
Paradigma imperativní , funkční , symbolické
Navrhl Nenad Rakočević
Vývojář Nenad Rakočević
Poprvé se objevil 2011
Stabilní uvolnění
0,6,4 ( Alfa ) / 7. prosince 2018
OS Linux , Windows , OS X , slabika
Licence upravené BSD a Boost
Rozšíření názvu souboru .red, .reds
webová stránka www .red-lang .org Upravte to na Wikidata
Ovlivněn
Rebol , Scala , Lua

Red je programovací jazyk, který má překonat omezení programovacího jazyka Rebol . Red představil v roce 2011 Nenad Rakočević a je nezbytným i funkčním programovacím jazykem. Jeho syntaxe a obecné použití se překrývá s interpretovaným jazykem Rebol.

Možnosti implementace Red zamýšlejí vytvořit programovací jazyk s plným zásobníkem : Red lze použít pro extrémně vysoké programování ( DSL a GUI ) i pro programování na nízké úrovni ( operační systémy a ovladače zařízení ). Klíčem k přístupu je, že jazyk má dvě části: Red/System a Red .

  • Red/System je podobný C, ale zabalený do lexikální struktury Rebol - například by se psalo místo .if x > y [print "Hello"]if (x > y) {printf("Hello\n");}
  • Červená je homoikonický jazyk schopný metaprogramování se sémantikou podobnou Rebolu. Redova runtime knihovna je napsána v Red/System a používá hybridní přístup: kompiluje to, co může staticky odvodit, a jinak používá integrovaný tlumočník . Plán projektu obsahuje kompilátor just-in-time pro případy mezi nimi, ale toto ještě nebylo implementováno.

Red se snaží zůstat nezávislý na jakémkoli jiném řetězci nástrojů ; generuje vlastní kód. Je tedy možné křížově kompilovat červené programy z jakékoli platformy, kterou podporuje, na jakoukoli jinou, pomocí přepínače příkazového řádku. Red i Red/System jsou distribuovány jako open-source software pod upravenou licencí BSD . Runtime knihovna je distribuována pod tolerantnější licencí Boost Software License .

Od verze 0.6.4 Red obsahuje popelář „Simple GC“.

Schéma architektury červeného jazyka

Úvod

Red představil v Nizozemsku v únoru 2011 na konferenci Rebol & Boron její autor Nenad Rakočević. V září 2011 byl programovací jazyk Red představen většímu publiku během Dne svobody softwaru 2011. Rakočević je dlouholetý vývojář společnosti Rebol známý jako tvůrce serveru Cheyenne HTTP .

Funkce

Redova syntaxe a sémantika jsou velmi blízké syntaxi a sémantice Rebola . Stejně jako Rebol silně podporuje metaprogramování a jazyky specifické pro doménu ( DSL ), a proto je vysoce účinným nástrojem pro dialektování (vytváření vestavěných DSL). Red obsahuje dialekt nazvaný Red/System, jazyk na úrovni C, který poskytuje možnosti programování systému. Red je snadno integrovatelný s jinými nástroji a jazyky jako DLL (libRed) a velmi lehký (kolem 1 MB). Je také schopen křížové kompilace na různé platformy (viz část Cross Compilation níže) a vytváří balíčky pro platformy, které je vyžadují (např. .APK v systému Android). Red také obsahuje plně reaktivní multiplatformní GUI systém založený na základním reaktivním enginu toku dat, dialekt 2D kreslení srovnatelný s SVG, podporu makra při kompilaci a běhu a více než 40 standardních datových typů.

Cíle

Následuje seznam Red's Goals, jak byl představen v Den svobody softwaru 2011:

  • Jednoduchost („IDE by nemělo být nutné k psaní kódu.“)
  • Kompaktnost („Vysoká expresivita maximalizuje produktivitu.“)
  • Rychlost („Pokud je příliš pomalá, nemůže být dostatečně obecná.“)
  • Buďte „zelení“ a mějte malou stopu („Protože zdroje nejsou neomezené.“)
  • Všudypřítomnost („Šíří se všude.“)
  • Přenositelnost, zápis jednou spuštěný všude („To se od programovacího jazyka nejméně očekává.“)
  • Flexibilita („Ne nejlepší, ale vhodná pro jakýkoli úkol!“)

Rozvoj

Redův vývoj se plánuje provést ve dvou fázích:

  1. Počáteční fáze: kompilátory Red and Red/System napsané v Rebol 2
  2. Fáze bootstrapu : Překladače Red and Red/System doplněné kompilátorem Red JIT, vše napsáno červeně

Křížová kompilace

Red aktuálně podporuje následující cíle křížové kompilace:

(Poznámka: Tento seznam se bude časem zvyšovat, a proto by měl být považován za neúplný.)

Ahoj světe!

Red [Title: "Simple hello world script"]
print "Hello World!"

Faktoriální příklad

DŮLEŽITÉ: Tyto jsou zamýšleny jako příklady syntaxe. Dokud nebude mít Red 64bitovou podporu, přeteče příklad celého čísla 32bitové celé číslo velmi rychle. Změna na „float!“ Půjde dále, ale tyto mají pouze ukázat syntaxi jazyka.

Následuje faktoriální příklad v Red:

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

Následuje stejný faktoriální příklad v Red/System (v tomto velmi jednoduchém případě je zdrojový kód velmi podobný Redově verzi):

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

Viz také

Reference

externí odkazy