Discussion:
Millerin koe - elämä koeputkessa(ko)?
(too old to reply)
Ari Saastamoinen
2011-01-10 09:57:38 UTC
Permalink
Jos kysytään tietokonetekniikan professori Edsger Dijkstralta, niin
goto-käsky on todiste epä-älykkäästä suunnittelusta.
"Tietokone-ohjelman huonouden voi laskea siinä olevien goto-käskyjen
määrästä."
Edsger W. Dijkstra (11.5.1930 – 6.8.2002)
Laitanpa follarit .sotiin, mutta mä en ymmärrä tuota goto-käskyn dissausta.

Esim. C-kielessä, jossa ei ole muuta exceptionia, niin "if (virhe)
goto cleanup;" on mielestäni oikein nätti rakenne. (Ja tuo cleanuppi
on sitten jossain funkkarin loppupuolella)
--
Arzka oh3mqu+***@hyper.fi - En halua follareita mailina
1. Valitse sopiva paikka, ei ihmisten tai rakennusten lahella, jossa
paukku voi aiheuttaa hairiota. - Iso-Kiinalaisen kayttoohje
Baggie
2011-01-10 11:39:54 UTC
Permalink
Jos kysyt n tietokonetekniikan professori Edsger Dijkstralta, niin
goto-käsky on todiste epä-älykkäästä suunnittelusta.
"Tietokone-ohjelman huonouden voi laskea siinä olevien goto-käskyjen
määrästä."
    Edsger W. Dijkstra  (11.5.1930...6.8.2002)
Laitanpa follarit .sotiin, mutta mä en ymmärrä tuota goto-k skyn dissausta.
Esim. C-kielessä, jossa ei ole muuta exceptionia, niin "if (virhe)
goto cleanup;" on mielestäni oikein nätti rakenne. (Ja tuo cleanuppi
on sitten jossain funkkarin loppupuolella)
Et varmaan koskaan ole nähnyt 1960- ja 1970-luvuilla kirjoitettuja
Fortran- tai BASIC-ohjelmia. Onko termi "spaghettikoodi" tuttu?
Jouko Holopainen
2011-01-10 13:00:14 UTC
Permalink
Post by Baggie
Post by Ari Saastamoinen
Esim. C-kielessä, jossa ei ole muuta exceptionia, niin "if (virhe)
goto cleanup;" on mielestäni oikein nätti rakenne. (Ja tuo cleanuppi
on sitten jossain funkkarin loppupuolella)
Eikä tuo ole ainoa goton "hyvä" käyttö, joskus tilakoneet on
(spekseihin) tehty niin päin persettä, että goto on oikeastaan kätevä.

Spagettikoodiahan siitä tulee, mutta jos speksi on spagettia niin
korjausmahdollisuudet ovat rajalliset tai olemattomat.
Post by Baggie
Et varmaan koskaan ole nähnyt 1960- ja 1970-luvuilla kirjoitettuja
Fortran- tai BASIC-ohjelmia. Onko termi "spaghettikoodi" tuttu?
En ole nähnyt, mutta ei siihen gotoa tarvitse.

C:ssä salakavalin, tavallisin ja tuhoavin tapa on globaalit muuttujat.
--
@jhol

www.iki.fi/jhol
Ari Saastamoinen
2011-01-10 14:32:42 UTC
Permalink
Post by Baggie
Et varmaan koskaan ole nähnyt 1960- ja 1970-luvuilla kirjoitettuja
Fortran- tai BASIC-ohjelmia. Onko termi "spaghettikoodi" tuttu?
Ite käytin atk:ta ekan kerran joskus 80-luvun alussa, joten sitä
vanhemmat jutut ei ole tuttuja. Spaghettikoodi on kyllä tuttu käsite,
mutta ei täysin lukukelvottoman ohjelman tekemiseen mitään gotoa
tarvita. Ja jopa täysin dokumentoimatonta goto-spagettiakin pystyi
seuraamaan jos tarvitsi, mutta dokumentoimatonta C++:aa ei sitten
seuraa perkeleelläkään sen jälkeen kun siellä on vähän templateja ja
periytettyjä luokkia sillain sopivasti.

Ja jos dokkarit vaaditaan C++:aankin, niin uskoisin tuollaisen
BASIC-goto-spagetinkin hyvin dokumentoituna olevan ihan OK-kamaa.
--
Arzka oh3mqu+***@hyper.fi - En halua follareita mailina
1. Valitse sopiva paikka, ei ihmisten tai rakennusten lahella, jossa
paukku voi aiheuttaa hairiota. - Iso-Kiinalaisen kayttoohje
Jukka Marin
2011-01-10 15:45:30 UTC
Permalink
Post by Ari Saastamoinen
Ja jopa täysin dokumentoimatonta goto-spagettiakin pystyi
seuraamaan jos tarvitsi, mutta dokumentoimatonta C++:aa ei sitten
seuraa perkeleelläkään sen jälkeen kun siellä on vähän templateja ja
periytettyjä luokkia sillain sopivasti.
Eikä siihen tarvita edes C++:aa - pelkkä C, liuta siellä täällä esiteltyjä
makroja, funktioita ja näiden yhdistelmiä riittää mainiosti, kun esittelyt
osaa jakaa kymmeniin header-tiedostoihin, jotka lukevat toisiaan ristiin
rastiin eri hakemistoista.

C:ssä olisi kyllä kiva, jos sisäkkäisistä blokeista pääsisi jotenkin
kauniisti ulos ilman koodin duplikointia, ylimääräisiä iffejä - ja sitä
g*toa.

-jm
Jouko Holopainen
2011-01-10 16:23:35 UTC
Permalink
Post by Jukka Marin
Eikä siihen tarvita edes C++:aa - pelkkä C, liuta siellä täällä esiteltyjä
makroja, funktioita ja näiden yhdistelmiä riittää mainiosti, kun esittelyt
osaa jakaa kymmeniin header-tiedostoihin, jotka lukevat toisiaan ristiin
rastiin eri hakemistoista.
vitmo.h:
#define foo(A,B) A##B
#define foo(VITMO,LOGINEN1) global_z = 1
#define foo(VITMO,LOGINEN2) global_z = 2

Tais olla joku tapa tehdä makroilla tyyliin:
#define bar(VITMO,LOGINEN)(a) foo(VITMO,LOGINEN##a)
Onneksi olen unohtanut miten.

vee.c:
#include "vitmo.h" // + 100 muuta, eli ne kaikki jotka on joka filussa
plus rekursiiviset
...
VITMOLOGINEN1; // Arvaa onko tässä kommenttia

Greppaappa sitten että mistäs makro VITMOLOGINEN löytyy.
--
@jhol

www.iki.fi/jhol
Viljo Mustonen
2011-01-10 14:17:16 UTC
Permalink
Post by Ari Saastamoinen
Jos kysytään tietokonetekniikan professori Edsger Dijkstralta, niin
goto-käsky on todiste epä-älykkäästä suunnittelusta.
"Tietokone-ohjelman huonouden voi laskea siinä olevien goto-käskyjen
määrästä."
Edsger W. Dijkstra (11.5.1930 – 6.8.2002)
Laitanpa follarit .sotiin, mutta mä en ymmärrä tuota goto-käskyn dissausta.
Esim. C-kielessä, jossa ei ole muuta exceptionia, niin "if (virhe)
goto cleanup;" on mielestäni oikein nätti rakenne. (Ja tuo cleanuppi
on sitten jossain funkkarin loppupuolella)
Lisäksi esimerkiksi 8 bittisissä prosessoreissa, vaikkapa 8051 suku,
tuolla säästää merkittävästi muistia ja kellojaksoja verrattuna
pienenkin funktion kutsuun ja paluuseen.
--
Viljo
Loading...