Bejelentkezés

Keresés a fórumban

Kulcsszó
Telepítés (rendszer, szoftver)

TÉMA: Az UPU programozási nyelv

Az UPU programozási nyelv 2017 aug. 29 05:11 #2246

  • FossilCodger
  • FossilCodger profilkép
  • Nem elérhető
  • Arany fokozatú fórumozó
  • Hozzászólások: 200
  • Köszönetek: 6
  • Karma: 0
Hehe, sziasztok, rég jártam itt. Szóval, az elmúlt hetek (hónapok...) nem teltek el hiábavalóan! Programozást tekintve sem.
Tudjátok, hogy sokféle nyelvvel kísérleteztem eddig. Vagy túl lassúak lettek a céljaimhoz, vagy elfogadhatatlanul macerásnak ítéltem meg a használatukat. Nekem tulajdonképpen tetszett legelső nyelvem, a "mau", csak nem volt elég gyors, sem elég könnyen bővíthető.

Nos örömmel közölhetem, hogy végre-valahára sikerült megalkotnom egy olyat, ami eleget tesz mindegyik kívánalmamnak! A pí-számító tesztben kb 6-szor vagyok csak lassabb mint a natív kód, ami csodálatos eredmény! A kód is egészen tiszta, világos, átlátható (mármint, a programnyelvet megvalósító C++ kódról beszélek), és nagyon robusztus, ugyanis alig van benne más mint egy rakás belső ugrótábla. Tehát könnyedén bővíthető, s e jövőbeli bővítések nem fogják lassítani a már benne levő feature-öket. Ami viszont a legcsodálatosabb az egészben: gyakorlatilag a szintaxist illetően egy refaktorált mauról van szó! Nem pontosan ugyanaz a szintaktikája, szóval nem kompatibilis vele, de aki laikus ránéz, azonnal azt mondaná, hogy ez egy mau nyelv TERMÉSZETESEN!
Szóval hihetetlenül hasonló. És ez remek dolog nekem, mert SZÁMOMRA ez valahogy kényelmes, magától értetődő!

Gyakorlatilag tehát most az van, hogy mert a nyelvem kellően gyors, nem kell külön „gépi kódot” írnom, amire majd a magam nyelvét lefordítom, hanem ettől a nagy melótól megmenekülök, mert leendő virtuális gépem assembly nyelve maga ez az UPU lesz (a refaktorált mau), a „gépi kód” pedig nem más, mint ezen UPU nyelv tokenizált változata (azaz, a „virtuális bájtkód”).

Véleményem szerint bonyolultságban, „magas szintűségben” e nyelv valahol az assembly és a C nyelv (nem a C++ csak a sima C ) közt van, de közelebb a C-hez mint az assemblyhez.

Érdekességképpen a pí-számító progi leggyorsabb változata:
@k [<|>]
#d @p 0. @n 1. @s 1.
{| 3000000 @p+= @s+/- / @n++++ |}
@p *= 4.
#g @K [<|>] -= @k "Idő = " ? " tick" NL
#d "Pí közelítés : " @p ??

Természetesen, a nyelvem tud ugróutasításokat is, szubrutinhívásokat, címkéket kezelni is, beágyazott alprogramokat amiknek külön névterük van, meg van még jópár más jósága is, amikről csak amiatt nem lelkendezek itt hosszan mert úgyse érdekel a kutyát se, jól tudom, sőt, nagy eséllyel már az eddigiekért is megkapom majd a kiosztásomat hogy túl bő lére eresztve fecsegek.

Mindegy, lényegében csak azt akartam közölni, hogy ami a programnyelvet illető célomat illeti, azt ELÉRTEM. Most következik egyrészt a doksiírás, másrészt a következő cél: a virtuális gép. Ja, ahhoz is készen van már a grafikus motor...

Programming is like using toilets; you can't say you are done until paperwork's finished!
Nyilvános megtekintési jogosultság letiltva.

Az UPU programozási nyelv 2017 szept. 14 12:51 #2253

  • FossilCodger
  • FossilCodger profilkép
  • Nem elérhető
  • Arany fokozatú fórumozó
  • Hozzászólások: 200
  • Köszönetek: 6
  • Karma: 0
Csaxólok, megvagyok az eddig leprogramozott részek dokumentációjának elkészítésével. Most a következő nagy feladatom az, hogy megalkossam a memóriamenedzseléshez szükséges eszközkészletet. Ezalatt azt értem, ami a virtuális gépem heap-jét kezeli, lehetővé téve így a dinamikusan allokált objektumok használatát. Nagyon beleástam magam a témába eddigre, mert legfőbb gondomnak nem is azt tartottam, hogy ezt megoldjam, végeredményben technikai értelemben nem egy marha nagy dobás, hanem hogy HOGYAN. A gondom ugyanis nem az hogy működjön egyáltalán, hanem hogy a memória idővel óhatatlanul töredezni fog, s ezt a jelenséget kezelni kell valahogyan. Erre többdéle módszer létezik, de mindegyiknek van valami rákfenéje, hol itt fáj, hol ott fáj. Azt hiszem végül sikerült kitalálnom azonban valamnit, ami ha nem is tökéletes (tökéletes megoldása e kérdésnek nincs, mert mindennek van valami hátránya) de a céljaimnak talán mégis a legmegfelelőbb lesz. Szóval most ezt kell leprogramoznom.

Készül tehát már a Drágaszág, készül Mordor tüzében...

Egy szkriptnyelv mind fölött... a Hatalom programnyelve, hehehe...

Programming is like using toilets; you can't say you are done until paperwork's finished!
Nyilvános megtekintési jogosultság letiltva.

Az UPU programozási nyelv 2017 szept. 17 03:19 #2254

  • FossilCodger
  • FossilCodger profilkép
  • Nem elérhető
  • Arany fokozatú fórumozó
  • Hozzászólások: 200
  • Köszönetek: 6
  • Karma: 0
Hm, a végén még sikerülni fog, hehehe... Egyelőre úgy tűnik, működik a memóriatöredezettségmentesítőm... És még csak nem is bonyolult. Ja, SAJÁT algoritmus... Sehonnan se csórtam, „from scratch” a saját fejemből van az egész.

Programming is like using toilets; you can't say you are done until paperwork's finished!
Nyilvános megtekintési jogosultság letiltva.

Az UPU programozási nyelv 2017 szept. 19 04:04 #2255

  • FossilCodger
  • FossilCodger profilkép
  • Nem elérhető
  • Arany fokozatú fórumozó
  • Hozzászólások: 200
  • Köszönetek: 6
  • Karma: 0
Teljesen kész a dinamikus memóriakezelés. Én is kész vagyok, fáradt... De megérte! Alaposan le is teszteltem... Immár semmi akadálya annak, hogy bonyolult, összetett belső szerkezetű objektumokat kezeljek. Dinamikusan, természetesen... Van allokátorom, deallokátorom, memóriatöredezettségmentesítőm amit direkt módon is hívhatok a programból, és a heap minden létező tulajdonságát is lekérdezhetem a programból. Sőt, szabályozhatom azt is, mekkora legyen a „heap” mérete, és mennyi legyen fenntartva stacknak, illetve legyen-e ezek közt valamiféle „rejtett” terület, mennyi legyen a memóriadeszkriptorok maximális száma, stb...

Most jön a programnyelvírás egyik leghálásabb és legizgalmasabb része (megint...): a funkcióbővítés! Előbb implementálnom kell a C++ nyelven már meglevő stringosztályom szokásos funkcióit a nyelvembe, azután jön egy ennél messze izgalmasabb dolog: általános interfész definiálása az alprogramok számára...

Reszkessetek! Olyan remek nyelv lesz ez, hogy ezen lesz újraírva a pulseaudio és a systemd meg a Grub2 is! Hehehe! Meg ezen lehet csak szkriptelni majd a firefoxot, s azontúl FearFox lesz a neve, hihihi!

Programming is like using toilets; you can't say you are done until paperwork's finished!
Nyilvános megtekintési jogosultság letiltva.

Az UPU programozási nyelv 2017 szept. 21 02:57 #2256

  • FossilCodger
  • FossilCodger profilkép
  • Nem elérhető
  • Arany fokozatú fórumozó
  • Hozzászólások: 200
  • Köszönetek: 6
  • Karma: 0
Hogy én milyen peches vagyok... Kezdhetem megint... No nem, nem, ne ijedjetek meg: nem a programnyelv írását kell kezdenem, elölről... Hanem kezdhetem megint a doksi-írást! Azt se elölről, de folytatni... Azaz, túl gyorsan haladok a fejlesztéssel, ideje madyarszky szavakba önteni az eredményeimet, ami ugye a dinamikus memóriakezelést illeti... Mert tudjuk jól:

A programozás olyan, mint a WC-használat. Egyik tevékenységnek sincs vége, amíg a papírmunkát is el nem végeztük... (C) Mr. Fossil Codger

Programming is like using toilets; you can't say you are done until paperwork's finished!
Nyilvános megtekintési jogosultság letiltva.

Az UPU programozási nyelv 2017 szept. 22 14:34 #2257

  • FossilCodger
  • FossilCodger profilkép
  • Nem elérhető
  • Arany fokozatú fórumozó
  • Hozzászólások: 200
  • Köszönetek: 6
  • Karma: 0
Felfedeztem a rosettacode.org webhelyet! Eszméletlen mik vannak ott... Remek gyűjtemény, elhatároztam hogy szépen végigmegyek a feladatokon, s amire a nyelvem alkalmas, meg is írom rá a példát. Ez remek tesztsorozat lesz a nyelvem használhatóságára. Amire meg a nyelvem nem alkalmas, azt rögtön látni fogom, vagy ha e korlátba nem akarok beletörődni, belefejlesztem az új képességet...
Csak úgy hamarjában 6 példát már meg is csináltam, két feladatot több variációban is.

Programming is like using toilets; you can't say you are done until paperwork's finished!
Nyilvános megtekintési jogosultság letiltva.
Oldalmegjelenítési idő: 0.154 másodperc