Komentowana treść: Prace nad API2 - nowy język programowania
[#31] Re: Prace nad API2 - nowy język programowania

@BigBang, post #30

Który algorytm w Javie wykona się szybciej niż taki sam z C przy dobrym kompilatorze? Jak dla mnie to bullshit.
[#32] Re: Prace nad API2 - nowy język programowania

@michal_zukowski, post #31

To nie żaden bullshit, tylko tak działa jvm. Kod w javie masz statyczny, skompilowany do bytecodu też jest statyczny, ale wykonywany w jvm kompilowany jest do natywnego kodu nie tylko raz przy uruchomieniu, ale może być rekompilowany w trakcie działania programu i optymalizowany na bieżąco. A jak sobie skompilujesz coś w C/C++, to będzie działać cały czas tak samo. Skompilujesz z inną opcją, będzie działac wolniej lub szybciej, ale cały czas tak samo.
Może faktycznie źle użyłem tu słowa "algorytm", chodziło i raczej o "program". Świetnie to widać w zastosowaniach serwerowych.
Widać jak serwer (aplikacji) się "rozkręca" jakiś czas po starcie - to właśnie wewnątrz jvm nastepują optymalizacje związane m.in z tym, jakie dane serwer przetwarza (to wszystko odbywa się w ramch JIT, jest sporo materiałów na ten temat, jak to kogo interesuje).
Inzynierowie, jeszcze Sun-a, odwalili kawał dobrej roboty!
[#33] Re: Prace nad API2 - nowy język programowania

@michal_zukowski, post #31

Jak dla mnie to bullshit.


Byl taki projekt o nazwie "Dynamo". To JIT w ktorym bytekod do interpreatacji i docelowy kod dla procesora to jedno i to samo:

The HP project Dynamo[22] was an experimental JIT compiler where the 'bytecode' format and the machine code format were the same; the system turned PA-6000 machine code into PA-8000 machine code. Counterintuitively, this resulted in speed ups, in some cases of 30% since doing this permitted optimizations at the machine code level, for example, inlining code for better cache usage and optimizations of calls to dynamic libraries and many other run-time optimizations which conventional compilers are not able to attempt.
[#34] Re: Prace nad API2 - nowy język programowania

@mschulz, post #33

Są jakieś dema w Javie na Amige, bo na Aminecie jest VM java bytecode, tu są przykłady na SEGA Genesis tylko z użyciem java-grinder.

ale może być rekompilowany w trakcie działania programu i optymalizowany na bieżąco



I co da się takie coś zrobić na Amidze? można wziąć taki kod Java-y co się będzie rekompilował, połączyć to z jakimś narzędziem typu kaffe-bin czy java-grinder i wyjdzie jakaś super gra:)
[#35] Re: Prace nad API2 - nowy język programowania

@tWINpIX, post #34

Przykłady z java, które podajesz, są sprzed 20 lat i faktycznie, cośtam działa, ale tak naprawdę nadaje się to tylko do demonstracji, że można coś takiego zrobić. Ale była też java na Maca m68k. A później, nawet do wersji java8, są kompilacje na linuksa/m68k.
Tylko po co tak kombinować? Bo zyski z takich runtime-owych optymalizacji to mają sens w zastosowaniach serwerowych, a w desktopie czy grach to nie ma znaczenia (bo nie myśl sobie, że to daje 2-krotnego kopa czy coś w tym stylu, to raczej pojedyńcze procenty w pewnych warunkach).
Jakby to miało sens na Amidze, to w demach już dawno by tak kombinowali!
[#36] Re: Prace nad API2 - nowy język programowania

@BigBang, post #35

Koniec lat 90 to byłe złote czasy Amigi i ludzie robili rzeczy których by dzisiaj nie robili:) Po zatym to może Amidze zabrakło po prostu jakiegoś Java-Master, i dzisiaj zamiast wstawek z ASM w C mielibyśmy wstawki z Java

w zastosowaniach serwerowych


Bo internet to żywy organizm i rekompilacja kodu w zastosowaniach serwerowych ma sens. Ale gra też nie musi być liniowa bardziej demo leci po sznurku rozwiniętym przez kodera. W grze rekompilacja kodu pod daną sytuacje mogła by zdać egzamin, chociaż zapewne większość gier na Amidze działa liniowo może oprócz Settlersów:) Ale nie o taką liniowość zapewne chodzi.
[#37] Re: Prace nad API2 - nowy język programowania

@tWINpIX, post #36

Jeden człowiek nie dałby rady dźwignąć implementacji javy (jvm + wszystko co było natywne w standardowych libach). A java ma zalety, ale program napisany w C jest jakiś taki milszy w objeściu ;)
Postęp jednak jest - np. od paru już lat mogę skorzystać z możliwości gpu zamontowanego w laptopie, jak chcę coś porysować po ekranie w javie. Można sobie spokojnie próbować odtwarzać efekty z dem :)

Co do gier - jakbyś chciał tak kombinować, to przede wszystkim gra wymagałaby znacznie więcej pamięci.
A te runtimeowe optymalizacje działają jak program tysiące albo miliony razy powtarza ten sam kawałek kodu - w javie jvm zbiera jakies statystyki kodu i na ich podstawie wprowadza optymalizacje. W grach tak nie ma.

Teraz mi się przypamniało, że jednym z "myków" trochę tu pasujących to samomodyfikujący się kod, ale zawsze przedstawiano to jako czyste ZUO, bo to się z wirusami kojarzy, hehe
[#38] Re: Prace nad API2 - nowy język programowania

@BigBang, post #32

Jedyny przypadek jak coś w Java działa szybciej to taki jak ktoś w C pisał, kto nie potrafi programować... (ja nawet w assemblerze potrafię wolniej napisać rutynkę, niż koledzy w Amosie )
Były, nawet są przykłady na YT jak coś w Java niby działa szybciej (jakiś specyficzny przypadek, gdzie po prostu coś się nie wykonuje bo nie ma sensu...). A w C jest napisane tak, że musi się wykonać. Czy przypadek, że obiekt się kopiował a nie musiał, bo tak był napisany kod w starym C++03, a w C++11 jest konstruktor przenoszący np. albo można w starym inaczej napisać metodę (tylko trzeba o tym pomyśleć).
Na tak wolnym sprzęcie jakim jest Amiga nawet z 060, je..nie po rejestrach zawsze będzie najszybsze, tylko trzeba dokładnie znać jak coś działa i poświęcić na to 10x (lub więcej) czasu na napisanie pierdoły. I fakt, wskaźniki w pisaniu po rejestrach bolą, bo trzeba mózg powykręcać i liczyć się z godzinami debugowania, bo coś gdzieś pojedzie.
Trzymam kciuki za projekt, jest bardzo ambitny i ułatwi robienie aplikacji 90% ludzi, a ludziom bez doświadczenia w programowaniu da w ogóle szansę na zrobienie czegokolwiek.
[#39] Re: Prace nad API2 - nowy język programowania

@mschulz, post #28

Smith, nie przejmuj sie maruderami i rob swoje.


Do tego że jest więcej zniechęcających niż wspierających już się przyzwyczaiłem, ale tego że nikt nie docenił mojego przykładu z animowanymi buttonami to nie wybaczę!!!

wykorzystac swoj wlasny czas wolny


Jaki wolny czas, ja nie mam wolnego czasu, to jest zawsze coś kosztem czegoś innego, ale nie chcę, żeby Amiga wylądowała w muzeum i dlatego coś robię

Ostatnia aktualizacja: 17.11.2019 17:27:43 przez smith
[#40] Re: Prace nad API2 - nowy język programowania

@smith, post #39

http://api2.trifle.eu/downloads/api2_v1.0.lha

link nie dziala
[#41] Re: Prace nad API2 - nowy język programowania

@BigBang, post #30

Jeśli chodzi o prostotę programowania to są dwa osobne aspekty.

Pierwszy:
Jeżeli tworzyłeś kiedyś klasę BOOPSI, obojętnie czy dla MUI czy Reaction, to zauważyłeś zapewne ile jest z tym roboty. Trzeba zdefiniować identyfikatory metod uważając żeby się nie pokryły z innymi, stworzyć dispatchera i struktury dla argumentów metod, plus same metody ale to już wszędzie się piszę więc tego nie liczę. Same użycie też jest trochę kłopotliwe. Trzeba wykorzystywać DoMethod, pilnować czy na pewno się podało dobre argumenty bo przy kompilacji to nie wyjdzie, chyba że użyjemy DoMethodA, ale wtedy trzeba wypełnić strukturę z argumentami. Trochę zabawy jest.Jeżeli spojrzysz na przykład z tworzeniem i użyciem klasy w C w API2, to zobaczysz że jest to o wiele prostsze niż w BOOPSI, mimo że bazuje na tym samym pomyśle. Czyli już jest ułatwienie.Nowy język ma być kolejnym ułatwieniem, tworzenie klas i ich użycie będzie elementem języka więc nie będzie wymagać żadnych dodatkowych zabiegów. Ponadto będą też dodatkowe elementy ułatwiające programowanie.

Drugi:
Ludzie zaczynający naukę programowania, lub programujący okazyjnie nie muszą wiedzieć jak dokładnie działa komputer, że ma pamięć, że są w niej bity i bajty, że trzeba ją alokować i zwalniać itd. Więc dla nich język, w którym można napisać mały program tak po prostu, bez definiowania klas czy nawet funkcji i wystarczy użyć kilku gotowych komponentów żeby wykonać proste zadanie będzie na pewno dużym ułatwieniem.

Czy Twój język da radę w sytuacji: polutuje coś sobie, podłączam do expansion portu i chcę aby system z tym "gadał" - czyli trzeba jakiś sterownik napisać?


Zawsze można skorzystać z kawałka kodu w C, który będzie realizował odczyt/zapis i resztę zrobić w moim języku. Tak samo działa obsługa GPIO w Pythonie na RPi, więc nie ma przeciwwskazań.

A Java ma inne zalety ukryte w jvm - np. optymalizacja "na bieżąco", podczas działania programu. Dlatego ten sam algorytm uruchomiony na jvm może być w pewnych warunkach wykonany szybciej niż skompilowany w C i uruchomiony na tej samej maszynie fizycznej.


Czytałem o takich przypadkach i zawsze się okazywało, że trick polegał na tym iż w Javie nie włączał się garbage collector, a C/C++ robiło w trakcie działania alokacje i zwalnianie pamięci. Gdy w Javie wymuszono GC to wyniki były nagle zdecydowanie inne i już Java nie była szybsza.

Ja tam fanem obiektowości nie jestem, uważam wręcz że przy ograniczonych możliwościach sprzetowych Amigi (tj. klasyk) programowanie obiektowe nie ma większego sensu.


Według mnie wszystko zależy jak jej ktoś używa i dobrze wykorzystana nie ma wpływu na prędkość i zasobożerność, a ułatwia programowanie.
[#42] Re: Prace nad API2 - nowy język programowania

@flops, post #38

Trzymam kciuki za projekt, jest bardzo ambitny i ułatwi robienie aplikacji 90% ludzi, a ludziom bez doświadczenia w programowaniu da w ogóle szansę na zrobienie czegokolwiek.


Dziękuję!
[#43] Re: Prace nad API2 - nowy język programowania

@michal_zukowski, post #40

Już powinno działać
[#44] Re: Prace nad API2 - nowy język programowania

@smith, post #43

A nie myslaleś żeby wystartować z jezykiem dla jakiś amatorów C dla mikrokontolerów. Takie poowijane obiektowe programowanie kompilowane dla mikrokontrolera mogloby sie sprawdzic nie tylko w amigowej niszy. Poza tym w takich projektach jest pytanie, od jakiego poziomu chcesz dac komus dostęp do dodatkowego rozwijania/tworzenia wlasnych ale oficjalnych klas.

Ostatnia aktualizacja: 17.11.2019 19:43:22 przez michal_zukowski
[#45] Re: Prace nad API2 - nowy język programowania

@smith, post #41

Nie, z BOOPSI nie robiłem, widziałem tylko przykłady (jak dla mnie przekombinowane). Zatrzymałem się na gadtools. Ale to było całkiem dawno, jak głupie pomysły człowiekowi przychodziły do głowy, typu pisanie od zera przeglądarki internetowej.
A prostota programowania nie może być celem samym w sobie, bo to zawsze ma jakąś cenę. Używanie dowolnego frameworka w dowolnym języku ogranicza, bo zawsze, prędzej czy później, napotkasz coś czego nie da się zrobić i trzeba kombinować, aby obejść narzucone ograniczenia. Coś za coś...
Jakoś trudno mi sobie wyobrazić programowanie na Amidze bez wiedzy jak np. działa Intuition? Oczywiście, można tak - jak java - zupełne oderwanie od sprżętu i systemu na którym działa, ale i tak wtedy trzeba wiedzieć, jak to się robi w javie.

Z tą optymalizacją "w locie" w javie to chodziło mi o co innego. GC ma oczywiście wpływ, ale chodzi o kod natywny, faktycznie wykonywany przez procesor. Jak zrzucisz sobie jakiś kawałek natywnego kodu wygenerowanego z tego samego bytecodu (np. konkretna metoda) zaraz po uruchomieniu jvm, a potem po jakimś czasie, to się okaże że niekoniecznie jest taki sam, bo warunki się trochę zmieniły i jit zoptymalizował to trochę inaczej. Jak skompilujesz sobie program w C++ to kod natywny jest statyczny i tyle.

Zapytam jeszcze, bo mnie ciekawi - skoro uważasz, że C jest zbyt trudne (bo jest, zwłaszcza na początku), to jak oceniasz E?
[#46] Re: Prace nad API2 - nowy język programowania

@BigBang, post #45

W MUI masz większość rzeczy poowijanych (od 93,94 roku więc od amigowej prehistorii). W tym kodowanie paradeklaratywne:

SubWindow, WindowObject,
    WindowContents, VGroup,
        Child, String("dupa",40),
        Child, String("zbita",50),
    Child, HGroup,
        Child, CheckMark(TRUE),
        Child, CheckMark(FALSE),
    End,
  End,
End,

oczywiscie nie wszystko sie da owinąc w C - tak jak pisal Smith rzeczy związane z dziedziczeniem (ale w CPP/OBJ-c już tak)



Ostatnia aktualizacja: 17.11.2019 20:31:17 przez michal_zukowski
[#47] Re: Prace nad API2 - nowy język programowania

@michal_zukowski, post #44

A nie myslaleś żeby wystartować z jezykiem dla jakiś amatorów C dla mikrokontolerów. Takie poowijane obiektowe programowanie kompilowane dla mikrokontrolera mogloby sie sprawdzic nie tylko w amigowej niszy.


Chcę żeby to było dla Amigi (szeroko rozumianej) i stanowiło coś co ją wyróżnia i przybliża do dzisiejszych standardów, dlatego nie myślę o innych platformach.

Poza tym w takich projektach jest pytanie, od jakiego poziomu chcesz dac komus dostęp do dodatkowego rozwijania/tworzenia wlasnych ale oficjalnych klas.


Nie planuję jakiś ograniczeń, w C można napisać dowolną klasę, robiącą cokolwiek i korzystającą z czegokolwiek, a potem użyć ją w nowym języku. Chciałbym tylko uniknąć kilku równoległych światów czyli np. 5 różnych zestawów klas dla GUI itp. 
[#48] Re: Prace nad API2 - nowy język programowania

@BigBang, post #45

A prostota programowania nie może być celem samym w sobie, bo to zawsze ma jakąś cenę. Używanie dowolnego frameworka w dowolnym języku ogranicza, bo zawsze, prędzej czy później, napotkasz coś czego nie da się zrobić i trzeba kombinować, aby obejść narzucone ograniczenia. Coś za coś...


To wszystko zależy od tego jakie ma się komponenty do dyspozycji, ale nawet jakby się zdarzyło że nie da się czegoś zrobić to pozostawiam możliwość dopisania kodu w C.

Jakoś trudno mi sobie wyobrazić programowanie na Amidze bez wiedzy jak np. działa Intuition?


Spójrz na przykłady, które opublikowałem wcześniej

http://api2.trifle.eu/demos.html 

Z tą optymalizacją "w locie"...


Tak, wiem jak to działa.

Zapytam jeszcze, bo mnie ciekawi - skoro uważasz, że C jest zbyt trudne (bo jest, zwłaszcza na początku), to jak oceniasz E?


Nie programowałem w E, gdy się pojawiło to popatrzyłem na nie i odniosłem wrażenie, że to C inaczej i nie wnosi jakieś znacząco nowej wartości.
[#49] Re: Prace nad API2 - nowy język programowania

@smith, post #48

Mi tam E się spodobało, szkoda że nie rozwijało się...
A patrząc na te przykłady, to na razie też jest takie "C inaczej", są wskaźniki, jakieś nowe słowa kluczowe. Dla mnie oczywiście C jest lepsze, bo znam. Nie potrafię sobie wyobrazić, jak by było, gdybym świeżo po skończeniu jakiejś socjologii postanowił zabrać się za programowanie (mniejsza o to, że na Amidze ;)
[#50] Re: Prace nad API2 - nowy język programowania

@BigBang, post #49

To co jest na stronie http://api2.trifle.eu/demos.html to C, nowe słowa kluczowe to makra, widać też wywołania funkcji z frameworku. W poście na Patreonie https://www.patreon.com/posts/new-language-and-31509016 jest informacja o nowym języku i są pokazana przykłady kodu w nim. I w C i w nowym języku można korzystać z frameworku API2. To tak tytułem wyjaśnienia.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem