1 / 22

Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

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

terra
Télécharger la présentation

Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Eksootilisi programmeerimiskeeli Tõnis Nurk Sven-Erik Petermann

  2. Mis ja milleks • Ebaharilik • süntaks • andmehaldus • Erilised eesmärgid • suurus • veidrus

  3. Juttu tuleb: • Brainfuck • Whitespace • Chef

  4. 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

  5. Brainfuck (BF) • Edasiarendused • lõpmatu lint • suurem pesa • Järglased: • BFM (makrodega) • Aura • Bub • Doublefuck (laiendatud) • FuckFuck • Flatline • Spoon

  6. 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.

  7. Näited • .+[.+] • Väljastab ASCII sümbolid

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

  9. 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

  10. 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

  11. Whitespace'i käsustik (3) • Parameetrid • n-bitised arvud (tabide ja tühikute jadad) • Märgendid • Unikaalsed • Tühikute ja tabide kombinatsioonid

  12. 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

  13. Aritmeetika • Käsk Tähendus • [Space][Space] Liitmine • [Space][Tab] Lahutamine • [Space][LF] Korrutamine • [Tab][Space] Jäägita jagamine • [Tab][Tab] Modulo

  14. Heap access • Tühik – salvestab pinusse • Tab – taastab pinust (asetab pinu tippu) • Süntaks: • Aadress + väärtus + käsklus

  15. 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

  16. 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

  17. 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

  18. Chef • Programm on retsept • koostisained • valmistamine • Muutujad on toiduained • Mälu pinudena kaussides • I/O • sisendiks ainult numbrid • väljundiks ka tähed

  19. Retsept • Nimi • Kommentaarid • Koostisained • Valmistamisõpetus • Abiretseptid • kõik muu, v.a. abiretseptid

  20. Koostisained • Vedelikud • ml, l, dash[es] • Kuivained • g, kg, pinch[es] • See või teine • cup[s], teaspoon[s], tablespoon[s] • Sisend külmkapist

  21. Kausid ja taldrikud • Piiramatu arv • Sisuliselt pinu • Kausside operatsioonid • Kogu aritmeetika toimub kaussides • Väljund taldrikutel

  22. 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

More Related