J (programmeringssprog)

J
Semantik funktionelle
Sprog klasse programmeringssprog , funktionelt programmeringssprog , dynamisk programmeringssprog , funktionsniveausprog [d] , vektorprogrammeringssprog [d] , stiltiende programmeringssprog [d] , objektorienteret programmeringssprog , multi-paradigme programmeringssprog og fortolket programmeringssprog
Udførelsestype tolk
Dukkede op i 1990
Forfatter Kenneth Iverson og Roger Hui
Udvikler Kenneth Iverson [1] og Roger High [d] [1]
Filtypenavn _ .ijs
Frigøre J903 (16. december 2021 ) ( 16-12-2021 )
Test version J904 (december 2021 ) ( 2021-12 )
Type system dynamisk
Blev påvirket Premier League , FP , FL
påvirket K
Licens GNU GPL
Internet side jsoftware.com
Ikke at forveksle med J++ eller J# .

J er et funktionelt  vektorprogrammeringssprog , en dialekt af APL , som i modsætning til prototypen ikke kræver et specielt tastaturlayout for at indtaste matematiske symboler (det bruger kun ASCII-tegn ).

Udviklet i begyndelsen af ​​1990'erne af APL-skaberen Kenneth og Roger Hui ved hjælp af ideer John FP FL kombinatoriske .  Dens hovedtræk er fokus på MIMD- instruktioner, en funktionel tilgang ( variabler er helt udelukket, i stedet for dem fungerer omdøbningsmekanismen og kombinatorerne ).

Det kombinerer flere ideer og paradigmer , mens det er et rent funktionelt sprog  - den eneste måde at videregive en værdi på er at modtage den som et resultat af et funktionskald og videregive den til funktionen som en parameter. Væsentligt fokuseret på databehandling.

Den eneste udviklede fuldgyldige J-tolk var ikke- fri i perioden 1994-2010 , den 6. marts 2011 var kildekoderne til den 7. version åbne under GPL3-licensen [2] .

Sprogbegreber

For at beskrive elementer af programmering bruger J naturligt sprogs grammatikterminologi, for eksempel bruges udtrykket "verbum" i den betydning, der svarer til "funktion" eller "operator" i C.

Korrespondance mellem J-sprogsbegreber og C-sprogsbegreber:

J sprogudtryk C udtryk
Udsagnsord Funktion eller operatør
Navneord Et objekt
forbinder verbum Opgave
punktum Separator
Biord (#define makro)
Union (#define makro)

Hvert ord i en J-sætning har en orddel, svarende til en type i C. Det er et udsagnsord, navneord, forbindende verbum, adverbium, konjunktion eller tegnsætningstegn. De vigtigste dele af talen er navneord, verbum, adverb og konjunktion. Alle navne, som programmøren vil oprette, og alle navne, der er defineret i J-sproget (med undtagelse af at forbinde verber (=. og =:) og tegnsætningstegn) vil referere til en af ​​de vigtigste dele af talen. En  enhed er et objekt, hvis type er en af ​​hoveddelene af tale. Med andre ord er en enhed et adverbium, et substantiv, et verbum eller en konjunktion. Entiteter kan gives et navn, men de fleste af dem har intet navn og vises midt i et udtryk og forsvinder umiddelbart efter, ligesom mellemresultaterne ved at evaluere et C-udtryk.

Navneordet indeholder data, verbet virker på et eller to substantiver for at producere et substantiv som et resultat. Et adverbium opererer på et verbum eller substantiv for at producere en essens, en konjunktion opererer på to substantiver eller verber for at producere en essens. Adverbier og konjunktioner kaldes modifikatorer. I C kan modifikatorer opfattes som en præprocessormakro, der accepterer funktionsnavne og indeholder kode, der kalder funktionskoden.

Tegnsætningstegn på J-sproget består af tegnene () ' og linjesluttegnet samt afgrænsningstegnet NB. og et par specielle ord som hvis. og sager. Der er ikke flere tegnsætningstegn i J-sproget. Selv karaktererne [ ], . " ; { } er verber, og parenteser [ ] og { } er uafhængige og bruges enkeltvis, ikke i par.

Syntaks

Den eksekverbare enhed af J er en sætning, som svarer til et C-udtryk. J sætningsafgrænsere er ende-på-linje-tegnet (LF) og kontrolord såsom if. Sætningen omfatter alle tegnene mellem skilletegnene, og da LF-tegnet er skilletegn, skal J-sætningerne passe på samme linje. Der er ingen måde at opdele en sætning i to linjer.

Alle kommentarer starter med NB. og slutter for enden af ​​linjen. Kommentaren ignoreres under udførelse af forslaget. Følgende typer leksemer skelnes i J-sproget :

  1. Navneord
  2. Udsagnsord
  3. Biord
  4. Union

Forholdet mellem leksemer og orddele er illustreret ved diagrammet i fig. — leksemer af J-sproget og orddele.

Ord i en J-sprogssætning er opdelt i identifikatorer , primitiver, tal, tegnsætning og tegnkonstanter. Ord er adskilt af mellemrum og tabulatorer. Karaktererne "." og ":" speciel betydning.

Navne (identifikatorer) på J-sproget ligner dem i sproget C. De starter med et latinsk bogstav, tillader understregninger, skelner mellem store og små bogstaver og består kun af alfanumeriske tegn og understregningstegn. Navne, der ender med en understregning og indeholder to understregninger, behandles på en særlig måde, dette skyldes begrebet lokalitet.

ASCII-grafiske tegn (såsom "+") kaldes primitiver eller operatorer.

Hvert grafisk symbol kan danne en ny primitiv ved at tilføje "." eller ":". Da alle primitiver er reserverede ord , i navnene "." og ":" er ikke tilladt. Primitiver behøver ikke at være adskilt af mellemrum. Orddelen af ​​hver primitiv er konstant for J-sproget. Eksempler:

++. +: { {: {:: i. jeg: for. Vælg. sag. ende.

Evalueringsrækkefølge

Der er ingen handlingsprioritetstabel i J. Alle J-sprogsverber har samme forrang og rigtige associativitet . Parentes kan bruges til at bestemme rækkefølgen. Parenteser i J-sproget forstås præcis, som de er i matematik.

I det tilfælde, hvor verbet til venstre har et substantiv, vurderes det som dyadisk. Hvis det ikke er til stede, vurderes verbet som et monadisk verbum med kun én højre operand. Du skal kende en karakters orddel for at forstå rækkefølgen af ​​evaluering, for eksempel i en sætning

resultat=. navn1 udsagnsord2 5

skal vide, om det er et name1udsagnsord eller et substantiv. I det tilfælde, hvor det er et verbum, er beregningsrækkefølgen name1(verb2(5)), og hvis det er et substantiv, verb2 er det dyadisk og resultatet (name1 verb2 5).

Alle konjunktioner og adverbier har forrang over verber og efterlades associative .

Navneord med parentes

I J-sproget behandles flere tilstødende tal som en endimensionel matrix. I det tilfælde, hvor der menes flere separate navneord, skal der anvendes parentes.

Grammatik

J tillader opbygning af flere syntakstræer for den samme kodelinje. Det vil sige, at beskrivelserne af sproget ikke er fuldstændige, der er ingen udtømmende specifikation. J -sproget er kontekstfølsomt , og standardmidlerne til at beskrive det (for eksempel en grammatik i Backus-Nauer-formen ) er ikke egnede. Konceptet med et abstrakt syntakstræ mister endda sin betydning, da det kun er korrekt inden for kontekstfri sprog.

Noter

  1. 1 2 3 4 5 http://www.jsoftware.com/papers/APLPersonalView.htm
  2. J Kilde GPL Arkiveret 6. marts 2011.

Litteratur

Links