Files

3.9 KiB

Tampio vs JavaScript

Side-by-side comparisons. Every Tampio program compiles to JavaScript — these show what that translation looks like.

Hello World

Tampio

Kun nykyinen sivu avautuu,
    teksti "Hei maailma!" näytetään käyttäjälle.

JavaScript

document.avautua = function() {
    alert("Hei maailma!");
};
document.avautua();

Function Definition

Tampio

Pienen luvun kertoma on
    riippuen siitä, onko se pienempi tai yhtä suuri kuin yksi,
    joko yksi
    tai pieni luku kerrottuna pienen luvun edeltäjän kertomalla.

Luvun edeltäjä on se vähennettynä yhdellä.

JavaScript

Number.prototype.f_kertoma = function() {
    var pieni_luku = this;
    return (this <= 1) ? 1 : pieni_luku * pieni_luku.f_edeltäjä().f_kertoma();
};

Number.prototype.f_edeltäjä = function() {
    return this - 1;
};

The parameter pieni luku ("small number") becomes the variable name in the compiled JS. se compiles to this.


Variable Declaration

Tampio

Olkoon pieni muuttuja uusi muuttuja, jonka arvo on nolla.

JavaScript

var pieni_muuttuja = new muuttuja({ arvo: 0 });

Class Definition

Tampio

Vektorilla on komponentit.

JavaScript

function vektori(vals) {
    if ("komponentit" in vals) this.komponentit = vals["komponentit"];
    else this.komponentit = [];
}

Fields are constructor parameters. Plural fields become arrays, singular fields become single values.

Subclass

Tampio

Työntekijä on henkilö, jolla on työnantaja.

JavaScript

function tyontekija(vals) {
    henkilö.call(this, vals);
    if ("työnantaja" in vals) this.työnantaja = vals["työnantaja"];
}
tyontekija.prototype = Object.create(henkilö.prototype);

Method Definition

Tampio

Kun nykyinen sivu avautuu,
    pieneen muuttujaan luetaan luku
ja  nykyinen sivu näyttää pienen muuttujan arvon kertoman.

JavaScript

HTMLDocument.prototype.avautua = function() {
    pieni_muuttuja.lukea_luku();
    this.write(pieni_muuttuja.f_arvo().f_kertoma());
};

Kun = method definition. The self object (nykyinen sivu) becomes this. Multiple statements separated by commas compile to sequential calls; ja marks the last one.


If Statement

Tampio

jos lyhyen vektorin dimensio ei ole nolla, niin
    nykyinen sivu näyttää lyhyen vektorin ensimmäisen komponentin
ja  lyhyen vektorin häntä painetaan nykyiselle sivulle.

JavaScript

if (lyhyt_vektori.f_dimensio() !== 0) {
    nykyinen_sivu.näyttää(lyhyt_vektori.f_ensimmäinen_komponentti());
    lyhyt_vektori.f_häntä().painetaan(nykyinen_sivu);
}

Arithmetic

Tampio

pieni luku kerrottuna pienen luvun edeltäjän kertomalla

JavaScript

pieni_luku * pieni_luku.f_edeltäjä().f_kertoma()
Tampio JS Second arg case
x lisättynä y:hin x + y illative
x vähennettynä y:llä x - y adessive
x kerrottuna y:llä x * y adessive
x jaettuna y:llä x / y adessive
x rajattuna y:hin x % y illative

Field Access

Field access looks identical to a function call — both use genitive.

Tampio

pienen muuttujan arvo        # field access
pienen luvun kertoma         # function call

JavaScript

pieni_muuttuja.arvo          // field access
pieni_luku.f_kertoma()       // function call (note the f_ prefix)

The compiler adds an f_ prefix to function calls to distinguish them from raw field accesses.


Output

Tampio

nykyinen sivu näyttää tekstin "Tulos: "
nykyinen sivu näyttää pienen luvun kertoman
teksti "Virhe!" näytetään käyttäjälle

JavaScript

document.write("Tulos: ");
document.write(pieni_luku.f_kertoma());
alert("Virhe!");