Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Guida pratica ai linguaggi di programmazione brutti

Parlare di linguaggi di programmazione “brutti” può essere un po’ soggettivo, poiché le preferenze personali e le esigenze del progetto possono influenzare le opinioni sugli strumenti di sviluppo. Tuttavia, ci sono alcuni linguaggi che sono spesso considerati meno attraenti o più problematici per varie ragioni. Ecco alcuni esempi di quelli che provocano volutamente il mal di testa.

Whitespace

Si tratta di un linguaggio di programmazione in cui solo spazi, tabulazioni e ritorni a capo sono significativi, mentre i caratteri alfanumerici sono ignorati. La sua sintassi basata sulla formattazione del testo può essere considerata poco pratica e difficile da leggere per molte persone. Questo programma, se eseguito con un interprete Whitespace, stamperà “Hello World!” sulla console. Anche se può sembrare criptico, i diversi spazi vuoti, tabulazioni e ritorni a capo sono interpretati dall’interprete Whitespace per produrre l’output desiderato.

Ecco un programma “Hello World!” scritto in Whitespace, un linguaggio di programmazione che utilizza solo spazi vuoti, tabulazioni e ritorni a capo per la sintassi, mentre ignora completamente i caratteri alfanumerici. Se non vedete nulla, è normale (i caratteri del linguaggio non sono visibili essendo spazi, il codice originale si trova qui – con compilatore online – e qui).

   	      	 
   			 		   		  	 
    
		    	  	   
	
     		  	 	
	
     		 		  
 
 	
  	
     		 				
	
     	     
	
     	 	 			
	
     		 				
	
     			  	 
	
     		 		  
	
     		  	  
	
     	    	
	
     	 	 
	
   




Brainfuck

È un linguaggio estremamente minimale e oscuro, composto da soli otto comandi. La sua sintassi è stata progettata per essere il più possibile compatta, ma questo rende il codice difficile da scrivere, leggere e comprendere. Gli 8 comandi di Brainfuck sono:

  1. >: Incrementa il puntatore della cella di memoria di 1.
  2. <: Decrementa il puntatore della cella di memoria di 1.
  3. +: Incrementa il valore della cella di memoria puntata di 1.
  4. -: Decrementa il valore della cella di memoria puntata di 1.
  5. [: Se il valore della cella di memoria puntata è zero, salta all’istruzione dopo la corrispondente parentesi chiusa ].
  6. ]: Torna all’istruzione dopo la corrispondente parentesi aperta [, se il valore della cella di memoria puntata non è zero.
  7. .: Stampa il valore ASCII della cella di memoria puntata.
  8. ,: Legge un carattere dalla tastiera e lo memorizza nella cella di memoria puntata come valore ASCII.

Esempio di Hello World:

+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
<.>>>++++++++++[<+++++++++>-]<—.<<<<.+++.——.——–.>>+.>++++++++++.

Scrivere una calcolatrice per la radice quadrata in Brainfuck può essere piuttosto complesso, dato che il linguaggio è molto limitato e non offre operazioni matematiche avanzate come la radice quadrata. Tuttavia, possiamo implementare una semplice approssimazione della radice quadrata utilizzando metodi come il metodo di Newton-Raphson. Ecco un’implementazione di base:

Esempio di calcolo della radice quadrata in brainfuck:

,>++++++[-<——–>]
[<+>-]
<,———-[
[>]+[<]
>[<->++++++++++++<]
>[-<+>]
<[->>+<<]>[-<+>]
>[<+>-]
>+>[-]
<+<[>[->+>+<<]>[-<+>]>[-<+>]>[-<+>]>[-<+>]<<<<<<[->>>>+<<<<[->>>+>>+<<<]>>>-]<<<<<<[->>>>+<<<<[->>+>>+<<<]>-]<<<<<<[->>>>+<<<<[->>+>+<<<]>>>>-]<<<<<<[->>>>>+<<<<<<[->>>>>+<<<+<]>>>>>>-]<<<<<<[->>>>>+<<<<<<[->>>>+<<+<]<<>>>>>>-]<<<<<<[->>>>>+<<<<<<[->>>>+<<<<<+<]>>>>>>>-]<<<<<<[->>>>>>+<<<<<<<[->>>>+<<+<<<<<]<<>>>>>>-]<<<<<<[->>>>>>+<<<<<<<[->>>>>+<<<<<<<+<]>>>>>>>>-]<<<<<<[->>>>>>>+<<<<<<<<<[->>>>>>>+<<<<<<<+<]>>>>>>>>>-]<<<<<<[->>>>>>>+<<<<<<<<<[->>>>>>+<<<<<<<+<]>>>>>>>>>>-]<<<<<<[->>>>>>>>+<<<<<<<<<<<[->>>>>>>>+<<<<<<<<<+<]>>>>>>>>>>>-]<<<<<<[->>>>>>>>+<<<<<<<<<<<[->>>>>>>+<<<<<<<<<+<]>>>>>>>>>>>>-]<<<<<<[->>>>>>>>>+<<<<<<<<<<[->>>>>>>>>+<<<<<<<<<<<+<]>>>>>>>>>>>>>-]<<<<<<[->>>>>>>>>+<<<<<<<<<<[->>>>>>>>+<<<<<<<<<<+<]>>>>>>>>>>>>>>-]<<<<<<[->>>>>>>>>>+<<<<<<<<<<<<[->>>>>>>>>+<<<<<<<<<<+<]>>>>>>>>>>>>>>–]
]
<[<->[-]]

Bello vero?

INTERCAL

Creato per essere il più ostico possibile, INTERCAL è noto per la sua sintassi bizzarra e poco intuitiva. È stato concepito come uno scherzo e non è mai stato adottato per scopi pratici. L’obiettivo di INTERCAL era più un esperimento umoristico che un linguaggio di programmazione pratico. Questo codice:

PLEASE READ OUT #13
DO ,1 <- #238
PLEASE DO ,1 SUB #1 <- #13
DO ,1 SUB #2 <- #0
DO ,1 SUB #3 <- #13
DO ,1 SUB #4 <- #194
DO ,1 SUB #5 <- #15
DO ,1 SUB #6 <- #225
PLEASE DO ,1 SUB #7 <- #248
PLEASE DO ,1 SUB #8 <- #13
DO ,1 SUB #9 <- #10
PLEASE DO ,1 SUB #10 <- #255
DO ,1 SUB #11 <- #220
DO ,1 SUB #12 <- #194
DO READ OUT ,1
PLEASE GIVE UP

restituisce :

ICL099I PROGRAMMER IS OVERLY POLITE ON THE WAY TO 18 CORRECT SOURCE AND RESUBNIT

e non sappiamo perchè.

Malbolge

Proclamato come il “linguaggio di programmazione più difficile da usare”, Malbolge è stato progettato appositamente per essere estremamente complicato da comprendere e scrivere. La sua sintassi è estremamente contorta e il suo funzionamento è quasi insensato.

Malbolge è un linguaggio di programmazione estremamente difficile da comprendere e utilizzare. È progettato per essere il più ostico possibile ed è noto per essere quasi impossibile da scrivere manualmente. Tuttavia, ecco un esempio di programma “Hello World!” in Malbolge:

(=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc

Questo codice Malbolge stampa “Hello World!” quando viene eseguito nell’interprete Malbolge. Tuttavia, capire come funziona questo codice e come sia stato generato richiederebbe una conoscenza approfondita del linguaggio e delle sue peculiarità. Malbolge è stato creato appositamente per essere estremamente difficile da comprendere e scrivere, quindi programmi anche relativamente semplici possono sembrare completamente incomprensibili.

PHP (si scherza)

Sebbene PHP sia stato ampiamente utilizzato per lo sviluppo web, è spesso criticato per la sua sintassi incostante, la mancanza di coerenza e alcune caratteristiche considerate obsolette o poco sicure. Nonostante ciò, ha una vasta base di utenti e continua a essere uno dei linguaggi principali per la creazione di siti web dinamici.

Scrivere un codice orribile in PHP va contro i principi della buona programmazione e della manutenibilità del codice. Tuttavia, posso fornirti un esempio di codice che viola molte best practice e che potrebbe essere considerato “orribile” in quanto difficile da leggere, comprendere e mantenere. Si prega di notare che non promuovo questo tipo di pratica di programmazione:

<?php

// Codice orribile in PHP

class A { 
public $name;
private $age;

public function __construct($n, $a) {
$this->name = $n;
$this->setAge($a);
}

public function setAge($a) {
if (is_numeric($a) && $a > 0 && $a < 150) {
$this->age = $a;
} else {
throw new Exception("Invalid age!");
}
}

public function getAge() {
return $this->age;
}
}

function prntA($a) {
echo "<br><b>Name: </b>" . $a->name . "<br>";
echo "<b>Age: </b>" . $a->getAge() . "<br>";
}

$person1 = new A("John", 25);
$person2 = new A("Jane", 30);
$person3 = new A("Jack", -5); // Età negativa

prntA($person1);
prntA($person2);
prntA($person3);

?>


Questo codice presenta diversi problemi, tra cui:

  1. Mancanza di separazione tra logica e presentazione.
  2. Gestione degli errori poco chiara.
  3. Assenza di validazione approfondita dei dati di input.
  4. Utilizzo di eccezioni per gestire scenari comuni come età negativa.
  5. Mancanza di coerenza nello stile di codifica.
  6. Mancanza di commenti e documentazione.
  7. Potenziali vulnerabilità di sicurezza.

Questi sono solo alcuni esempi di ciò che potrebbe rendere un codice PHP orribile. È importante scrivere codice che sia chiaro, coerente, sicuro e manutenibile.

Conclusioni

Questi sono solo alcuni esempi di linguaggi che potrebbero essere considerati “brutti” per vari motivi. Tuttavia, è importante ricordare che ogni linguaggio ha le sue peculiarità e che quello che potrebbe sembrare poco attraente per alcuni potrebbe essere perfettamente adatto per altri, a seconda delle esigenze del progetto e delle preferenze personali.

Ogni linguaggio di programmazione ha i suoi punti di forza e le sue debolezze, ed è importante scegliere quello più adatto alle esigenze specifiche del progetto e alle preferenze personali del programmatore. Quindi, mentre possiamo scherzare sulle peculiarità di alcuni linguaggi, è importante rispettare la diversità e la flessibilità offerta dalla vasta gamma di linguaggi disponibili. Alla fine, ciò che conta davvero è la capacità di utilizzare gli strumenti a nostra disposizione per creare software funzionale e di qualità. E ad un certo punto il linguaggio potrebbe anche rispondere “sarai bello tu!“.

👇 Da non perdere 👇



Questo portale web esiste da 4488 giorni (12 anni), e contiene ad oggi 5444 articoli (circa 4.355.200 parole in tutto) e 15 servizi online gratuiti. – Leggi un altro articolo a caso
Non ha ancora votato nessuno.

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo - Pagare online (il blog) - Trovalost.it