2010-10-08 27 views
63

Pejzaż w układzie tablicowym, choć fascynujący, jest mylący i nie ma końca. Czy istnieje powód, aby wybrać jedną z J lub K lub APL lub A? Żadna z tych opcji nie wydaje się być otwarta - czy są dostępne wersje open source? Bardzo bym chciał rozszerzyć mój umysł, ale pozostaję oszołomiony.APL kontra A w porównaniu z J kontra K?

Odpowiedz

104

Różnice między tymi językami są stosunkowo subtelne. "Właściwa" APL ma zalety i wady pierwotnej symbolicznej notacji. (Wprowadzono drobne zmiany w zestawie znaków na przestrzeni lat, ale wszystkie one są prawdziwe w stosunku do pierwotnej wizji.)

Język A + jest dostępny w wersji open source. Odbiegają one znacząco od "klasycznych" APL-ów, ale przypominają je w zachowaniu większości podstawowych zestawów znaków. Mam wrażenie, że nie był on na bieżąco ze zmianami technologicznymi. Był to prekursor dla K.

Języki w rodzinie języka tablicowego, które odeszły od charakterystycznego zestawu znaków APL, to J, K i Nial. Nial używa słów angielskich zamiast symboli i ma interpreter open source o nazwie Q'Nial. K i J polegają głównie na symbolach, ale są one rysowane z zestawu znaków ASCII. Zamiast symboli w tych językach można jednak używać słów, po prostu przez przypisywanie definicji.

Rodzina języków programowania APL była pierwotnie zastrzeżona od czasu pojawienia się APL jako produktu IBM w 1964 roku. Własne języki macierzy wydają się mieć więcej wsparcia i szybszą ewolucję nowych możliwości niż alternatywne rozwiązania open source w tym czasie. Nie jestem pewien, jak wszyscy rywalizują ze sobą, ale Dyalog APL z pewnością aktywnie działa na rzecz promowania ich implementacji języka jako obecnej technologii. APL2000 oferuje produkty dla systemów Unix, Linux i Windows, w tym VisualAPL dla .Net. MicroAPL Ltd oferuje APLX.

K jest specjalistycznym językiem, który nie jest już sprzedawany samodzielnie. Kx Systems zamiast tego wprowadza na rynek bazę danych Kdb + i jej język Q (zapytanie), z których oba są napisane w języku K. Jest to potężne wyspecjalizowane narzędzie przeznaczone do szybkiego przetwarzania danych strumieniowych. Znacząco odbiega od oryginalnego podejścia APL. Produkty Kx Systems są drogie, a ich użytkownicy najczęściej pracują w branży finansowej.

APL został zaprojektowany i zaprojektowany głównie przez Kena Iversona. Po pełnej karierze stosowania i udoskonalania APL w zastosowaniach komercyjnych, zwrócił się do zadania "racjonalizacji" rewizji, która poprawiała aspekty języka, z którego przez lata był niezadowolony. To świeże spojrzenie na temat nazywa się J. Różnice między J i APL zostały zarysowane w artykule na wiki J Software. Jedną zauważalną zmianą jest wyeliminowanie składni indeksowania tablicy. Największą jednak cechą jest milcząca forma, w której programy pisane są przez komponowanie funkcji bez odwoływania się do ich argumentów. Tacit J jest ściśle związany z "bez-punktowym" stylem występującym w językach programowania funkcjonalnego, ale różni się tym, że ta forma ma fundamentalne znaczenie dla języka J. Symbole oparte na ASCII używane w J mogą być trudniejsze do odczytania niż bardziej charakterystyczne znaki APL.

Dla osób, które chcą nauczyć się języka tablicowego, radzę wybrać między Dyalog APL, APLX, J i Q'Nial. Dyalog APL (szczególnie dla Windows) lub APLX (zwł.w przypadku Linuksa) są prawdopodobnie najlepsze dla kogoś, kto chce użyć podstawowej symboliki, która jest tak charakterystyczna dla APL i która chce silnego związku ze społecznością APL jako całości. J może być najlepszy dla tych, którzy chcą tworzyć aplikacje internetowe lub skupić się na matematyce (jak na przykład Project Euler), a szczególnie na tych, którzy są zafascynowani tym, co podkreśla. Q'Nial jest tym, co wybrałbym, gdyby mój priorytet dotyczył otwartego źródła, ale tylko wtedy, gdy ten priorytet nie oznaczałby także oczekiwania na wsparcie aktywnej społeczności OS.

AKTUALIZACJA: J 7.01 został released with open source code w ramach GPL 3. Ponadto istnieje Kona, wariant na K. Zwiększają one możliwości dla języków tablicowych typu open source.

AKTUALIZACJA przez Tobia: GNU APL jest dostępna na licencji GPL. Jest on zgodny z najnowszą opublikowaną normą ISO w rozszerzonym języku APL. Jest to świetna implementacja APL typu open source, która jest aktywnie rozwijana i utrzymywana. Są też inne ciekawe implementacje, na przykład: ngn APL, zaskakująco dobrze wyposażona i nowoczesna implementacja APL napisana w Coffeescriptu (który kompiluje się do Javascript). Języki tablicowe są żywe i mają się dobrze w 2015 roku.

+0

+1 Bardzo ładny przegląd. –

+0

Czasami +1 to za mało: Dzięki, kalejdoskop! – blinry

+0

Niedawno Dyalog wypuścił także wersję dla Mac OSX - http://www.dyalog.com/dyalog/mac-os.htm – firesofmay

0

ja również pozostają befuddled (APL zawsze zadziwiła mnie - na szczęście to było 20 lub więcej lat od czasu, kiedy ostatnio próbował coś z nim), ale trochę poszukiwań znalazła +, w wersji open-source A:

nie mam pojęcia, to będzie on spełni twoje (lub kogokolwiek) potrzebuje.

3

J to wykonywalna notacja matematyczna który jest wprowadzany i wyświetlany przy użyciu znaków ASCII.

Jest to również pełnoprawny funkcjonalny, zorientowany obiektowo język programowania.

Implementacja J oprogramowania J (nie znam żadnych innych) nie jest open source, ale jest za darmo.

Chociaż silnik nie jest open source, istnieje aktywna biblioteka użytkownika kodu J, do której ludzie mogą wnosić swój wkład.

J ma obszerną i zwięzłą dokumentację http://www.jsoftware.com/help.htm, a członkowie forum z radością i szybką odpowiedzią na wszelkie pytania lub problemy i chętnie pomagają nowym użytkownikom zorientować się, jak i bardziej zaawansowanym problemom.

Co do kwestii Open Source, dokumentacja (specyfikacja) J jest obszerna i każdy może w teorii stworzyć projekt open source, aby spróbować zaimplementować J, gdyby chciał.

+5

J kod źródłowy jest również tam teraz [link] (http://jsoftware.com/source.htm) –

+1

Tylko powiedzieć, że źródło J zostało wydane na licencji GPL3 od ostatniej wersji http: //www.jsoftware .com/source.htm – jpjacobs

10

Aby dodać trochę więcej informacji ...

Jest to otwarta wersja źródłem K nazywa Konahttps://github.com/kevinlawler/kona

Dla q/kdb+, istnieje wersja próbna. http://kx.com/download/

Główne ograniczenia to 2-godzinny limit czasu, 32-bitowa pamięć, 3-miesięczne wygaśnięcie licencji i sama licencja. Nie powinno to być zbyt uciążliwe, jeśli po prostu chcesz się bawić i czegoś nauczyć.

Osobiście znalazłem q za najbardziej przyjazny dla użytkownika, ponieważ KX przetłumaczył monadycznego (pojedynczy argument) czasowniki z K do angielskich słów i istnieje duża ilość dokumentacji @http://code.kx.com. Ponadto system baz danych jest wyjątkowo dobrze przemyślany i elastyczny.

1

Podczas gdy A + wydaje się być (niestety) martwym projektem, istnieje nowy interpreter APL typu open-source: GNU APL.

2

ELI to nowo opracowany, swobodnie dostępny, wieloplatformowy, tablicowy język programowania. Podobny do J i k zależy od zestawu znaków ASCII.Implementuje niektóre funkcje, które (jak wiem) były unikalne dla k/q/kdb +, takie jak tymczasowy typ danych i wbudowany podzbiór SQL.

3

Należy wziąć pod uwagę słownictwo operatorów (funkcje wyższego rzędu).

oryginalny APL ma tylko nazwiska i obniżenie osi (f/, f⌿), nazwiska i oś zbiorczej redukcji (f\, f⍀), a także wewnętrzny i zewnętrzny produkt (f.g, ∘.g).

Większość wydłużone aPL (np GNU APL APLX, APL + Win APL2) dodać tylko specyfikacji uchwytu każdej pętli () i oś (f[ ... ]).

J, dodano plethora (nazwane przysłówki i spójniki), ale usunięto nawiasy (zarówno oś, jak i indeksowanie), każdy operator (na korzyść bardziej ogólnego operatora rangi) i ostatnia (skumulowana) redukcja osi.

Nieistniejący już Sharp APL (SAX) zachował zarówno tradycyjne operatory ostatniej osi, jak i indeksowanie uchwytów, jednocześnie dodając wielu nowych operatorów J.

Dyalog APL stopniowo zbliża się do słownika Sharp APL, ale zawiera także operatorów, którzy nigdy nie dołączyli do Sharp APL.

Poniższa tabela porównuje słowniki kompilacji J, Sharp APL i Dyalog APL. Wyszarzone wpisy są w ramach propozycji. J, Sharp APL, and Dyalog APL compositions