Terveppä terve.
Elikkä sain tuommoisen 20MHz 386SX koneen haltuuni.
Quickbasicilla olen yrittänyt hieman demon kaltaista koodata, mutta se ei vain jaksanut pyöriä. Olisiko teillä siis ehdottaa jotakin kieltä jolle löytyisi oppaita ja olisi kevyempi kuin QB? Turbo Pascalille ei löytynyt oppaita ja C ei vain sovi kielenä minulle :(
asm tai c tulis näin ekana mieleen.
Turbo Pascalia kielenä voi opetella Pascal-opassarjasta, ja TP:n omiin piirtofunktioihin löytyy aika hyvin apua sen omista ohjeista.
Ei kai ongelma siinä ole, ettei QuickBASIC pyörisi koneessa? Et siis tarvitse kevyempää vaan tehokkaamman kielen, jos grafiikkaa pitää pyöritellä näyttävästi. Turbo Pascal oli hyvä kieli / IDE, mutta tuskin se paljon tehokkaampaa konekoodia tuotti kuin QuickBASIC, kokeilemalla se tietysti vasta selviää.
Eli kyllä se noilla konetehoilla voi tarkoittaa jopa suoraa konekielikoodausta, jos QuickBASIC:in tuottama ohjelma on liian hidas. Siihen verrattuna olet ehkä sittenkin sitä mieltä, että C sopii sinulle =) Kun noille tehtiin tehoa vaativia pelejä, ne koodattiin varmaan suurelta osin C:llä, mutta kriittiset paikat ihan konekielellä. 386:n ohjelmointi ei sinänsä ole vaikeaa, jos osaat ennestään korkean tason kieliä hyvin, koska samalla periaatteella konekielellä ohjelmia kirjoitetaan, yksinkertaisemmista palikoista vain. Mutta työlästähän se on.
Jos QB:llä nyt tarkoitettiinkin MS-DOSin mukana tulevaa QBasicia (vrt. QuickBASIC), niin kyseessä taitaa olla pelkkä tulkki, jolloin suoritus todella on hitaampaa. Muutenkin kai täysin konekielinen käännös pitää erikseen tehdä.
TP taas tuottaa aivan samanlaista ja yhtä optimoitua konekieltä kuin C-kääntäjätkin (ja miksei myös QB-kääntäjä pystyisi samaan). Pascal ja C ovat ominaisuuksiltaan niin lähellä toisiaan, että Turbo Pascalin ja Turbo C:n kääntäjät ovat saattaneet olla suurelta osin identtiset.
DOSissa toimii myös Free Pascal -kääntäjä. Pikavilkaisun perusteella näyttäisi, että se käyttää 32-bittistä tilaa, eli kyseessä ei ole enää "perinteinen" 16-bittinen DOS-ohjelmointi.
Metabolix, Kyseessä kylläkin ihan QuickBasic jonka latasin abandonwarena.. Ja tuota turbo-pascalia pitää vielä tsekata.
Jos DOS-ympäristöön meinaat ohjelmia tehdä, niin tutustu OpenWatcom-pakettiin osoitteessa:
http://www.openwatcom.org
Tekee ohjelmoinnista siedettävämpää, kun voi käyttää dos-extenderiä, kuten dos4gw tai oma suosikkini CauseWay. Hae lisäksi CauseWay:n lähdekoodi -ja binääripaketit osoitteesta:
http://www.devoresoftware.com/freesource/cwsrc.
Alta keskustelusta löydät vanhan joskus laittamani esimerkin sprite-kääntäjästä ja MVC random-funktio -toteutuksesta OpenWatcom-kääntäjälle:
https://www.ohjelmointiputka.net/keskustelu/
CauseWay:n avulla onnistuu myös assembly-ohjelmointi.
Alla olevaa kivikautista tuotosta voit käyttää apunasi:
http://www.tip9ug.jp/who/jalih/asm_anim.zip
Metabolix kirjoitti:
TP taas tuottaa aivan samanlaista ja yhtä optimoitua konekieltä kuin C-kääntäjätkin (ja miksei myös QB-kääntäjä pystyisi samaan). Pascal ja C ovat ominaisuuksiltaan niin lähellä toisiaan, että Turbo Pascalin ja Turbo C:n kääntäjät ovat saattaneet olla suurelta osin identtiset.
No ei nyt sentään Pascalilla synny yhtä tehokasta koodia kuin mitä C:llä on mahdollista tuottaa. Ei kukaan viitsisi C:n kanssa tuhrata, jos niin olisi. Mutta C:llä saa aikaan toki myös vähemmän tehokasta loppukoodia, eli pitää tuntea väline, jota käyttää. Riippuu myös paljon siitä, millaisin keinoin ketjun aloittaja aikoo demoja kirjoittaa. C:ssähän pääsee näppärämmin operoimaan bitti- ja tavutasolla, mitä tehokas grafiikka vaatii. Muistan kyllä ladanneeni Turbo Pascalilla dataa suoraan näyttömuistiin niin, että taulukon sijainnin määritteli kiinteästi sinne, mutta se on näppärää vain tietyissä tilanteissa. Yleisemmin Pascal ei ole tarkoitettukaan laitetason operointiin.
hk kirjoitti:
No ei nyt sentään Pascalilla synny yhtä tehokasta koodia kuin mitä C:llä on mahdollista tuottaa.
Miksi ei syntyisi? Pystytkö antamaan esimerkin tilanteesta, jossa Pascalilla ei ole mahdollista tehdä asiaa yhtä tehokkaasti? Kun huomioidaan kääntäjän optimointikyky, luultavasti ne vähäiset erot, jotka jäävät jäljelle, johtuvat enimmäkseen juuri kääntäjän toteutuksesta.
hk kirjoitti:
Ei kukaan viitsisi C:n kanssa tuhrata, jos niin olisi.
Itse jostain syystä vaihdoin aivan vapaaehtoisesti Delphistä C++:aan. Syntaksi on lyhyempi, monet "rumat" asiat (kuten bittikikkailut) onnistuvat helpommin ja kirjastojen saatavuus on parempi.
hk kirjoitti:
C:ssähän pääsee näppärämmin operoimaan bitti- ja tavutasolla, mitä tehokas grafiikka vaatii.
Syntaksin puolesta näppärämmin kyllä, mutta voitko näyttää jonkin operaation, joka ei Pascalilla onnistu? Harvoinpa grafiikassakaan tämän mutkikkaampia asioita tarvitsee tehdä:
/* C */ int x = 0x01020304; ((char*)&x)[2] |= 5; /* TAI: ((char*)&x)[2] = ((char*)&x)[2] | 5; ** Optimoitu käännös tuottaa saman konekielisen koodin. */
{ Pascal } var x: LongInt; type PByte = ^Byte; {...} x := $01020304; PByte(Cardinal(@x) + 2)^ := PByte(Cardinal(@x) + 2)^ or 5;
No nyt en toki tiedä, millaiseksi Turbo Pascalia on kehitetty. Jos siinä tosiaan on onnistuttu yhdistämään korkean tason ohjelmointikielen helppous ja selkeys laiteläheisen kielen tehokkuuteen, niin kyseessä on ylivertainen ohjelmointikieli. Itse olen käyttänyt Turbo Pascalia n. vuonna 1990, ja silloin ei sen teho tosiaankaan ollut tällainen. Miksi enää käytetään muita kieliä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.