CoolBasic V3: Esittely

CoolBasiciin yleisesti liittyvä keskustelu.
Locked
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: CoolBasic? kuollut? eheei ole...

Post by Koodiapina »

Oliot helpottavat ohjelmointia, kun täytyy hallita suuria määriä tietoa. Luokat voivat periä toisiaan, eli voit tehdä luokan nisäkäs ja periyttää luokat koira ja kotikissa siitä. Kaikesta tulee yksinkertaista, eikä samoja ominaisuuksia tarvi kirjoittaa uudestaan miljoonalle eri luokalle. Sitten luokkiin pystyy tallentaa taulukoita ilman purkkaa. Sitten on nämä public, private, protect & friend jutut, joista en osaa sanoa mitään. Periytyvyyteen kai nekin vaikuttavat. Sitten on polymorphausta, malleja ja kaikkea mistä joku viisaampi saa kertoa :D
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by SPuntte »

Ruuttu wrote:BTW, mitä eroja oliopohjaisessa syntaksissa on - sen lisäksi että se näyttää erilaiselta? Siis tarkoitan, että tuleeko koodista selkeämpää, onko se tehokkaampaa? Tai miksi ylipäänsä oliopohjainen syntaksi on parempi?
Oliosyntaksiseen kieleen on esimerkiksi helpompi kirjoittaa kirjastoja, jotka itsessäänkin ovat helppokäyttöisempiä. olioihin nimittäin voi piilottaa kätevästi dataa ja dataa käsitteleviä funktioita sisälle niin, että oliota käyttävän koodarin ei tarvitse tietää olion sisäisestä rakenteesta mitään. Tätä kutsutaan kapseloinniksi.

Esimerkiksi ChB:ssä ei ole sisäänrakennettua objektijärjestelmää kuten CB:ssä, mutta ChB:n viestiketjusta löytyy jo useampia oliokirjastoja CB:n objekteja ja animaatioita vastaaville rakenteille. Jutun hienous on siinä, että voit käyttää systeemiä miettimättä sitä, mitenkäs se kuvien piirto ja kierto tehdään tai miten määrätyssä kulmassa liikkuminen lisääkään x- ja y-koordinaatteja, jne..
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Zero »

Kysäisen vaan tässä, että kun CB V3 ilmestyy, kai beta 10.4 jää ladattavaksi? Jotkut kun eivät jaksa/ehdi/viitsi opetella olioita...
Voihan sen ladattavaksi jättää, mutta käytännössä sille ei ole olemassa tukea. En ainakaan aio linkittää sitä virallisille sivuille.

Oliot voivat tuntua vieraalta, mutta usko pois, ne ovat oikeasti paljon mukavampia koodata jahka omaksut niiden periaatteen.

Esimerkki:

Code: Select all

' Nykyinen CB
Global ukko
ukko = LoadObject("ukko.PNG")
MoveObject(ukko, 1)
DeleteObject(ukko)

Code: Select all

// Tuleva CB

// Ensin kirjoitetaan luokka
Public Class Hahmo
    Private _obj As CBOBJECT3D
    Public Function New() // Rakentaja (valinnainen)
        _obj.Load("ukko.3DS")
    EndFunction
    Public Function Kävele(matka As Float)
        _obj.Move(0,0,matka)
    EndFunction
    Public Function Delete() // Purkaja (valinnainen)
        _obj.Delete()
    EndFunction
EndClass

// Tämä on sitten pääohjelmassa
Dim ukko As New Hahmo
ukko.Kävele(1.0)
Delete ukko
Kaiken kaikkiaan CoolBasic V3 muistuttaa aika paljon Visual Basic .NET:iä.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by tuhoojabotti »

eikös se ollut niin ettei ole hyvä käyttää ääkkösiä koodatessaan?
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: CoolBasic? kuollut? eheei ole...

Post by Koodiapina »

tuhoojabotti wrote:eikös se ollut niin ettei ole hyvä käyttää ääkkösiä koodatessaan?
Onhan se hyvä totutella koodaamaan silleen. Sitten kun vaihtaa johonkin toiseen kieleen - joka ei hyväksykään skandeja - niin ärsyttävää kun kääntäjä (tai whatever) huutaa kun on kirjoittanut ainakin kahteenkymmeneen kohtaan ääkkös öökkös muuttujia.
User avatar
Zero
Lead Developer
Lead Developer
Posts: 727
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by Zero »

Vaikkei ääkkösiä suositellakaan käytettäväksi koodatessa, se on kuitenkin mahdollista CoolBasicissa. Myös muiden maiden erikoismerkit sallitaan, käytössä on koko UTF8-merkistö.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog
Khamûl
Member
Posts: 73
Joined: Sat Sep 22, 2007 8:46 pm

Re: CoolBasic? kuollut? eheei ole...

Post by Khamûl »

sitten kun tulee olioita, tullaanko luomaan aina javantapainen pääohjelma(public static void main(....),
ja jos tule niin voiko sen sitten tehä cb tyyliin yksinkertaiseksi, tyyliin gameloop{}.
:)
Will the highways on the Internet become more few? --G.W.Bush
atomimalli
Moderator
Moderator
Posts: 227
Joined: Wed Aug 29, 2007 3:55 pm

Re: CoolBasic? kuollut? eheei ole...

Post by atomimalli »

Suosisin mainia koska eihän kyseessä välttämäti ole peli vaikka pelintekokielestä onkin kyse.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: CoolBasic? kuollut? eheei ole...

Post by esa94 »

Tuli muuten Force Variable Declarationin rinnalle mieleen toinenkin erikoisuus, jolle kelpaisi vaikka nimi Force Strict Variablenames, jolloin ei voisi käyttää ääkkösiä enää muuttujien eikä funktioiden nimissä.

Toteuta funktiot muuten Luan tapaan, eli siis Luassahan jokainen funktio, objekti ja luokka ovat muuttujia, jotka sisältävät k.o. asian muistiosoitteen ja tiedon siitä, mitä tuossa osoitteessa on.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: CoolBasic? kuollut? eheei ole...

Post by koodaaja »

Main(). Niinjaa, ihan kiva varmaan. Mutta sinänsä täysin turha, koska se vain monimutkaistaa yksinkertaisia koodeja eikä se monimutkaisia yksinkertaista.

Aloittelijoita ajatellen - kun CB:stä kuitenkin puhutaan - ei olisi IMHO mitenkään erityisen hieno idea. Kun kirjoittaa ensimmäistä ohjelmaansa, ( puhun nyt omasta katsantokannastani, mikä voi täysin poiketa kaikista muista :3 ) ajattelee koodin pötkönä joka suoritetaan.

Alussa ei gosubeista saatikka funkkareista tajua mitään. Olen sitä mieltä, että CB:ssä 'suoritettavaa' koodia saisi olla muuallakin kuin funktioissa. Eli voit käskeä "ukko.Move 2" huoletta miettimättä siitä, onko se mainissa vai ei.

Lisäksi tässä pitäisi heti ruveta ottamaan huomioon myös muuttujien näkyvyysalue (vai mikä se hieno termi olikaan), koska se on kovasti sidoksissa tähän "missä funktiossa ollaan" -kysymykseen. Ja siinä vaiheessa pelottaa jo niin paljon, että siihen se jäikin.

@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: CoolBasic? kuollut? eheei ole...

Post by esa94 »

koodaaja wrote:@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Käsitellä sitä kuin mitä tahansa muuttujaa, ja silti tietää, mitä muuttujassa on. Jos siis esittelet ensin funktion Jee(), voit myöhemmin käskeä Lol=Jee (ei edes tarvitse sulkuja) ja tällöin muuttuja Lol sisältää funktion Jee, ja sitä voi käyttää yksinkertaisesti komentamalla Lol().

Lol.
User avatar
Ruuttu
Devoted Member
Posts: 688
Joined: Thu Aug 30, 2007 5:11 pm
Location: Finland, Sipoo

Re: CoolBasic? kuollut? eheei ole...

Post by Ruuttu »

Niin, tuota... Näistä muuttujien "näkyvyysalueista" tai mistä lie... Siis mikä pointti siinä on, että joku muuttuja ei "näy" tai ei ole olemassa jossain tietyssä koodilohkossa, tai että voi erikseen säätää, näkyykö muuttuja esim. funktiossa vai ei? Eikö olisi helpompaa, että jos en halua että tuo muuttuja näkyy tuolla, niin enpäs käytä sitä tuolla..? Okei, jos muuttujat olisivat samat kaikkialla, niin funktion sisällä ei voisi käyttää samannimistä muuttujaa kuin muualla koodissa, sillä hommat saattaisivat mennä sekaisin. Mutta eikö se mene vähän vaikeaksi ja aloittelijaepäystävälliseksi, jos kaikki muuttujat näyttävät nollaa koska koodari on unohtanut tehdä niistä "näkyviä" jne?

Näistä asioistahan en tiedä mitään, olen todennäköisesti väärässä. :lol:
mikeful
Moderator
Moderator
Posts: 523
Joined: Mon Aug 27, 2007 8:36 pm
Location: Vaasa, Finalnd
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by mikeful »

Olio-ohjelmointi selkeytyy erittäin nopeasti, kun sitä pääsee testaamaan käytännössä. Sen jälkeen ilman sitä ei tule enää toimeen. ;)
Pelejä: Pelasta puhe, Grinder
Muuta: Blogi, Twitter
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: CoolBasic? kuollut? eheei ole...

Post by Koodiapina »

Ruuttu: Jos kaikki muuttujat olisivat globaaleja / publickejä, niin eikös esim. jotain kirjastoa käyttävän elämä muuttuisi aika kamalaksi? :D Ei tietäisi mitä muuttujanimiä voisi käyttää ja mitä ei. Tai no, voihan kaikki muuttujat kirjoittaa tyyliin munkirjasto_x, munkirjasto_y, mutta sitten kirjastontekijän hermot menisivät.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: CoolBasic? kuollut? eheei ole...

Post by koodaaja »

Grandi: Namespacet ovat C++:ssa juuri tästä syystä.

Ja näkyvyysalueet ovat hieman mielenkiintoisia, mutta sanottakoon, että joka funkkarissa on omat muuttujansa ja niiden näkyväksi/näkymättömäksi tekeminen lienee suurimmassa osassa kielistä mahdotonta. ( näkyväksihän ne tulevat globaaliuttaan tai parametreinä välittämällä )
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: CoolBasic? kuollut? eheei ole...

Post by TheFish »

Ruuttu wrote:Niin, tuota... Näistä muuttujien "näkyvyysalueista" tai mistä lie... Siis mikä pointti siinä on, että joku muuttuja ei "näy" tai ei ole olemassa jossain tietyssä koodilohkossa, tai että voi erikseen säätää, näkyykö muuttuja esim. funktiossa vai ei? Eikö olisi helpompaa, että jos en halua että tuo muuttuja näkyy tuolla, niin enpäs käytä sitä tuolla..? Okei, jos muuttujat olisivat samat kaikkialla, niin funktion sisällä ei voisi käyttää samannimistä muuttujaa kuin muualla koodissa, sillä hommat saattaisivat mennä sekaisin. Mutta eikö se mene vähän vaikeaksi ja aloittelijaepäystävälliseksi, jos kaikki muuttujat näyttävät nollaa koska koodari on unohtanut tehdä niistä "näkyviä" jne?

Näistä asioistahan en tiedä mitään, olen todennäköisesti väärässä. :lol:
Esimerkiksi kaikki piirtämiseen liittyvät funktiot todennäköisesti käyttävät funktion sisällä muuttujia "x" ja "y". Mitenkä luulisit käyvän jos nuo muuttujat näkyisivät kyseessä olevan funktion ulkopuolelle? Ja onhan nuo näkyvyysalueet jo nyky cb:ssäkin.
CoolBasic henkilökuntaa
Kehittäjä
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by SPuntte »

esa94 wrote:
koodaaja wrote:@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Käsitellä sitä kuin mitä tahansa muuttujaa, ja silti tietää, mitä muuttujassa on. Jos siis esittelet ensin funktion Jee(), voit myöhemmin käskeä Lol=Jee (ei edes tarvitse sulkuja) ja tällöin muuttuja Lol sisältää funktion Jee, ja sitä voi käyttää yksinkertaisesti komentamalla Lol().

Lol.
Siis kaikki muuttujat ovatkin oletuksellisesti osoittimia. Ei kovin järkevää minusta. Sillä saa aikaan hajottavia virheitä, kun koodia on tarpeeksi monta tuhatta riviä, ja yksi operaattori kirjoitettu jossain väärin. Vähän niinkuin C:ssä kijroittaisit if(lol = true){...}, vaikka kuitenkin tarkoitit if(lol == true){...}. Miksei siis pitää osoittimia erikseen määriteltävinä? Jos CB v3 tukisi funktioihin osoittamista, tuo ominaisuus olisi ihan turha.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
jabanii
Member
Posts: 93
Joined: Tue Aug 28, 2007 9:23 pm

Re: CoolBasic? kuollut? eheei ole...

Post by jabanii »

SPuntte wrote:
esa94 wrote:
koodaaja wrote:@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Käsitellä sitä kuin mitä tahansa muuttujaa, ja silti tietää, mitä muuttujassa on. Jos siis esittelet ensin funktion Jee(), voit myöhemmin käskeä Lol=Jee (ei edes tarvitse sulkuja) ja tällöin muuttuja Lol sisältää funktion Jee, ja sitä voi käyttää yksinkertaisesti komentamalla Lol().

Lol.
Siis kaikki muuttujat ovatkin oletuksellisesti osoittimia. Ei kovin järkevää minusta. Sillä saa aikaan hajottavia virheitä, kun koodia on tarpeeksi monta tuhatta riviä, ja yksi operaattori kirjoitettu jossain väärin. Vähän niinkuin C:ssä kijroittaisit if(lol = true){...}, vaikka kuitenkin tarkoitit if(lol == true){...}. Miksei siis pitää osoittimia erikseen määriteltävinä? Jos CB v3 tukisi funktioihin osoittamista, tuo ominaisuus olisi ihan turha.
Itse kannatan samaa systeemiä kuin C++:ssa, eli osoitin muuttujat määritellään erikseen.

Example:

Code: Select all

Dim Pointer As Function(Integer, Integer)

Function Plus(Dim Luku1 As Integer, Dim Luku2 As Integer)
    Return Luku1 + Luku2
End Function

Pointer = Plus

Pointer(10, Plus(10, 10))
Omasta mielestäni Tälläinen systeemi olisi ihan hyödyllinen, kun mennään leikkimään DLL:ien kanssa.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: CoolBasic? kuollut? eheei ole...

Post by esa94 »

SPuntte wrote:
esa94 wrote:
koodaaja wrote:@esa94: "Jee, osaan printata luokkani muistiosoitteen. ..Ja mitä ihmettä minä tästä hyödyn?"
Käsitellä sitä kuin mitä tahansa muuttujaa, ja silti tietää, mitä muuttujassa on. Jos siis esittelet ensin funktion Jee(), voit myöhemmin käskeä Lol=Jee (ei edes tarvitse sulkuja) ja tällöin muuttuja Lol sisältää funktion Jee, ja sitä voi käyttää yksinkertaisesti komentamalla Lol().

Lol.
Siis kaikki muuttujat ovatkin oletuksellisesti osoittimia. Ei kovin järkevää minusta. Sillä saa aikaan hajottavia virheitä, kun koodia on tarpeeksi monta tuhatta riviä, ja yksi operaattori kirjoitettu jossain väärin. Vähän niinkuin C:ssä kijroittaisit if(lol = true){...}, vaikka kuitenkin tarkoitit if(lol == true){...}. Miksei siis pitää osoittimia erikseen määriteltävinä? Jos CB v3 tukisi funktioihin osoittamista, tuo ominaisuus olisi ihan turha.
Nöh, tarkoitin lähinnä, että funktiota voi käsitellä muutuujan tavion, kun nyt hitto vie kerran funktion nimeä ei voi varata muuttujaksi!

Luassa on muuten semmoinenkin kiva ominaisuus, että taulukoita voi käsitellä monella tapaa: Lua["lol"] == Lua.lol
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: CoolBasic? kuollut? eheei ole...

Post by temu92 »

Muista se että Lua on skriptikieli ja sitä tulkataan sitämukaa kun edetään. Uusi coolbasic taas ei tule olemaan enää tulkattava.
Locked