CoolBasic Classic: Kehitysuutisten kommentit

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

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by naputtelija »

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 4:46 pm
Location: Suomi

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Frozen »

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
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 »

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

Re: CoolBasic Classic: Kehitysuutisten kommentit

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

http://www.coolbasic.com/blog
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MaGetzUb »

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 »

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.)
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by MaGetzUb »

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 »

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.
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 »

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 »

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

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero »

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: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by DJ-Filbe »

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 »

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ä
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Awaclus »

Eli toisin sanoen esimerkiksi ObjectsOverlap kannattaa laittaa vasta muuttuja = 1:n jälkeen, vai ymmärsinkö väärin?
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: CoolBasic Classic: Kehitysuutisten kommentit

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

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 »

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ä.
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Jare »

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.
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 »

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

Re: CoolBasic Classic: Kehitysuutisten kommentit

Post by Zero »

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