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 z------m - 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 (
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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
  • Odpowiedz
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];

-
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
PsichiX - Nowoczesny assembler Intuicio v4 wspiera już wołanie rutyn z nieokreśloną i...

źródło: comment_B3hCqU9wZuPMObM2Ye8werDxwECdzUek.jpg

Pobierz
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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.
  • Odpowiedz
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
PsichiX - Jakby kto pytał co się dzieje z platformą Intuicio, to daję znać, że na dni...

źródło: comment_tAoOqrBqrmK4HSVRTsDvAjBnYBKHiezj.jpg

Pobierz
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

syntax checker assemblera nowej VMki gotowy, teraz podpiąć kompilację pod node'y AST <3
dostępne będą tryby przetwarzania assemblera takie jak: kompilacja, dekompilacja i interpretowanie (yay, w końcu będzie podkładka pod JIT).
( tak, spodobała mi się składnia LLVM asm :3 )

#screenshotsaturday #intuicio #gamedev
PsichiX - syntax checker assemblera nowej VMki gotowy, teraz podpiąć kompilację pod n...

źródło: comment_Wgupp0hoqvDIPXSRwNgPKQ3IT9pjkCAB.jpg

Pobierz
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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 dlatego
PsichiX - Po Waszych sugestiach, Mircy - oto finalna wersja Kaiju! (。◕‿‿◕。)

Właśni...

źródło: comment_ceow0yoUkFEIqeDhlAq2wpvnBNoIDhDo.jpg

Pobierz
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 1
@PsichiX: a to pisanie program: sto razy to da się pominąć jakoś?

Zamiast
var c = Program:Add (Program:a, Program:b)
Było
var c = Add (a, b)
  • Odpowiedz
@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
  • Odpowiedz
Ź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ż przygotować sobie bindingi do SFML-a (
PsichiX - Źródełka: https://github.com/PsichiX/Kaiju (na dniach dojdzie readme z opis...

źródło: comment_NCDzQPdqZ6yCV8XoVF2q3HgtOQJoE7nW.jpg

Pobierz
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
PsichiX - Z racji, iż prace nad kompilatorem I++ -> Iasm trwają już długo (optymaliza...

źródło: comment_kMw90nEYmYae8jDY2gOj7my5NGlqDSGt.jpg

Pobierz
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 3
@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? :)
  • Odpowiedz
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ą ( ͡° ͜ʖ ͡°
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
PsichiX - Sporo czasu zajęło dodawanie kompilacji klas do JSa, ale udało się doprowad...

źródło: comment_UCkmprPsfpKSjbKo4tRXe26AsDWF7uGA.jpg

Pobierz
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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
PsichiX - Wczoraj były proste wyrażenia, dziś już są pełne wyrażenia, zmienne i funkc...

źródło: comment_khhO1yTF44Z8I7z0OooWRzSIRMGtA3ye.jpg

Pobierz
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@larvaexotech: mógłbym od razu do LLVM, ale to nie będzie wystarczającym skillem do portfolio i CV, jeśli chcę pchać się do gigantów branży, stąd własna VMka i parę innych platform bym udowodnił, że wiem jak się takie rzeczy tworzy ( ͡º ͜ʖ͡º)
  • Odpowiedz
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
PsichiX - Trochu ciężko pokazać coś, gdzie wszystko dzieje się w bebechach aplikacji,...

źródło: comment_TqTgiXPXfDysuGks4wtJHI3S8KNkmCAR.jpg

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach