Huomio! Tämä projekti on siirretty automaattisesti vanhasta projektijärjestelmästä. Aloitusviesti on projektin kuvaus sellaisena, kuin se oli 13.7.2010, ja seuraavat viestit siirtoon saakka ovat kommentteja.
osBasic oli alunperin yritykseni luoda tinyBasic klooni. Syödessähän tunnetusti nälkä kasvaa joten kun projektini oli jokseenkin valmis, innostuin lisäämään siihen jos jonkinlaista lisää.
Tarkoituksena ei ole kuitenkaan tehdä nykyaikaista ja tehokasta Basic tulkkia vaan lähinnä kokeilla omia rajoja ohjelmoijana sekä mahdollisesti saada aikaan tulkki, joka antaa samanlaisia fiiliksiä kuin ensimmäiset kokemukseni MSX-, ja Gw-Basic aikoina. Tosin komentojen ja funktioiden määrä ei tule nousemaan samalle tasolle.
10 PRINT "MORJENS MAAILMA" 20 LET A% = A% + 1 30 IF A% < 10 THEN GOTO 10 40 END
Versioita:
Aiemmin on jo tullut tehtyä yksi versio yabasic:lla mutta kun hommasta tuntui tulevan jotain niin siirryin FreeBasic:n puoleen.
Ver. 0: Lähinnä omaan tutkiskeluun kuinka homman voisi tehdä. yaBasic koodi toimi ihan ok ja oli tulkatuksi tulkiksi ihan kivasti toimivakin.
Ver. 1: Demo. Joitain komentoja ja funktioita. Ei mitenkään hurjan nopea. Hävisi muistaakseni jopa vahnalle Gw-Basicille jota ajettiin dosboxin kautta.
Ver. 2: Toinen demo sisälsi 16 komentoa ja 20 funktiota. Myös FOR...NEXT silmukka on jo mukana vaikka suunnittelin sitä vasta myöhemmin toteutettavaksi. Nyt oltiin jo nopeampia kuin se Gw-Basic :)
Release Candidate 1 on nyt ulkona. Sen voi ladata osoitteesta http://www.basicprogramming.org/ekv_files/osBasic/osBasic_rc1.zip
Release Candidate 2 on "valmis". Se on ladattavissa vain lähdekoodina, binaareja siitä ei ole tarjolla tällä hetkellä. Tarvitset siis FreeBasic kääntäjän voidaksesi kokeilla osBasiccia. Url; http://code.google.com/p/osbasic/
osBasic 0.9 on vihdoin saatu aikaiseksi. Nyt kun muut projektit ovat poissa haittaamasta niin tätäkin saanee taas työstettyä :) http://www.basicprogramming.org/ekv/osbasic.php
Muuta:
Tässä vaiheessa lienee hyvä sanoa että olen ehkä keskitason harrastelija mitä ohjelmointiin tulee. Näin ollen ei siis ole tiedossa mitenkään hienoa ja erikoista tulkkia vaan yksinkertainen basic tulkki. Sitten kun sorsat aikanaan annan jakoon niin moni kokeneempi tuleekin varmaan toteamaan että "voi voi" ;)
En ole tutustunut tulkin rakentamisen ideologiaan oikeastaan millään tasolla vaan tehnyt homman lähinnä FreeBasic dokumentaation ja maalaisjärjen avulla. Joten omituisuuksia on takuuvarmana luvassa.
Lataus:
Windows/Linux/DOS32bit binaarit + yksinkertainen dokumentaatio + joitakin esimerkki koodeja: osBasic_demo2.zip 167k
Englanniksi jonkinlaista keskustelua basicprogramming.org foorumilla. Tulen päivittämään tätä sivua myös aktiivisesti, miten kuten homma edistyy.
Päiväkirjaa:
16.06.2008: Kesäloma loppui kuten myös Suomen kiertäminen joten jatketaan tämänkin parissa taas. Hassua miten helposti sitä unohtaa ja pitää käydä koko koodi läpi kun vain parikin viikkoa on sitä katselematta.
20.06.2008: No niin. Funktiot jotka itse syntaksia purkavat ja toteuttavat ovat varsin hyvin mallillaan. Itse "moottori" sen sijaan tulee kokemaan vielä suuria muutoksia. Nyt jokainen koodinpätkä (erottimena rivinvaihto tai ":") on omassa solussaan taulukossa mutta muutan niin että itse komento on omassa solussaan ja parametrit omassa. Tämän pitäisi nopeuttaa hommaa aika kivasti.
22.06.2008: "Puhtaaksi" kirjoitus etenee. Moottori on jokseenkin mallillaan, kommentointiakin olen jopa saanut aikaiseksi. Muuttujien ja silmukan käyttö menee vielä hieman uusiksi. Nopeasti arvioituna on osBasic nyt ehkä 30% nopeampi kuin edellinen demo.
Työt ikävästi häiritsevät mutta josko loppupuolella ensi viikkoa sitten saisi jotain julkaistua. Jos ei niin sitten joskus myöhemmin.
08.07.2008: On se vaan kumma kun mikään ei tyydytä orpoa ohjelmoijaa? Käytännössä demo3 oli jo valmis, mutta sitten sain päähäni lähteä käymään koodia vielä kerran läpi ja lopputuloksena on taas iso muutos edessä. Eikö sitä voisi olla tyytyväinen jo saavutettuun sen sijaan että aina vaan viäntää ja kiäntää?
Väännän nyt sitten vielä aloittamani muutokset. Putoaahan siinä sorsan koko hieman mutta muuten ei niin merkittäviä muutoksia ole tiedossa. Luulenpa että demo3 jää väliin (siis nimellisesti) ja julkaisen tämän sitten saman tien beta versiona ulos.
Aikataulua en uskalla sanoa minkäänlaista. Olen oppinut sen että kun talossa on 10vkoa vanha lapsi, aikatauluja on aivan turha tehdä. Olen myös aikeissa vaihtaa pöytäkoneesta kannettavaan joten sekin saattaa hieman tuoda viivettä.
Projekti kuitenkin etenee hyvää vauhtia, vaikka sitä ei ehkä täällä huomaa.
Lueskelin eilen C++ kirjaa ja jotenkin alkoi kiehtomaan projektin veivaaminen sille. Mutta sitä ennen kyllä viimeistelen tämän ensiksi tällä FB:llä. Ehkä sitten osBasic Redux aikanaan koodataan C(++) kielellä.
27.08.2008: Dodiin sano. Koodi vihdoinkin käytännössä valmista. Eihän siinä mennytkään kuin "hetken" pidempään kuin oli aikomus.
Nyt onkin jäljellä enään se vähiten innostava osuus, eli koodin parsiminen jonkinlaiseen organisoituun muotoon ja kommentoiminen, joka on jäänyt pahasti retuperälle epämääräisten ja vaikeahkojen aikataulujen takia.
Vieläkin tekisi mieli vähän tehdä muutoksia sun muuta mutta antaapi olla.
Loppuviikko lomailua kaikesta koodinvääntämisestä. Jos työt, emäntä ja penska suovat, ensi viikolla saan aikaiseksi tarttua lopputyöhön hyvällä innostuksella.
12.11.2008: No niin. Siten siinä kävi että kun amatööri lähtee tekemään on tuloksena purkkaa. Huomattavasti pätevämmän kaverina kanssa purkkaa korjattuani ja keskusteltuani, tulimme tulokseen että mikäli haluamme edes jonkinlaista jatkokehitystä järjellisissä määrin, pitää homma suunnitella alusta.
Toisin sanoen, vanha viisaus "hyvin suunniteltu on puoliksi tehty" pitää jälleen paikkansa.
Harmittaahan tuo että koko p*ska pitää aloittaa alusta, toisaalta se jotenkin motivoi jopa aiempaa koodia enemmän. "prkl nyt mä teen siitä niin hemmetin hyvän..." kaikuu päässä. Kokeneemmat tuntenevat tunteen?
Homma ei siis todellakaan ole jäissä, vaan se ainoastaan halutaan tehdä hyvin. Jopa C/C++ kielien käyttäminen freeBasicin sijaan oli tuossa jo hyvän aikaa harkinnassa, mutta en tätä siirtoa ollut halukas tekemään.
18.12.2008: Hyvää syntymäpäivää minulle :P
Noniin, pa*kamaisin homma on ohitse. Ennen tulkki luki koko koodirivin ja siitä haki lauseen kerrallaan vaan nyt koodi puretaankin niin että aina yksi lauseke on omassa solussaan ja sen noutaminen sujuu n^o kertaa nopeammin. Itseasiassa 9999 riviä joissa kussakin oli 16 'print' lausetta käytiin läpi alle kahdessa sekunnissa. Nopeammin siis kuin vanha kykeni 999 rivin kanssa.
Vanhan version funktioiden ja komentojen hallinta onkin ihan mallillaan joten sen porttaan suoraan tähän uuteen. Muuttujien nimiä ja sen sellaista pitää vaihdella. Tosin ainahan niitä yllätyksiä sattuu mutta ainakin _uskoakseni_ mitään suurempaa ei ole tiedossa.
Joulu on kuulemma ihmeiden aikaa joten mene ja tiedä. Lupaa en kuitenkaan mitään kun olen tosiaankin huomannut että perheellisen ja työssä käyvän ei niin kannata kovinkaan helpolla tehdä.
19.12.2008: No mutta. Koodi on parsittu kasaan IF...THEN lauseketta vaille. Kaikki muut komennot ja funktiot toimivat enkä ainakaan pikaisilla testeillä löytänyt ensimmäistäkään bugia. Ehkä joulu on ihmeiden aikaa. Lupauksien totuusarvo on siltikin edelleen tasan 0.
28.12.2008: Pistin linkin seuraavaan versioon, jonka typerästi nimesin Release candidate ykköseksi. Kuume ja keuhkoputkessa jylläävä pöpö pitävät tämän viestin lyhkäisenä. Päk to bed -->
13.07.2010: Kas, osBasic 0.9 on sitten "released". Sorsat ja binaarit sekä wintoosalle että linuxille jaossa @ http://www.basicprogramming.org/ekv/osbasic.php
Mielenkiintoinen projekti. Seurailen tätä mielelläni. :)
Jaaha, että tällainen sitten. Olen kinnostunut :)
Joskus yritin itsekkin tehdä tuollaista, ja jotenkin onnistuinkin. Mutta enpä sitä enää ole kehitellyt.
Nyt vain väkertämään HTML- tulkkia QB:lle ;) (aloitin jo :P)
EDIT: Korjattu. Tuli ajatusvirhe :P
gamehouse kirjoitti:
Nyt vain väkertämään HTTP- tulkkia QB:lle ;)
tarkoitatko html:ää? Http on tiedonvälitysprotokolla, ei siihen mitään "tulkkia" voi tehdä.
Jos gamehouse yritti viitata tekevänsä http palvelimen basic kielellä? Muistan joskus nähneeni moisen toteutettuna jopa bash komentotulkin scripteillä.
Iekki oon tehny vähä samantyyppisen Qbasicilla. Nanobasic. Nykyää sisältää jopa 6 komentoa PRINT INPUT LET IF THEN ja GOTO
PS. Taas! Minulla on projektit EMS ja osBasic. EMS on komentotulkki ja osBasic on Linuxin komentoriviscripteillä toteutettu Basic.
@nörtti: Tuo sinun osBasic kuulostaa mielenkiintoiselta. Saako sitä kokeiltavaksi jostain?
Milölä kielellä toteutat tätä projektia? Tyhmä kysymys, mutta en tiedä oikeestaan yhtään miten tämän tyylisiä projektia tehdään...
ipas epäselvä...
Siellähän se lukee että käytän tällä hetkellä FreeBasic kääntäjää ;)
No niinhän siellä lukee... Olen sokea.
Päiväkirjaa lisätty: 08.07.2008
Voi olla vaikea tehdä c++, jos et ole koskaan aikaisemmin c++ koodaillut...
Mut toivottavasti onnistut projektissa.
Edit typoja
vehkis, aivan totta. Nyt ei paukut riittäisi millään, varsinkin kun projekti on vielä kesken tuon tutunkin ohjelmointikielen osalta.
Tuo jutteluni olikin lähinnä teoreettisella tasolla, että olisi kiva nähdä paljonko tulkki piristyisi C++ kielellä toteutettuna.
E.K.Virtanen kirjoitti:
@nörtti: Tuo sinun osBasic kuulostaa mielenkiintoiselta. Saako sitä kokeiltavaksi jostain?
Ei toistaiseksi mutta aion ehkä antaa jakeluun version 0.03(olen versiossa 0.025)
Mites homma edistyy?
Edistyy edistyy. Pidin lomaa perheen kesken tuossa viikon verran jolloin en käytännössä koneeseen edes koskenut.
Käytännössä homma on muuten bueno, mutta tuota tiedostosta muistiin lukemista ja koodin parsimista siinä vaiheessa vielä tuumailen. Nyt on alla ihan toimiva systeemi mutta se on sen verran purkkaa että pähkäilen vielä josko sen jotenkin toisin tekisin.
Jos en nyt muutamassa päivässä saa mitään järkevämpää suunnitelmaa aikaan niin se tulee sitten hieman purkkana ulos. Toisaalta eihän se kehittelyä estä vaan pikemminkin päinvastoin.
missä vaiheessa ollaan menossas?
No käytännössähän tuo seuraava versio olisi suurinpiirtein valmis julkaistavaksi.
Mieteinkin että jotain olen unohtanut, ja nyt sen keksein kun täällä tulin pyörähtämään.
Eli hommassa on mukana nyt toinenkin kehittäjä. Koodi on nyt hänellä ollut ehkä viikon verran ja odottelenkin palautetta siitä. Hän hyppää mukaan hommaan täysillä vasta sitten tämän seuraavan julkaisun jälkeen (muuten saattaa tulla yet another viivytys).
Vaikka täällä on hieman hiljaisempaa, niin kehitystä ja edistystä tapahtuu emännän ja esikoisen sallimissa rajoissa varsin mallikkaasti.
Onkos käytössä ihan itse kirjoitettu lexeri ja parseri vai käytätkö jotain generaattoria, kuten lexiä ja yacc:tä?
Kaikki on tehty omin käsin alusta loppuun. Sen takia tässä nyt kestää ja kestää ja kestää... :D
Harmi... No toivottavasti valmistuu jossain vaiheessa. :D
vehkis91: Valmista tulee aivan varmasti, tasolla tai toisella ellei noutaja sitten satu tulemaan vastaan sitä ennen.
Tässä vaan saattaa tulla aina parinkin viikon taukoja aina välillä kun tuo "real life" pistää sen verran kiireiseksi ja väsyksiin. Myöskin tuo kaveri jonka piti tulla hommaan mukaan joutui nyt haastavaan projektiin työn puolesta joten homma jäi taasen meikäläisen harteille.
Tosin tässä nyt enää mitään kummempaa olekaan enää...energiasta se loppu on enää kiinni.
Esimerkeissä, jotka käyttävät for-looppia, ohjelman loputtua tuli microsoftin virheilmoitus (osbasic.exe has encountered a problem...).
Terve Pilari ja tattista informaatiosta. Itselläni ei ole wineä kummempaa tuohon windows testailuun joten on jäänyt tuo bugi huomaamatta.
Vika johtunee itse kääntäjästä, ei sorsastani. Palaan astialle jahka olo helpottuu.
RC2 lähdekoodi laitettu tyrkylle. Kokeilkaa ken haluaa mutta elkää pelästykö ;D
osBasic joutuu nyt tauolle isomman verran. Harmi, koska olin jo varsin lähellä.
Kasvava perhe ja työt kuitenkin rajoittavat sen verran elämää, että kykenen ehkä tunnin kaksi koodaamaan viikossa. Sorsat pidän tallessa, josko joskus saisin hommaa jatkettua. Tosin silloin varmaan alkanen alusta...
0.9 julkaistu.
Versio 1.0 @ https://sites.google.com/site/bungytheworm/blog/
Pari bugia on löytynyt, korjailen lähitulevaisuudessa. Tämä projekti siis tuli tehtyä loppuun, vaikka kaikki mahdolliset vastustukset tulikin koettua.
Aihe on jo aika vanha, joten et voi enää vastata siihen.