Quando FORTRAN ha deciso gli interi con segno?
Personalmente sono sempre stato dell'opinione che avrebbe avuto senso che il tipo intero predefinito non fosse firmato, anche se è passato molto tempo da quando sarebbe stato un argomento di dibattito vivo; Il C negli anni '70 era già predefinito per gli interi con segno, né era la prima lingua a farlo.
Mi interessa esattamente quando, perché e come è stata presa la prima decisione. In linguaggio assembly, non esiste realmente un valore predefinito; specifichi sempre firmato e non firmato. Quindi dovremmo guardare ai linguaggi di alto livello (usando qui la definizione classica di alto livello come "livello superiore all'assembly"). La prima lingua di alto livello significativamente influente era Fortran. I moderni standard Fortran impongono ai compilatori di trattare le variabili intere come firmate se non diversamente specificato.
Quando l'ha deciso Fortran? La decisione era già stata presa nei primi compilatori Fortran? Qualche compilatore su qualche macchina ha trattato gli interi come non firmati?
Risposte
FORTRAN è stato originariamente sviluppato per il computer IBM 704, che memorizzava numeri interi in formato segno e grandezza. Nella documentazione originale, supporta variabili a virgola fissa, che utilizzavano il formato nativo della macchina, variabili a virgola mobile e costanti a virgola fissa senza segno , destinate a numeri di riga e pedici. Questi sarebbero tradotti in offset che si adattano ai registri degli indici del 704. Oltre all'indicizzazione da parte di questi tre registri, il 704 aveva solo una piccola manciata di istruzioni per l'aritmetica di interi senza segno ACY
e CAL
(che poteva aggiungere una parola logica all'accumulatore). Era anche possibile fare la moltiplicazione per costanti attraverso una combinazione di spostamenti e addizioni, che era sufficiente per calcolare l'indirizzo di un elemento dell'array, ma non per eseguire altre operazioni aritmetiche.
John Backus scrisse in seguito: "Di certo non avevamo idea che lingue quasi identiche a quella su cui stavamo lavorando sarebbero state utilizzate per più di un computer IBM, per non parlare di quelle di altri produttori".
Non c'era alcuna seria considerazione delle variabili intere senza segno, perché l'architettura FORTRAN era progettata per funzionare non aveva questo tipo nativo. La decisione è stata presa per questo motivo tecnico. Le considerazioni su quanto uno sarebbe stato utile o meno per la fisica computazionale non era storicamente importante per essa.
Fortran è stato sviluppato pensando al calcolo scientifico. I valori negativi si verificano chiaramente abbastanza frequentemente quando si fa calcolo scientifico o, del resto, in molti altri domini problematici che gli sviluppatori del linguaggio potrebbero aver considerato.
Il supporto dell'integrale senza segno avrebbe avuto un certo valore, ma il linguaggio avrebbe comunque dovuto supportare i tipi integrali con segno. Poiché quasi tutti i valori senza segno interessanti si adattano comodamente a una variabile intera con segno, potrebbero aver sentito di essere in grado di supportare il loro pubblico di destinazione (calcolo scientifico) fornendo anche un livello ragionevole di supporto per coloro che volevano davvero lavorare con valori senza segno . In alternativa, potrebbero aver semplicemente deciso di concentrarsi sull'aritmetica con segno senza fare alcuno sforzo per considerare cosa potrebbe significare supportare l'aritmetica senza segno semplicemente perché il loro pubblico di destinazione avrebbe quasi tutti bisogno di un linguaggio che supportasse i valori con segno.