14
A legegyszer˝ ubb programoz´ asi nyelv Kaposi Ambrus otv¨ os Lor´ and Tudom´ anyegyetem Informatikai Kar Kutat´ ok ´ Ejszak´ aja 2019. szeptember 27.

Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

A legegyszerubb programozasi nyelv

Kaposi Ambrus

Eotvos Lorand TudomanyegyetemInformatikai Kar

Kutatok Ejszakaja2019. szeptember 27.

Page 2: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

Kombinatoristak Logistaka program gyors legyen a program helyesen mukodjonteljesıtmeny modularitas, absztrakcioregi karbantartasa uj rendszerhacker nyelvesztartalom formaC Haskell

Erdos Pal Alexander Grothendieck

2 / 14

Page 3: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 4: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 5: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 6: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 7: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 8: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 9: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

Mi az, hogy program?

Moses Schonfinkel Alonzo Church Kurt Godel Alan Turing

kombinator logika lambda kalkulus µ-rekurzıv Turing-gepfuggvenyek

9 / 14

Page 10: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 11: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 12: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 13: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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

Page 14: Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai … · 2020. 8. 20. · E otv os Lor and Tudom anyegyetem Informatikai Kar Kutat ok Ejszak aja 2019. szeptember 27. Kombinatorist

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