Helsingin yliopisto / tietojenkäsittelytieteen laitos / © Arto Wikla 2013
Ohjelmointikielten periaatteet keväällä 2011 (kohta 2013): sisältöä ja jäsentelyä
(Viimeisin päivitys
19.2.2013.
Sivu perustettu 7.1.2013.)
Huom: Muutokset vielä mahdollisia.
Tällä sivulla näytettävien ppt-kalvojen ("slaidien")
tekijänoikeudet kuuluvat Michael L. Scottille ja kurssikirjan
(Scott M.: Programming Language Pragmatics (2nd ed.), Morgan
Kaufmann, 2006.) kustantajalle:
Morgan Kaufmann Publishers.
Kalvot ovat laitoksen intranetissä ja niiden laittaminen
julkiseen internettiin tai julkaiseminen millään muullakaan tavalla
on ehdottomasti kielletty!
Sivun alalaidassa on tekijän/kustantajan klausuuleja materiaalin käytöstä.
[Author (Michael L. Scott) Web Site:
The author maintains a Web site for Programming Language Pragmatics that
features a number of online resources. To access, go to:
http://www.cs.rochester.edu/u/scott/pragmatics/.
The latest Errata sheet is available from the author's Web site:
http://www.cs.rochester.edu/u/scott/pragmatics/2e/errata.shtml.]
Kurssin jäsentelyä ja Scottin slaideja:
Huom:
Scottin lukujen yhteydessä luetellaan ohjelmointikielten määrittelyssä
ja toteutuksessa vakiintuneita suomalaisia termejä. Muilla
tietojenkäsittelytieteen osa-alueilla totunnaiset käännökset saattavat
olla erilaisia.
- Kieliä ja kielten toteutustapoja –
kieliä on paljon,
luokittelua, toteustapojen ideoita ja käsitteitä:
- Kieliä on pilvin pimein:
-
1 Introduction (ppt-kalvot intranetissä)
[
Sanastoa:
imperative:
imperatiivinen
/
declarative:
määrittelevä
/
logic language:
logiikkaohjelmointikieli
/
compilation:
kääntäminen
/
interpretation:
tulkitseminen
/
preprocessor:
esikääntäjä
tai
esiprosessori
/
(syntactic) token:
tekstialkio tai
syntaktinen alkio
/
source language:
lähdekieli
/
target language:
kohdekieli
/
bootstrapping:
vyörytys
/
just-in-time compilation:
just-in-time-käännös
/
assembler:
assembler-kääntäjä mutta
assembly-kieli, myös
symbolinen konekieli tai vain
assembler
/
scanner:
selaaja
/
lexical analysis:
leksikaalianalyysi
/
parser:
jäsentäjä
/
syntax analysis:
syntaksianalyysi
/
parse tree:
jäsennyspuu
/
semantic analysis:
semanttinen analyysi
/
intermediate code:
välikoodi tai
välikielinen koodi
/
symbol table:
symbolitaulu
/
regular language:
säännöllinen kieli
/
DFA (deterministic finite automaton):
deterministinen äärellinen automaatti
useimmiten tuttavallisesti vain
äärellinen automaatti
/
context-free:
yhteysriippumaton eli
yhteydetön
/
static:
staattinen
/
dynamic:
dynaaminen
]
- Kolme pääsuuntausta:
Imperatiivinen, funktionaalinen ja
looginen ohjelmoija laskevat suurimman yhteisen tekijän
- kurssin kieliparitarjokkat,
-
Freebyte's Guide to... Free Programming Languages
- Syntaksin esittämisestä, alkiorakenteesta ja jäsennyksen ideasta:
-
2 Programming Language Syntax (ppt-kalvot intranetissä)
(kalvot 1-19, 26-27, 29-30 "kuuluvat kurssiin",
so. jäsentämisen tekniikka ei kuulu)
[
Sanaston täydennystä:
regular expression:
säännöllinen ilmaus
tai
säännöllinen lauseke
/
string:
merkkijono
/
concatenate:
katenoida
/
literal:
literaali
/
context-free grammar:
yhteysriippumaton kielioppi tai
yhteydetön kielioppi
/
terminal:
päätesymboli
/
non-terminal:
välike(-symboli)
/
production:
(kieliopissa)
produktio eli
tuottosääntö
/
precedence:
presedenssi
/
associativity:
assosiatiivisuus
/
pragma:
pragma
]
- (24.1.2013)
Kirjoittelin ilokseni heti luennon jälkeen Scalalla pikkuruisen kääntäjän,
joka kääntää hyvin yksinkertaisia infix-lausekkeita postfix-muotoon.
Kääntäjä perustuu rekursiivisesti etenevään jäsentäjään. Semantiikaksi
on liitetty postfix-muotoisen lausekkeen tulostaminen:
infixToPostfix.scala.
Kääntäjää ei ole juurikaan testattu! :-)
- Tunnukset, näkyvyysalueet, sidonta, lohkot, sulkeumat, ...
- Laskennan ohjaus:
- Perustietotyypeistä:
-
7. Data Types (ppt-kalvot intranetissä)
(kalvot 1-22, 28, 30, 39-41, 49, 53-54 "kuuluvat kurssiin",
so. tietotyyppien muistitoteutukset eivät kuulu)
[
Sanaston täydennystä:
strong typing:
vahva tyypitys
/
static typing:
staattinen tyypitys
/
record:
tietue
/
pointer:
osoitin
/
orthogonality:
ortogonaalisuus
/
type equivalence:
tyyppien ekvivalenssi
/
type compatibily:
tyyppien yhteensopivuus
/
type inference:
tyyppipäättely
/
type coercion:
automaattinen tyyppimuunnos eli
implisiittinen tyyppimuunnos
/
type conversion tai cast:
tyyppimuunnos (ilmaistu) eli
explisiittinen tyyppimuunnos
]
- Tyyppien samuudesta ja yhteensopivuudesta
- Aliohjelmat ja kontrolliabstraktiot:
-
8. Subroutines and Control Abstraction (ppt-kalvot intranetissä)
(kalvot 1-5, 14-23,
so. "kutsujan" ja "kutsutun" työnjako
aktivaatiotietuepinon päivittämisessä ei kuulu kurssiin)
[
Sanaston täydennystä:
(memory) allocation:
muistinvaraus
/
stack:
(tässä yhteydessä) aktivaatiotietuepino
/
stack frame:
aktivaatiotietue
/
calling sequence:
kutsuketju
/
parameter passing:
parametrivälitys
/
value parameter:
arvoparametri
/
value/result parameter:
arvo-/tulosparametri
/
reference parameter:
viiteparametri
/
name parameter:
nimiparametri
/
closure:
sulkeuma
/
coroutine:
vuorottaisrutiini
]
- Parametrityypeistä:
arvo, value-result, viite, nimi
- [Call-by-name & Jensen's Device
- esimerkki Algol 60:n nimiparametrivälityksestä]
- Tietoabstraktiot ja oliosuuntautuneisuus:
- Funktionaaliset kielet:
- Logiikkaohjelmointi:
Ppt-kalvoja koskevat käyttösäännöt:
INSTRUCTORS PLEASE READ! TERMS AND CONDITIONS OF USE
THESE MATERIALS ARE PROVIDED UPON THE CONDITION THAT YOU MAY NOT SELL OR
OTHERWISE DISTRIBUTE OR DISPLAY THEM, OR YOUR PASSWORD, TO ANYONE OTHER
THAN STUDENTS IN YOUR CLASSROOM OR TO OTHER INSTRUCTORS USING THE
TEXTBOOK IN THEIR CLASSROOMS.
Solutions may not be posted online except to your students in a
password-protected or otherwise secure environment. We have been
notified that students are searching the internet for answers to their
homework exercises from other instructors' websites. We ask that you
respect the need to restrict access to this material and take adequate
precautions to prevent access to solutions by students not in your own
courses if you choose to post the material on the Web.
Disclaimer
Information provided in this document is provided "as is" without
warranty of any kind, either express or implied. Every effort has been
made to ensure accuracy and conformance to standards accepted at the
time of publication. The reader is advised to research other sources of
information on these topics.
The user assumes the entire risk as to the accuracy and the use of this
document. This document may be copied and distributed subject to the
following conditions:
- All text must be copied without modification and all pages must be
included;
- All copies must contain the appropriate copyright notice and any
other notices provided therein; and
- This document may not be distributed for profit.
Takaisin kurssin pääsivulle.
by WebCounter
starting
9.1.2013