Shakespeare (język programowania): Różnice pomiędzy wersjami
[wersja nieprzejrzana] | [wersja przejrzana] |
m lit. |
Emptywords (dyskusja | edycje) int. |
||
(Nie pokazano 21 wersji utworzonych przez 20 użytkowników) | |||
Linia 1: | Linia 1: | ||
'''Shakespeare''' jest [[ezoteryczny język programowania|ezoterycznym]] [[język programowania|językiem programowania]] stworzonym przez Jona Åslunda i Karla Hasselströma. Podobnie jak [[Chef (język programowania)|Chef]] jest tak zaprojektowany, aby sprawiał wrażenie czegoś innego niż [[kod źródłowy]]; w tym przypadku są to |
'''Shakespeare''' jest [[ezoteryczny język programowania|ezoterycznym]] [[język programowania|językiem programowania]] stworzonym przez Jona Åslunda i Karla Hasselströma. Podobnie jak [[Chef (język programowania)|Chef]] jest tak zaprojektowany, aby sprawiał wrażenie czegoś innego niż [[kod źródłowy]]; w tym przypadku są to dramaty [[William Szekspir|Williama Szekspira]]. |
||
Lista postaci biorących udział w sztuce jest deklaracją ilości [[stos (informatyka)|stosów]] używanych w programie. Postaci te prowadzą ze sobą [[dialog]] zmieniając sobie nawzajem wartości z wierzchu stosu, wykonując polecenia typu ''push'' i ''pop'' |
Lista postaci biorących udział w sztuce jest deklaracją ilości [[stos (informatyka)|stosów]] używanych w programie. Postaci te prowadzą ze sobą [[Komunikacja werbalna|dialog]] zmieniając sobie nawzajem wartości z wierzchu stosu, wykonując polecenia typu ''push'' i ''pop'' i przeprowadzając I/O. Mogą również zadawać sobie nawzajem pytania, które mają charakter [[instrukcja warunkowa|instrukcji warunkowych]]. W całości język przypomina [[asembler]]. |
||
==Programowanie w Shakespeare== |
== Programowanie w Shakespeare == |
||
===Tytuł=== |
=== Tytuł === |
||
Pierwsza linijka jest nazywana |
Pierwsza linijka jest nazywana „tytułem”. [[Kompilator]] traktuje wszystko od pierwszej linijki do pierwszej części jako komentarz. |
||
===Lista postaci=== |
=== Lista postaci === |
||
Jest to sekcja w której deklaruje się [[zmienna|zmienne]] i stosy. Każda zmienna może zawierać oznakowaną liczbę całkowitą. Deklaracja wygląda następująco: |
Jest to sekcja w której deklaruje się [[zmienna (informatyka)|zmienne]] i stosy. Każda zmienna może zawierać oznakowaną liczbę całkowitą. Deklaracja wygląda następująco: |
||
imię, opis |
|||
gdzie <code>imię</code> jest nazwą zmiennej, a <code>opis</code> jest traktowany jako komentarz. <code>Imię</code> musi być imieniem jednego z bohaterów dramatów szekspirowskich, inaczej wystąpi błąd [[Kompilator|kompilacji]]. |
|||
===Akty i sceny=== |
=== Akty i sceny === |
||
Program dzieli się na akty, a następnie na sceny, w których występują postaci, a więc w których operujemy zmiennymi. Każdy akt i scenę deklaruje się z użyciem rzymskich cyfr, a następnie po dwukropku opisu fragmentu. Deklaracja wygląda następująco: |
Program dzieli się na akty, a następnie na sceny, w których występują postaci, a więc w których operujemy zmiennymi. Każdy akt i scenę deklaruje się z użyciem rzymskich cyfr, a następnie po dwukropku opisu fragmentu. Deklaracja wygląda następująco: |
||
Act I: Oszczerstwa Hamleta i wewnętrzna rozterka. |
Act I: Oszczerstwa Hamleta i wewnętrzna rozterka. |
||
Scene I: Podłość Hamleta |
Scene I: Podłość Hamleta |
||
===Enter, Exit i Exeunt=== |
=== Enter, Exit i Exeunt === |
||
<code>Enter</code> (pol. wchodzi na scenę), <code>Exit</code> (pol. schodzi ze sceny), <code>Exeunt</code> (z [[łacina|łac]]. ''exeunt'', wychodzą) używa się do kierowania postaci (zmiennych) na scenę. Aby wywołać zmienną (wywołać postać na scenę) lub kilka zmiennych należy użyć <code> |
<code>Enter</code> (pol. wchodzi na scenę), <code>Exit</code> (pol. schodzi ze sceny), <code>Exeunt</code> (z [[łacina|łac]]. ''exeunt'', wychodzą) używa się do kierowania postaci (zmiennych) na scenę. Aby wywołać zmienną (wywołać postać na scenę) lub kilka zmiennych należy użyć <code>Enter</code>. Aby powiedzieć postaci by opuściła scenę korzysta się z <code>Exit</code>. W przypadku więcej niż jednej zmiennej korzysta się z <code>Exeunt</code>, jeżeli nie podamy żadnej zmiennej to kończymy scenę. Korzysta się z następującego formatu: |
||
[Enter Romeo] |
[Enter Romeo] |
||
[Enter Juliet and Romeo] |
[Enter Juliet and Romeo] |
||
[Exit Juliet] |
[Exit Juliet] |
||
[ |
[Exeunt Juliet and Romeo] |
||
[ |
[Exeunt] |
||
===Wartości=== |
=== Wartości === |
||
Aby przywołać wartości (takie jak 8 czy |
Aby przywołać wartości (takie jak 8 czy 1337) należy korzystać z rzeczowników i przymiotników. |
||
Każdy rzeczownik przybiera wartość 1 lub -1, w zależności czy jest ładny czy nie. Dla przykładu, rzeczownik <code>flower</code> (pol. ''kwiat'') przyjmie wartość 1, gdyż kwiaty są ładne. Natomiast wyraz <code>pig</code> (pol. ''świnia'') przybiera wartość -1, gdyż świnie kojarzą się z brudem i brzydotą. Neutralne rzeczowniki takie jak <code>tree</code> (pol. ''drzewo'') również przyjmują wartość 1. |
Każdy rzeczownik przybiera wartość 1 lub -1, w zależności czy jest ładny czy nie. Dla przykładu, rzeczownik <code>flower</code> (pol. ''kwiat'') przyjmie wartość 1, gdyż kwiaty są ładne. Natomiast wyraz <code>pig</code> (pol. ''świnia'') przybiera wartość -1, gdyż świnie kojarzą się z brudem i brzydotą. Neutralne rzeczowniki takie jak <code>tree</code> (pol. ''drzewo'') również przyjmują wartość 1. |
||
Dzięki przymiotnikom podwajamy wartość rzeczownika; kolejnym przymiotnikiem znów podwajamy wartość, itd |
Dzięki przymiotnikom podwajamy wartość rzeczownika; kolejnym przymiotnikiem znów podwajamy wartość, itd. Dzięki temu można osiągnąć każdą wielokrotność dwójki. Na tej podstawie możemy tworzyć inne liczby dodając je do siebie (<code>The sum of X and Y</code>, ''Suma X i Y'') czy odejmując (<code>The difference between X and Y</code>, ''Różnica pomiędzy X i Y''). Można również podnosić wartości do kwadratu za pomocą <code>square</code>, czy do sześcianu używając <code>cube</code>. A więc <code>The difference between the square of a little flower and a smelly dirty pig</code> jest równe <code>(2*1)²-(2*2*(-1))</code>, czyli 8. |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
<code> |
|||
Romeo, a young man with a remarkable patience. |
Romeo, a young man with a remarkable patience. |
||
Juliet, a likewise young woman of remarkable grace. |
Juliet, a likewise young woman of remarkable grace. |
||
Ophelia, a remarkable woman much in dispute with Hamlet. |
Ophelia, a remarkable woman much in dispute with Hamlet. |
||
Hamlet, the flatterer of Andersen Insulting A/S |
Hamlet, the flatterer of Andersen Insulting A/S |
||
⚫ | |||
Act I: Hamlet's insults and flattery. |
|||
⚫ | |||
[Enter Hamlet and Romeo] |
[Enter Hamlet and Romeo] |
||
Hamlet: |
Hamlet: |
||
You lying stupid fatherless big smelly half-witted coward! You are as |
You lying stupid fatherless big smelly half-witted coward! You are as |
||
stupid as the difference between a handsome rich brave hero and thyself! |
stupid as the difference between a handsome rich brave hero and thyself! |
||
Speak your mind! |
Speak your mind! |
||
You are as brave as the sum of your fat little stuffed misused dusty |
You are as brave as the sum of your fat little stuffed misused dusty |
||
old rotten codpiece and a beautiful fair warm peaceful sunny summer's |
old rotten codpiece and a beautiful fair warm peaceful sunny summer's |
||
day. You are as healthy as the difference between the sum of the |
day. You are as healthy as the difference between the sum of the |
||
sweetest reddest rose and my father and yourself! Speak your mind! |
sweetest reddest rose and my father and yourself! Speak your mind! |
||
You are as cowardly as the sum of yourself and the difference |
You are as cowardly as the sum of yourself and the difference |
||
between a big mighty proud kingdom and a horse. Speak your mind. |
between a big mighty proud kingdom and a horse. Speak your mind. |
||
Speak your mind! |
Speak your mind! |
||
[Exit Romeo] |
[Exit Romeo] |
||
Scene II: The praising of Juliet. |
Scene II: The praising of Juliet. |
||
[Enter Juliet] |
[Enter Juliet] |
||
Hamlet: |
Hamlet: |
||
Thou art as sweet as the sum of the sum of Romeo and his horse and his |
Thou art as sweet as the sum of the sum of Romeo and his horse and his |
||
black cat! Speak thy mind! |
black cat! Speak thy mind! |
||
[Exit Juliet] |
[Exit Juliet] |
||
Scene III: The praising of Ophelia. |
Scene III: The praising of Ophelia. |
||
[Enter Ophelia] |
[Enter Ophelia] |
||
Hamlet: |
Hamlet: |
||
Thou art as lovely as the product of a large rural town and my amazing |
Thou art as lovely as the product of a large rural town and my amazing |
||
bottomless embroidered purse. Speak thy mind! |
bottomless embroidered purse. Speak thy mind! |
||
Thou art as loving as the product of the bluest clearest sweetest sky |
Thou art as loving as the product of the bluest clearest sweetest sky |
||
and the sum of a squirrel and a white horse. Thou art as beautiful as |
and the sum of a squirrel and a white horse. Thou art as beautiful as |
||
the difference between Juliet and thyself. Speak thy mind! |
the difference between Juliet and thyself. Speak thy mind! |
||
[Exeunt Ophelia and Hamlet] |
[Exeunt Ophelia and Hamlet] |
||
Act II: Behind Hamlet's back.<br> |
|||
Act II: Behind Hamlet's back. |
|||
Scene I: Romeo and Juliet's conversation. |
|||
[Enter Romeo and Juliet] |
|||
Romeo: |
Romeo: |
||
Speak your mind. You are as worried as the sum of yourself and the |
Speak your mind. You are as worried as the sum of yourself and the |
||
difference between my small smooth hamster and my nose. Speak your |
difference between my small smooth hamster and my nose. Speak your |
||
mind! |
mind! |
||
Juliet: |
Juliet: |
||
Speak YOUR mind! You are as bad as Hamlet! You are as small as the |
Speak YOUR mind! You are as bad as Hamlet! You are as small as the |
||
difference between the square of the difference between my little pony |
difference between the square of the difference between my little pony |
||
and your big hairy hound and the cube of your sorry little |
and your big hairy hound and the cube of your sorry little |
||
codpiece. Speak your mind! |
codpiece. Speak your mind! |
||
[Exit Romeo] |
[Exit Romeo] |
||
Scene II: Juliet and Ophelia's conversation. |
Scene II: Juliet and Ophelia's conversation. |
||
[Enter Ophelia] |
[Enter Ophelia] |
||
Juliet: |
Juliet: |
||
Thou art as good as the quotient between Romeo and the sum of a small |
Thou art as good as the quotient between Romeo and the sum of a small |
||
furry animal and a leech. Speak your mind! |
furry animal and a leech. Speak your mind! |
||
Ophelia: |
Ophelia: |
||
Thou art as disgusting as the quotient between Romeo and twice the |
Thou art as disgusting as the quotient between Romeo and twice the |
||
difference between a mistletoe and an oozing infected blister! Speak |
difference between a mistletoe and an oozing infected blister! Speak |
||
your mind! |
your mind! |
||
[Exeunt] |
[Exeunt] |
||
==Linki zewnętrzne== |
== Linki zewnętrzne == |
||
* [http://shakespearelang.sourceforge.net/ Strona projektu] |
* [http://shakespearelang.sourceforge.net/ Strona projektu] |
||
* [http://sourceforge.net/projects/shakespearelang/ Projekt na SourceForge] |
* [http://sourceforge.net/projects/shakespearelang/ Projekt na SourceForge] |
||
{{Języki programowania}} |
|||
[[Kategoria:Ezoteryczne języki programowania]] |
|||
[[en:Shakespeare (programming language)]] |
|||
[[ko:셰익스피어 프로그래밍 언어]] |
|||
[[ja:Shakespeare (プログラミング言語)]] |
|||
[[ru:Shakespeare]] |
Aktualna wersja na dzień 16:14, 30 paź 2020
Shakespeare jest ezoterycznym językiem programowania stworzonym przez Jona Åslunda i Karla Hasselströma. Podobnie jak Chef jest tak zaprojektowany, aby sprawiał wrażenie czegoś innego niż kod źródłowy; w tym przypadku są to dramaty Williama Szekspira.
Lista postaci biorących udział w sztuce jest deklaracją ilości stosów używanych w programie. Postaci te prowadzą ze sobą dialog zmieniając sobie nawzajem wartości z wierzchu stosu, wykonując polecenia typu push i pop i przeprowadzając I/O. Mogą również zadawać sobie nawzajem pytania, które mają charakter instrukcji warunkowych. W całości język przypomina asembler.
Programowanie w Shakespeare
[edytuj | edytuj kod]Tytuł
[edytuj | edytuj kod]Pierwsza linijka jest nazywana „tytułem”. Kompilator traktuje wszystko od pierwszej linijki do pierwszej części jako komentarz.
Lista postaci
[edytuj | edytuj kod]Jest to sekcja w której deklaruje się zmienne i stosy. Każda zmienna może zawierać oznakowaną liczbę całkowitą. Deklaracja wygląda następująco:
imię, opis
gdzie imię
jest nazwą zmiennej, a opis
jest traktowany jako komentarz. Imię
musi być imieniem jednego z bohaterów dramatów szekspirowskich, inaczej wystąpi błąd kompilacji.
Akty i sceny
[edytuj | edytuj kod]Program dzieli się na akty, a następnie na sceny, w których występują postaci, a więc w których operujemy zmiennymi. Każdy akt i scenę deklaruje się z użyciem rzymskich cyfr, a następnie po dwukropku opisu fragmentu. Deklaracja wygląda następująco:
Act I: Oszczerstwa Hamleta i wewnętrzna rozterka. Scene I: Podłość Hamleta
Enter, Exit i Exeunt
[edytuj | edytuj kod]Enter
(pol. wchodzi na scenę), Exit
(pol. schodzi ze sceny), Exeunt
(z łac. exeunt, wychodzą) używa się do kierowania postaci (zmiennych) na scenę. Aby wywołać zmienną (wywołać postać na scenę) lub kilka zmiennych należy użyć Enter
. Aby powiedzieć postaci by opuściła scenę korzysta się z Exit
. W przypadku więcej niż jednej zmiennej korzysta się z Exeunt
, jeżeli nie podamy żadnej zmiennej to kończymy scenę. Korzysta się z następującego formatu:
[Enter Romeo] [Enter Juliet and Romeo] [Exit Juliet] [Exeunt Juliet and Romeo] [Exeunt]
Wartości
[edytuj | edytuj kod]Aby przywołać wartości (takie jak 8 czy 1337) należy korzystać z rzeczowników i przymiotników.
Każdy rzeczownik przybiera wartość 1 lub -1, w zależności czy jest ładny czy nie. Dla przykładu, rzeczownik flower
(pol. kwiat) przyjmie wartość 1, gdyż kwiaty są ładne. Natomiast wyraz pig
(pol. świnia) przybiera wartość -1, gdyż świnie kojarzą się z brudem i brzydotą. Neutralne rzeczowniki takie jak tree
(pol. drzewo) również przyjmują wartość 1.
Dzięki przymiotnikom podwajamy wartość rzeczownika; kolejnym przymiotnikiem znów podwajamy wartość, itd. Dzięki temu można osiągnąć każdą wielokrotność dwójki. Na tej podstawie możemy tworzyć inne liczby dodając je do siebie (The sum of X and Y
, Suma X i Y) czy odejmując (The difference between X and Y
, Różnica pomiędzy X i Y). Można również podnosić wartości do kwadratu za pomocą square
, czy do sześcianu używając cube
. A więc The difference between the square of a little flower and a smelly dirty pig
jest równe (2*1)²-(2*2*(-1))
, czyli 8.
Przykładowy kod
[edytuj | edytuj kod]Poniżej znajduje się część kodu programu wyświetlającego na ekranie Hello world. Zdania twierdzące przypisują wartości liczbowe postaciom, natomiast „Speak your mind” (pol. wyraź swe myśli) wyświetla wartość jako znak.
Romeo, a young man with a remarkable patience. Juliet, a likewise young woman of remarkable grace. Ophelia, a remarkable woman much in dispute with Hamlet. Hamlet, the flatterer of Andersen Insulting A/S Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo. [Enter Hamlet and Romeo] Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind! You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer's day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind! You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind. Speak your mind! [Exit Romeo] Scene II: The praising of Juliet. [Enter Juliet] Hamlet: Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind! [Exit Juliet] Scene III: The praising of Ophelia. [Enter Ophelia] Hamlet: Thou art as lovely as the product of a large rural town and my amazing bottomless embroidered purse. Speak thy mind! Thou art as loving as the product of the bluest clearest sweetest sky and the sum of a squirrel and a white horse. Thou art as beautiful as the difference between Juliet and thyself. Speak thy mind! [Exeunt Ophelia and Hamlet] Act II: Behind Hamlet's back. Scene I: Romeo and Juliet's conversation. [Enter Romeo and Juliet] Romeo: Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind! Juliet: Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind! [Exit Romeo] Scene II: Juliet and Ophelia's conversation. [Enter Ophelia] Juliet: Thou art as good as the quotient between Romeo and the sum of a small furry animal and a leech. Speak your mind! Ophelia: Thou art as disgusting as the quotient between Romeo and twice the difference between a mistletoe and an oozing infected blister! Speak your mind! [Exeunt]