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 ) |
Testiversio | J904 (joulukuu 2021 ) |
Tyyppijärjestelmä | dynaaminen |
Vaikutettu | Valioliiga , FP , FL |
vaikutti | K |
Lisenssi | GNU GPL |
Verkkosivusto | jsoftware.com |
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] .
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.
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 :
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.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 5tä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 .
J-kielessä useita vierekkäisiä lukuja käsitellään yksiulotteisena taulukkona. Siinä tapauksessa, että tarkoitetaan useaa erillistä substantiivia, tulee käyttää sulkeita.
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.
Ohjelmointikielet | |
---|---|
|