CoolBasic Classic: Kehitysuutisten kommentit

CoolBasiciin yleisesti liittyvä keskustelu.
User avatar
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 8:56 pm
Location: Joku piste pohjoisessa.

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by naputtelija » Fri Jan 07, 2011 6:32 pm

Millä kielellä cbc taas tehtiinkään?
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...

User avatar
Frozen
Advanced Member
Posts: 282
Joined: Fri Jan 01, 2010 5:46 pm
Location: Suomi

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Frozen » Fri Jan 07, 2011 6:45 pm

naputtelija wrote:Millä kielellä cbc taas tehtiinkään?
C# , ja olisit kyl itekki voinu selata muutaman sivun taaksepäi tätä topikkia
Image
Työn alla:
Jotakin epäjulkaistua

User avatar
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by SPuntte » Fri Jan 07, 2011 10:30 pm

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.
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: 713
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero » Mon Jan 10, 2011 10:01 am

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)
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MaGetzUb » Mon Jan 10, 2011 6:47 pm

Kun kirjoitat nykyisessä CB:ä on esim tällaisen koodin:

Code: Select all

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.

Toiminta tapa olisi tällainen:

Code: Select all

If Muuttuja_AutoCheckPoint > 1 And PrevVar < 20 And PrevVar <> 12 Then 
Ja koska koodiahan luetaan aina pelkästään eteenpäin niin tässä toinen esimerkki:

Code: Select all

If Muuttuja_AutoCheckPoint > 1 And PrevVar < 20 And PrevVar <> 12 And Jalankulkija_X = 20 Or PevVar = 100 Or PrevVar = 10 Then 
:)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by esa94 » Mon Jan 10, 2011 6:59 pm

MaGetzUb wrote:Kun kirjoitat nykyisessä CB:ä on esim tällaisen koodin:

Code: Select all

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"

Code: Select all

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.)
⁴⁰Ar
<@mikeful> kissatehtaalla on miukuhihna.

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MaGetzUb » Mon Jan 10, 2011 7:59 pm

No ehkäpä tuokin on ihan hyvä keino. Mutta ns. integroidulla komennolla/muuttujalla olisi paljon selvempää muille koodareille jos jakaa koodin netis. :D
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by esa94 » Mon Jan 10, 2011 8:36 pm

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.
⁴⁰Ar
<@mikeful> kissatehtaalla on miukuhihna.

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by koodaaja » Mon Jan 10, 2011 8:56 pm

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.

User avatar
axu
Devoted Member
Posts: 854
Joined: Tue Sep 18, 2007 6:50 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by axu » Thu Feb 03, 2011 12:41 pm

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ä:

Code: Select all

If a = 0 and b = 0 Then
Pitääpä sitten ruveta optimoimaan koodia laittamalla kevyet funktiot if-lauseiden alkuun :P
Jos tämä viesti on kirjoitettu alle 5 min. sitten, päivitä sivu. Se on saattanut jo muuttua :roll:
Image

User avatar
Zero
Lead Developer
Lead Developer
Posts: 713
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero » Thu Feb 03, 2011 1:33 pm

axu wrote:Pitääpä sitten ruveta optimoimaan koodia laittamalla kevyet funktiot if-lauseiden alkuun :P
Juuri tämä.

Esimerkiksi lauseke:

Code: Select all

If raskasFunktio = 1 And kevytFunktio = 2 Then
...voidaan optimoida vaihtamalla niiden paikkaa:

Code: Select all

If kevytFunktio = 2 And raskasFunktio = 1 Then
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog

DJ-Filbe
Devoted Member
Posts: 853
Joined: Sat Feb 20, 2010 3:18 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by DJ-Filbe » Thu Feb 03, 2011 8:04 pm

Zero wrote:
axu wrote:Pitääpä sitten ruveta optimoimaan koodia laittamalla kevyet funktiot if-lauseiden alkuun :P
Juuri tämä.

Esimerkiksi lauseke:

Code: Select all

If raskasFunktio = 1 And kevytFunktio = 2 Then
...voidaan optimoida vaihtamalla niiden paikkaa:

Code: Select all

If kevytFunktio = 2 And raskasFunktio = 1 Then
Ahaa-elämys: käsiteltävien bittien määrän pienentyessä suoritusnopeus kasvaa(?)
Jos, niin eikö sitten ole sama, jos kirjoittaisi:

Code: Select all

If r = 2 And k = 3 Then
kuin

Code: Select all

If k = 3 And r = 2 Then
? Tuleeko noista yhtä nopeita?

Perustelut:
2[dec] = 10[bin]
3[dec] = 11[bin]
(sama määrä vertailtavia bittejä, toisin kuin zeron esimerkissä {1 ja 10})

TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by TheFish » Thu Feb 03, 2011 8:27 pm

DJ-Filbe wrote:Ahaa-elämys: käsiteltävien bittien määrän pienentyessä suoritusnopeus kasvaa(?)
Jos, niin eikö sitten ole sama, jos kirjoittaisi:

Code: Select all

If r = 2 And k = 3 Then
kuin

Code: Select all

If k = 3 And r = 2 Then
? Tuleeko noista yhtä nopeita?

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):

Code: Select all

If raskasFunktio And kevytFunktio Then
->

Code: Select all

If kevytFunktio And raskasFunktio Then
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.
CoolBasic henkilökuntaa
Kehittäjä

User avatar
Awaclus
Forum Veteran
Posts: 2938
Joined: Tue Aug 28, 2007 2:50 pm
Location: Sulkava

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Awaclus » Thu Feb 03, 2011 11:03 pm

Eli toisin sanoen esimerkiksi ObjectsOverlap kannattaa laittaa vasta muuttuja = 1:n jälkeen, vai ymmärsinkö väärin?
Every day I'm reshuffling.
[22:19] <@Grandi> Ha! Tiesin koko ajan, että Awaclus_ oli Awaclus. Hieno peitenimimerkki, mutta Grandia et huiputtanut.

User avatar
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 9:06 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by legend » Thu Feb 03, 2011 11:17 pm

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 :o ilmoitus tuli suurena pettymyksenä :?

User avatar
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Wingman » Thu Feb 03, 2011 11:55 pm

eikös nyky cb.llä voi tehdä tuon näin:

Code: Select all

if muuttuja=1 then
    if raskasfunktio then
endif
- - - -

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by esa94 » Fri Feb 04, 2011 12:10 am

DJ-Filbe wrote:Ahaa-elämys: käsiteltävien bittien määrän pienentyessä suoritusnopeus kasvaa(?)
Muistaakseni hidastuu; AFAIK sana eli natiivi kokonaisluku (16 tai 32 tai 64 bittiä) on nopein käsiteltävä.
⁴⁰Ar
<@mikeful> kissatehtaalla on miukuhihna.

User avatar
Jare
Moderator
Moderator
Posts: 860
Joined: Mon Aug 27, 2007 10:18 pm
Location: Helsinki

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Jare » Fri Feb 04, 2011 12:12 am

Wingman wrote:eikös nyky cb.llä voi tehdä tuon näin:

Code: Select all

if muuttuja=1 then
    if raskasfunktio then
endif
Voi, ja And-operaattorin kanssa lieneekin makuasia, kumpaa toteutustapaa käyttää.

Or tuo taas asiaan oman lisänsä:

Code: Select all

If funktio1() Or funktio2() then
    ...
EndIf
funktio2():ta ei suoriteta, jos funktio1() palauttaa True. Nyky-cb:lle tämä ei käänny niin helposti kuin And.

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by JATothrim » Sun Feb 06, 2011 10:11 pm

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. :roll:
Ottakaa huomioon myös tämä: (sama asia minkä zerppa kertoi jo blogissaan)

Code: Select all

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.
Last edited by JATothrim on Mon Feb 07, 2011 3:31 pm, edited 1 time in total.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.

User avatar
Zero
Lead Developer
Lead Developer
Posts: 713
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero » Mon Feb 07, 2011 9:32 am

Xor:lle ei ole oikosuljettua versiota koska kummatkin operandit täytyy aina tutkia.
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests