26 sierpnia 2012

C struct - inicjalizacja zerami

Dowiedziałem się (http://www.ex-parrot.com/~chris/random/initialise.html), że można zainicjować całą strukturę zerami, korzystają z zapisu jak poniżej. Obejmuje to również zagnieżdżone pola.
struct SAaa {
    int i;
    int w;
};

int main() {
    struct SAaa aaa = { 0 };
    return 0;
}
Gdzieś doczytałem, że gdy w miejsce zera wstawię coś innego, to efekt będzie odmienny.
int main() {
    struct SAaa aaa = { 5 };
    return 0;
}
Kompilacja, bez flag optymalizacji:
$ g++ main.cpp -m32 -masm=intel -S
I to co wyprodukuje kompilator:
.file   "main.cpp"
    .intel_syntax noprefix
    .text
    .globl  main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    push    ebp
    .cfi_def_cfa_offset 8
    .cfi_offset 5, -8
    mov     ebp, esp
    .cfi_def_cfa_register 5
    sub     esp, 16
    call    __x86.get_pc_thunk.ax
    add     eax, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_
    mov     DWORD PTR -8[ebp], 0
    mov     DWORD PTR -4[ebp], 0
    mov     DWORD PTR -8[ebp], 5
    mov     eax, 0
    leave
    .cfi_restore 5
    .cfi_def_cfa 4, 4
    ret
    .cfi_endproc
.LFE0:
    .size   main, .-main
    .section    .text.__x86.get_pc_thunk.ax,"axG",@progbits,__x86.get_pc_thunk.ax,comdat
    .globl  __x86.get_pc_thunk.ax
    .hidden __x86.get_pc_thunk.ax
    .type   __x86.get_pc_thunk.ax, @function
__x86.get_pc_thunk.ax:
.LFB1:
    .cfi_startproc
    mov     eax, DWORD PTR [esp]
    ret
    .cfi_endproc
.LFE1:
    .ident  "GCC: (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005"
    .section    .note.GNU-stack,"",@progbits
Cóż, tego się nie spodziewałem - pewnie dlatego, że nigdy nie przebiłem się przez standard. Pierwsze pole dostaje piątkę, reszta nadal inicjowana jest zerami.
W dodatku (przez brak optymalizacji przy kompilacji), zapis do aaa.i będzie dwukrotny:
- aaa.i wypełnione "0" (linia 17)
- aaa.i wypełnione "5" (linia 19)

25 sierpnia 2012

Życie w scrum-ie

Metodologia scrum-owa, jest pełna wspaniałych frazesów i jestem w stanie uwierzyć, że gdzieś tam istnieje sobie taka utopijna wyspa, gdzie jej zasady się sprawdzają. Mając z nią od jakiegoś czasu styczność, stwierdzam, że obowiązkowym aktorem w całym tym procesie powinien być psychiatra.

Przynajmniej w polskich warunkach, jest to coś co zawsze będzie spotykało niesamowity opór. Jesteśmy przyzwyczajani do bycia indywidualistami. Mimo wszystko instynkt podpowiada, że potrzeba nam wyraźnej hierarchii jak w stadzie. Lubimy awansować w jej szeregach, czy to przez strącenie kogoś z góry, czy to przez walkę z kimś na dole. A to wszystko, ta cała piramidka, bez przywódcy, bo przywódca jest wrogiem wszystkich, pierwszym do wyeliminowania.

Najwyraźniej każdy z nas dąży do autodestrukcji...