Bosque - nowy język programowania od Microsoftu
Bosque został zainspirowany składnią i typami TypeScript oraz semantyką ML i Node/JavaScript. Na pomysł wpadł naukowiec Microsoftu Mark Marron, który nazywa swój język próbą wyjścia poza model programowania strukturalnego, który króluje od lat 70. Na stronie Microsoftu poświęconej nowemu językowi, trafimy na krótki opis słowami Marrona:
Język programowania Bosque jest przeznaczony do pisania kodu prostego, oczywistego i łatwego do zrozumienia, zarówno dla ludzi, jak i maszyn. Kluczowe cechy projektowe języka pozwalają uniknąć przypadkowemu komplikowaniu się procesu kodowania. Celem jest zwiększenie produktywności programistów, zwiększenie jakości oprogramowania i umożliwienie korzystania z szeregu nowych kompilatorów i narzędzi programistycznych.
Właściwości Bosque
Bosque faktycznie posiada kilka naprawdę ciekawych ficzerów, jak typowane stringi
function foo(zip: String[Zipcode], name: String) {...}
var zc: String[Zipcode] = ...;
var user: String = ...;
foo(user, zc) //Type error String not convertable to String[Zipcode]
foo(zc, user) //ok
Kolejną ciekawostką jest kompletny brak pętli, zamiast których użyjemy funktorów do iteracji
var v: List[Int?] = List@{1, 2, none, 4};
//Chained - List@{1, 4, 16}
v.filter(fn(x) => x != none).map[Int](fn(x) => x*x)
Wszystkie wartości są niemutowalne, a rekursywność jest dostępna tylko wprost - za pomocą słowa kluczowego rec.
Marron wierzy, że możemy usprawnić kodowanie, pozbywając się źródeł złożoności, takich jak pętle, mutowalny stan i równości odwołań. Rezultatem jest Bosque, który reprezentuje paradygmat programowania, który Marron w opracowanym przez siebie artykule nazywa „uregulowanym programowaniem”.
Model ten opiera się na zdobyczach programowania strukturalnego i abstrakcyjnych typów danych, upraszczając istniejące modele programowania do formy “uregulowanej”, która eliminuje główne źródła błędów, upraszcza zrozumienie i modyfikację kodu oraz pozwala na zamianę zautomatyzowanych zadań związanych z rozumowaniem o kodzie w banalne propozycje,- możemy przeczytać w artykule.
Open Source
Bosque jest dostępny w repozytorium na Githubie na licencji open source (MIT). Projekt z entuzjazmem przyjmuje wkład społeczności, w tym zgłaszanie problemów, komentarze, wszelki wkład merytoryczny i badania oparte na języku Bosque.
Według Marrona pierwszym i początkowym celem Bosque będzie zbudowanie zautomatyzowanego i bezwysiłkowego sprawdzania poprawności kodu, automatycznej kontroli SemVer i kompilacji w celu wykorzystania architektur SIMD, takich jak AVX lub SSE.
Dotychczas udało nam się to zrobić ręcznie i na małych przykładach, dlatego uważam, że zasadniczo nie ma żadnych przeszkód nie do pokonania na polu praktycznych wdrożeń, powiedział w wywiadzie dla The Register
W tej chwili Marron postrzega Bosque jako sposób na poszerzanie świadomości w zakresie projektowania języka i pomoc w tworzeniu zautomatyzowanych narzędzi programistycznych, takich jak weryfikatory i kompilatory, dzięki współpracy ze społecznościami naukowców i programistów online.
Mamy nadzieję wykorzystać Bosque jako proof of concept dla naprawdę różnych pomysłów w tej przestrzeni - powiedział. W przyszłości możemy pracować nad przeniesieniem tych pomysłów do produkcji w jakiejś formie.
Przyszłość Bosque
Obecnie Bosque opiera się na interpreterze napisanym w TypeScript, uruchamianym na Node.js, jako implementacja referencyjna. Patrząc w przyszłość, Marron zamierza wdrożyć kompilację ahead-of-time dla WASM i kodu natywnego. Powiedział, że w nadchodzących miesiącach skupi się na zadaniach z listy rzeczy do zrobienia, jak poprawki błędów i rozwijaniu funkcji, które będą wspierać pisanie większych programów w tym języku. Projekt jak najbardziej potrzebuje wsparcia społeczności.
W swoim wpisie na Ycombinator, Marron zwrócił się do społeczności:
Język Bosque jest obecnie w bardzo wczesnym stanie rozwoju, wymaga naprawdę dużo pracy i nie jest jeszcze gotowy do praktycznych zastosowań. Jestem jednak bardzo podekscytowany jego potencjałem i chciałbym, aby projekt od samego początku był wspólnym przedsięwzięciem, obejmującym zarówno innych naukowców, jak i społeczność programistów. W tym momencie celem jest zbadanie interesujących opcji w przestrzeni projektowania języka - niezależnie od tego, czy język Bosque stanie się jednym z głównych, czy po prostu dostarczy przydatnych pomysłów na stworzenie innych języków. Tak więc rzuć okiem, spodziewaj się wielu nieoszlifowanych krawędzi, a my będziemy niezmiernie wdzięczni za komentarze, sugestie i PR na repo GitHuba.
Przypominam, że repozytorium możesz zobaczyć tu, rzuć też okiem na publikację dotyczącą Bosque.