Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor...

Preview:

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

Recommended