Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
A legegyszerubb programozasi nyelv
Kaposi Ambrus
Eotvos Lorand TudomanyegyetemInformatikai Kar
Kutatok Ejszakaja2019. szeptember 27.
Kombinatoristak Logistaka program gyors legyen a program helyesen mukodjonteljesıtmeny modularitas, absztrakcioregi karbantartasa uj rendszerhacker nyelvesztartalom formaC Haskell
Erdos Pal Alexander Grothendieck
2 / 14
Formalis nyelv (i)
nev ::= Mari | Jeno | Aron | Juli
alany ::= nev | bicikli
targy ::= alanyt
minosegjelzo ::= Nagy |Kek |Szep
mennyisegjelzo ::= egy | harom
allıtmany ::= teker | kedvel
mondat ::= minosegjelzo alany mennyisegjelzo targy allıtmany .
Mondat -e?I Szep Juli egy biciklit teker.I Szep Juli harom Aront kedvel.I Szep Juli kedvel egy Aront.I Kek Juli egy Aront teker.I Harom Juli szep biciklit kedvel.
Hany mondat van?3 / 14
Formalis nyelv (ii)
nev ::= Mari | Jeno | Aron | Juli
alany ::= nev | bicikli
targy ::= alanyt
minosegjelzo ::= Nagy |Kek |Szep
mennyisegjelzo ::= egy | harom |mennyisegjelzo meg mennyisegjelzo
allıtmany ::= teker | kedvel
mondat ::= minosegjelzo alany mennyisegjelzo targy allıtmany .
Hany mondat van?Mondatok:I Szep Juli egy meg harom meg harom Aront kedvel.I Szep Juli egy meg (harom meg harom) Aront kedvel.I Szep Juli (egy meg harom) meg harom Aront kedvel.
4 / 14
Formalis nyelv szamokra
szam ::= 0 | 1 | szam meg szam
I (1 meg 1) meg 1
I 1 meg (1 meg 1)
I ((1 meg 1) meg 1) meg 1
I (1 meg (1 meg 1)) meg 1
I 1 meg ((1 meg 1) meg 1)
I 1 meg (1 meg (1 meg 1))
Rajz!
5 / 14
Formalis nyelv szamokra, redundancia nelkul (i)
szam ::= 0 | 1 | szam meg szam |x meg (y meg z) = (x meg y) meg z
1 meg (1 meg 1) = (1 meg 1) meg 1
x meg (y meg z) = (x meg y) meg z
1 meg (1 meg (1 meg 1)) = (1 meg 1) meg (1 meg 1) = ((1 meg 1) meg 1) meg 1
x meg (y meg z ) = (x meg y) meg z
x meg (y meg z) = (x meg y) meg z
Most mar minden szam atasszocialhato barmely valtozatara.Biztos, hogy nincs redundancia? 0 meg 1 6= 1
6 / 14
Formalis nyelv szamokra, redundancia nelkul (ii)
szam ::= 0 | 1 | szam meg szam |x meg (y meg z) = (x meg y) meg z |0 meg x = x |x meg 0 = x
Most mar minden termeszetes szamhoz csak egyetlen szam tartozik:I A nullak eltuntethetok. (Kiveve mikor?)I Ha mar nincsenek nullak, akkor atasszocialunk.
7 / 14
Formalis nyelv szamokra, redundancia nelkul (iii)Meg lehet-e a szamokat adni egyenlosegek hasznalata nelkul?
szam ::= 0 |M szam
I 0 := 0I 1 := M 0I 2 := M (M 0)I 3 := M (M (M 0))I . . .
8 / 14
Mi az, hogy program?
Moses Schonfinkel Alonzo Church Kurt Godel Alan Turing
kombinator logika lambda kalkulus µ-rekurzıv Turing-gepfuggvenyek
9 / 14
Formalis nyelv programokra
P ::= I |K |S |PP | Ix = x |Kxy = x |Sxyz = xz(yz)
Konvencio: xyz := (xy)z .Soroljuk fel a programokat!I I, K, S.I II, IK, IS, KI, KK, KS, SI, SK, SSI III, IIK, IIS, IKI, IKK, IKS, ISI, ISK,
KII, KIK, KIS, KKI, KKK, KKS, KSI, KSK,SII, SIK, SIS, SKI, SKK, SKS, SSI, SSK
I I(II), I(IK), I(IS), I(KI), I(KK), I(KS), I(SI), I(SK), I(SS), K(II),K(IK), K(IS), K(KI), K(KK), K(KS), K(SI), K(SK), K(SS), S(II),S(IK), S(IS), S(KI), S(KK), S(KS), S(SI), S(SK), S(SS)
I . . .
10 / 14
Formalis nyelv programokra
P ::= I |K |S |PP | Ix = x |Kxy = x |Sxyz = xz(yz)
Konvencio: xyz := (xy)z .Soroljuk fel a programokat!I I, K, S.I KI, KK, KS, SI, SK, SSI SII, SIK, SIS, SKI, SKK, SKS, SSI, SSKI K(KI), K(KK), K(KS), K(SI), K(SK), K(SS),
S(KI), S(KK), S(KS), S(SI), S(SK), S(SS),I . . .
11 / 14
Formalis nyelv programokra
P ::= I |K |S |PP | Ix = x |Kxy = x |Sxyz = xz(yz)
Konvencio: xyz := (xy)z .Milyen programokat tudunk ırni?I Utolso: Uxy = y
Definıcio: U := KITeszt: Uxy = KIxy = Iy = y
I Center: Cxyz = yDefinıcio: C := KKTeszt: Cxyz = KKxyz = Kyz = y
I Duplazas: Dx = xxVisszafele definıcio: xx = Ix(Ix) = SIIx , szoval D := SII
12 / 14
Formalis nyelv programokra
P ::= I |K |S |PP | Ix = x |Kxy = x |Sxyz = xz(yz)
Eddigi programjaink tudasa:
Uxy = y Cxyz = y Dx = xx
Nehany bonyolultabb program:I Asszocialas: Afgx = f (gx)
Definıcio: A := S(KS)KTeszt:Afgx = S(KS)Kfgx = KSf (Kf )gx = S(Kf )gx = Kfx(gx) = f (gx)
I Fordıt: Fxy = yxDefinıcio: F := S(K(SI))(S(KK)I)Ellenorizni!
I Vegere ugrik: Vxyz = xzyDefinıcio: G := S(S(K(S(KS)K))S)(KK)Ellenorizni!
13 / 14
Formalis nyelv programokra
P ::= I |K |S |PP | Ix = x |Kxy = x |Sxyz = xz(yz)
Eddigi programjaink tudasa:
Uxy = y Cxyz = y Dx = xx Afgx = f (gx) Fxy = yx Vxyz = xzy
Szamok Church-kodolasa: 0fx = x , 1fx = fx , 2fx = f (fx), 3fx = f (f (fx))
Implementaljuk! 0 := F
Meg egy: Mafx = f (afx)
f (afx) = Af (af )x = SAafx
M := SA
Osszeadas: Oabfx = af (bfx)
O := hazi feladat
14 / 14