Itselleni heräsi muutama kysymys taulukoista. Nämä ovat varmasti jo tarkoin suunniteltuja, mutta tiedote jätti paljon epäselvää.
Ensimmäinen kysymys on ehkä kaikkein vähäisin. Tiedotteessa mainitaan kyllä taulukon palauttaminen funktiosta, mutta esimerkeistä ei käy selväksi funktion allekirjoitus kyseisissä tapauksissa. Esimerkin koodeissa funktiolle ei ole määritettynä paluuarvoa, joka lienee oletuksena integer. Vai onko tämä harkittu ominaisuus? Entäpä, mistä kääntäjä tietää, pitääkö sen palauttaa taulukoita vai kokonaislukuja? Entäpä funktioita kutsuva osa ohjelmasta? Kokonaisluvun käyttäminen taulukkona tai toisinpäin ei ole varmaankaan kovin hyväksi ohjelman suorituksen kannalta.
Toinen kysymys koskee sijoitusoperaattoreita. Tiedotteessa kuvattu toiminnallisuus antaa vahvasti viitteitä automaattisesta roskien keruusta (garbage collector). Miksei tätä ominaisuutta voisi käyttää hyväksi myös taulukoiden palauttamiseksi funktioista? Entä miten "älykäs" tästä sijoitusoperaattoreiden automatiikasta on tulossa? Jos taulukon sijoittaa dynaamisesti luodun olion (tyypin?) sisään funktion sisällä, onko taulukko mahdollista palauttaa tämän avulla kutsuvaan funktioon (viittaus säilyy)?
Sitten viimeiseksi ehkä merkittävin simiin pistävä kohta. Tiedotteessa lukee seuraavasti:
"//B:n sisältö menetetään? kyllä, CBC ei tarkista B:n ja Z:n "yhteensopivuutta" nyt B:ssä onkin Integer tyyppinen taulukko!" Tämä laitto ainakin itselläni hälytyskellot soimaan. Jos tyyppitarkistusta ei käytetä, niin kääntäjällä ei ole mitään mahdollisuutta pitää kirjaa, minkä tyyppinen taulukko muuttujanimen taakse on sijoitettu. Miten tämä muuttuja käyttäytyy ajonaikana kyseisessä tilanteessa. Esimerkki:
Code: Select all
Dim i(10) As Integer
Dim f(10) As Float
i(1) = 3
f(1) = 3.5
...
If KEY_DOWN_F Then i = f // sisältää nyt Float-taulukon
Print 2 * i(1) // tulostaako nyt 6 vai 7.0??? ;)
Tästä käyttäytymisestä voimmekin helposti esittää jatkokysymyksen: jos vastaus olisi "7.0" niin tarkoitaako tämä sitä, että CBC osaa päätellä ajonaikana taulukkoihin sijoitetut tyypit? Miten nopeaa CBC:n logiikasta on tulossa, mikäli moinen olisi mahdollista? Oman käsitykseni mukaan tällainen ajonaikainen operaattoreiden päätteleminen on hieman
hitaahkoa verrattuna esimerkiksi siihen, että operaattorikutsut on käännetty suoraan tavukoodiin.