J | |
---|---|
Szemantika | funkcionális |
Nyelvóra | programozási nyelv , funkcionális programozási nyelv , dinamikus programozási nyelv , függvényszintű nyelv [d] , vektoros programozási nyelv [d] , hallgatólagos programozási nyelv [d] , objektumorientált programozási nyelv , többparadigmás programozási nyelv és értelmezett programozási nyelv |
A végrehajtás típusa | tolmács |
Megjelent | 1990 |
Szerző | Kenneth Iverson és Roger Hui |
Fejlesztő | Kenneth Iverson [1] és Roger High [d] [1] |
Fájlkiterjesztés _ | .ijs |
Kiadás | J903 (2021. december 16. ) |
Teszt verzió | J904 (2021. december ) |
Típusrendszer | dinamikus |
Befolyásolva | Premier League , FP , FL |
befolyásolta | K |
Engedély | GNU GPL |
Weboldal | jsoftware.com |
A J egy funkcionális vektoros programozási nyelv , az APL dialektusa , amely a prototípussal ellentétben nem igényel speciális billentyűzetkiosztást a matematikai szimbólumok beviteléhez (csak ASCII karaktereket használ ).
Az 1990- es évek elején az APL alkotója, Kenneth és Roger Huiki John FP FL kombinatorikus nyelveinek ötletei . Főbb jellemzői a MIMD utasításokra való összpontosítás, a funkcionális megközelítés ( a változók teljesen kizártak, helyettük az átnevezési mechanizmus és a kombinátorok működnek ).
Számos ötletet és paradigmát egyesít , miközben tisztán funkcionális nyelv - az érték átadásának egyetlen módja az, hogy függvényhívás eredményeként fogadjuk, és paraméterként adjuk át a függvénynek. Nagy hangsúlyt fektet az adatfeldolgozásra.
Az egyetlen kifejlesztett teljes értékű J interpreter 1994-2010 között nem volt ingyenes , 2011. március 6-án a 7. verzió forráskódjai GPL3 licenc alatt nyíltak meg [2] .
A programozás elemeinek leírására J természetes nyelvi nyelvtani terminológiát használ, például az „ige” kifejezést a „függvény” vagy „operátor” kifejezésnek megfelelő értelemben használjuk a C-ben .
J nyelvi kifejezések megfelelése C nyelvi kifejezéseknek:
J nyelvi kifejezés | C kifejezés |
---|---|
Ige | Funkció vagy operátor |
Főnév | Egy tárgy |
összekötő ige | Feladat |
írásjel | Szétválasztó |
Határozószó | (#define makró) |
Unió | (#define makró) |
A J mondat minden szavának van egy beszédrésze, amely megfelel a C-beli típusnak. Ez egy ige, főnév, összekötő ige, határozószó, kötőszó vagy írásjel. A beszéd fő részei a főnév, az ige, a határozószó és a kötőszó. A programozó által létrehozott összes név és a J nyelvben meghatározott név (kivéve az összekötő igéket (=. és =:) és az írásjeleket) a beszéd egyik fő részére fog vonatkozni. Az entitás olyan objektum, amelynek típusa a beszéd egyik fő része. Más szavakkal, az entitás egy határozószó, egy főnév, egy ige vagy egy kötőszó. Az entitások kaphatnak nevet, de legtöbbjüknek nincs neve, és a kifejezés közepén jelennek meg, és azonnal eltűnnek utána, akárcsak a C kifejezés kiértékelésének közbenső eredményei.
A főnév adatokat tartalmaz, az ige egy vagy két főnévre hat, és ennek eredményeként főnevet hoz létre. A határozószó egy igére vagy főnévre operál, hogy lényeget hozzon létre, a kötőszó pedig két főnevet vagy igét, hogy lényeget hozzon létre. A határozókat és a kötőszavakat módosítónak nevezzük. A C-ben a módosítók egy előfeldolgozó makrónak tekinthetők, amely elfogadja a függvényneveket, és olyan kódot tartalmaz, amely meghívja a függvénykódot.
Az írásjelek a J nyelvben a () ' karakterekből és a sorvégi karakterből, valamint az NB határolóból állnak. és néhány különleges szó, mint például ha. és esetek. A J nyelvben nincs több írásjel. Még a karakterek [ ] , . " ; { } igék, a zárójelek [ ] és { } pedig függetlenek, és önmagukban használatosak, nem párban.
A J végrehajtható egysége egy mondat, amely egy C kifejezésnek felel meg. A J mondathatárolók a sorvégi karakterek (LF) és a vezérlőszavak, mint például az if. A mondat az elválasztók között lévő összes karaktert tartalmazza, és mivel az LF karakter az elválasztó, a J mondatoknak ugyanabba a sorba kell illeszkedniük. Egy mondatot nem lehet két sorra osztani.
Minden megjegyzés karakterrel kezdődik NB. és vége a sor végén. Az észrevételt figyelmen kívül hagyjuk az ajánlat végrehajtása során. A következő lexématípusokat különböztetjük meg a J nyelvben :
A lexémák és a beszédrészek kapcsolatát a 2. ábra diagramja szemlélteti. — a J nyelv lexémái és szófajok.
A J nyelvű mondat szavai azonosítókra , primitívekre, számokra, írásjelekre és karakterkonstansokra vannak osztva . A szavakat szóközök és tabulátorok választják el. A karakterek "." és a ":" speciális jelentése.
A nevek (azonosítók) a J nyelvben hasonlóak a C nyelvéhez: latin betűvel kezdődnek, megengedik az aláhúzást, megkülönböztetik a kis- és nagybetűket, és csak alfanumerikus karakterekből és aláhúzásjelből állnak. Az aláhúzásjelre végződő és két aláhúzásjelet tartalmazó neveket speciálisan kezeljük, ez a területi beállításnak köszönhető.
Az ASCII grafikus karaktereket (például "+") primitíveknek vagy operátoroknak nevezzük.
Minden grafikus szimbólum új primitívet képezhet a "." vagy ":". Mivel minden primitív fenntartott szó , a "." és a ":" nem megengedett. A primitíveket nem kell szóközzel elválasztani. Minden primitív beszédrésze állandó a J nyelvben. Példák:
++. +: { {: {:: i. i:for. válassza ki. ügy. vége.A J-ben nincs műveleti prioritási táblázat . Minden J nyelv igének ugyanaz a prioritása és megfelelő asszociativitása . A sorrend meghatározásához zárójelek használhatók. A J nyelvben a zárójeleket pontosan úgy értjük, mint a matematikában.
Abban az esetben, ha a bal oldali ige főnévvel rendelkezik, akkor azt diádikusnak értékeljük. Ha nincs jelen, az igét monád igeként értékeli a rendszer, csak egy jobb operandussal. Ismernie kell egy szereplő beszédrészét, hogy megértse az értékelés sorrendjét, például egy mondatban
eredmény=. név1 ige2 5tudnia kell, hogy name1ige vagy főnév. Abban az esetben, ha ige, a számítás sorrendje name1(verb2(5)), ha pedig főnév, akkor verb2 diadikus és az eredmény (name1 verb2 5).
Minden kötőszó és határozószó elsőbbséget élvez az igékkel szemben, és asszociatív jellegűek .
A J nyelvben több szomszédos számot egydimenziós tömbként kezelünk. Abban az esetben, ha több különálló főnévről van szó, zárójelet kell használni.
A J lehetővé teszi több szintaktikai fa létrehozását ugyanahhoz a kódsorhoz. Vagyis a nyelv leírásai nem teljesek, nincs kimerítő specifikáció. A J nyelv környezetérzékeny , és a leírására szolgáló szabványos eszközök (például egy nyelvtan Backus-Nauer formában ) nem megfelelőek. Az absztrakt szintaxisfa fogalma még értelmét is veszti, hiszen csak a kontextusmentes nyelvek terén helyes.
Programozási nyelvek | |
---|---|
|