Ostatnimi czasy weryfikowałem API do jednego projektu. W prezentowanych szkieletach klas (język Java) można było zobaczyć coś takiego: int flags[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ... if (flags[0]) { ... } if (flags[1]) { ... }
A za starych dobrych czasów zrobiono by to tak:
int flags = 0; ... if (flags & 0x00000001) { ... } if (flags & 0x00000002) { ... }
Ja rozumiem, że teraz korzystamy z języków wysokiego poziomu i nie koniecznie trzeba się bawić w cuda na kiju, ale tablica 16 intów, z których każdy int ma (o ile się nie mylę) 32 bity, a wykorzystywane są dwie wartości? To chyba drobna przesada. Coś, co można zamknąć na 32 bitach (a nawet mniej jeśli zejść poniżej int), jest realizowane na 16*32 bitach... A potem dziwić się, że do pierwszej lepszej aplikacji w Java trzeba 2GiB pamięci, a i tak się cieli...