I 10 linguaggi di programmazione veramente bizzarri
Questa è una lista di alcuni dei linguaggi di programmazione più bizzarri che tu abbia mai visto. Questi tipi di linguaggi sono solitamente chiamati "linguaggi di programmazione esoterici". Un linguaggio di programmazione esoterico (a volte abbreviato in Tarantopedia) è un linguaggio di programmazione per computer progettato sia come test dei confini del design del linguaggio di programmazione, per sperimentare idee strane o semplicemente come uno scherzo, piuttosto che per ragioni pratiche. Di solito non c'è intenzione di adottare la lingua per la programmazione del mondo reale. Tali lingue sono spesso popolari tra hacker e hobbisti.
L'usabilità è raramente una priorità elevata per tali lingue; spesso al contrario. Il solito obiettivo è rimuovere o sostituire le funzionalità linguistiche convenzionali mantenendo comunque un linguaggio che è completo di Turing, o anche uno per cui la classe computazionale è sconosciuta.
Sono state sviluppate molte lingue affascinanti e improbabili, e c'è una piccola ma attiva comunità Internet di persone che creano, programmano e discutono di esse.
Un programma "Hello World" è stato tradizionalmente il primo programma che molte persone apprendono in una lingua che è nuova per loro. È un (solitamente) semplice pezzo di codice che emette le parole "Hello, World!" Su un dispositivo di output, in genere lo schermo del computer.
Assicurati di guardare tutti i codici di esempio - sono, nella maggior parte dei casi, abbastanza divertenti.
10INTERCAL
INTERCAL è stato creato nel 1972, probabilmente diventando così il primo linguaggio di programmazione esoterico. Donald R. Woods e James M. Lyon (nella foto sopra) l'hanno inventato, con l'obiettivo di creare un linguaggio senza somiglianze di sorta con i linguaggi di programmazione esistenti.
Secondo il manuale originale degli autori, "Il nome completo del compilatore è 'Compiler Language With No Pronounceable Acronym', che è, per ovvi motivi, abbreviato 'INTERCAL'."
Le operazioni comuni in altre lingue hanno sintassi criptica e ridondante in INTERCAL. Il manuale di riferimento INTERCAL contiene molte istruzioni paradossali, prive di senso o comunque divertenti, come:
"Attenzione! Non confondere in nessun caso la rete con l'operatore interleave, salvo in circostanze confuse! "
INTERCAL ha molte altre caratteristiche progettate per renderlo ancora più estetico per il programmatore: usa affermazioni come "IGNORE" e "FORGET", così come modificatori come "PLEASE". Quest'ultima parola chiave fornisce due motivi per il rifiuto del programma da parte del compilatore: se "PLEASE" non appare abbastanza spesso, il programma viene considerato insufficientemente educato e il messaggio di errore lo dice; se troppo spesso, il programma potrebbe essere rifiutato come eccessivamente educato.
Hello World in INTERCAL, con codice equivalente in C per il confronto
9 Lo spazio biancoCome suggerisce il nome, Whitespace, progettato nel 2002 da Edwin Brady e Chris Morris, è un linguaggio di programmazione esoterico che utilizza come sintassi solo i caratteri degli spazi bianchi. Pertanto, solo gli spazi, le tabulazioni e i linefeed hanno significato. Quando è stato rilasciato il 1 ° aprile 2003, la maggior parte della gente lo ha preso come uno scherzo di April Fools, che non lo era.
A differenza della maggior parte dei linguaggi di programmazione, che ignorano o assegnano poco significato alla maggior parte dei caratteri di spazi bianchi, l'interprete di spazi bianchi ignora qualsiasi carattere non di uno spazio bianco. Una conseguenza interessante di questa proprietà è che un programma di spazio bianco può essere facilmente contenuto nei caratteri di uno spazio bianco di un programma scritto in un'altra lingua, rendendo il testo un poliglotta.
Nella foto sopra è "Hello World" in Whitespace.
capocuoco
Lo chef, progettato da David Morgan-Mar nel 2002, è un linguaggio di programmazione esoterico in cui i programmi sembrano ricette di cucina. Le variabili tendono ad essere nominate in base a prodotti alimentari di base, le pile sono chiamate "bacinelle" o "piatti da forno" e le istruzioni per manipolarle "mescolano", "mescolano", ecc. Gli ingredienti in una terrina o in una teglia sono ordinati "Come una pila di pancake".
Secondo la Home Page dello Chef, i principi di design per lo Chef sono:
- Le ricette del programma non dovrebbero generare solo risultati validi, ma essere facili da preparare e deliziosi.
- Le ricette possono fare appello a cuochi con budget diversi.
- Le ricette saranno metriche, ma potrebbero usare misure di cottura tradizionali come tazze e cucchiai.
Ciao mondo in cuoco
7 VelatoVelato è un linguaggio che usa i file MIDI come codice sorgente. I programmi in Velato sono definiti dal tono e dall'ordine delle note. È inteso per consentire flessibilità nella composizione, quindi i programmi funzionali non assomigliano necessariamente a note casuali. C'è una tendenza per i programmi Velato ad avere armonie simili al jazz.
Tutte le istruzioni in Velato iniziano con una nota "radice di comando"; gli intervalli da questa nota sono tradotti in comandi ed espressioni. La radice di comando può essere cambiata tra le istruzioni, per consentire più progressioni musicali (o almeno meno ripetitive).
Naturalmente, come tutti i file MIDI, i programmi Velato possono anche essere rappresentati come spartiti. Nella foto sopra c'è lo spartito - che puoi ascoltare qui.
6Shakespeare
Lo Shakespeare Programming Language (SPL) è stato progettato da Jon Åslund e Karl Hasselström. Come Chef (articolo n. 8), è progettato per far apparire i programmi qualcosa di diverso dai programmi; in questo caso, i drammi shakespeariani.
La prima riga di un programma di Shakespeare è chiamata "titolo" e funge da commento. Il "Dramatis Personae" è la sezione in cui vengono dichiarate le variabili. Ogni nome di variabile deve essere il nome di un personaggio di un'opera di Shakespeare.
Un pezzo di codice in Shakespeare è suddiviso in "Atti", che contengono "Scene", in cui i personaggi (variabili) interagiscono. Ogni atto e scena è numerato con un numero romano e funge da etichetta GOTO. Sono scritti nella forma:
Atto I: insulti e lusinghe di Amleto.
Scena I: l'insulto di Romeo.
Prima che i "personaggi" (le variabili) possano "agire" (essere messi in atto) devono prima essere "sul palco". Per chiamare una variabile sullo stage viene utilizzato il comando "Invio". Per dire ai personaggi di lasciare il palco, usa il comando "Esci". "Escono" chiama più di un personaggio a lasciare, o nel caso in cui non sono elencati tutti i personaggi lasceranno il palco.
Ciao mondo a Shakespeare
Omgrofl è una lingua creata nel 2006 da Juraj Borza. In netto contrasto con la voce precedente, le sue parole chiave assomigliano a slang su Internet. Il nome deriva dalla combinazione delle "parole" gergali Oh mio Dio e rofl. rofl è in realtà uno dei comandi di Omgrofl. Omgrofl non è case-sensitive, quindi lol equivale a LoL. Puoi usare questo per produrre codice "più bello".
Le variabili in Omgrofl devono essere una forma della parola gergale lol, come lol, lool, loool, looool, ecc. Una variabile può essere definita come:
lol iz 4
WTF condizione è una dichiarazione condizionale (come Se in C). Le istruzioni fino all'esecuzione del brb corrispondente vengono eseguite solo se la condizione è vera.
Uso:
lol iz 1
wtf lol iz liek 1
rofl lol
lmao lol
brb
Le condizioni possibili sono:
iz uber - controlla se un'espressione è maggiore di un'altra.
iz liek: controlla se due espressioni sono uguali.
Questi possono essere modificati da:
no - negazione (come ! in C) - deve essere posizionato di fronte a liek o uber.
utilizzo:
x ž nope uber y
lol iz nope liek 7
Altre parole chiave in Omgrofl includono: rtfm, tldr, w00t, stfw, n00b, l33t, haxor, stfu (esce immediatamente dall'applicazione).
Ciao mondo in Omgrofl
4Piet
Piet è un linguaggio i cui programmi sono grafici bitmap che assomigliano all'arte astratta. È stato progettato da David Morgan-Mar, che ha anche creato Chef. Prende il nome dal pioniere dell'arte geometrica astratta, Piet Mondrian; il nome originariamente inteso, Mondrian, era già stato preso.
Sono disponibili 20 colori per i quali è specificato il comportamento: 18 colori "colorati", ordinati con un ciclo di tonalità in 6 fasi e un ciclo di luminosità in 3 fasi; e bianco e nero, che non sono ordinati. Quando si esce da un colore "colorato" e ne si entra in un altro, la procedura eseguita è determinata dal numero di passaggi di cambiamento di tonalità e luminosità. Il nero non può essere inserito; quando il puntatore tenta di entrare in una regione nera, le regole di scelta del blocco successivo vengono invece cambiate. Se vengono provate tutte le regole possibili, il programma termina. Il bianco non esegue operazioni, ma consente al puntatore di "passare attraverso".
Nella foto sopra è un programma Piet che emette "piet".
3 BefungeBefunge differisce dai linguaggi convenzionali in quanto i programmi sono disposti su una griglia bidimensionale, il campo di gioco. Le istruzioni "Freccia" -, ^, e v - indirizzano il flusso di controllo a sinistra, a destra, in alto o in basso e i loop sono costruiti inviando il flusso di controllo in un ciclo.
Befunge è stato inventato nel 1993 da Chris Pressey, con l'obiettivo di essere il più difficile da compilare possibile. Questo è stato tentato con l'implementazione del codice auto-modificante (l'istruzione 'p' può scrivere nuove istruzioni nel campo di gioco) e un campo di gioco multidimensionale (la stessa istruzione può essere eseguita in quattro diverse direzioni). Tuttavia, un certo numero di compilatori sono stati successivamente scritti.
Come brainfuck (vedi articolo 1), Befunge ha generato molti discendenti e cugini remoti. Vengono chiamate estensioni e varianti di Befunge Fungeoids o semplicemente Funges.
La maggior parte dei linguaggi di programmazione monodimensionali richiedono una distinzione sintattica tra il testo del commento e il codice sorgente. In Befunge non esiste una sintassi per i commenti: per incorporare la documentazione nel codice, il programmatore indirizza semplicemente il flusso di controllo attorno all'area "commento", in modo che il testo in quell'area non venga mai eseguito.
Ciao mondo in Befunge
2Malbolge
Considerando che Befunge è progettato per essere difficile da compilare (tradotto in codice macchina), Malbolge, creato da Ben Olmstead nel 1998, e dal nome dell'ottava cerchia dell'Inferno in Dante's Inferno, è destinato a essere il più difficile possibile per scrivere programmi. È stato così difficile capire quando è arrivato che ci sono voluti due anni perché il primo programma Malbolge appaia, e anche questo non è stato scritto da un umano, ma da un Programma Lisp utilizzando una ricerca del raggio dello spazio di tutti i programmi possibili.
Si discute se sia possibile implementare loop sensibili in Malbolge: ci sono voluti molti anni prima che venisse introdotta la prima non terminante. Un programma "99 Bottles of Beer" corretto (con il testo completo della canzone come output), che tratta di loop e condizioni non banali, non è stato annunciato per otto anni; la prima corretta è stata di Hisashi Iizawa, nel 2007. È raffigurata sopra.
Ciao mondo in Malbolge
1 BrainfuckBrainfuck è il più famoso linguaggio di programmazione esoterico e ha ispirato la creazione di una miriade di altre lingue. Notato per il suo minimalismo estremo, è progettato per sfidare e divertire i programmatori e non è adatto per l'uso pratico. Per evitare l'offesa, il suo nome viene talvolta dato come b **** fuck. Il nome della lingua non è generalmente in maiuscolo tranne all'inizio di una frase.
Urban Müller ha creato Brainfuck nel 1993, con l'intenzione di progettare un linguaggio che potesse essere implementato con il compilatore più piccolo possibile. Diversi compilatori di Brainfuck sono stati resi più piccoli di 200 byte.
Il linguaggio comprende solo otto comandi:> <+ -. , []. Un programma di avvio automatico è una sequenza di questi comandi, eventualmente intervallati da altri caratteri (che vengono ignorati).
Come suggerisce il nome, i programmi brainfuck tendono a essere difficili da comprendere. Questo perché qualsiasi attività delicatamente complessa richiede una lunga sequenza di comandi, che è uno dei motivi per cui non viene utilizzato per una programmazione seria. Tuttavia, come qualsiasi linguaggio completo di Turing, il brainfuck è teoricamente in grado di calcolare qualsiasi funzione computabile, se ha accesso a una quantità illimitata di memoria.
Ciao mondo in brainfuck
Questa lista è stata compilata con l'aiuto di Esolang Wiki e Wikipedia.