Domanda

Il panorama dei linguaggi array, sebbene affascinante, è estremamente confuso.C'è un motivo per sceglierne uno tra J o K o APL o A?Nessuna di queste opzioni sembra essere open source: esistono versioni open source?Mi piacerebbe espandere la mia mente, ma rimango confuso.

È stato utile?

Soluzione

Le differenze tra queste lingue sono relativamente sottili. APL "corretta" ha i vantaggi e gli svantaggi, della notazione simbolica originale. (Ci sono piccole modifiche che sono state apportate al set di simboli nel corso degli anni, ma sono tutte vere sufficiente per la visione originale.)

Il linguaggio A + è disponibile open source. Si discosta significativamente dalle APL "classici", ma è come loro a mantenere la maggior parte del set di caratteri di base. La mia sensazione è che non è stato mantenuto al passo con i cambiamenti tecnologici. E 'stato un precursore di K.

Lingue nella famiglia array-linguaggio che si sono allontanati dal set di caratteri APL distintivo includono J, K, e Nial. Nial usa le parole inglesi, invece di simboli, e ha un interprete open source chiamato Q'Nial. K e J si basano principalmente sui simboli, ma questi sono tratti dal set di caratteri ASCII. Le parole possono essere utilizzati al posto dei simboli in queste lingue, tuttavia, semplicemente assegnando definizioni.

La famiglia APL di linguaggi di programmazione sono stati in primo luogo proprietaria dalla comparsa iniziale di APL come prodotto IBM nel 1964. lingue matrice proprietari sembrano avere più sostegno e più rapida evoluzione delle nuove funzionalità di alternative open source in questo momento. Io non sono sicuro di come tutti i concorrenti stack contro l'un l'altro, ma Dyalog APL è stato certamente lavorando attivamente per promuovere la loro implementazione del linguaggio come la tecnologia corrente. offerte APL2000 prodotti per Unix, Linux e Windows, tra cui VisualAPL per .Net. MicroAPL Ltd offre APLX.

K è un linguaggio specializzato che non è più commercializzato da solo. Kx Systems invece di marketing database KDB + e il suo Q (query) lingua, entrambi i quali sono scritti in K. Si tratta di un potente strumento specializzato, progettato per l'elaborazione ad alta velocità del flusso di dati. Si discosta in modo significativo da un approccio originale APL. Kx Systems sono costosi e loro utenti per lo più lavoro in finanza.

APL è stato immaginato e ideato soprattutto da Ken Iverson. Dopo una carriera piena di applicare e perfezionare APL in applicazioni commerciali si girò verso il compito di fare una revisione "razionalizzata", uno che corresse gli aspetti della lingua che aveva trovato se stesso insoddisfatti nel corso degli anni. Questa nuova assumere il tema si chiama J. Le differenze tra J e APL sono abbozzati in un documento sul wiki J Software. Un cambiamento notevole è l'eliminazione di sintassi matrice indicizzazione. La più grande caratteristica, però, è forma tacita, in cui i programmi sono scritti da funzioni di comporre senza riferimento alle loro argomentazioni. Tacita J è strettamente legato allo stile "libero-point" trovato in linguaggi di programmazione funzionale, ma si differenzia in quanto questa forma è fondamentale per il linguaggio J. I simboli ASCII-based utilizzati in J potrebbe essere più difficile da leggere rispetto ai caratteri APL più distintivo.

Per un individuo che vogliono imparare un linguaggio di matrice, il mio consiglio è quello di scegliere tra Dyalog APL, APLX, J, e Q'Nial. Dyalog APL (esp. Per Windows) o APLX (esp. Per Linux) sono probabilmente meglio per qualcuno che vuole utilizzare il simbolismo di base che è così caratteristico di APL, e chi vuole forte legame con la comunità APL nel suo complesso. J può essere meglio per coloro che vogliono costruire applicazioni web, o concentrarsi sulla matematica (come Project Euler,) e soprattutto coloro che sono affascinati dallo stile tacita sottolinea. Q'Nial è quello che mi piacerebbe raccogliere se la mia priorità era su open source, ma solo se la priorità non significa anche aspettando il sostegno di una comunità OS attiva.


UPDATE: J 7.01 è stato rilasciato con codice sorgente aperto GPL 3. Inoltre, v'è Kona , una variante K. Questi aumentano le opzioni per linguaggi di matrice open-source.

UPDATE da Tobia: GNU APL IS avaOTTIMIZZARE LE OPPORTUNITÀ sotto la licenza GPL. Essa segue da vicino il più recente standard ISO pubblicata sul linguaggio APL esteso. È un grande implementazione APL open source ed è attivamente sviluppato e mantenuto. Ci sono altre implementazioni interessanti anche, ad esempio NGN APL , un'implementazione sorprendentemente ben-optional e moderna di APL scritta in CoffeeScript (che compila in Javascript.) lingue Array sono vivi e vegeti nel 2015.

Altri suggerimenti

Per aggiungere qualche informazione in più ...

C'è una versione open source di K chiamato Kona https://github.com/kevinlawler/kona

Per q/kdb+, v'è una versione di prova. http://kx.com/download/

I limiti principali sono 2 timeout ore, la memoria a 32 bit, 3 mesi di scadenza della licenza, ed il titolo stesso. Queste non dovrebbero essere troppo fastidio se si desidera solo per giocare e imparare qualcosa.

Personalmente, ho trovato q essere il più facile da usare in quanto KX tradotto le (argomento singolo) verbi monadici da K in parole in inglese e c'è una buona quantità di documentazione @ http://code.kx.com . Inoltre, il sistema di database è molto ben pensato e flessibile.

Qualcosa da considerare è il vocabolario di operatori (funzioni di ordine superiore).

APL originale ha solo riduzione ultimo e primo asse (f/, f⌿), ultimo e primo asse riduzione cumulativa (f\, f⍀), più prodotto interno ed esterno (f.g, ∘.g).

La maggior parte esteso APL (per esempio GNU APL, APLX, APL + Win, APL2) solo aggiungere il ogni-loop (), e l'asse specifica staffa (f[ ... ]).

J, aggiunto un pletora (chiamato avverbi e congiunzioni), ma rimosso staffe (sia asse e indicizzazione), il ciascun operatore (in favore dell'operatore più generale ranking), e ultimo asse (cumulativo) riduzione.

Il defunto Sharp APL (SAX) mantenuto sia il tradizionale operatori ultima assi e staffa indicizzazione, mentre l'aggiunta di molti nuovi operatori di J.

Dyalog APL sta gradualmente avvicinando il vocabolario di Sharp APL, ma ha anche incorporato J-esclusiva operatori che non ha mai fatto in Sharp APL.

La tabella seguente confronta J, Sharp APL, e vocabolari composizione Dyalog APL. Le voci in grigio sono in fase di proposta. J, Sharp APL e Dyalog APL composizioni

J è una notazione matematica eseguibile che viene immesso e visualizzato con i caratteri ASCII.

E 'anche una vera e propria funzionale, Object Oriented, linguaggio di programmazione.

L'implementazione JSoftware di J (non so di nessun altro) non è open source, ma è libero di utilizzare.

Anche se il motore non è open source, c'è una libreria utente attivo di codice J per cui le persone possono contribuire.

J ha una vasta documentazione e conciso http://www.jsoftware.com/help.htm e membri del forum felicemente e rispondere rapidamente alle domande o problemi e sono desiderosi di aiutare i nuovi utenti orientarsi oltre che con i problemi più avanzate.

Sulla questione Open Source tra l'altro, la documentazione (specifiche) per J è ampia e chiunque potrebbe, in teoria, creare un progetto open source per cercare di implementare J se volevano.

ELI è un linguaggio di programmazione array di nuova concezione, disponibile gratuitamente e multipiattaforma.Simile a J e k si basa sul set di caratteri ASCII.Implementa alcune delle funzionalità che (come so) erano esclusive di k/q/kdb+ come il tipo di dati temporale e il sottoinsieme SQL integrato.

Mentre A + sembra (purtroppo) essere un progetto morto, c'è un nuovo interprete APL open-source: GNU APL .

Ho anche rimango confuso (APL mi ha sempre confuso - per fortuna è stato più di 20 anni dall'ultima volta che ho tentato qualsiasi cosa con esso), ma un po 'di ricerca ha trovato un +, una versione open-source di A:

Non ho idea di esso che soddisferà le vostre (o di nessuno) esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top