Skocz do zawartości

Force Script Language


Force

Polecane posty

Żadny procesor nie ma wbudowanych żadnych zmiennych... ;]
Oczywiście miałem na myśli koprocesor ;p

Ja wiem jak wyglądają te integery i floaty typu IEEE, ale chciałem tylko pokazać, że rzeczywiście będzie wolniej, a nie "dlaczego".

 

Aktualne koprocesory liczą na zmiennych podwójnej precyzji zamiast pojedynczej (double/float). Zmienne o pojedynczej precyzji są zamieniane na podwójną, potem są wykonywane obliczenia, a na koniec z powrotem są wrzucane do 4bajtów

Pozdrawiam,

vo7 (;

Link do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 80
  • Created
  • Ostatnia odpowiedź

A ja sie pytam gdzie byli rodzice gdy: "the 80x87 data types. Delphi fully supports the the single, double, and extended precision native floating-. point formats provided by the 80x87 coprocessor" ?

 

co oczywiscie nie jak sie ma do pytania Wosiedem ale nie moglem sie powstrzymac

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Łoł ,przejrzałem kody źródłowe i jestem zaszokowany ...Co za kod ..

 

Dobrze ,że ja mam luzik ,bo by było ...

 

Force ,skorzystał z pewnego patentu ,jaki miałem ja dac na początku ..A ten patent to taki ,że analizuje każdy znak ,a potem tworzy z tego odpowiednie słowa i analizuje ...

 

Na początku też miało być coś takiego ..Ale budowa mojego języka pozwala na inne bajery ,wieć jest analiza po słowach bezpośrednio ,a nie tak jak ma to Force ...

 

Przykładowo ,funkcja ActionVariable ,wywołana z parametrem kodu ,robi takie zeczy z tym kodem

 

Powiedzmy ,że jako parametr dałem instrukcje " $zmienna := "Jakis text" "

 

Funkcja teraz ,szuka operatora i znajduje ":=" .Potem według tego kod dzielę na 2 części Prawą ,gdzie jest treść ,która zostanie przekazana i lewa ,w której jest nazwa zmiennej ..

 

Teraz lewa strona jest analizowana ,w poszukiwaniu innych zmiennych i np napis $zmie$zmiennanna2 zostanie zmodyfikowany w $zmie1nna2 (zamiast $zmienna wpisaliśmy wartość tej zmiennej)

 

 

Wielki szacun ,za te kod ...

 

 

PS. Może dlatego ja mam inaczej ,bo ide na łatwizne ...

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Jacy wszyscy mądrzy się zrobili po lekturze Wikipedii tej en. czy pl. B)

 

@Toster: A ja się pytam: gdzie był moderator ;)

 

@Force: jak możesz wklejaj na czerwono, czy pogrubione "update" w pierwszym poście bo w tej "żywej" dyskusji trudno będzie cokolwiek znaleźć.

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Powklejam jak będzie update, na razie jest zastój przez uczelnię.

Dexarz - kompilatory mają 3 analizatory, leksykalny, syntaktyczny i semantyczny, leksykalny zwraca atomy języka, więc to żaden odkrywczy patent, ale normalna rzecz. Jakbyś się przyjrzał to byś zauważył, że są dwie klasy parserów, dla modułu i dla bloku z kodem i gdy ten od bloku wyczai, że teraz ma atom zmiennej to też się spodziewa :=, a potem średnika/else,/end-a kończącego, ale o wiele łatwiej użyć znowu metody GetAtom, niż szukać końca części prawej ponieważ część prawa może być w kilku linijkach, więc ja nie wiem w czym problem i tak prawą część przerobię. Mógłbym nie wczytywać od razu po słowie, ale to nie ma sensu bo i tak to muszę przerobić, a parser ONP przyjmuje tylko stringa, a nie kilka linijek. Ty masz o wiele łatwiej bo masz, że zmienna zaczyna się od $, a metoda od # i nie wiem czy masz moduły, zakresy widzialności itp.

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Zmienne od $ ,funkcje od # ,stałe od ! ,etykiety od @ i struktury & ...

 

U mnie też można dać prawą częśc do nastepnej linii ,dlatego też procka PrepareUnits ,robi porządek w kodzie ,czyli przesuwa odpowoednie elementy ...Zobaczysz jak jezyk będzie gotowy ...

 

 

PS. wo7 ..Czasem mam ..

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Możliwości języka nie zostały zwiększone, ale język został zoptymalizowany, teraz wywoływanie operatorów, przypisanie wartości do zmiennych oraz pobieranie zmiennych z pamięci jest w czasie stałym i nie zależy od własności Name zmiennej co przyśpiesza zwłaszcza gdy kod polega na wykonywaniu ciągle powtarzających się obliczeń, a nie na pisaniu po ekranie i ciągłym wywoływaniu małych metod.

Więcej w poście na blogu, którego adres jest w sygnaturze, ma ona tam także "myśl miesiąca", która coś sugeruje ;)

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Często czytając ten post postanowiłem również wziąć się za stworzenie języka lecz nie skryptowego... ;]

A dla Ciebie Force wielki respekt :) sam obecnie siedzę może nie nad analizatorem składni, co bardziej nad kompilatorem instrukcji pojedyńczych wpisanych w programie do kodu maszynowego... ;)

Na podstawie architektury Intel'a ;] kody 'opcode' itp... ;]

Trochę tego dużo i powiem tak: Sam chcę stworzyć język bazując się trochę na assemblerze (taki mix: jezyk wysokiego poziomu lekko podobny do assemblera) :) Co z tego wyjdzie jeszcze się zobaczy... rezultaty wkrótce...

Pozdrawiam i gratuluję stworzenia już i tak możliwego do użytku języka skryptowego.

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Wszyscy zabieramy sie za języki ,ale nie wiem poco ...Nie lepiej połączyć nasze siły i razem pracować nad jednym projektem ??

 

Ostatnio zacząłem pisać od nowa biblioteke argenty ,a to dlatego ,ze poprzedni kod był zagmatwany ,i po pół rku pozapominalem co i poco to było ...

 

Zacząłem pisać od nowa ,i tym razem robie wszystko po kolej ...

 

Najpierw procka przygotowujaca kod ,a potem praca nad instrukcjami ...w poprzednim kodzie nie było przygotowywania i z niewiadomych powodów program wykonywał niektóe rzeczy po kilka razy ,chociaż powinien tylko raz ...

 

Obecnie jestem na etapie pracy nad przygotowywaniem kodu ....Potem instrukcje zmiennych ,stałych ,funkcji,etykiet ,procek wewnętrznych ,pętli ,dynamicznością kodu i obsługą zewnętrznych bibliotek ...

 

Nie wiem ile mi to zajmie ..Do tego musze jeszcze pracować nad nowym silnikiem obliczeń ,który będzie pracował w Argencie ,bo obecny jest pamięciożerny ...

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Dexarz, czy swój kod kompilujesz do kodu maszynowego? czy do jakiegoś kodu, który później czytany jest przez "maszyne wirtualną"? :P

Wszyscy zabieramy sie za języki ,ale nie wiem poco ...

Ja kodze coś w stylu Assemblera... ;] na późniejsze potrzeby pisania OS-a

Obecnie umiem instrukcje typu:

KOD

$RegAH = 9;

ExeC(21);

 

zamienić na kod maszynowy i zapisać do pliku bin ;] (co do exe plików umiem już odczytać nagłówki DOS, COFF, PE)

Tyle jezeli chodzi o mnie.

A siły możemy połączyć... ;] tylko, ze mi chodzi by kompilator był przenośny... :) to też swoje dzieło piszę wyłącznie w czystym FPC.

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Czyli: "Dragon Book" :) u nas znana jako "Kompilatory - reguły, metody, narzędzia" (niestety nie ma u nas najnowszej edycji i pozycja jest już raczej trudna do zdobycia).

 

Masz tam definicje, przypisy, ćwiczenia, gramatyki, mało tego prezentowane rozwiązania są niezależne od platformy.

 

Lepie słuchaj Tostera, ma dużo lat i wie co mówi :D

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Jeżeli chodzi o mnie, to zerkam na rozwiązania z tej książki i porównuję z własnym typem rozwiązania (nie kod w niej zawarty, lecz teorię). Hmm czy trudno ją zdobyć ? w wersji elektronicznej raczej nie ma problemu:

torrent

A moje pytanie dot. użytkowników tej ksiązki:

Czy warto tworzyć kopię kolejnego kompilatora, który to ta książka pokazuje?

Jak już napisałem, staram się jak najmniej wiedzy czerpać z książki, a więcej własnych wymysłów wstawiać do kompilatora by stworzyć coś w sposób inny niż ta książka pokazuje.

 

Dzięki takiemu myśleniu i rozwiązaniom, czasami powstają innowacyjne rozwiązania :D

 

Pozdrawiam.

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

Raczej dzięki takiemu podejściu powstają najczęściej rozwiązania dużo gorsze od obecnie istniejących.

 

Kiedyś miałem różne podejścia do całokształtu "programistycznego". Dzisiaj jestem w miejscu, że aby coś było użyteczne dobre, stabilne i wydajne musi być (zazwyczaj) systematyczne i dobrze opisane, oparte na istniejących dokonaniach ludzkości jak to Toster napisał. Jeśli tworzyć innowacyjne rozwiązania trzeba wiedzieć czemu są innowacyjne, jaką mają przewagę od istniejących rozwiązań i jak to można uargumentować.

 

PS. To tak jakbym nie przeczytał książki o "kole" i zaproponował jako innowacyjne rozwiązanie "kwadrat" u osi napędowej pojazdu xD

 

PS. PS. Moim zdaniem innowacyjności człowieka nie zmienia na gorsze ilość wiedzy z książek. Co najwyżej może ją spotęgować. Jak ktoś nie jest innowacyjny to i tak innowacyjności się nie nauczy.

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

Uić ...

 

Toster to dobry typ ...

 

 

Argenta jest wykonywana on-the-fly ...Nie ma kodów maszynowych ...taki jakby PHP tylko że inna budowa i mniej rozbudowane ...Ale moim tempem ,to argenta pojawi sie na kilka lat ...Przecież ,ja nic nie roie od 5 miesięcy no ...

 

 

Można by i współpracę ,ale robimy całkiem inne rzeczy ...

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Wow, nie wiedziałem, że uda mi się zainspirować do takiego off topica.

Cubimeister: ja piszę po to aby go używać w projektach, takie mam założenia, poza tym dziś już oddałem jako projekt na kompilatory. No ale nie o tym tu chciałem..

Wyszła nowa wersja, ma case-a, pliki pośrednie, definiowanie wartości stałych i zmiennych wyrażaniami matematycznymi i różne poprawki. Case używa drzewa AVL, na FP nie pójdzie pewnie no ale trzeba mieć case-a szybszego niż if-y.

Wszystko w linku ze stopki wraz ze złotą radą na ten wiek ;)

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

CYTAT(Cubixmeister)@Dexarz: PHP generuje bytecode i dopiero jego wykonuje, poczytaj sobie o ZEND Engine

Czytaj uważnie, czy Dexarz pisze coś o stworzeniu drugiego PHP? On tylko swoje skrypty chce do PHP upodobnić, a tak jak pisze: "Argenta jest wykonywana on-the-fly" chce skrypty Argenty wykonywać nie przetwarzając na pośredniaka :), a w locie... ;] .

Czego wam brakuje w innych? To może nie jest wynajdywanie koła od nowa?

Może kodzi bo lubi :), a nie bo musi, by coś za to mieć ($).

 

Cubix, głupio pisać, ale każdy w tym i Ty chce coś napisać i na 99% takie coś już istnieje, więc stwierdzenie "wynajdywanie koła od nowa" tyczy się również i Ciebie.

Prawdziwy programista wiesza sie wraz ze swoim programem.

Link do komentarza
Udostępnij na innych stronach

pozostaje dodać :

 

gl & hf :D

 

w końcu pisanie języków to nic innego jak edukacja, tylko nieco bardziej ambitna ;)

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

  • 3 weeks later...
  • 4 weeks later...

Choć wszystkie żuki gnojady już poumierały to FSL ma się dobrze, nawet urodziła się wersja 0.1.7. Ważniejsze zmiany:

- szybki obwód, a innymi słowy: gdy np. A or B i A =true to B się nie liczy.

- sekcja type z możliwością definiowania własnych typów jako a = integer lub B=A. Można definiować tablice, ale nie można ich używać (nie gotowe).

- nowy typ char, który na razie działa jak string o długości 1, ale nie działa s[3]=s. To będzie w 0.2, jednak już należało dodać nowy typ.

- inne mniejsze zmiany i poprawki (choć czasami krytyczne).

Zachęcam do testowania, oglądania i bycia żukami. Więcej na blogu wraz z linkiem do pliku

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

jedna uwaga odnosnie shortcutow (zwanych u ciebie obwodem):

Powinna byc mozliwosc wylaczenia tego, np. jak w delphi $B-, lub jak w javie && -> &. Dlaczego ? ano bo moze to prowadzic bo smutnych bledow

 

boolean b = Func1(a) and Func2©

przy zalozeniu ze a, i c sa przekazane przez var i moga byc modyfikowane przez Func1 i Func2.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...