Czym innym sa algorytmy czym innym procesy biznesowe w projektowaniu. Te pierwsze dotycza czystej idei programowania - jak zapisac problem w jezyku matematyki, by stad juz latwo przelozyc na konkretny jezyk programowania. Jak rozwiazywac konkretne problemy obliczeniowe, wydajnosciowe, braku pamieci - innymi slowy recepty na konkretny problem matematyczny. Nigdy sie nie zestarzeja poki beda potrzebne rozwiazania dla komiwojazera (firmy transportowe), grafow (liczna rodzina tych algorytmow), wyliczanie sciezki (ruch w sieci chociazby). Takie problemy nie znikaja z szybszymi komputerami, bo to inny rzad wielkosci zupelnie.
Drugie (szeroko rozumiana inzynieria projektowania) bierze pod uwage inny aspekt projektowania - KLIENT. W tym ujeciu nagle programy moga sie zmieniac, co gorsza nawet zalozenia moga sie walic na leb pod koniec projektu. Tutaj wchodza w gre ludzie - jak rozlozyc zadania, zeby wydajnosc byla najwyzsza (nomen omen tu pomagaja algorytmy, np. simpleks), jak zaprojektowac system, by przy najwiekszej zmianie nie zwalilo sie wszystko na glowe. Jak zrobic, by nawet jak klient zrezygnuje z naszego projektu w ostatnie fazie - dalo sie wykorzystac 80% do nastepnego.
To sa dwie zupelnie dwie rozne dziedziny i fakt, ze jedna jest nowsza od drugiej nic nie zmienia ;) To tak jak twierdzic, ze lepiej uczyc sie o laserach, bo sa na topie niz astronomii, bo jest przestarzala i ostatnio nic nowego nie wniesiono... Znaczenie algorytmow podkresla fakt, ze istnieje sporo opracowanych w latach 60-70, ktorych do dzisiaj nie zastapiono. I to nie dlatego, ze olano sprawe, tylko dlatego, ze lepszych nie udalo sie znalezc. I mimo postepu techniki ciagle uzywamy tego samego sortowania co 45 lat temu (quicksort chociazby), bo jest dobre.
I tak jak dla fizyka wiedza o ruchu planet, zyciu gwiazdy, czarnych dziurach i kwazarach jest wiedza elementarna, bo pozwala mu zrozumiec wszechswiat, tak dla programisty wiedza o quicksorcie, sortowaniu babelkowym (mimo, ze praktycznie nieuzywany) i algorytmach grafowych.