RSS

Komputer dla programisty

Liczba odsłon: 19

Od czasu do czasu na grupach dyskusyjnych pojawiają się pytania o właściwą konfigurację sprzętową komputera programisty. Wśród zgłaszanych propozycji królują procesory dwu- i czterordzeniowe, potężne bloki pamięci RAM, bardzo pojemne dyski (z mechanizmem macierzowania) i inne elementy zapewniające najwyższą wydajność. Od tej wydajności zależy bowiem wygoda pracy: gdy kompilacja dużego projektu trwa wieki lub uniemożliwia pracę z innymi narzędziami, częste testowanie zmian staje się niewygodne lub niemożliwe; analogicznie, ślamazarne środowisko edytora tekstu z pojawiającymi się dopiero po kilku sekundach podpowiedziami i uzupełnieniami rozprasza i zwiększa prawdopodobieństwo popełnienia omyłki.

Nigdzie jednak, w żadnej z porad, nie zauważyłem propozycji, by programista posiadał dwa komputery.

Po co ten drugi? Do testowania. Praca na szybkiej maszynie skrywa bowiem przed programistą realną wydajność programu. To, co na szybkim komputerze programisty trwa całkiem krótko, na starszym o kilka generacji komputerze przeciętnego użytkownika może być nie do zaakceptowania. Sprawnie odrysowujące się bogate graficznie okna na starszej maszynie mogą migać i mazać podkład, czyniąc pracę koszmarem. A nie można wymagać, by klienci kupowali szybsze komputery tylko dlatego, że programistów pracujących nad danym programem było na nie stać.

Programowanie na szybkim komputerze — owszem. Ale do testowania powinna być osobna, wolniejsza maszyna.


Wystarczy zainstalować Virtual PC (lub inną wirtualną maszynę) i od razu rozwiązuje się problem z posiadaniem wolniejszego komputera
Testowanie oznacza również konieczność instalacji różnych wersji systemu operacyjnego, co na wolniejszej maszynie może być koszmarnie upierdliwe. Popieram propozycję testowania na wirtualnej maszynie (zaleta: powtarzalność; wada: nie symulujemy wtedy typowego PC z zainstalowanymi koszmarkami typu gg, ICQ, RealPlayer, itd.).
Maszyna wirtualna nie do końca rozwiązuje problem „wolniejszego komputera”. Owszem, ogranicza liczbę rdzeni i pojemność pamięci, ale pozostawia szybki procesor i dyski choćby. Poza tym, jak już zostało wspomniane, tworzy czasem zbyt „czyste” środowisko, uniemożliwiając wykrywanie konfliktów z popularnym oprogramowaniem.
Owszem, maszyna wirtualna może być wielką pomocą w fazie testów, ale osobna, starsza maszyna testowa ze „zużytym” systemem operacyjnym może być jeszcze bardziej pomocna.
System operacyjny może się "zużyć" na tyle różnych sposobów, że programista tego nie przewidzi. W dodatku, wydaje mi się że ważne jest również, aby program testowała również i inna osoba niż jego autor.
Ja nie widzę powodu stosowania dwóch komputerów w większości wypadków. Wydajność programu można wyszacować za pomocą debugera, nawet programowego.
Ja się jednak nie zgodzę. Profiler pozwoli faktycznie oszacować szybkość działania programu, ale nie pozwoli ocenić odczuć z pracy z programem. Często liczy się nie tyle to, jak szybko program działa, ale jak długo się uruchamia, jak często realizuje stronicowanie na komputerze z mniej pojemną pamięcią, jak szybko pojawiają się na ekranie sterowanym wolniejszą kartą graficzną skomplikowane okna dialogowe. W takich przypadkach żadna symulacja nie zastąpi faktycznego testu na starszym, wolniejszym komputerze.