J | |
---|---|
Semantik | funktionell |
Språkklass | programmeringsspråk , funktionellt programmeringsspråk , dynamiskt programmeringsspråk , funktionsnivåspråk [d] , vektorprogrammeringsspråk [d] , tyst programmeringsspråk [d] , objektorienterat programmeringsspråk , multiparadigm programmeringsspråk och tolkat programmeringsspråk |
Utförandetyp | tolk |
Framträdde i | 1990 |
Författare | Kenneth Iverson och Roger Hui |
Utvecklaren | Kenneth Iverson [1] och Roger High [d] [1] |
Filtillägg _ | .ijs |
Släpp | J903 (16 december 2021 ) |
Testversion | J904 (december 2021 ) |
Typ system | dynamisk |
Blivit påverkad | Premier League , FP , FL |
påverkas | K |
Licens | GNU GPL |
Hemsida | jsoftware.com |
J är ett funktionellt vektorprogrammeringsspråk , en dialekt av APL , som, till skillnad från prototypen, inte kräver en speciell tangentbordslayout för att mata in matematiska symboler (det använder endast ASCII-tecken ).
Utvecklad i början av 1990-talet av APL -skaparen Kenneth och Roger Hui med hjälp av idéer kombinatoriska FP FL . Dess huvudsakliga funktioner är fokus på MIMD- instruktioner, ett funktionellt tillvägagångssätt ( variabler är uteslutna helt och hållet, istället för dem fungerar byte av namn och kombinatorer ).
Det kombinerar flera idéer och paradigm samtidigt som det är ett rent funktionellt språk - det enda sättet att skicka ett värde är att ta emot det som ett resultat av ett funktionsanrop och skicka det till funktionen som en parameter. Betydligt fokuserad på databehandling.
Den enda fullfjädrade J-tolken som utvecklades var icke- fri under perioden 1994-2010 , den 6 mars 2011 var källkoderna för den 7:e versionen öppna under GPL3-licensen [2] .
För att beskriva delar av programmering använder J naturligt språk grammatikterminologi, till exempel används termen "verb" i betydelsen som motsvarar "funktion" eller "operator" i C.
Överensstämmelse mellan J-språktermer och C-språktermer:
J språkterm | C term |
---|---|
Verb | Funktion eller operatör |
Substantiv | Ett objekt |
sammankopplande verb | Uppdrag |
punkt | Separator |
Adverb | (#define makro) |
Union | (#define makro) |
Varje ord i en J-sats har en orddel, motsvarande en typ i C. Det är ett verb, substantiv, länkverb, adverb, konjunktion eller skiljetecken. Huvuddelarna i talet är substantiv, verb, adverb och konjunktion. Alla namn som programmeraren kommer att skapa och alla namn som definieras i J-språket (med undantag för länkande verb (=. och =:) och skiljetecken) kommer att referera till en av de viktigaste delarna av talet. En entitet är ett objekt vars typ är en av huvuddelarna i talet. Med andra ord är en entitet ett adverb, ett substantiv, ett verb eller en konjunktion. Entiteter kan ges ett namn, men de flesta av dem har inget namn och visas mitt i ett uttryck och försvinner omedelbart efter, precis som de mellanliggande resultaten av att utvärdera ett C-uttryck.
Substantivt innehåller data, verbet verkar på ett eller två substantiv för att producera ett substantiv som ett resultat. Ett adverb fungerar på ett verb eller substantiv för att producera en essens, en konjunktion verkar på två substantiv eller verb för att producera en essens. Adverb och konjunktioner kallas modifierare. I C kan modifierare ses som ett förprocessormakro som accepterar funktionsnamn och innehåller kod som anropar funktionskoden.
Skiljetecken på J-språket består av tecknen () ' och radsluttecknet samt avgränsaren OBS. och några speciella ord som om. och fall. Det finns inga fler skiljetecken i J-språket. Även karaktärerna [ ] , . " ; { } är verb, och parenteser [ ] och { } är oberoende och används var för sig, inte i par.
Den exekverbara enheten för J är en mening, som motsvarar ett uttryck i C. J meningsavgränsare är radens sluttecken (LF) och kontrollord som if. Meningen innehåller alla tecken mellan avgränsarna, och eftersom LF-tecknet är avgränsaren måste J-meningarna passa på samma rad. Det finns inget sätt att dela upp en mening i två rader.
Alla kommentarer börjar med NB. och slutar i slutet av raden. Kommentaren ignoreras under genomförandet av förslaget. Följande typer av lexem särskiljs i J-språket :
Förhållandet mellan lexem och orddelar illustreras av diagrammet i fig. — lexem av J-språket och orddelar.
Ord i en J-språksats är indelade i identifierare , primitiver, siffror, skiljetecken och teckenkonstanter. Ord separeras med mellanslag och tabb. Tecknen "." och ":" speciell betydelse.
Namn (identifierare) på språket J liknar de på språket C. De börjar med en latinsk bokstav, tillåter understreck, är skiftlägeskänsliga och består endast av alfanumeriska tecken och understreck. Namn som slutar på ett understreck och som innehåller två understreck behandlas på ett speciellt sätt, detta beror på begreppet locale.
ASCII-grafiska tecken (som "+") kallas primitiver eller operatorer.
Varje grafisk symbol kan bilda en ny primitiv genom att lägga till "." eller ":". Eftersom alla primitiver är reserverade ord , i namnen "." och ":" är inte tillåtna. Primitiver behöver inte separeras med mellanslag. Taldelen för varje primitiv är konstant för J-språket. Exempel:
++. +: { {: {:: i. jag: för. Välj. fall. slutet.Det finns ingen handlingsprioritetstabell i J. Alla J-språksverb har samma företräde och rätt associativitet . Parenteser kan användas för att bestämma ordningen. Parenteser i J-språket förstås precis som de är i matematik.
I det fall då verbet till vänster har ett substantiv, utvärderas det som dyadiskt. Om det inte är närvarande, utvärderas verbet som ett monadiskt verb med endast en höger operand. Du behöver känna till en karaktärs orddel för att förstå ordningsföljden för utvärdering, till exempel i en mening
resultat=. namn1 verb2 5behöver veta om det är ett name1verb eller ett substantiv. I fallet när det är ett verb är beräkningsordningen name1(verb2(5)), och om det är ett substantiv är det verb2 dyadiskt och resultatet (name1 verb2 5).
Alla konjunktioner och adverb har företräde framför verb och lämnas associativa .
I J-språket behandlas flera intilliggande tal som en endimensionell matris. I de fall då flera separata substantiv avses bör parentes användas.
J tillåter att bygga flera syntaxträd för samma kodrad. Det vill säga att beskrivningarna av språket inte är fullständiga, det finns ingen uttömmande specifikation. J-språket är kontextkänsligt , och standardmetoderna för att beskriva det (till exempel en grammatik i Backus-Nauer-formen ) är inte lämpliga. Konceptet med ett abstrakt syntaxträd förlorar till och med sin mening, eftersom det endast är korrekt inom området kontextfria språk.
Programmeringsspråk | |
---|---|
|