J (ohjelmointikieli)

J
Semantiikka toimiva
Kieliluokka ohjelmointikieli , toiminnallinen ohjelmointikieli , dynaaminen ohjelmointikieli , funktiotason kieli [d] , vektoriohjelmointikieli [d] , hiljainen ohjelmointikieli [d] , olioohjelmointikieli , moniparadigmaohjelmointikieli ja tulkittu ohjelmointikieli
Toteutustyyppi tulkki
Esiintyi 1990
Tekijä Kenneth Iverson ja Roger Hui
Kehittäjä Kenneth Iverson [1] ja Roger High [d] [1]
Tiedostotunniste _ .ijs
Vapauta J903 (16. joulukuuta 2021 ) ( 16.12.2021 )
Testiversio J904 (joulukuu 2021 ) ( 2021-12 )
Tyyppijärjestelmä dynaaminen
Vaikutettu Valioliiga , FP , FL
vaikutti K
Lisenssi GNU GPL
Verkkosivusto jsoftware.com
Ei pidä sekoittaa J++ :aan tai J# :aan .

J  on funktionaalinen vektoriohjelmointikieli , APL : n murre , joka toisin kuin prototyyppi ei vaadi erityistä näppäimistöasettelua matemaattisten symbolien syöttämiseen (käyttää vain ASCII-merkkejä ).

APL:n luoja Kenneth ja Roger Hui - luvun alussa käyttäen ideoita John FP- FL - kombinatorisista .  Sen pääpiirteitä ovat keskittyminen MIMD - käskyihin, toiminnallinen lähestymistapa ( muuttujat jätetään kokonaan pois, niiden sijaan toimivat uudelleennimeämismekanismi ja kombinaattorit ).

Se yhdistää useita ideoita ja paradigmoja , vaikka se on puhtaasti toiminnallinen kieli  - ainoa tapa välittää arvo on vastaanottaa se funktiokutsun tuloksena ja välittää se funktiolle parametrina. Huomattavasti keskittynyt tietojenkäsittelyyn.

Ainoa kehitetty täysimittainen J-tulkki oli ei- vapaa vuosina 1994-2010 , 6. maaliskuuta 2011 7. version lähdekoodit olivat avoinna GPL3-lisenssillä [2] .

Kielikäsitteet

Ohjelmoinnin elementtien kuvaamiseen J käyttää luonnollisen kielen kieliopin terminologiaa, esimerkiksi termiä "verbi" käytetään merkityksessä, joka vastaa C :n "funktiota" tai "operaattoria" .

J-kielen termien vastaavuus C-kielen termeihin:

J kielen termi C termi
Verbi Toiminto tai operaattori
Substantiivi Esine
linkittävä verbi Tehtävä
välimerkki Erotin
Adverbi (#define makro)
liitto (#define makro)

Jokaisella J-lauseen sanalla on puheosa, joka vastaa C:n tyyppiä. Se on verbi, substantiivi, yhdistävä verbi, adverbi, konjunktio tai välimerkki. Puheen pääosat ovat substantiivi, verbi, adverbi ja konjunktio. Kaikki ohjelmoijan luomat nimet ja kaikki J-kielellä määritellyt nimet (lukuun ottamatta verbejä (=. ja =:) ja välimerkkejä) viittaavat johonkin puheen pääosista. Entiteetti on objekti, jonka tyyppi  on yksi puheen pääosista. Toisin sanoen entiteetti on adverbi, substantiivi, verbi tai konjunktio. Entiteeteille voidaan antaa nimi, mutta useimmilla niistä ei ole nimeä ja ne näkyvät lausekkeen keskellä ja katoavat välittömästi sen jälkeen, aivan kuten C-lausekkeen arvioinnin välitulokset.

Substantiivi sisältää dataa, verbi vaikuttaa yhteen tai kahteen substantiiviin tuottaakseen tuloksena substantiivin. Adverbi toimii verbin tai substantiivin kanssa tuottaakseen olemuksen, konjunktio toimii kahden substantiivin tai verbien kanssa tuottaakseen olemuksen. Adverbeja ja konjunktioita kutsutaan muuntajiksi. C:ssä modifioijat voidaan ajatella esiprosessorimakrona, joka hyväksyy funktioiden nimet ja sisältää koodin, joka kutsuu funktiokoodin.

J-kielen välimerkit koostuvat merkeistä () ' ja rivin loppumerkistä sekä erottimesta NB. ja muutama erikoissana, kuten jos. ja tapaukset. J-kielessä ei ole enää välimerkkejä. Jopa hahmot [ ] , . " ; { } ovat verbejä, ja hakasulkeet [ ] ja { } ovat itsenäisiä ja niitä käytetään yksittäin, ei pareittain.

Syntaksi

J:n suoritettava yksikkö on lause, joka vastaa lauseketta C. J lauseen erottimet ovat rivin loppumerkki (LF) ja ohjaussanoja, kuten if. Lause sisältää kaikki erottimien välissä olevat merkit, ja koska LF-merkki on erotin, J-lauseiden tulee mahtua samalle riville. Ei ole mahdollista jakaa lausetta kahdelle riville.

Kaikki kommentit alkavat kirjaimella NB. ja päättyy rivin loppuun. Kommentti jätetään huomiotta ehdotuksen toteuttamisen aikana. J-kielessä erotetaan seuraavat lekseemityypit :

  1. Substantiivi
  2. Verbi
  3. Adverbi
  4. liitto

Lekseemien ja puheosien välistä suhdetta havainnollistaa kuvan 1 kaavio. — J-kielen lekseemit ja puheenosat.

J-kielen lauseen sanat on jaettu tunnisteiksi , primitiivisiksi, numeroiksi, välimerkeiksi ja merkkivakioksi. Sanat erotetaan välilyönneillä ja sarkaimilla. Hahmot "." ja ":" erityinen merkitys.

Nimet (tunnisteet) J-kielessä ovat samankaltaisia ​​kuin C-kielessä: Ne alkavat latinalaisella kirjaimella, sallivat alaviivat, ovat isot ja pienet kirjaimet ja sisältävät vain aakkosnumeerisia merkkejä ja alaviivaa. Alaviivaan päättäviä ja kaksi alaviivaa sisältäviä nimiä käsitellään erityisellä tavalla, mikä johtuu alue-käsitteestä.

ASCII-grafiikkamerkkejä (kuten "+") kutsutaan primitiiveiksi tai operaattoreiksi.

Jokainen graafinen symboli voi muodostaa uuden primitiivin lisäämällä "." tai ":". Koska kaikki primitiivit ovat varattuja sanoja , nimissä "." ja ":" eivät ole sallittuja. Primitiiviä ei tarvitse erottaa välilyönnillä. Jokaisen primitiivin puheosa on vakio J-kielellä. Esimerkkejä:

++. +: { {: {:: i. i:for. valitse. tapaus. loppu.

Arviointijärjestys

J:ssä ei ole toimintojen ensisijaisuustaulukkoa . Kaikilla J-kielen verbeillä on sama etusija ja oikea assosiatiivisuus . Järjestyksen määrittämiseen voidaan käyttää sulkeita. J-kielen sulut ymmärretään täsmälleen samalla tavalla kuin matematiikassa.

Jos vasemmalla olevalla verbillä on substantiivi, se arvioidaan dyadiseksi. Jos sitä ei ole, verbi arvioidaan monadiseksi verbiksi, jossa on vain yksi oikea operandi. Sinun on tiedettävä hahmon puheosa ymmärtääksesi arviointijärjestyksen esimerkiksi lauseessa

tulos =. nimi1 verbi2 5

täytyy tietää, onko se name1verbi vai substantiivi. Jos se on verbi, laskentajärjestys on name1(verb2(5)), ja jos se on substantiivi, se verb2 on dyadinen ja tulos (name1 verb2 5).

Kaikki konjunktiot ja adverbit ovat etusijalla verbeihin nähden ja jätetään assosiatiiviseksi .

Hakasulkeet sisältävät substantiivit

J-kielessä useita vierekkäisiä lukuja käsitellään yksiulotteisena taulukkona. Siinä tapauksessa, että tarkoitetaan useaa erillistä substantiivia, tulee käyttää sulkeita.

Kielioppi

J sallii useiden syntaksipuiden rakentamisen samalle koodiriville. Eli kielen kuvaukset eivät ole täydellisiä, tyhjentävää erittelyä ei ole. J -kieli on kontekstiherkkä , eivätkä sen kuvaamiseen käytettävät standardikeinot (esimerkiksi kielioppi Backus-Nauer-muodossa ) sovellu. Abstraktin syntaksipuun käsite menettää jopa merkityksensä, koska se on oikea vain yhteydettömien kielten alalla.

Muistiinpanot

  1. 1 2 3 4 5 http://www.jsoftware.com/papers/APLPersonalView.htm
  2. J Lähde GPL Arkistoitu 6. maaliskuuta 2011.

Kirjallisuus

Linkit