Mirko-programiści, potrzebna mi Wasza pomoc w przedyskutowaniu designu języka funkcyjnego opartego o nową platformę Intuicio!

Powiedzcie mi, czy taki design jest zgodny z funkcyjnym paradygmatem?
Czy nie pominąłem czegoś ważnego, albo nie przekombinowałem z czymś?
Bardzo proszę o powiedzenie mi, gdzie #!$%@?łem - bazuję na informacjach znalezionych na temat różnych języków funkcyjnych, ale wciąż mogę mieć problem z rozumowaniem FP i docenię każde wytknięcie błędu wraz z poprawieniem mnie (
@PsichiX: z składni, lubię prosty fajny standard z javy, lubię też C#, taki JS też nie ma najgorszej składni, jednak sam język to już rak. Jakiś lua też nie najgorszy.

Nadmiar nawiasów i innych dziwnych znaków tylko przeszkadza, szczególnie w pisaniu, jak jak się przesadzi bardzo mocno to i w czytaniu, trzeba dobrze znać język by cokolwiek zrozumieć.
Jak niezbyt umiałem nawet programować, to czytanie takiej javy czy innych języków szło
Okej, podsumowując obecny stan platformy Intuicio 4:

- architektura modułowa (tutaj to natywne i skryptowe moduły), gdzie moduły używają innych modułów;

- interpretowany (shell, skryptowanie) oraz kompilowany AOT (optymalizacja, zwiększona wydajność)[in progress];

- wielowątkowość wbudowana (myślę jeszcze nad korutynami), operacje arytmetyczne, bitowe, porownania, flow-control;

Osobiście uważam, że warto było przepisać całą platformę od zera - zyskała w ten sposób przyszłościową architekturę, która dzięki rejestrowi natywnych modułów i standaryzacji zwiększy zasięg platformy i
Nowoczesny assembler Intuicio v4 wspiera już wołanie rutyn z nieokreśloną ilością parametrów (a interpreter na pewno, póki co kompilacja do C stoi bo na interpreterze łatwiej się testuje nowe ficzery i wrócę do kompilacji C jak zamknę ficzer-liste :D).

Importy też działają, ale muszę wykminić jeszcze jak bindować poprawnie natywne moduły. Może zrobie je jako stdcalle do dllek - jak myślicie?

#intuicio #kaiju #programowanie
Pobierz
źródło: comment_B3hCqU9wZuPMObM2Ye8werDxwECdzUek.jpg
@wytrzzeszcz: traktuj to jak ILasm, ale miast kompilacji do bytecode'u, kompiluje to natywnie na konkretne platformy. więc wszędzie tam, gdzie wyplujesz gcc/clang, wszędzie tam to zadziała. Plus tam tez muszą być przeportowane natywne moduły, z których Twój będzie korzystał. Ewentualnie jeśli chcesz uruchamiać jako skrypt, bez kompilowania, to wystarczy runner zdeployowany na platforme.
Jakby kto pytał co się dzieje z platformą Intuicio, to daję znać, że na dniach pojawi się publicznie pierwsza część toolsetu v4, w postaci kompilatora i interpretera (shellowego), na początek na windowsa (bo Ubuntu muszę na nowo postawić ;<).

PS. Wersja 4 jest pisana od zera, już nie jako część silnika Xenon Core, a osobny projekt, a także nie będzie w zupełności kompatybilny z VMką w wersji 3 - chcę by Kaiju
Pobierz
źródło: comment_tAoOqrBqrmK4HSVRTsDvAjBnYBKHiezj.jpg
SCROLUJ DALEJ

Mówiłem już, że cały ekosystem Intuicio 4 (a w tym Kaiju) będzie oparty o Atom? ( ͡° ͜ʖ ͡°)
A wiecie, że Ptakopysk też zostanie z nim zintegrowany? ( ͡º ͜ʖ͡º)

Czuję dobrze koder - ten edytor jest cudny, mogę zrobić z nim dosłownie wszystko.. ()

robi się: https://atom.io/packages/language-intuicio4

Pobierz
źródło: comment_WwPQW623PrgmSi8rJsvL4C2FqEDaYfGd.jpg
W ramach riserczu potrzebnego do stworzenia nowej maszyny wirtualnej Intuicio (jak i nowej wersji assemblera) sprawdziłem, co ssie najbardziej w Kaiju i samej VMce i jedną z zaskakujących rzeczy na windowsie było samo kompilowanie kodu kaiju do assemblera, które zajmowało 10 razy dłużej czasu niż na linuxie.
WTF? O.o
ot, generowanie drzewa AST z parserem PEGTL jest z dupy, stąd tworzę własny tool do tego, zdesignowany i zoptymalizowany bezpośrednio dla Intuicio i
Ponieważ stara (wieloletnia już) wersja maszyny wirtualnej Intuicio okazała się dla mnei za wolna w benchmarku Kaiju, postanowiłem przepisać ją, całkowicie zmieniając podejście architektury VMki tak, by trzeba było użyć jak najmniej bytecode'u.
I przy tej okazji testuję CLion IDE - powiem tylko: KOCHAM WAS I WASZE WSZYSTKIE EDYTORY, JETBRAINS <3 <3 <3

#oswiadczeniezdupy #nieprogramowanie #intuicio #kaiju #clion
Po Waszych sugestiach, Mircy - oto finalna wersja Kaiju! ()

Właśnie uzupełniam bibliotekę standardową, a w ramach poprawek doszło między innymi komunikacja pomiędzy aplikacją Kaiju, a biblioteką załadowaną przez kod, a na dodatek działa już w shellu (chwilowo tylko linux, ale lada dzień i winda)! ^^

Jeśli miałbym jakoś określić Kaiju, to nazwałbym go JSem w wersji very very very strict, i właśnie
Pobierz
źródło: comment_ceow0yoUkFEIqeDhlAq2wpvnBNoIDhDo.jpg
@Marmite:
Ad. 1. żadnego GC - obiekty zarządzane w IntuicioVM są smart pointerami, czyli pamięć jest deallokowana wtedy, gdy już nie ma żadnej referencji na obiekt. Czyli nie potrzeba będzie nic więcej ponad to, co już jest (tak, tak. to wszystko już działa out-of-the-box) :3
Ad. 2. da, dyrektywa inject wstrzykuje kod assemblera maszyny wirtualnej. po stronie VMki nie istnieje żadna zahardcode'owana klasa. Wszystko da się rozszerzać i zmieniać wedle woli
A więc już oficjalnie:
Kaiju (mój nowy język programowania, który ma zastąpić mi JSa) DZIAŁA!
( ͡ ͜ʖ ͡)


Będzie czym się na #globalgamejam bawić :D

Repo jak zwykle tu: https://github.com/PsichiX/Kaiju (folder test pokaże Wam jak wyglądają pliki typów atomowych, po czym zauważycie jak bardzo można go rozbudowywać wedle potrzeb :3)

no to #dobranoc! ()

#programowanie #gamedev #
Pobierz
źródło: comment_nIbH7UO79BtHfZa4ruqcquChYba8dx8A.jpg
Źródełka: https://github.com/PsichiX/Kaiju (na dniach dojdzie readme z opisem, bo póki co ważniejsze skończyć to szybko ;p)

Tworzenie kompilatora Kaiju idzie o dziwo sprawnie - w dzień napisałem generator drzewa AST (abstract syntax tree) i konwersję do PST (program syntax tree), a od jutra robię konwersję PST do Iasm (ʘʘ)

Zdaje się, że będę miał język skryptowy na Global Game Jam gotowy o dużo, dużo wcześniej, więc zdołam też
Pobierz
źródło: comment_NCDzQPdqZ6yCV8XoVF2q3HgtOQJoE7nW.jpg
Z racji, iż prace nad kompilatorem I++ -> Iasm trwają już długo (optymalizacja drzewa wyrażeń jest koszmarem aktualnie), a ja potrzebuję mieć bardzo, ale to bardzo prosty język skryptowy na Global Game Jam do Ptakopyska, powstanie pierw bardzo prosty w kompilacji język skryptowy Kaiju.
Kaiju ma zapewnić dynamiczne typowanie, ale jednocześnie gwarancję rozlokowania pamięci. W Kaiju wszystko jest obiektem jakiejś klasy, operatory to metody jak każde inne, a biblioteka standardowa jest
Pobierz
źródło: comment_kMw90nEYmYae8jDY2gOj7my5NGlqDSGt.jpg
@jasiek13: ten óczuc kiedy pisanie wlasnego silnika na game Jamie jest zbyt proste I zamierzasz napisac swoj wlasny jezyk zaby napis swoj silnik :D

@PsichiX: I jeszcze nie palisz? I nie bedziesz wychidzil na fajke? to bedzie piekny Game Jamie :) a tak w ogole to SOE zarejestrowales u Siwego? :)
Ah, nie chwaliłem się jeszcze! przepisuję xenona (silnik, którego code base używają inne moje projekty, w tym cały Ptakopysk) na linuxy - tym samym IntuicioVM zostało rozwinięte o nowe ficzury w ramach kompatybilności z unixami, więc powolutku zbliżam się mały mi krokami do momentu, w którym za kilka miesięcy będzie można mówić o początkach konkurencji dla Node.js z językiem wspierającym współbieżność i dualizm zarządzania pamięcią ( ͡° ͜ʖ ͡°
Sporo czasu zajęło dodawanie kompilacji klas do JSa, ale udało się doprowadzić do działającej podstawowej wersji - teraz aby były w pełni użyteczne muszę zrobić tworzenie, niszczenie i dostęp do pól klasy w instancji. No i przeciążane operatory na potem ;o (a na sam koniec modyfikatory widoczności oraz meta-atrybuty, bo one będą validowane głównie w ostatniej fazie kompilacji, a póki co nie miałbym tego jak testować - a od przed wczoraj do
Pobierz
źródło: comment_UCkmprPsfpKSjbKo4tRXe26AsDWF7uGA.jpg
Wczoraj były proste wyrażenia, dziś już są pełne wyrażenia, zmienne i funkcje! Kolejne w kolejce są: kontrola sterowania (warunki, loopy), typy/klasy.

Na razie nie ma type-checków, bo do kompilacji typów w kompilatorze PST->JS jeszcze nie doszedłem, więc można spokojnie dzielić inta przez stringa ( ͡° ͜ʖ ͡°)

#intuicio #gamedev #nieprogramowanie #javascript
Pobierz
źródło: comment_khhO1yTF44Z8I7z0OooWRzSIRMGtA3ye.jpg
Trochu ciężko pokazać coś, gdzie wszystko dzieje się w bebechach aplikacji, ale postaram się opisać pokrótce:
Na screenie widzicie pierwszą kompilację do kodu JSa bardzo prostego wyrażenia - szału nie ma, acz od tego momentu mogę już w tym samym czasie dodawać konwertery I++ -> PST jak i PST -> JS w obu kompilatorach ^^


#nieprogramowanie #gamedev #intuicio #ipp #javascript
Pobierz
źródło: comment_TqTgiXPXfDysuGks4wtJHI3S8KNkmCAR.jpg