ELI (język programowania)

ELI
Paradygmat szyk
Zaprojektowany przez Wai Mee Ching
Deweloper Hanfeng Chen (Rapidsoft)
Po raz pierwszy pojawiły się 2011 ; 12 lat temu ( 2011 )
Wersja stabilna
0.3 / 10 sierpnia 2015 ; 7 lat temu ( 10.08.2015 )
Dyscyplina pisania dynamiczny
Język implementacji C++ , Qt
Platforma IA-32 , x86-64
system operacyjny Wieloplatformowość : Windows , Linux , macOS
Licencja Darmowe
Rozszerzenia nazw plików .esf .eli
Strona internetowa fastarray .appspot .com
Pod wpływem
APL , Q

ELI to interaktywny system języka programowania tablic oparty na języku programowania APL . Posiada większość funkcji standardu Międzynarodowej Organizacji Normalizacyjnej (ISO) ISO/IEC 13751:2001 , a także listę danych niejednorodnych lub nieprostokątnych, liczb zespolonych, symboli, danych czasowych i struktur kontrolnych. Dostępna jest funkcja plików skryptowych do organizowania programów w sposób podobny do używania #include w C , który zapewnia również wygodne wprowadzanie/wyprowadzanie danych . ELI ma słowniki, tabele i podstawowy zestaw SQL . Ze względu na wydajność ma kompilator ograniczony do programów z płaską tablicą.

Zastępując każdy znak APL jednym lub dwoma znakami ASCII , ELI zachowuje zwięzły i wyrazisty sposób programowania tablicowego APL w porównaniu z MATLABem lub Pythonem , ELI zachęca do stylu programowania przepływu danych , w którym dane wyjściowe jednej operacji zasilają dane wejściowe innej.

ELI jest dostępny bezpłatnie, jako freeware , w systemach Windows , Linux i macOS .

Wersja 0.3

ELI wersja 0.3, określana jako wydanie stabilne, została wydana 10 sierpnia 2015 r. Integruje się z wieloplatformowym IDE, ELI Studio, które zapewnia edytor kodu ze specjalistycznymi funkcjami do pisania i ładowania kodu ELI. Trzy dodane widżety służą do monitorowania funkcji, zmiennych, bibliotek i historii poleceń.

Wersja 0.3 dodaje kilka nowych funkcji.

  • Jak: dopasowanie ciągów
  • Mecz
  • []PP: kontrola precyzji drukowania
  • )czas: miara wydajności
  • []: wejście standardowe
  • Atrybuty daty i godziny
  • Uchwyt pliku: []otwórz, []zamknij, []zapisz i []pobierz
  • średnik (;)

Przykładowy kod

Linia ELI jest wykonywana od prawej do lewej jako łańcuch operacji; cokolwiek na prawo od „//” jest komentarzem.

Wykrzyknik (!) jest funkcją interwałową. Może wygenerować wektor n liczb całkowitych od 1 do n.

!10 1 2 3 4 5 6 7 8 9 10

Kolejność wykonywania ELI jest od prawej do lewej, a wszystkie prymitywne funkcje mają równy priorytet.

5 * 2 + 10 // od prawej do lewej, 5 * (2 + 10) 60

W następnym przykładzie funkcja add jest zadeklarowana w krótkiej formie funkcji. Argumentami funkcji mogą być skalary lub wektory.

{add: x+y} // krótka forma funkcji add 1 add 2 // 1+2 3 1 add !10 // 1+(1..10) 2 3 4 5 6 7 8 9 10 11

Operator rotacji $ zwraca odwrotną kolejność wektora.

$!10 // odwróć 10 9 8 7 6 5 4 3 2 1

Macierz 2 na 3 (lub tablicę o wyższych wymiarach, np. 2 3 4#!24 ) można wygenerować za pomocą # z lewym argumentem 2 3 .

2 3#!6 // 2-wymiarowa tablica (macierz) 1 2 3 4 5 6

W pierwszym wierszu poniżej x jest przypisany wektorem od 1 do 20. Wtedy 1 = 2|x zwraca liczbę nieparzystą True i liczbę parzystą False . / to prymitywna funkcja kompresji, która pobiera wartość w x odpowiadającą wartościom True w swoim lewym argumencie.

x <-!20 // 1..20 x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (1 = 2|x) / x // pobierz liczby nieparzyste z x 1 3 5 7 9 11 13 15 17 19

Rozszerzenia plików

W ELI używane są dwa rozszerzenia plików do wymiany i udostępniania kodu do różnych celów: .esf i .eli .

Plik ELI z rozszerzeniem .esf to plik skryptu, który zawiera wszystkie metody i dane. Prostym sposobem na utworzenie pliku skryptu jest użycie polecenia )out . Jednak przed utworzeniem pliku skryptu potrzebny jest czysty obszar roboczy bez informacji o debugowaniu lub błędach. Później polecenie )fload może zostać użyte do przeładowania pliku skryptu.

)out MyScript )lib MyScript.esf )fload MyScript zapisano 2017.02.17 10:23:55 (gmt-5)

Plik ELI z rozszerzeniem .eli to plik obszaru roboczego ELI, który zawiera wszystko w obszarze roboczym. save i load to polecenia dla plików obszaru roboczego.

)zapisz MyWorkspace )załaduj MyWorkspace zapisano 2017.02.17 10:57:19 (gmt-5)

Linki zewnętrzne