@tell_me_more: Nie wiem ile w tym prawdy, ale kiedyś czytałem, że w czasach przed turbo pascalem, kiedy kompilatory były przeraźliwie wolne, programiści w czasie kompilacji po prostu ćwiczyli hantelkami z nudów ;) To byli dobrze umięśnieni programiści.
Przecież to tylko makro preprocesora, który wykonujeswoją pracę przed kompilacją. W żaden sposób taki zapis nie oszczędza pamięci. Tylko plik źródłowy zajmuje mniej, ale kod wynikowy zajmuje tyle samo co bez tego makra.
No i jak niby takie makro miałoby pomóc w oszczędzaniu pamięci? Jeżeli już to chyba pamięci maszyny deweloperskiej, ew. jej przestrzeni dyskowej no ale przecież nie pamięci tej całej satelity.
Programistą nie jestem, więc wybaczcie lamerskie podejście, ale jak to jest, że obecnie te same zadania komputer wykonuje kilkukrotnie wolniej lub też zużywa o wiele więcej zasobów niż kiedyś? Weźmy np. edytory tekstów, które w zasadzie od zawsze robią to samo :-) Kiedyś te ustrojstwa uruchamiały się w sekundę lub dwie, a teraz nawet na dobrym kompie trwa to o wiele dłużej. Ja rozumiem, że niby więcej danych procek musi przerobić, że
@Fyji2: Bardzo upraszczając, możesz zapisać 4 * 4 jako (2 + 2) * (2 + 2). Wynik ten sam, a operacja wymaga więcej obliczeń.
Oczywiście nie jest dokładnie tak samo, ale bardzo wiele operacji jest zbędnych, co jednak owocuje łatwiej rozwijalnym kodem.
Ponadto interfejsy graficzne są dziś dość ładne, a wygenerowanie ładnych grafik i wykonywanie na nich różnych operacji (dodanie cieni, gradientów, zmiana kolorów przy różnych stanach przycisku) zajmuje pewne
@Fyji2: Dawniej programiści byli ograniczeni ilością pamięci, szybkością zegara procesora, itp, więc dbali o to by kod był dobry, szybki, zajmował mało pamięci i był zoptymalizowany (jak w przykładzie @emkaka), dzisiaj mało kto się tym przejmuje, bo pamięci masz więcej niż 256kB
Szczerze mówiąc mam wrażenie, że zostało im to po dziś dzień. Potrafią rewelacyjnie oszczędzać zasoby i programować rzeczy działające naprawdę szybko i zawierające połowę mniej linii kodu niż sam bym to wykombinował. Oczywiście ma też znaczenie, że sam programuję jak muszę, a nie jak chcę, dlatego mój kod ma działać i się uruchomić. Ich działa i robi to kilka razy szybciej (do zauważenia dopiero na większych partiach danych).
Komentarze (89)
najlepsze
Najgorsze nadużycie makr/pre-procesora z jakim się spotkałem:
KOD
Tak,
@dixx: ciesze się, że nie pracujemy razem :)
Słowo "return" w C to jedna linijka, natomiast w asemblerze kończąc funkcję:
1) wynik zwracany przez funkcję wsadzasz do
Nie, każdy otwarty blok musi być zamknięty.
(w przypadku kodu z tego wykopu bloki są zamykane, bo rozwinięcie tego makra zawiera kończącą klamrę)
Do tego jak widzisz przyznałem się do błędu jak tylko się zorientowałem.
Oczywiście nie jest dokładnie tak samo, ale bardzo wiele operacji jest zbędnych, co jednak owocuje łatwiej rozwijalnym kodem.
Ponadto interfejsy graficzne są dziś dość ładne, a wygenerowanie ładnych grafik i wykonywanie na nich różnych operacji (dodanie cieni, gradientów, zmiana kolorów przy różnych stanach przycisku) zajmuje pewne