Huom. Tällä sivulla kuvattu SURVO 98 on nykyisin jo "vanha Survo", joka muodosti aikanaan tärkeän siirtymävaiheen 16-bittisestä 32-bittiseen Survoon. Sittemmin SURVO 98 loi pohjan Survon uudelle SURVO MM -nimiselle Windows-versiolle.

Uusi Survo tulossa!

Tämä Seppo Mustosen kirjoitus SURVO 98:n syntyhistoriasta on alunperin julkaistu syksyllä 1997 Survo-Käyttäjäyhdistyksen SURVO.TUT-lehden numerossa 1/97.

Kaikki Survon kehitystä seuranneet tietävät, että keskusteluja Survon murtautumisesta MS DOS -käyttöjärjestelmän ahtaista rajoista on keskusteltu vuosikaupalla. Käyttäjäyhdistyksen vuosiristeilyllä huhtikuussa 1997 Jarmo Ahonen esitteli laatimaansa Survon koeversiota, joka toimi OS/2-ympäristössä. Olin sitä ennen koostanut pienen osan Survon C-kielisestä lähdekoodista eräänlaiseksi "minieditoriksi" ja luovuttanut sen Ahoselle 32-bittisen koeversion tekoa varten. Vuosikokousristeilyllä vaihdettiin innokkaasti mielipiteitä siitä, lähteäkö eteenpäin tuolta pohjalta vai ei.

Jatkokeskustelut osoittivat, että tässä vaiheessa on tärkeintä todella vapautua 16-bittisen maailman kahleista ja muuntaa Survon ohjelmakoodi 32-bittiseksi sopivan C-kääntäjän ja DOS-laajennusohjelman avulla.

Nykyinen SURVO 84C on 16-bittisten ohjelmamodulien muodostama kokonaisuus. Sillä ei päästä ohi 1 megatavun perusmuistin ja siinäkin tilassa yli 64 kilotavun kokoisten taulukkojen käsittely on hankalaa. Kimmo Vehkalahti oli kokeillut jo vuonna 1993 Watcomin C-kääntäjää, joka sallii kätevästi ohjelmien teon kaikkiin yleisiin PC-käyttöjärjestelmiin. Tuo kääntäjä tarjoaa DOS-ohjelmien 32-bittiseen kehittelyyn DOS/4GW-laajentimen (extender).

Vaikka olin päättänyt ottaa kesän 1997 rauhallisemmin kuin edellisen (jolloin urakoin "Survo ja minä" -kirjan), innostuin Kimmon kannustamana ja myötävaikutuksella tarttumaan tuohon vaihtoehtoon.

Aluksi oli tavoitteena tehdä 32-bittiset laajennukset pelkästään niistä Survon toiminnoista, joissa rajat pikimmin tulevat vastaan. Huomasin nimittäin ilokseni, että tiettyjen temppujen avulla oli mahdollista kutsua SURVO 84C:n toimittimesta myös 32-bittisiä ohjelmamoduleja aivan samaan tyyliin kuin 16-bittisiä kutsutaan. Niinpä muutamassa viikossa olin saanut aikaan 32-bittiset versiot mm. matriisitulkista, ESTIMATE-operaatiosta ja eräistä muista vaativista tilastollisista toiminnoista. Jo tällöin saatettiin esim. laskea ominaisarvot ja vektorit jopa 1000*1000-matriisille (90*90 oli aiemmin ehdoton yläraja) ja tehdä faktorianalyysia esim. 700 muuttujan ja mielivaltaisen monen havainnon aineistoilla.

DOS-laajennin antaa oivat keinot hallita koko muistia lineaarisesti teoriassa 2^32 tavuun eli 4 gigatavuun (4000 megatavuun) asti. Kun koneessa on esim. 32 megatavun muisti, on luonnollista esim. raskaissa iteratiivisissa tilastollisissa toimituksissa poimia laajatkin aineistot suoraan muistiin, jolloin toiminta ripeytyy olennaisesti (tyypillisesti 10-kertaiseksi). Myös sisäisessä laskennassa saavutetaan tyypillisesti ainakin 30 prosentin, joskus jopa 100 prosentin nopeuden kasvu. Tämä perustuu siihen, että kääntäjä käyttää 386-prosessorin käskykantaa. Uusi Survo ei siis enää tule toimimaan XT- eikä AT-sarjan koneilla, joista aika lienee jo muutenkin jättänyt.

Tuo parannus ei kuitenkaan sallinut toimituskenttien koon kasvatusta nykyisestä 64 kilotavusta (siis esim. 600 rivin ja 100 sarakkeen kentistä) ylöspäin, sillä Survon toimitin - koko työskentelyn keskus oli edelleen 16-bittinen ohjelma. Heinäkuun alussa päätin - lupaamatta kellekään mitään - hiljaa kokeilla, mahtaisiko senkin avartaminen onnistua tuon DOS/4GW-laajentimen avulla. Suuremmitta vastuksitta se sitten tapahtui ja toimituskentän saattoi ulottaa vaikka 100000-riviseksi. Tämä tahtoo sanoa, että melkein kaiken, minkä olen itse kirjoitellut viime vuosina erilaisiin toimituskenttiin, voisi nyt sulloa yhteen. Tuommoisella tietojen niputuksella ei kuitenkaan liene mitään tolkkua - halusin vain antaa käsityksen laajennuksen suomista ulottuvuuksista.

Nyt tuli vastaan myös ongelmia. Survon käyttäjät ovat tottuneet siihen, että esim. pienissä laskutoimituksissa vastaus ilmestyy toimituskenttään silmänräpäyksessä. 32-bittisellä toimittimella vaatimattomatkin editorin ulkopuolella tapahtuvat - työt veivät hiukan lisäaikaa (noin 0.2 sek.). Syynä oli DOS/4GW-laajennin, joka on yli 200-kiloisena ohjelmana latautui aina uudelleen muistiin jokaisen ulkoisen 32-bittisen modulin käynnistystä varten. Nykyisen toimittimen vikkelyyteen tottuneena koin pienenkin hidastelun sietämättömäksi. Laajoissa sukroissa, pienten toimenpiteiden kasautuessa sadoittain, jopa tuhansittain, myös näin kerrostuvat turhat viivytykset lisäisivät ärsyttävästi kokonaisaikaa.

Pelastukseksi jouduinkin hankkimaan saman laajentimen "paraativersion" DOS/4G, jota on mahdollista pitää muistissa vakituisesti. Tällöin tuo 0.2 sekunnin ylimääräinen latausaika häviää ja toimintojen välittömyys palautuu. Koko heinä-elokuun olenkin sitten muuntanut satoja Survon ohjelmamoduleita 32-bittisiksi. Kimmo on tehnyt samoin omien moduliensa osalta. Tätä kirjoitettaessa valtaosa Survosta on jo siirretty uudeksi kokonaisuudeksi, josta tullaan käyttämään nimitystä SURVO 98.

32-bittisyys kasvattaa luonnostaan ohjelmamodulien kokoa. Tätä kasvua on hillitty kasaamalla samoihin EXE-tiedostoihin toisiinsa liittyviä toimintoja. SURVO 98:ssa on selvästi vähemmän ohjelmatiedostoja, vaikka se sisältää samat ominaisuudet kuin SURVO 84C. Esim. itse toimittimeen (ohjelmatiedosto _S.EXE) on kerätty takaisin lukuisia editoriaaliseen työskentelyyn kuuluvia perustyökaluja, jotka tilansäästön vuoksi olivat hajautettuna useaksi moduliksi. Jopa editoriaalinen laskenta kuuluu suoraan toimittimeen, jonka koko on noin 225 kilotavua (85 kilotavua SURVO 84C:ssä). Vaikka yhdistelyjä on näin tapahtunut, Survon modulaarisesta rakenteesta, mikä on sen kantavia puolia, ei ole tippaakaan luovuttu. Modulien koot vain ovat 100-300 kilotavua aiemman 20-150 kilotavun asemasta.

DOS/4G-laajennin, josta vastaa Tenberry Software, Inc. Bostonin lähellä, ei valitettavasti ole (toistaiseksi) aivan virheetön ohjelma. Huomasin elokuun puolivälissä saatuani riittävän määrän perusmoduleja SURVO 98:n piiriin, ettei suomenkielinen opetussarja toiminut loppuun asti, vaan laajennin keskeytti toiminnan omaan virheilmoitukseensa. Vika on mm. siinä, että laajennin lisää aiheetta DOS-perusmuistin kulutusta 32 tavun verran joka modulin aktivoinnin yhteydessä. Tällä virheellä ei ole mitään yhteyttä Survoon, sillä saman "tuhlauksen" saa näytetyksi toteen hyvin yksinkertaisilla toisiaan kutsuvilla pikkuohjelmilla. Valmistaja on myöntänyt virheen, mutta ei uskalla luvata sille nopeaa korjausta. Niinpä tekemällä viikon verran lisätöitä olen saanut virheen kierretyksi eikä siitä pitäisi olla enää haittaa.

Tavoitteena on, että SURVO 98 tulisi toimimaan, paitsi puhtaissa DOS-koneissa, myös samoissa yleisissä ympäristöissä kuin SURVO 84C eli OS/2, Windowsit ja mahdollisesti jopa Linux. Windows 95:n suhteen ei ole mitään ongelmia, mutta Windows 3.1 ja Windows NT aiheuttivat hieman erityisjärjestelyjä. Niiden DOS-tuki on heikko erityisesti 32-bittisten DOS-laajennusten osalta, mutta tuonkin ongelman olen Kimmon kanssa saanut ratkaistuksi.

SURVO 98 tulee olemaan saatavilla lokakuun alusta lähtien. Sen toiminta edellyttää myös SURVO 84C:n päivitystä versioon 5.30. SURVO 98 kuluttaa levytilaa suunnilleen saman verran kuin SURVO 84C eli yhteinen vaatimus on noin 30 megatavua levyllä. Koneen tulee olla ainakin 386, mieluiten 486 tai Pentium. Keskusmuistia saisi olla 16 megatavua tai enemmän.

SURVO 98 on pieniä poikkeuksia (jotka luetellaan alla) lukuunottamatta yhteensopiva SURVO 84C:n kanssa. Siis SURVO 84C -työt tehdään SURVO 98:ssa täsmälleen samalla tavalla. Myös tiedostorakenteet ja esim. sukrot ovat yhteensopivia. SURVO 98:lla laaditut sovellukset kelpaavat SURVO 84C:lle, ellei ylitetä jälkimmäisen rajoituksia esim. toimituskenttien ja matriisien suhteen.

Toistaiseksi, varmuuden vuoksi, SURVO 98 toimii ikäänkuin SURVO 84C:n jatkeena, vaikka uusi Survo onkin täysin itsenäinen, aito 32-bittinen, suojatussa (protected) moodissa toimiva järjestelmä. SURVO 98 käynnistetään suoraan (esim. DOS-tasolta) komennolla SURVO 98 tai SURVO 84C:stä esim. komennolla _S tai näppäimellä ctrl-D. Samalla näppäimellä voi palata takaisin taustalla olevaan SURVO 84C:hen ja jatkaa tekeillä olevaa työtä. Näin yhdellä napinpainalluksella saattaa liikkua edestakaisin uuden ja vanhan Survon välillä ja vertailla niiden toimintoja. Muita kuin nopeuseroja ei pitäisi ilmetä.

SURVO 98 v.1.0 julkistettiin helmikuussa 1998.

Lue, mitä vielä tapahtui sitä ennen!

Huom. Tällä sivulla kuvattu SURVO 98 on nykyisin jo "vanha Survo", joka muodosti aikanaan tärkeän siirtymävaiheen 16-bittisestä 32-bittiseen Survoon. Sittemmin SURVO 98 loi pohjan Survon uudelle SURVO MM -nimiselle Windows-versiolle.