J (programovací jazyk)

J
Sémantika funkční
Jazyková třída programovací jazyk , funkcionální programovací jazyk , dynamický programovací jazyk , jazyk na úrovni funkcí [d] , vektorový programovací jazyk [d] , tichý programovací jazyk [d] , objektově orientovaný programovací jazyk , multiparadigmatický programovací jazyk a interpretovaný programovací jazyk
Typ provedení tlumočník
Objevil se v 1990
Autor Kenneth Iverson a Roger Hui
Vývojář Kenneth Iverson [1] a Roger High [d] [1]
Přípona souboru .ijs
Uvolnění J903 (16. prosince 2021 ) ( 2021-12-16 )
Testovací verze J904 (prosinec 2021 ) ( 2021–12 )
Typový systém dynamický
Byl ovlivněn Premier League , FP , FL
ovlivnil K
Licence GNU GPL
webová stránka jsoftware.com
Nezaměňovat s J++ nebo J# .

J  je funkční vektorový programovací jazyk , dialekt APL , který na rozdíl od prototypu nevyžaduje speciální rozložení klávesnice pro zadávání matematických symbolů (používá pouze znaky ASCII ).

Vyvinutý na počátku 90. let tvůrcem APL Kenneth a Rogerem Hui pomocí nápadů kombinatorických FP FL Johna .  Jeho hlavní rysy jsou zaměření na MIMD instrukce, funkční přístup ( proměnné jsou zcela vyloučeny, místo nich funguje přejmenovací mechanismus a kombinátory ).

Kombinuje několik myšlenek a paradigmat , přičemž jde o čistě funkcionální jazyk  – jediný způsob, jak předat hodnotu, je přijmout ji jako výsledek volání funkce a předat funkci jako parametr. Výrazně zaměřeno na zpracování dat.

Jediný vyvinutý plnohodnotný J interpret byl nesvobodný v období 1994-2010 , 6. března 2011 byly otevřeny zdrojové kódy 7. verze pod licencí GPL3 [2] .

Jazykové pojmy

K popisu prvků programování používá J gramatickou terminologii přirozeného jazyka, například výraz "sloveso" se používá ve smyslu odpovídajícím "funkci" nebo "operátoru" v C.

Shoda termínů v jazyce J s termíny v jazyce C:

J jazykový termín C termín
Sloveso Funkce nebo operátor
Podstatné jméno Objekt
spojovací sloveso Úkol
interpunkční znaménko Oddělovač
Příslovce (#define macro)
unie (#define macro)

Každé slovo ve větě J má slovní druh, ekvivalent typu v C. Je to sloveso, podstatné jméno, spojovací sloveso, příslovce, spojka nebo interpunkční znaménko. Hlavní části řeči jsou podstatné jméno, sloveso, příslovce a spojka. Všechna jména, která programátor vytvoří, a všechna jména definovaná v jazyce J (s výjimkou spojovacích sloves (=. a =:) a interpunkčních znamének) budou odkazovat na jeden z hlavních slovních druhů. Entita je objekt, jehož typ  je jednou z hlavních částí řeči. Jinými slovy, entita je příslovce, podstatné jméno, sloveso nebo spojka. Entám lze pojmenovat, ale většina z nich nemá žádné jméno a objeví se uprostřed výrazu a hned po něm zmizí, stejně jako mezivýsledky vyhodnocení výrazu v jazyce C.

Podstatné jméno obsahuje data, sloveso působí na jedno nebo dvě podstatná jména a výsledkem je podstatné jméno. Příslovce působí na sloveso nebo podstatné jméno, aby vytvořilo esenci, spojení působí na dvě podstatná jména nebo slovesa, aby vytvořilo esenci. Příslovce a spojky se nazývají modifikátory. V C si modifikátory lze představit jako makro preprocesoru, které přijímá názvy funkcí a obsahuje kód, který volá kód funkce.

Interpunkční znaménka v jazyce J se skládají ze znaků () ' a znaku konce řádku a také oddělovače NB. a pár speciálních slov jako kdyby. a případy. V jazyce J již nejsou žádné interpunkční znaky. Dokonce i postavy [ ] , . " ; { } jsou slovesa a závorky [ ] a { } jsou nezávislé a používají se samostatně, nikoli ve dvojicích.

Syntaxe

Spustitelná jednotka J je věta, která odpovídá výrazu C. Oddělovače vět J jsou znak konce řádku (LF) a řídicí slova, jako je if. Věta obsahuje všechny znaky mezi oddělovači, a protože znak LF je oddělovač, věty J se musí vejít na stejný řádek. Neexistuje způsob, jak rozdělit větu na dva řádky.

Všechny komentáře začínají na NB. a končí na konci řádku. Komentář je během realizace návrhu ignorován. V jazyce J se rozlišují následující typy lexémů :

  1. Podstatné jméno
  2. Sloveso
  3. Příslovce
  4. unie

Vztah mezi lexémy a slovními druhy ilustruje schéma na Obr. — lexémy jazyka J a slovních druhů.

Slova ve větě jazyka J jsou rozdělena na identifikátory , primitiva, čísla, interpunkci a znakové konstanty. Slova jsou oddělena mezerami a tabulátory. Postavy "." a ":" zvláštní význam.

Názvy (identifikátory) v jazyce J jsou podobné těm v jazyce C. Začínají písmenem latinky, umožňují podtržení, rozlišují velká a malá písmena a sestávají pouze z alfanumerických znaků a znaku podtržítka. Se jmény končícími na podtržítko a obsahujícími dvě podtržítka se zachází zvláštním způsobem, je to dáno konceptem národního prostředí.

Grafické znaky ASCII (například „+“) se nazývají primitiva nebo operátory.

Každý grafický symbol může tvořit nové primitivum přidáním "." nebo ":". Protože všechna primitiva jsou vyhrazená slova , v názvech "." a ":" nejsou povoleny. Primitiva není nutné oddělovat mezerami. Slovní druh každého primitiva je konstantní pro jazyk J. Příklady:

++. +: { {: {:: i. já pro. vybrat. případ. konec.

Pořadí hodnocení

V J není žádná tabulka priorit akcí. Všechna slovesa jazyka J mají stejnou přednost a správnou asociativitu . Pro určení pořadí lze použít závorky. Závorky v jazyce J jsou chápány přesně jako v matematice.

V případě, že má sloveso vlevo podstatné jméno, je hodnoceno jako dyadické. Není-li přítomno, je sloveso hodnoceno jako monadické sloveso s pouze jedním pravým operandem. Musíte znát slovní druh postavy, abyste pochopili pořadí hodnocení, například ve větě

výsledek =. jméno1 sloveso2 5

potřebujete vědět, zda se jedná o name1sloveso nebo podstatné jméno. V případě, že se jedná o sloveso, je pořadí výpočtu name1(verb2(5)), a pokud jde o podstatné jméno, verb2 je dyadické a výsledek (name1 verb2 5).

Všechny spojky a příslovce mají přednost před slovesy a jsou ponechány asociativní .

Podstatná jména se závorkami

V jazyce J je několik sousedních čísel považováno za jednorozměrné pole. V případě, že se myslí několik samostatných podstatných jmen, je třeba použít závorky.

Gramatika

J umožňuje vytvářet více syntaktických stromů pro stejný řádek kódu. To znamená, že popisy jazyka nejsou úplné, neexistuje žádná vyčerpávající specifikace. Jazyk J je kontextově citlivý a standardní prostředky pro jeho popis (například gramatika ve formě Backus-Nauer ) nejsou vhodné. Pojem abstraktního syntaktického stromu dokonce ztrácí svůj význam, protože je správný pouze v oblasti bezkontextových jazyků.

Poznámky

  1. 1 2 3 4 5 http://www.jsoftware.com/papers/APLPersonalView.htm
  2. J Source GPL Archivováno 6. března 2011.

Literatura

Odkazy