Röd (programmeringsspråk)

Röd
Red Logo (stylized Tower of Hanoi)
Paradigm imperativ , funktionell , symbolisk
Designad av Nenad Rakočević
Utvecklare Nenad Rakočević
Dök först upp 2011
Stabil frisättning
0.6.4 ( Alfa ) / 7 december 2018
OS Linux , Windows , OS X , Stavelse
Licens modifierad BSD och Boost
Filnamnstillägg .red, .reds
Hemsida www .red-lang .org Edit this at Wikidata
Influerad av
Rebol , Scala , Lua

Red är ett programmeringsspråk designat för att övervinna begränsningarna hos programmeringsspråket Rebol . Red introducerades 2011 av Nenad Rakočević och är både ett imperativt och funktionellt programmeringsspråk . Dess syntax och allmänna användning överlappar det tolkade Rebol-språket.

Implementeringsvalen för Red avser att skapa ett programmeringsspråk i full stack : Red kan användas för extremt högnivåprogrammering ( DSL och GUI ) såväl som lågnivåprogrammering ( operativsystem och enhetsdrivrutiner ). Nyckeln till tillvägagångssättet är att språket har två delar: Röd/System och Röd .

  • Red/System liknar C, men paketerat i en Rebol lexikal struktur – till exempel skulle man skriva if x > y [ print "Hej" ] istället för if ( x > y ) { printf ( "Hej \n " ); } .
  • Rött är ett homoikoniskt språk som kan metaprogrammera, med Rebol-liknande semantik. Reds runtime-bibliotek är skrivet i Red/System och använder en hybridmetod: det kompilerar vad det kan härleda statiskt och använder en inbäddad tolk annars. Projektets färdplan innehåller en just-in-time kompilator för fall däremellan, men denna har ännu inte implementerats.

Röd strävar efter att förbli oberoende av någon annan verktygskedja ; den gör sin egen kodgenerering. Det är därför möjligt att korskompilera Red-program från vilken plattform som helst som den stöder till vilken annan, via en kommandoradsväxel. Både Red och Red/System distribueras som öppen källkod under den modifierade BSD-licensen . Runtime-biblioteket distribueras under den mer tillåtande Boost Software License .

Från och med version 0.6.4 innehåller Red en sopsamlare "the Simple GC".

Röd språkarkitekturschema

Introduktion

Red introducerades i Nederländerna i februari 2011 på Rebol & Boron-konferensen av dess författare Nenad Rakočević. I september 2011 presenterades det röda programmeringsspråket för en större publik under Software Freedom Day 2011. Rakočević är en långvarig Rebol-utvecklare känd som skaparen av Cheyenne HTTP-servern .

Funktioner

Reds syntax och semantik ligger mycket nära de för Rebol . Liksom Rebol stöder den starkt metaprogrammering och domänspecifika språk ( DSL ) och är därför ett mycket effektivt verktyg för dialektering (skapa inbäddade DSL). Rött innehåller en dialekt som kallas Red/System, ett språk på C-nivå som tillhandahåller systemprogrammeringsmöjligheter. Red är lätt att integrera med andra verktyg och språk som en DLL (libRed) och mycket lätt (cirka 1 MB). Den kan också korskompilera till olika plattformar (se avsnittet Korskompilering nedan) och skapa paket för plattformar som kräver dem (t.ex. .APK på Android). Red inkluderar också ett helt reaktivt gränsöverskridande GUI-system baserat på en underliggande reaktiv dataflödesmotor, en 2D-ritdialekt jämförbar med SVG, stöd för kompileringstid och körtidsmakro, och mer än 40 standarddatatyper.

Mål

Följande är listan över Reds mål som presenterades på Software Freedom Day 2011:

  • Enkelhet ("En IDE bör inte vara nödvändig för att skriva kod.")
  • Kompakthet ("att vara mycket uttrycksfull maximerar produktiviteten.")
  • Hastighet ("Om det är för långsamt kan det inte vara tillräckligt allmänt ändamål.")
  • Var "grön", ha ett litet fotavtryck ("För att resurserna inte är obegränsade.")
  • Ubiquity ("spridning överallt.")
  • Portabilitet, Skriv en gång körs överallt ("Det är det minsta förväntade av ett programmeringsspråk.")
  • Flexibilitet ("Inte bäst men passar bra för alla uppgifter!")

Utveckling

Reds utveckling är planerad att ske i två faser:

  1. Inledande fas: Red och Red/System kompilatorer skrivna i Rebol 2
  2. Bootstrap- fas: Red och Red/System-kompilatorer kompletterade med en Red JIT-kompilator, alla skrivna i rött

Korssammanställning

Red stöder för närvarande följande korskompileringsmål:

(Obs: Denna lista kommer att öka med tiden och bör därför betraktas som ofullständig.)

Hej världen!

 
  Röd [  Titel:  "Enkelt hej världen script"  ]  print  "Hello World!" 

Faktoriellt exempel

VIKTIGT: Dessa är avsedda som syntaxexempel. Tills Red har 64-bitarsstöd kommer heltalsexemplet att svämma över ett 32-bitars heltal mycket snabbt. Att ändra det till `float!` kommer att gå längre, men dessa är bara för att visa syntaxen för språket.

Följande är ett faktorexempel i rött:

   

  
	   

	   0      
 Röd [  Titel:  "Ett fakultativt skript"  ]  ; Obs! Titeln är valfri.   faktoriell:  func  [  x  [  heltal!  ]  ; Att ange typen av ett argument i rött är valfritt   ][  antingen  x  =  [  1  ][  x  *  faktoriell  x  -  1  ]  ] 

Följande är samma faktorexempel i Red/System (i detta mycket enkla fall är källkoden väldigt lik Reds version):

 

  
	                          
	                    

	   0      
 Röd/System [  Titel:  "Ett faktoriellt skript"  ]  faktoriellt:  func  [  x  [  heltal!  ]  ; Detta är obligatoriskt i Röd/Systemretur   :  [  heltal!  ]  ; Detta är obligatoriskt i Röd/System   ][  antingen  x  =  [  1  ][  x  *  faktoriell  x  -  1  ]  ] 

Se även

externa länkar