Newsgroup: it.comp.os.linux.iniziare
Titolo: Sfizio: Perché si conta da zero?

Salve. Come da oggetto: perché in informatica si usa iniziare a contare 
da zero anziché da uno? (come nelle periferiche, nelle partizioni 
ecc...) C'è un motivo malido? Non genera confusione?
GRAZIE 1000


Non so, forse per avere i primi 10 con un solo digit, ma non ci 
giurerei... a naso mi sembra sensato
Ken Devis


E perchè si dovrebbe cominciare da uno quando c'e' prima lo zero?
Non genererebbe confusione?
Se i gentiluomini che hanno creato quel capolavoro dell'ingegno che era 
il BASIC ci avessero pensato, tu non ti porresti simili domande...
:-)
-- 
Fabrizio "Hermooz" Ermini

 
Beh dai, il BASIC era inteso per essere molto terra terra e il piu' simile 
possibile al linguaggio naturale (anche come modo di ragionare), ergo si e' 
abituati che il primo numero sia l'1, quindi i vettori sono indicizzati 1
-- 
il Vide - ICQ# 5301833
IAMM - it.arti.musica.metal 
http://www.heavy-metal.it
Tessera #8 "Tira Clarenzo e m' illumino d' immenzo"

Gianluca wrote:

Una convenzione vale l'altra.
Se pensi che confusione ha generato il fatto di contare gli anni a
partire da 1 e non da zero(*), le tue confusioni sono bazzeccole. :-)
ciao, Andrea
(*) il 95% della popolazione è ancora convinto che il nuovo
millennio sia incominciato il 1/1/2000 come se ci fosse stato 
un "anno zero", invece che dal 1/1/2001 visto che si è cominciato
a contare dall'anno 1.


Malido non so. Valido si. Anzi, piu` di uno.
Se usi una variabile di N bit come indice, questa puo` contenere valori tra
zero e (2^N)-1. Se si partisse da uno, bisognerebbe continuamente sottrarre
uno per arrivare all'indice giusto (poco pratico, non trovi?). Inoltre 
perderesti l'indice piu` alto (2^N non puoi rappresentarlo in N bit).
Se vuoi calcolare l'offset ad un dato indice, basta fare
indice*sizeof(elemento).
Di nuovo, avere il primo elemento a indice zero aiuta.
Stesso discorso se vuoi ricavare l'indice di un elemento dato.
Direi che - in linea generale - avere il primo indice a zero e` necessario
per tutti i linguaggi che giustificano entita` multiruolo del tipo
offset <-> indirizzo <-> indice e la relativa matematica. L'assembler ed il C
rientrano in queste categorie.
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

 giurerei... a naso mi sembra sensato
circa quasi: la circuiteria digitale lavora con codice binario (0 o 1) e 
usare un bit per "contare solo ad 1" è uno spreco... un bit ha due stati, 
lo 0 e l'1, perché usarne solo uno?
Cià
-- 
merlo <il.merlo_TOGLI_@_TOGLI_libero.it>
[Powered by] : Debian/GNU Linux 3.0 @ 2.4.19

 ecc...) C'è un motivo malido? Non genera confusione?
Altro motivo:
in programmazione, quando si fanno i test, è più rapido controllare se un
valore è 0 piuttosto che 1 o 2 o 100, soprattutto se si tratta di una
"disugualianza", cioé maggiore di e non uguale a, che sarebbe più semplice.
Almeno quando programmavo in assembler sotto consiglio sia dei manuali, sia
dell'intuito, facevo tale controllo - eppure avevo poco più 13-14 anni - col
vantaggio di dover confrontare né 2 registri né 1 registro con una cella di
memoria; anzi, se non ricordo male, con lo z80 non mi sembra si potessero
confrontare due registri, ma per dire A=B si dovesse fare A=A-B e test
A==0).
Se vogliamo approfondire si arriva fino alla matematica pura passando per la
logica -> elettronica -> elettrotecnica -> fisica
In fondo, poi, l'insieme dei numeri naturali parte da zero. Ma seppure
potessimo considerare che comincino da 1, i numeri reali da dove li fai
partire? cioè, se consideriamo un insieme di numeri positivi in generale e
definiamo l'inizio come "il numero più piccolo positivo" nell'insieme N
potremmo anche dire che è 1 dicendo che 0 è neutro, ma l'insieme R? non
esiste un numero più piccolo positivo (teoria degli infinitesimali), e poi,
che sia R o N, come li facciamo i conti con i negativi?
se si decidesse che (R-)==-(R+) e (N-)==-(N+), dove va lo zero? facciamo un
terzo insieme?
(oddio, se mi sente un matematico mi uccide)
E per la fisica, da dove parte il tempo?
E per l'elettronica, da dove parte il voltaggio (già, può anche essere
negativo è vero, ma è solo questione di vedere da che lato metti i puntali
del tester).
Conclusioni: io la vedo così:
per le partizioni: numero di partizione = 1..4, device della partizione 0..3
Voglio finire raccontandovi di quando ho imparato l'assembler.
Ho usato un libro diciamo per ragazzi, il quale comparava la cpu (z80) ad un
omino con 8 mani ciascuna mano con 8 dita più un guanto di riserva, e
quattro gambe ciascuna da 16 dita. (in pratica i registri)
Diceva che con una mano un omino poteva contare a molto più di 8 usando una
logica binaria (non l'ha chiamata così ovviamente) contando con 0 tutte le
dita chiuse, 1 il solo pollice aperto, 2 il solo indice aperto, 3 pollice e
indice aperto e così via (provate a calcolare il 4, vi assicuro che è
imbarazzante; provate anche il 18 e il 19).
Matteo

 provate anche il 18 e il 19).
18=16+2  =00010010
19=16+2+1=00010011
o no?
-- 
La violenza e' l' ultimo rifugio degli incapaci.


Si', ma fallo con le dita... ;-)
-- 
ciao            |visita
                 |
http://www.sifor.it
gelty           |
http://www.sifor.com
-------------------------------------
Elimina toglimi. per le risposte
E' esplicitamente vietato usare l'indirizzo e-mail di questo messaggio
per fini diversi dalla risposta al messaggio stesso (Art. 10 DL. 171/98).

 Si', ma fallo con le dita... ;-)
ma io sono grande e so gia' contare a mente ;PPP


 partire da 1 e non da zero.
E' falso: l'anno niente, ovvero quello che 
noi oggi chiameremmo anno zero, esiste dal punto
di vista non solo LOGICO, ma anche dal
punto di vista STORICO, ed è il 753 AUC:
http://members.xoom.virgilio.it/ultimus/introduzione.htm
Giovanni.
Quando parlano di noi Moderni, i nostri antenati
nell'aldilà ridendo si dicono:
"Chi ? Quelli ? Te li raccomando ! 
Pensa che hanno bisogno del numero zero per ragionare".
(autocitazione)

In data Thu, 06 Mar 2003 09:46:58 +0100, Gianluca scriveva

Esiste un brevissimo articolo di E. Djkstra che spiega esattamente
questo ("Why numbering should start at zero").
Si trova in rete ma non so piu` dove, se vuoi te lo mando via mail
(sono meno di 100kb di pdf).
Ciao
	Andrea
-- 
Per favore non inviatemi file in formato .exe .doc .xls o .pps
Please, don't send me .exe .doc .xls or .pps attachments

 
Chiaro esempio di come il fantomatico "anno zero" abbia portato 
parecchia confusione  nella mente delle persone :-)
Passo e chiudo perché l'OT diventa assoluto.
ciao, Andrea

 Voglio finire raccontandovi di quando ho imparato l'assembler.
AAARGH. Il linguaggio si chiama "assembly". Assembler è l'assemblatore. :)


 AAARGH. Il linguaggio si chiama "assembly". Assembler è l'assemblatore. :)
Pardon!
Matteo

 Passo e chiudo.
Meglio tacere e passare per idiota che 
parlare e dissipare ogni dubbio.
(Abraham Lincoln)
Giovanni.
http://digilander.libero.it/fraterno

Giovanni Fraterno wrote:

Vuoi una risposta più articolata?
Guardati questo sito cattolico
http://www.innomedimaria.it/date.htm
Se non lo sanno loro ;-)
Comunque, l'importanza dell'uso dello zero (introdotta in India, poi in 
Arabia e infine in Europa) non è solo "formale" ma anche sostanziale.
Vedi un qualunque testo di storia della matematica!
Infine, per non andare del tutto OT, dai un'occhiata al 
manuale di "cal" che, non a caso, inizia dall'anno 1.
questa volta chiudo sul serio una discussione che non può
portare da nessuna parte.
ciao, andrera