Słyszeliście o Bosque i regularized programming?
Niedawno migneły na mikroblogu
Bo ja usłyszałem i powiem szczerze że rzygam. Może nie oczeliwaliście takiej szczerości, ale czułem że muszę się tym podzielić z wami.
Dlaczego rzygam, pewnie (nie) chcecie zapytać?
Bo marketing Bosque to marketing MicroShitu w najgorszym możliwym wydaniu. Na wikipedii Można przeczytać że
Marron believes we can do better by getting rid of sources of complexity like loops, mutable state, and reference equality. The result is Bosque, which represents a programming paradigm that Marron, in a paper he wrote, calls "regularized programming."
Może powinienem znaleźć lepsze źródło informacji, ale nie mogę, bo rzygam.
A teraz trochę historii:
Ale to inżynier MicroShitu wymyślił że języki nie powinny mieć pętli i mutowalnego stani i nazwał to "regularized programming" mimo że już wcześniej nazywało się to programowanie funkcyjne. Rzygam
UPDATE chociaż może nie będzie źle i będziemy mieć nowy funkcyjny język programowania którego użytkownicy nie będą wiedzieć że jest językiem funkcyjnym, tak jak użytkownicy C# nie wiedzą że C# ma dedykowaną składnię do przetwarzania monad :D
Czasem niektórych rzeczy lepiej nie zobaczyć Lisp w Malbolge
A lightweight (150MB) Lisp interpreter in Malbolge Unshackled, often dubbed the hardest turing complete programming language. - GitHub - kspalaiologos/malbolge-lisp: A lightweight (150MB) Lisp inte...
https://github.com/kspalaiologos/malbolge-lispMuszą mieć jakiś kompilator kompilujący do malbolge, nie ma innej opcji :D
Moja wersja Scheme
W wątku dotyczącym projektu języka Mercury @KamilAdam polecił mi napisanie interpretatora Scheme. Najpierw jednak chciałem dokończyć interpretator Mercurego, a potem o tym zapomniałem i przypomniałem sobie wczoraj. Wybrałem JavaScript, bo dzięki temu będę mógł wykorzystywać kod interpretera na ogromnej liczbie platform. Od strony technicznej jest to jedna funkcja (z podfunkcjami, oczywiście) przyjmująca Scheme'owe wyrażenie i zwracająca wynik. Dzięki takiej konstrukcji zajmowana jest tylko jedna nazwa w przestrzeni globalnej, co może mieć znaczenie w dużych aplikacjach. Na razie ma on (a po imieniu Numeric Scheme) cztery funkcje arytmetyczne (+
, -
, *
, /
) i cztery logiczne (and
,or
,not
,if
), brak zmiennych, waham się nad dodaniem I/O co może jednak uzależnić interpretator od platformy - dlatego właśnie się waham. Oczywiście bez zmiennych jest to raczej coś w rodzaju kalkulatora, ale nie ma żadnych limitów zagnieżdżeń poza określoną wielkością RAM-u. Przykładowa sesja:
Numeric Scheme [09:46 2021-04-03]
% (+ 2 2)
4
% (not #f)
#t
% (- (* 2 (/ 10 2)) 1)
9
% _
Gdy upewnię się, że nie ma błędów, kod pojawi się na GitHubie.
Mam problemy z zalogowaniem na GitHuba, kod jest tutaj: http://txt.do/ts9eu
Jest taki kurs/wyzwanie Write Yourself a Scheme in 48 Hours. Oryginalny kurs jest co prawda o Haskellu, ale widziałem implementacje też w innych językach. Tak tylko rzucam pomysłem na wpis do bloga
Tu też większość rzeczy napisałem 1 i 2 kwietnia czyli w dwa dni, no tyle że implementacja jest niepełna.
Wiec jakby spierasz sie z czyms czego nawet nie powiedzialem ¯_(ツ)_/¯