Helsingin yliopisto
/ tietojenkäsittelytieteen osasto
/ Ohjelmointikielten periaatteet
/ © Arto Wikla 2019
Ohjelmointikielten periaatteet: 1. harjoitukset 7.11.
Muutettu viimeksi
7.11.2019.
Sivu luotu 18.10.2019.
- Tällä ensimmäisellä harjoituskerralla järjestäydytään työryhmiksi ja
valitaan kullekin ryhmälle kaksi ohjelmointikieltä:
- (kurssikirjan tehtävä 1.6.3)
Describe the differences between the interpretative and compiled
implementations of a programming language, emphasising the advantages
and disadvantages.
- (kurssikirjan tehtävä 1.6.6)
The first Pascal environments included:
- A Pascal compiler, written in Pascal, which produced P-code (code for the
intermediate machine);
- The same compiler, translated into P-code;
- An interpreter for P-code written in Pascal.
To implement the Pascal language in an interpretative way on a new host
machine means (manually) translating the P-code interpreter into the
language on the host machine. Given such an interpretative
implementation, how can one obtain a compiled implementation for the
same host machine, minimising the effort required? (Hint: think about
a modification to the compiler for Pascal also written in Pascal.)
- (kurssikirjan tehtävä 4.6.1)
Consider the following program fragment written in a pseudo-language which
uses static scope and where the primitive read(Y)
allows the reading of the variable Y from standard input.
...
int X = 0;
int Y;
void fie() {
X++;
}
void foo() {
X++;
fie();
}
read(Y);
if Y > 0 {
int X = 5;
foo();
}
else
foo();
write(X);
State what the printed values are.
- (kurssikirjan tehtävä 4.6.2)
Consider the following program fragment written in a pseudo-language that
uses dynamic scope.
...
int X;
X = 1;
int Y;
void fie() {
foo();
X = 0;
}
void foo() {
int X;
X = 5;
}
read(Y);
if Y > 0 {
int X;
X = 4;
fie();
}
else
fie();
write(X);
State which is (or are) the printed values.
-
- (kurssikirjan tehtävä 4.6.4)
Provide an example of a denotable object whose life is longer than that of the
references (names, pointers, etc.) to it.
- (kurssikirjan tehtävä 4.6.5)
Provide an example of a connection between a name and a denotable object
whose life is longer than that of the object itself.
- Vertaile Javan ja Pythonin tavanomaisten toteutustapojen eroa;
kääntäminen, tulkinta, välikieli, yms.
Onko kielten toteustavoista myös muunnelmia?