eksootilisi programmeerimiskeeli tõnis nurk sven-erik petermann

22
Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Upload: terra

Post on 18-Mar-2016

122 views

Category:

Documents


7 download

DESCRIPTION

Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann. Mis ja milleks. Ebaharilik süntaks andmehaldus Erilised eesmärgid suurus veidrus. Juttu tuleb:. Brainfuck Whitespace Chef. Brainfuck (BF). 1993, Urban Müller Eesmärk Turingi mõttes täielik - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Eksootilisi programmeerimiskeeli

Tõnis NurkSven-Erik Petermann

Page 2: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Mis ja milleks

● Ebaharilik– süntaks– andmehaldus

● Erilised eesmärgid– suurus– veidrus

Page 3: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Juttu tuleb:

● Brainfuck● Whitespace● Chef

Page 4: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Brainfuck (BF)

● 1993, Urban Müller● Eesmärk

– Turingi mõttes täielik– väikseim kompilaator (171 baiti)

● Tulemus– lint (30 000 pesa)– 8 instruktsiooni

Page 5: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Brainfuck (BF)

● Edasiarendused– lõpmatu lint– suurem pesa

● Järglased:– BFM (makrodega)– Aura– Bub– Doublefuck (laiendatud)– FuckFuck– Flatline– Spoon

Page 6: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Käsustik

• > Liiguta pea paremale• < Liiguta pea vasakule• + Suurenda pea all oleva baidi väärtust• - Vähenda pea all oleva baidi väärtust• . Väljasta pea all olev väärtus• , Sisesta bait ja salvesta see pea kohal

olevasse pessa• [ Hüppa üle vastava “]”, kui pea all on 0• ] Liigu vastava “[”-ni.

Page 7: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Näited

● .+[.+]– Väljastab ASCII sümbolid

Page 8: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Whitespace

● Edwin Brady, Chris Morris● Tühikud, tabid ja reavahetused● Imperatiivne● Pinupõhine● Kommentaarid kuhu- ja kuidasiganes ;)

Page 9: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Whitespace'i käsustik

● 3 instruktsiooni● Algab IMP'iga (Instruction Modification

Parameter)● [Space] Pinu manipulatsioon● [Tab][Space] Aritmeetika● [Tab][Tab] Ligipääs kuhjale● [LF] Juhtimisstruktuurid● [Tab][LF] Sisend-väljund

Page 10: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Whitespace'i käsustik (2)● Pinu:

– Täisarvud

● Kuhi:– Pinu võimalused– Ligipääs ka kasutajal (muutujad ja andmestruktuurid)

● Täisarvud:– Binaarsel kujul

● Tühik 0● Tab 1

– 1. sümbol● Tühik – positiivne● Tab – negatiivne

Page 11: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Whitespace'i käsustik (3)

● Parameetrid– n-bitised arvud (tabide ja tühikute jadad)– Märgendid

● Unikaalsed● Tühikute ja tabide kombinatsioonid

Page 12: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Pinu manipulatsioon

● Käsk Parameetrid Tähendus

● [Space] Arv Arvu lisamine pinusse● [LF][Space] - Pinu tipmise elemendi dublikaat● [Tab][Space] Arv n-nda elemendi kopeerimine pinu tippu● [LF][Tab] - Vahetab 2 pinu tipmise elemendi

kohad● [LF][LF] - Pinu tipmise elemendi kustutamine● [Tab][LF] Arv Kustutab pinu n tipmist elementi va ülemise

Page 13: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Aritmeetika

● Käsk Tähendus

● [Space][Space] Liitmine● [Space][Tab] Lahutamine● [Space][LF] Korrutamine● [Tab][Space] Jäägita jagamine● [Tab][Tab] Modulo

Page 14: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Heap access

● Tühik – salvestab pinusse● Tab – taastab pinust (asetab pinu tippu)● Süntaks:

– Aadress + väärtus + käsklus

Page 15: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Juhtimisstruktuurid● Käsk Parameetrid Tähendus

● [Space][Space] Märgend Märgi koht programmis● [Space][Tab] Märgend Pöördu alamprogrammi poole● [Space][LF] Märgend Mine tingimusteta märgendile● [Tab][Space] Märgend Mine märgendile, kui pinu tipus on 0 ● [Tab][Tab] Märgend Mine märgendile, kui pinu tipus on

negatiivne arv● [Tab][LF] - Lahku alamprogrammist ja anna juhtimine tagasi

selle väljakutsujale● [LF][LF] - Lõpeta programmi täitmine

Page 16: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

I/O

● Käsk Tähendus

● [Space][Space] Väljasta pinu tipust sümbol● [Space][Tab] Väljasta pinu tipust arv● [Tab][Space] Loe sisse sümbol ja aseta pinu tipmise

elemendiga määratud aadressile● [Tab][Tab] Loe sisse arv ja aseta pinu tipmise

elemendiga määratud aadressile

Page 17: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Näited

● [Space][Space][Space][Tab][LF] – pane pinusse 1

● [LF][Space][Space][Space][Tab][Space][Space]

[Space][Space][Tab][Tab][LF] – aseta märgend

Page 18: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Chef

● Programm on retsept– koostisained– valmistamine

● Muutujad on toiduained● Mälu pinudena kaussides● I/O

– sisendiks ainult numbrid– väljundiks ka tähed

Page 19: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Retsept

● Nimi● Kommentaarid● Koostisained● Valmistamisõpetus● Abiretseptid

– kõik muu, v.a. abiretseptid

Page 20: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Koostisained

● Vedelikud– ml, l, dash[es]

● Kuivained– g, kg, pinch[es]

● See või teine– cup[s], teaspoon[s], tablespoon[s]

● Sisend külmkapist

Page 21: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Kausid ja taldrikud

● Piiramatu arv● Sisuliselt pinu● Kausside operatsioonid● Kogu aritmeetika toimub kaussides● Väljund taldrikutel

Page 22: Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

Juhtimisstruktuurid

● Verb the koostisaine.– Mix the juices.

● Verb' [ the koostisaine' ] until verbed.– Stir the fluids until mixed.

● Abiretseptid– Serve with abiretsept.– kõik põhiretsepti anumad näha– esimese kausi sisu põhiretsepti esimesse kaussi