Seppellirà una risata mi
(…invero bislacca, la notazione polacca…)
E voi vi chiederete: perché oggi Album parla come uno Yoda ubriaco? E ancora, dopo Hitler e Woody Allen, non potremmo lasciare in pace la Polonia? E infine, questa cosa bislacca: cazz’è la notazione polacca?
Andiamo con ordine, partiamo dalla fine. 😝
Intanto, la notazione polacca. Io ero convinto di conoscerla, ero già pronto a scrivere… e invece no! 🛑 (Scusate un momento, tolgo Wagner e metto Brunori Sas) Dicevamo: e invece no, aprendo Wikipedia ho scoperto che 1) facevo una gran confusione, e 2) avevo appena trovato nutrimento nella solita dozzina di riferimenti incrociati (ah, meraviglia dell’ipertesto!) ai più disparati argomenti del sapere di questo e altri universi.
Ma torniamo a noi.
La PN, dall'inglese “Polish notation”, è un modo tutto particolare di scrivere espressioni matematiche, inventato attorno al 1924 da un certo Jan Łukasiewicz (non chiedetemi come si pronunci). Prendiamo ad esempio un calcolo semplice, tipo:
34 + 8
che dà, naturalmente, 42. Quella appena usata, che conosciamo tutti, è la notazione infissa, in cui cioè il + (l’operatore) si trova fra 34 e 8 (i due operandi). In PN, invece, che è una notazione prefissa, la stessa espressione si scriverà come:
+ 34 8
La cosa bella è che, conoscendo in anticipo su quanti operandi lavorerà l’operatore (la sua cosiddetta arietà), possiamo eliminare completamente l’uso delle parentesi, che fu proprio l’idea di partenza dell’inventore polacco.
Orbene, e dunque… proviamo assieme: quanto farà mai la seguente espressione in PN?
* + 16 5 2
Se avete iniziato a ridere istericamente, benissimo, avete capito il titolo del post. E, tranquilli, è esattamente quel che è successo a me ieri, lavorando sul codice per generare le pagine del blog. 😅
Ma proviamo a ragionare…
Intanto, un trucchetto, che ci servirà anche dopo: il metodo più semplice per non perdersi in simili espressioni, via via che si aggiungono operatori e la complessità cresce, è quello di visualizzare tutto il calcolo usando quel che in informatica viene chiamato pila (o stack). Nulla di così complicato, in verità: immaginate un pezzo di tubo, con un’estremità sigillata… come dite, un barattolo di Pringles? Perfetto, non avrei saputo trovare esempio migliore!
Prendete dunque il vostro tubo di Pringles, buttate via il tappo, versate il crocchiante contenuto in una ciotola… e allontanatevi, che qui dobbiamo lavorare 😜
Con la bocca del tubo vuoto alla vostra destra (poi capirete perché), immaginate ora di infilarvi con la sinistra, uno per uno, i vari elementi dell’espressione: prima il 2, poi il 5… e infine * (gli elementi, un po’ come le patatine, rimangono nell’ordine in cui li avete inseriti, senza mescolarsi).
Adesso, dopo tanta fatica, iniziamo l’estrazione (detta pop).
Toh, *; sappiamo che ha arietà 2, quindi serviranno almeno altri due pop dalla nostra pila per ottenere i due fattori.
Ma, perbacco!, un altro pop ci ha dato +, che ha di nuovo arietà 2. Un altro paio di pop…
Stavolta, tuttavia, siamo fortunati, estraendo prima un 16 e poi un 5; li sommiamo, e inseriamo il 21 così ottenuto di nuovo nel nostro tubo.
Dove eravamo rimasti? Al povero *, che avevamo accantonato. Ebbene, dicevamo due pop anche per lui…
21…
2…
Voilà! Possiamo ora concludere con la moltiplicazione, ottenendo, che ve lo dico a fare… 42! 😂
A margine, congratulazioni: avete appena simulato con successo il funzionamento di un processore 🤝
La PN è detta anche Polish prefix notation, normal Polish Notation (NPN), e in vari altri modi. Questo soprattutto per distinguerla dalla ben più diffusa reverse Polish notation (RPN), introdotta in realtà da un australiano e resa celebre da alcune calcolatrici, che era poi quella che conoscevo io, prima di scoprire di confonderla con la PN.
La RPN, tanto per chiudere il cerchio, è una notazione postfissa, ovvero con gli operatori a destra degli operandi, con gli stessi vantaggi della PN quanto alle parentesi. Esempio lampo:
3 55 71 + /
Se avete capito la notazione normale, non dovreste avere nessuna difficoltà: prendete il vostro tubo, posizionatelo stavolta a sinistra, quindi riempitelo col 3, col 55, etcetera, etcetera… buon lavoro! 😉
Prima di lasciarvi alla vostra ciotola di Pringles, per consolarvi d’aver imparato una cosa inutile anche oggi, volevo inoltre dirvi che:
- la strana versione del Basic Galattico usata da Yoda è (spesso) strutturata secondo l’ordine oggetto soggetto verbo (OSV), il più raro in assoluto fra tutte le lingue del mondo (almeno secondo Wikipedia); per certi versi, se pensiamo al verbo come un operatore, l’ordine OSV sembra proprio la RPN, più che mai con operatori di confronto come
<
e>
; - ne consegue che, se Yoda parla in RPN, Yoda ubriaco potrebbe parlare in PN (come nel titolo) 🤣
- la lingua haida, una delle poche OSV, è una lingua nativa americana, parlata in Canada da appena 75 persone (nel 2011);
- esiste anche una lingua OSV artificiale, il kotava, creata nel 1978 e parlata (forse) da circa quaranta persone, per giunta sparse per il mondo 😯
- “bislacco”, ricontrollato per scrupolo su sapere.it, ha un’etimologia curiosa: “Forse dal ven. bislaco, e questo dallo sloveno bezjak ‘pazzo’, soprannome dato ai veneti del Friuli e agli slavi dell’Istria”.
Tutte cose scoperte stamani, inutili quanto volete, ma che almeno mi tengono viva la curiosità 😁
Mentre, per contro, il codice del blog mi mostra beffarde espressioni in PN come questa:
or $showNumber (and (gt .PageNumber (sub $pag.PageNumber 2)) (lt .PageNumber (add $pag.PageNumber 2)))
Altro che il tubo di Pringles che non ho! 🙄
Output by Album at 11:55:42 | 21:37:11