Pubblicità
Motherboard

Il linguaggio di programmazione più bello è l'Asciidots

Riesce a battere anche il Java.

di Michael Byrne
17 agosto 2017, 10:05am

Se sei fuori dal mondo delle programmazione, i linguaggi di programmazione sembrano tutti, be', linguaggi di programmazione — un insieme di simboli matematici piazzati qui e là e che di tanto in tanto fanno fare capolino ad alcune isolate parole inglesi. Qualunque struttura o metodo organizzativo del codice fa riferimento principalmente al significato di questi simboli e di queste parole presenti all'interno del lessico di un determinato linguaggio o di una determinata famiglia di linguaggi di programmazione. Un non-programmatore non vedrà altro che un insieme confuso di termini, sia che stia tentando di leggere una stringa in Javascript, in Java o in Brainfuck.

Se il linguaggio di programmazione esoterico (esolang) Asciidots sembra un casino, perlomeno è un casino un po' diverso dagli altri e sopratutto non è nemmeno troppo brutto a vedersi. In pratica, le sue meccaniche e la sua sintassi sono basate sulla Ascii art. Prima di approfondire ulteriormente, diamo un'occhiata a un esempio di un programma in Asciidots.

Ciò che questo programma fa è piuttosto semplice. Prende una variabile e la incrementa di 1 ogni volta che il codice viene eseguito. Quindi, se abbiamo cominciato con una variabile x con un valore di 0 e poi facciamo eseguire il codice tre volte, allora quella x alla fine avrà un valore uguale a 3.

ll modo in cui questo codice esegue questa azione, però, non è così ovvio. L'Asciidots è un tipo di linguaggio di programmazione singolare conosciuto come linguaggio dataflow. In questo tipo di linguaggio possiamo immaginarci le unità di dati (come la variabile x) che seguono un tracciato di go-kart e che vengono interrotte in punti diversi da dei pit stop che cambiano il valore del go-kart di dati che sta girando sul tracciato. Un pit stop potrebbe aggiungere 1 alla variabile, mentre un altro potrebbe dimezzarne il valore. In diversi punti il tracciato potrebbe addirittura dividersi, facendo sì che il go-kart segua una pista piuttosto che un'altra in base al suo valore. Se, diciamo, il valore è maggiore di 2 allora va a sinistra, altrimenti a destra.

Altri esempi di linguaggi di programmazione dataflow includono il LabVIEW, Pure Data, Max/MSP, Verilog e il Simulink. Sono spesso sfruttati per simulare dei sistemi elettronici hardware — Per esempio, Pure Data e Max/MSP spesso vengono usati per la composizione musicale e durante le performance.

In Asciidots, il tracciato per go-kart di cui abbiamo parlato prima è rappresentato da delle linee (|,-,/,\). Il programma sotto dirige semplicemente un'unità di dati da un punto A a un punto B senza agire in nessun modo su di essa.

La maggior parte degli altri simboli non-lineari sono operatori matematici, ma ci sono anche simboli che istruiscono il programma a richiedere un input dall'utente, a determinare valori, a visualizzarli, a cambiare la direzione di un'unità di dati. Questa unità è rappresentata da un singolo punto. Quindi, i punti in un programma rappresentano le tappe d'entrata per altre unità di dati. Diamo un'occhiata a un'altro programma:

Quindi, qui abbiamo due punti che entrano nel tracciato. Ognuno dei quali è impostato su un valore usando un cancelletto seguito dal valore desiderato. Le due unità di dati poi incontrano un simbolo 'meno', che opera sui valori e dopodiché restituisce un risultato, che poi viaggia fino al simbolo del dollaro in cima. Il dollaro visualizza qualunque risultato riceva.

Ecco un intero gioco programmato in Asciidots. Ricordate che il simbolo del dollaro significa che il programma visualizza qualunque valore riceva, che, in questo caso, equivale alle istruzioni per il giocatore:

Sotto il cofano, Asciidots è un programma in Python. Un programma in Asciidots viene dato in pasto a un programma sottostante e digerito in codice Python normale, che viene poi eseguito. Molti linguaggi vanno così, incluso il Python stesso, che viene poi tradotto in codice C.

Dubito che l'Asciidots possa andare oltre il suo status di "esolang", ma gli esolang spesso hanno il beneficio di forzare i programmatori a guardare alla disciplina da un'altra prospettiva. Penso che Asciidots riesca perlomeno a fare questo, e ovviamente è molto figo a vedersi.