Funzionalità non documentata
# Funzionalità non documentata

Una funzionalità non documentata è un'operazione hardware non intenzionale o non documentata, ad esempio un'istruzione non documentata o una funzione software trovate nell'hardware e nel software che sono però considerate vantaggiose o utili. A volte la documentazione viene omessa per una svista, ma a volte le funzionalità non documentate non sono destinate all'uso da parte degli utenti finali, ma sono lasciate disponibili per il fornitore del supporto software e per lo sviluppo. Inoltre, alcune operazioni non intenzionali di hardware o software che finiscono per essere utili agli utenti sono semplicemente un bug, un difetto o una stranezza.

Poiché i fornitori del software di solito considerano la documentazione del software come un contratto per il comportamento di quest'ultimo, le funzionalità non documentate vengono generalmente lasciate non supportate e possono essere rimosse o modificate a piacimento e senza preavviso agli utenti. Alcuni difetti segnalati dall'utente sono visti dagli sviluppatori come funzionanti secondo quanto previsto, portando allo slogan "non è un bug, è una funzionalità" ("it's not a bug, it's a feature", indicato anche con l'acronimo "INABIAF") e alle sue variazioni.

## Hardware

A volte vengono utilizzate istruzioni non documentate, note come codici operativi illegali, sulla tecnologia MOS 6510 del Commodore 64 e sulla tecnologia MOS 6502 dei computer Apple II. Allo stesso modo i programmatori (in particolare di videogiochi e demo) sul Commodore Amiga sfruttano il funzionamento involontario dei suoi coprocessori per produrre nuovi effetti o ottimizzazioni.

Nel 2019 alcuni ricercatori scoprirono che una modalità di debug del produttore, detta VISA, aveva una funzionalità non documentata sugli hub Intel Platform Controller, noti come chipset e che sono inclusi nella maggior parte delle schede madri dell'azienda, il che rendeva la modalità accessibile con una normale scheda madre. Poiché il chipset ha accesso diretto alla memoria, questo potrebbe essere problematico, principalmente per motivi di sicurezza.

## Software

Funzionalità non documentate (ad esempio, la possibilità di cambiare il carattere dell'interruttore in MS-DOS, solitamente in un trattino) possono essere incluse per motivi di compatibilità (in questo caso con le utilità Unix) o per ragioni di imminente espansione. Tuttavia, se il fornitore cambia la propria strategia software per allinearsi meglio con l'azienda, l'assenza di documentazione rende più facile giustificare la rimozione della funzione.

Le nuove versioni del software potrebbero non menzionare le vecchie funzionalità (possibilmente sostituite) nella documentazione, ma mantenerle comunque implementate per gli utenti che sono abituati a usarle.

In alcuni casi, i bug del software vengono indicati dagli sviluppatori in modo scherzoso o convenientemente come funzionalità non documentate. Tale pratica potrebbe essere stata resa popolare da alcune delle risposte di Microsoft alle segnalazioni di bug per il suo primo prodotto Word per Windows. La sua origine però è ben altra: infatti si ha il riferimento più antico sopravvissuto su Usenet, risalente al 5 marzo 1984. Tra il 1969 e il 1972, Sandy Mathes, un programmatore di sistemi per il software PDP-8 presso la Digital Equipment Corporation (DEC) a Maynard, Massachusetts, utilizzava i termini "bug" e "funzionalità" nella sua relazione sui risultati dei test per distinguere tra azioni non documentate di prodotti software consegnati che erano rispettivamente inaccettabili e tollerabili. Questo uso potrebbe essere stato perpetuato.

Le stesse caratteristiche non documentate sono diventate una caratteristica importante dei videogiochi per computer. Gli sviluppatori spesso includono vari cheat e altre caratteristiche speciali (i cosiddetti "easter egg") che non sono spiegati nel materiale confezionato, ma sono diventati parte del dibattito sul gioco su Internet e tra i giocatori. Le caratteristiche non documentate dei titoli stranieri sono spesso elementi che non sono stati localizzati dalla loro lingua madre.

Le API di origine chiusa possono anche avere funzioni non documentate che non sono generalmente note. A volte vengono utilizzate per ottenere un vantaggio commerciale rispetto al software di terze parti fornendo informazioni aggiuntive o prestazioni migliori al fornitore dell'applicazione.

