Hai mai sentito questo aforisma ?
No man can step in the same river twice. For the second time, it is not the same river, and he is not the same man.
Immagina una delle tue funzioni scrive 1
in /dev/ttyusb0
. In UNIX, questo è "solo un file", ma nella realtà, questo è in realtà il nome di un microcontrollore e scrivendo un 1
attiva una macchina per affettare il pane e affetta 500 pani di pumpernickel. Scrivendo un 1
la prima volta ha causato 500 pagnotte di pumpernickel passare dallo stato "non registrato" allo stato "affettato". L'invio di un altro 1
non ha questo effetto (perché non puoi tornare a "unsliced"!). Non è lo stesso fiume.
Immagina un'altra delle tue funzioni che legge alcuni dati da un flusso. Se si trattasse di un file statico, potresti leggerlo due volte e ottenere gli stessi risultati, ma se invece il tuo stream è un buffer di dati da (ancora un altro) microcontrollore (questo sta monitorando la temperatura di cottura), quindi leggendo il valore più e più volte di nuovo darà risultati diversi man mano che il forno si riscalda o si raffredda. Non è lo stesso uomo.