J (limbaj de programare)

J
Semantică funcţional
Clasa de limba limbaj de programare , limbaj de programare funcțional , limbaj de programare dinamic , limbaj la nivel de funcție [ d] , limbaj de programare vectorială [d] , limbaj de programare tacit [d] , limbaj de programare orientat pe obiecte , limbaj de programare multi -paradigma și limbaj de programare interpretat
Tipul de execuție interpret
Aparut in 1990
Autor Kenneth Iverson și Roger Hui
Dezvoltator Kenneth Iverson [1] și Roger High [d] [1]
Extensie de fișier .ijs
Eliberare J903 (16 decembrie 2021 ) ( 16.12.2021 )
Versiune de testare J904 (decembrie 2021 ) ( 2021-12 )
Tip sistem dinamic
A fost influențat Premier League , FP , FL
influențat K
Licență GNU GPL
Site-ul web jsoftware.com
A nu se confunda cu J++ sau J# .

J este un limbaj de programare  vectorială funcțional , un dialect al APL , care, spre deosebire de prototip, nu necesită un aspect special de tastatură pentru introducerea simbolurilor matematice (folosește doar caractere ASCII ).

Dezvoltat la începutul anilor 1990 de către creatorul APL Kenneth și Roger Hui folosind idei limbajele combinatorii FP FLJohn .  Principalele sale caracteristici sunt concentrarea pe instrucțiunile MIMD , o abordare funcțională ( variabilele sunt excluse cu totul, în loc de ele funcționează mecanismul de redenumire și combinatorii ).

Combină mai multe idei și paradigme , fiind în același timp un limbaj pur funcțional  - singurele modalități de a transmite o valoare este de a o primi ca rezultat al unui apel de funcție și de a o transmite funcției ca parametru. Axat semnificativ pe prelucrarea datelor.

Singurul interpret J cu drepturi depline dezvoltat a fost non -gratuit în perioada 1994-2010 , pe 6 martie 2011, codurile sursă ale versiunii a 7-a erau deschise sub licența GPL3 [2] .

Concepte de limbaj

Pentru a descrie elementele de programare, J folosește terminologia gramaticală în limbaj natural, de exemplu, termenul „verb” este folosit în sensul corespunzător „funcției” sau „operatorului” în C.

Corespondența termenilor din limbajul J cu termenii din limbajul C:

Termenul de limbaj J termenul C
Verb Funcție sau operator
Substantiv Un obiect
verb de legatura Misiune
semn de punctuație Separator
Adverb (#define macro)
Uniune (#define macro)

Fiecare cuvânt dintr-o propoziție J are o parte de vorbire, echivalentul unui tip în C. Este un verb, substantiv, verb de legătură, adverb, conjuncție sau semn de punctuație. Părțile principale ale vorbirii sunt substantivul, verbul, adverbul și conjuncția. Toate numele pe care programatorul le va crea și toate numele definite în limbajul J (cu excepția verbelor de legătură (=. și =:) și a semnelor de punctuație) se vor referi la una dintre părțile principale ale vorbirii. O  entitate este un obiect al cărui tip este una dintre părțile principale ale vorbirii. Cu alte cuvinte, o entitate este un adverb, un substantiv, un verb sau o conjuncție. Entităților li se poate da un nume, dar cele mai multe dintre ele nu au nume și apar în mijlocul unei expresii și dispar imediat după, la fel ca rezultatele intermediare ale evaluării unei expresii C.

Substantivul conține date, verbul acționează asupra unuia sau a două substantive pentru a produce un substantiv ca rezultat. Un adverb operează pe un verb sau un substantiv pentru a produce o esență, o conjuncție operează pe două substantive sau verbe pentru a produce o esență. Adverbele și conjuncțiile se numesc modificatori. În C, modificatorii pot fi gândiți ca o macrocomandă de preprocesor care acceptă numele funcțiilor și conține cod care apelează codul funcției.

Semnele de punctuație în limbajul J constau din caracterele () ' și caracterul de final de linie, precum și din delimitătorul NB. și câteva cuvinte speciale de genul dacă. si cazuri. Nu mai există semne de punctuație în limbajul J. Chiar și personajele [ ] , . „ ; { } sunt verbe, iar parantezele [ ] și { } sunt independente și sunt folosite individual, nu în perechi.

Sintaxă

Unitatea executabilă a lui J este o propoziție, care corespunde unei expresii C. Delimitatorii de propoziție J sunt caracterul de final de linie (LF) și cuvintele de control, cum ar fi if. Propoziția include toate caracterele dintre separatori și, deoarece caracterul LF este separatorul, propozițiile J trebuie să se potrivească pe aceeași linie. Nu există nicio modalitate de a împărți o propoziție în două rânduri.

Toate comentariile încep cu NB. și se termină la capătul liniei. Comentariul este ignorat în timpul executării propunerii. În limbajul J se disting următoarele tipuri de lexeme :

  1. Substantiv
  2. Verb
  3. Adverb
  4. Uniune

Relația dintre lexeme și părțile de vorbire este ilustrată de diagrama din fig. — lexeme ale limbajului J și părți de vorbire.

Cuvintele dintr-o propoziție în limba J sunt împărțite în identificatori , primitive, numere, semne de punctuație și constante de caractere. Cuvintele sunt separate prin spații și file. Personajele "." și „:” semnificație specială.

Numele (identificatorii) în limbajul J sunt similare cu cele din limbajul C. Ele încep cu o literă latină, permit caractere de subliniere, sunt sensibile la majuscule și sunt compuse numai din caractere alfanumerice și caractere de subliniere. Numele care se termină cu caractere de subliniere și care conțin două caractere de subliniere sunt tratate într-un mod special, acest lucru se datorează conceptului de local.

Caracterele grafice ASCII (cum ar fi „+”) sunt numite primitive sau operatori.

Fiecare simbol grafic poate forma o nouă primitivă prin adăugarea „.” sau „:”. Deoarece toate primitivele sunt cuvinte rezervate , în numele "." și „:” nu sunt permise. Primitivele nu trebuie separate prin spații. Partea de vorbire a fiecărei primitive este constantă pentru limbajul J. Exemple:

++. +: { {: {:: i. eu:pentru. Selectați. caz. Sfârşit.

Ordinea evaluării

Nu există un tabel de prioritate a acțiunii în J. Toate verbele din limba J au aceeași precedență și asociativitate dreaptă . Parantezele pot fi folosite pentru a determina ordinea. Parantezele în limbajul J sunt înțelese exact așa cum sunt în matematică.

În cazul în care verbul din stânga are un substantiv, acesta este evaluat ca diadic. Dacă nu este prezent, verbul este evaluat ca un verb monadic cu un singur operand drept. Trebuie să cunoașteți partea de vorbire a unui personaj pentru a înțelege ordinea evaluării, de exemplu într-o propoziție

rezultat=. nume1 verb2 5

trebuie să știi dacă este un name1verb sau un substantiv. În cazul în care este un verb, ordinea calculului este name1(verb2(5)), iar dacă este un substantiv, verb2 este diadic și rezultatul (name1 verb2 5).

Toate conjuncțiile și adverbele au prioritate față de verbe și sunt lăsate asociative .

Substantive cu paranteze

În limbajul J, mai multe numere adiacente sunt tratate ca o matrice unidimensională. În cazul în care se înțeleg mai multe substantive separate, trebuie folosite paranteze.

Gramatică

J permite construirea mai multor arbori de sintaxă pentru aceeași linie de cod. Adică descrierile limbajului nu sunt complete, nu există o specificație exhaustivă. Limbajul J este sensibil la context , iar mijloacele standard pentru a-l descrie (de exemplu, o gramatică în forma Backus-Nauer ) nu sunt potrivite. Conceptul de arbore de sintaxă abstractă își pierde chiar sensul, deoarece este corect doar în domeniul limbajelor fără context.

Note

  1. 1 2 3 4 5 http://www.jsoftware.com/papers/APLPersonalView.htm
  2. J Source GPL Arhivat 6 martie 2011.

Literatură

Link -uri