
Trying to debug code
Preciso.
MACHEFIGATA
DO WANT.
da casa mia non è molto lontano… si va?
approvo
Vengo anch’io !
“one stormy night my girlfriend saw what we thought was a dead sparrow below our balcony. he was barely breathing, covered in ants and completely blind.
“we brought him home and put him in a box. after spending a night in our bedroom, he woke us up with high pitched tweeting. we tried feeding him, but without any luck, so we placed him on our balcony. he continued tweeting non stop for three hours.
“finally, his father found him and started feeding him. he brought his chick huge bugs and bread every 10-15 minutes all day long for two weeks straight.
“he was getting bigger every day, but he was still blind. i called a vet, and he told me to try simple eye drops. it worked like a charm! he even started hiding from us behind our flowers. soon, his father started showing him how to fly trough the window.
“one day he just left – we knew this day would come eventually. we became really worried because that same night, and for the next few days, there was really stormy weather. however, three days later, he came back and fell asleep in one of our pots.”
(source)
Ennio che con la voce rotta e le mani che tremano, dedica l’Oscar a sua moglie Maria.
Nella più assoluta semplicità. Come se fossero a Roma al chioschetto della pizza bianca.Amare ed essere amati.
Questa è davvero l’unica vittoria nella vita.
cose che ho imparato:
1) wow! si può programmare di tutto con tutto! ma che spreco. oggi ho visto per la prima volta cosa succede con array a migliaia di indici e confesso che spero di non averci molto a che fare!
2) finalmente apprezzo la specializzazione delle variabili del Java e del C++, sino ad oggi ne vedevo solo l’impraticità, ma usare un int di 32 bit (cioè 2 elevato 32) per immagazzinare un numero tra 0 e 10 per un migliaio di volte mi disgusta perché odio gli sprechi
3) immagino che i videogiochi di venti anni fa fossero così pixellati e privi di colori perché per ridurre al minimo lo spreco di memoria dovevano usare il numero minimo di bit per immagazzinare informazione. 1 byte (tipo char del C++) contiene 256 bit, e se consideriamo 16 colori, ogni valore di un char può indicare un elemento di una matrice 4×4 (un modo per implementarlo è questo: (c % 16) restituisce il valore della cella, (c % 16) % 4 il valore della colonna, (c % 16) / 4 il valore della riga, (c / 16) il colore dell’elemento c). che bella l’efficienza!
4) sono felice di trovare punti di forza e di bellezza in linguaggi diversi. w il Python! w il C++
5) persino il codice un videogioco rudimentale richiede una certa riflessioneMi sono perso alla terza riga. Sono troppo vecchio!
Nella programmazione embedded in C, questi ed altri trucchetti per risparmiare memoria si usano ancora oggi. Ad esempio le variabili bit a bit.
Se devi avere 16 bool, invece di usare 16 variabili di tipo bool (che occupano 1 byte l’una, 16 byte in totale), puoi fare un’unica variabile short (da 2 byte), e 16 define per i 16 bit dello short:
short var;
#define VAR_1 0x1
#define VAR_2 0x2
#define VAR_3 0x4
#define VAR_4 0x8
#define VAR_5 0x10
#define VAR_6 0x20
#define VAR_7 0x40
#define VAR_8 0x80
#define VAR_9 0x100
#define VAR_10 0x200
#define VAR_11 0x400
#define VAR_12 0x800
#define VAR_13 0x1000
#define VAR_14 0x2000
#define VAR_15 0x4000
#define VAR_16 0x8000
A questo punto, per mettere a true o a false le variabili, alzi o si abbassi i singoli bit:
var |= VAR_1;
var &= ~VAR_1;
Se invece del C usi il C++, puoi anche usare le struct bit a bit:
struct var {
unsigned short var_1:1;
unsigned short var_2:1;
unsigned short var_3:1;
unsigned short var_4:1;
unsigned short var_5:1;
unsigned short var_6:1;
unsigned short var_7:1;
unsigned short var_8:1;
unsigned short var_9:1;
unsigned short var_10:1;
unsigned short var_11:1;
unsigned short var_12:1;
unsigned short var_13:1;
unsigned short var_14:1;
unsigned short var_15:1;
unsigned short var_16:1;
};
In questo modo dici al compilatore che i singoli campi della struct, pur essendo chiamati short, possono assumere solo il valore 0 o 1. Il compilatore ottimizzerá la struct facendola pesare 2 byte, invece dei 16 che avresti usato usando i bool.
Cos’é il genio ? Se la fanno a metano la piglio.
