TeamQuest Blog

Passerine

Passerine

Marcin Sarna , 23.02.2021 r.

Mały, rozszerzalny język programowania używający zwięzłych wyrażeń.

Rising star czy tylko kometa?

Passerine działa na wirtualnej maszynie napisanej w Rust. Ten nowy język oprogramowania ma korzenie w językach Scheme i ML - to kulminacja wszystkiego, czego oczekują minimaliści. Tu wszystko jest tak proste jak to tylko możliwe. W swej istocie Passerine to po prostu lambda z dopasowywaniem wzorców, typami strukturalnymi, współbieżnością i rozszerzalną składnią.

Jest to pierwszy projekt The Veritable Computation Initiative. Ich celem jest ulepszanie narzędzi używanych przez programistów do pisania oprogramowania. Passerine jest obecnie rozwijany głównie przez Isaaca Claytona, o którym piszą tak: licealista, który ma zbyt dużo wolnego czasu. Czy to czyni ten język tylko ciekawostką?

Instalujemy

Pobieranie Passerine jest szybkie i łatwe. Po prostu uruchom następujące polecenie w wybranym przez siebie interpreterze powłoki: sh <(curl -sSf https://www.passerine.io/install.sh). Ten skrypt po prostu pobiera najnowszą wersję Passerine, buduje ją ze źródła i dodaje do $PATH. W przyszłości mają też być rozpowszechnianie gotowe pliki binarne.

Sprawdź oferty pracy na TeamQuest

Aby utworzyć i uruchomić nowy projekt Passerine wykonaj polecenie:

aspen new hello-passerine
cd hello-passerine
aspen run

Składnia

Celem składni Passerine jest uczynienie wszystkich wyrażeń tak zwięzłymi, jak to tylko możliwe, przy jednoczesnym zachowaniu „wrażenia” różnych typów wyrażeń. Już tłumaczymy - oto definicja funkcji:

linear = m b x -> b + m * x
linear 2 3 5
-- evaluates to 13

Z tego krótkiego przykładu możemy się już dowiedzieć kilku ważnych rzeczy o Passerine. Przede wszystkim, podobnie jak inne języki programowania, Passerine używa = do przypisania. Po lewej stronie znajduje się wzorzec - w tym przypadku tylko zmienna linear - który rozkłada wyrażenie na zestaw powiązań. Po prawej stronie jest wyrażenie; w tym przypadku wyrażenie jest definicją funkcji.

Passerine jest językiem zorientowanym na wyrażenia, dlatego wszystkie funkcje są anonimowe. Wszystkie funkcje mają więc postać p₀ ... pₙ -> e, gdzie p jest wzorcem, a e jest wyrażeniem. Passerine szanuje pierwszeństwo operatorów: 3 + 2 * 5 to 13, a nie 25. Notacja jest potężnym narzędziem - chociaż Passerine jest inspirowana lispem (jak Scheme), zapewnia całkiem przyjazną składnię.

Nasz nowy język używa też białych znaków do wywołań funkcji. Wywołanie funkcji ma postać l e₀ ... eₙ, gdzie l jest funkcją, a e jest wyrażeniem. Każda para wzorzec-wyrażenie jest odgałęzieniem - każda wartość jest skierowana do kolejnej gałęzi w kolejności, dopóki gałąź nie zostanie pomyślnie dopasowana i obliczona - wyrażenie przyjmuje wartość odpowiadającej mu gałęzi.

Błędy

Passerine używa kombinacji wyjątków i algebraicznych typów danych do obsługi błędów. Błędy, które mają wystąpić, powinny być opakowane w typ Result:

validate_length = n -> {
if length n <5 {
Result.Error "To jest za krótkie!"
} else {
Result.Ok n
}
}

Rozszerzenia

Rozszerzenia są definiowane za pomocą słowa kluczowego syntax, po którym następuje kilka wzorców argumentów, po których wreszcie mamy kod, do którego zostaną podpięte przechwycone argumenty. Oto prosty przykład: używamy makra do zdefiniowania operatora wymiany:

syntax a 'swap b {
tmp = a a = b
b = tmp
}

x = 7
y = 3
x swap y

Zobacz też nad czym spędzają większość czasu programiści.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej