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!");