naputtelija wrote:Millä kielellä cbc taas tehtiinkään?
C# , ja olisit kyl itekki voinu selata muutaman sivun taaksepäi tätä topikkia
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Fri Jan 07, 2011 9:30 pm
by SPuntte
Frozen wrote:
naputtelija wrote:Millä kielellä cbc taas tehtiinkään?
C# , ja olisit kyl itekki voinu selata muutaman sivun taaksepäi tätä topikkia
Itseasiassa vain Cool VES -välikielen kääntäjän kirjoittaa Zerppa C#:lla. Pelimoottoritoiminnallisuuden tarjoava Cool VES taasen tehdään C++:lla - suuren osan siitä me techit.
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Mon Jan 10, 2011 9:01 am
by Zero
Frozen wrote:
naputtelija wrote:Millä kielellä cbc taas tehtiinkään?
C# , ja olisit kyl itekki voinu selata muutaman sivun taaksepäi tätä topikkia
Niin kuin Spuntte sanoikin, käytössä on sekä C# että C++:
- Runtime ja pelimoottori: C++, cross-platform
- Koodieditori: C# 4.0, .NET Framework 4.0, Windows Presentation Foundation 4.0 (Linux-vastine toteutetaan todnäk)
- CoolBasic Classic kääntäjä: C# 4.0, .NET Framework 3.5, konsolisovellus (toimii Monossa, ts. Linux/MacOS-tuki)
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Mon Jan 10, 2011 5:47 pm
by MaGetzUb
Kun kirjoitat nykyisessä CB:ä on esim tällaisen koodin:
If Muuttuja_AutoCheckPoint > 1 And Muuttuja_AutoCheckPoint < 20 And Muuttuja_AutoCheckPoint <> 12 Then
Niin tuon muuttujanimen on aina rasittava kirjoittaa seuraavan operaattorin jälkeen uudestaan jos se on vähänkin pidempi. Nii olisi helpompaa kun oisi sellainen komento joka katsoo ja ehtolausekkeessa viimmeksi käydyn muuttujan nimen.
If Muuttuja_AutoCheckPoint > 1 And Muuttuja_AutoCheckPoint < 20 And Muuttuja_AutoCheckPoint <> 12 Then
Niin tuon muuttujanimen on aina rasittava kirjoittaa seuraavan operaattorin jälkeen uudestaan jos se on vähänkin pidempi. Nii olisi helpompaa kun oisi sellainen komento joka katsoo ja ehtolausekkeessa viimmeksi käydyn muuttujan nimen.
Toisaalta voinet myös käyttää väliaikaista muuttujaa kuten vaikkapa "n"
Dim n As Integer
If n > 1 And n < 20 And n <>12 Then
...
Yhtäkkiä koodisi lyhenee.
(Eikä siinä kirjoittamisessa nyt niin kauaa mene.)
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Mon Jan 10, 2011 6:59 pm
by MaGetzUb
No ehkäpä tuokin on ihan hyvä keino. Mutta ns. integroidulla komennolla/muuttujalla olisi paljon selvempää muille koodareille jos jakaa koodin netis.
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Mon Jan 10, 2011 7:36 pm
by esa94
MaGetzUb wrote:No ehkäpä tuokin on ihan hyvä keino. Mutta ns. integroidulla komennolla/muuttujalla olisi paljon selvempää muille koodareille jos jakaa koodin netis. :D
En ole kyllä nähnyt kellään tällaista ongelmaa käytännön tilanteissa, joten tuskinpa se on niin vakava ongelma että vaatii yhden mahdollisen muuttujanimen vähemmän.
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Mon Jan 10, 2011 7:56 pm
by koodaaja
Editoriin oli muistaakseni lupailtu tabitäydennystä, joka ajaa saman asian paremmin.
Mutta muistakaamme, että tämä topic on yksinomaan kehitysuutisten kommenteille, ehdotuksia voi ladella CoolBasic Classicin esittelyketjuun.
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Thu Feb 03, 2011 11:41 am
by axu
Tuosta uusimmasta blogipostista: Paljonko tuo "short-circuit"-toiminta mahtaa nopeuttaa ohjelman toimintaa? Tietenkinhän se riippuu siitä, minkälainen tuo jälkiosa tuosta if-lauseesta on, mutta esim seuraavanlaisella pätkällä:
Perustelut:
2[dec] = 10[bin]
3[dec] = 11[bin]
(sama määrä vertailtavia bittejä, toisin kuin zeron esimerkissä {1 ja 10})
Et ihan ymmärtänyt pointtia. Noilla bittien määrillä ei ole tässä mitään merkitystä (oikeastaan koko luvuilla ei ollut merkitystä zeron esimerkissä (ja ota huomioon, että integer on 32-bittinen vaikka siitä ei käytettäisi kuin kahta bittiä)).
Zeron esimerkki ilman numeroita (eli funktiot palauttavat booleanin):
Pointti oli siis vain laittaa raskaampi funktio (jonka suoritus on siis hitaampaa) vasta and:in jälkeen. Silloin se suoritetaan vain jos kevyempi funktio palautti toden.
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Thu Feb 03, 2011 10:03 pm
by Awaclus
Eli toisin sanoen esimerkiksi ObjectsOverlap kannattaa laittaa vasta muuttuja = 1:n jälkeen, vai ymmärsinkö väärin?
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Thu Feb 03, 2011 10:17 pm
by legend
Chaosworm wrote:Eli toisin sanoen esimerkiksi ObjectsOverlap kannattaa laittaa vasta muuttuja = 1:n jälkeen, vai ymmärsinkö väärin?
Ymmärsit oikein...
Minä olin luullut, että se menee nytkin tollein ilmoitus tuli suurena pettymyksenä
funktio2():ta ei suoriteta, jos funktio1() palauttaa True. Nyky-cb:lle tämä ei käänny niin helposti kuin And.
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Sun Feb 06, 2011 9:11 pm
by JATothrim
Tulipa mieleen, että meidän ohjelmoinnin opettaja ei ole maininut asiasta mitään.. Vaikka hän selitti nuo (loogiset) And ja Or operaattorit bitti tasolta lähtien.
Ottakaa huomioon myös tämä: (sama asia minkä zerppa kertoi jo blogissaan)
Global glb_laskuri As integer
Dim laskuri As integer
Dim result As integer
Function wtfbar(x As integer)
glb_laskuri = glb_laskuri + 1
Return glb_laskuri < Rand(x)
EndFunction
Function wtffoo(x As integer, laskuri As integer)
Return laskuri < Rand(x)
EndFunction
// Seuraava toimii short-circuit logiikalla "epävarmasti"
If wtfbar(5) And/Or wtfbar(3)
Print "Tämä ei toimi aina niin kuin ON ajateltu (ÄLÄ KÄYTÄ)"
EndIf
// Ohjelmoija on varmaankin hakenut tätä menettely tapaa:
laskuri = laskuri + 1
result = wtffoo(3, laskuri)
laskuri = laskuri + 1
If wtffoo(5, laskuri) And/Or result
Print "Tämä toimi niin kuin ON ajateltu (OK KÄYTTÄÄ)"
EndIf
Eli jos funktio muokkaa ulkopuolelta jotain globaalia dataa on PAKKO käyttää alempaa tapaa, jos haluaa että funktiota voidaan käyttää huoletta short-circuit And/Or operaattoreiden seassa. Koodi-esimerkkissä wtffoo-funktio ei käytä globaaleita, ja on näin ns. "aito" matemaattinen funktio.
Re: CoolBasic Classic: Kehitysuutisten kommentit
Posted: Mon Feb 07, 2011 8:32 am
by Zero
Xor:lle ei ole oikosuljettua versiota koska kummatkin operandit täytyy aina tutkia.