Stringa null-terminata: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot: correggo nomi e/o ordine e/o formattazione delle sezioni predefinite
Aggiungi 1 libro per la Wikipedia:Verificabilità (20231210)) #IABot (v2.0.9.5) (GreenC bot
Riga 6:
Le stringhe null-terminate sono state introdotte dalla direttiva <code>.</code> <code>ASCIZ</code> dei [[Linguaggio assembly|linguaggi assembly]] [[PDP-11]] e dalla direttiva <code>ASCIZ</code> del linguaggio assembly macro MACRO-10 per il [[PDP-10]]. Questi precedono lo sviluppo del linguaggio di programmazione C, ma sono state spesso utilizzate altre forme di stringhe.
 
Al momento dello sviluppo del C (e dei linguaggi da cui deriva), la memoria era estremamente limitata, quindi l'utilizzo di un solo byte di sovraccarico per memorizzare la lunghezza di una stringa era interessante. L'unica alternativa popolare a quel tempo, solitamente chiamata "stringa Pascal" (un termine più moderno è "[[Stringa (informatica)|lunghezza prefissata]]"), utilizzava un ''byte iniziale'' per memorizzare la lunghezza della stringa. Ciò consente alla stringa di contenere NUL e la ricerca della lunghezza di una stringa già memorizzata richiede solo un accesso alla memoria in [[Complessità temporale|tempo costante]] O(1), ma la lunghezza della stringa è limitata a 255 caratteri (su una macchina che utilizza byte a 8 bit). Il progettista del linguaggio C [[Dennis Ritchie]] ha scelto di seguire la convenzione della terminazione con carattere nullo per evitare la limitazione della lunghezza di una stringa e perché mantenere il conteggio sembrava, nella sua esperienza, meno conveniente rispetto all'utilizzo di un terminatore.<ref>{{Cita conferenza|titolo=The development of the C language|conferenza=Second History of Programming Languages conference|autore=Dennis M. Ritchie|data=Aprile 1993|città=Cambridge (MA)|wkautore=Dennis Ritchie|url=https://www.bell-labs.com/usr/dmr/www/chist.html|lingua=EN}}</ref><ref>{{Cita libro|nome=Dennis M.|cognome=Ritchie|wkautore=Dennis Ritchie|curatore=Thomas J. Bergin, Jr. , Richard G. Gibson, Jr.|altri=Addison-Wesley (Reading, Mass)|titolo=History of Programming Languages|url=https://archive.org/details/historyofprogram0000unse|ed=2|anno=1996|editore=ACM Press|città=New York|lingua=EN|capitolo=The development of the C language|ISBN=0-201-89502-1}}</ref>
 
Ciò ha avuto una certa influenza sulla progettazione del [[Instruction set|set di istruzioni]] della CPU. Alcune CPU negli anni '70 e '80, come [[Zilog Z80]] e [[Digital Equipment Corporation|DEC]] [[Virtual Address eXtension|VAX]], avevano istruzioni dedicate per la gestione delle stringhe con prefisso di lunghezza. Tuttavia, quando la stringhe null-terminate hanno guadagnato trazione, i progettisti delle CPU hanno iniziato a tenerne conto, come si è visto ad esempio nella decisione di IBM di aggiungere le istruzioni "Logical String Assist" all'ES/9000 520 nel 1992.