Algorytmy¶
Programiści nabywają wiedzę wraz ze zdobytym doświadczeniem. Uczymy się, rozwiązując własne problemy oraz patrząc, jak to robią inni. Mając styczność z różnymi technikami pracy i opracowanymi algorytmami możemy efektywniej zmierzyć się z nowymi problemami. Analizując dziesiątki różnych algorytmów, możemy pogrupować je według charakteru działania, co ułatwia zastosowanie poprawnego przy poszukiwaniu rozwiązania do nowego problemu.
Algorytmy dość często różnią się między sobą. Dla przykładu funkcja sqrt użyta wcześniej może być zaimplementowana na wiele sposobów do obliczenia pierwiastka wartości. Jedna wersja algorytmu może zużywać dużo mniej zasobów aniżeli druga, a z drugiej strony potrzebować 10 razy więcej czasu na zwrócenie wyniku. Chcielibyśmy w jakiś sposób móc porównać oba rozwiązania. Mimo że oba działają poprawnie, to jeden z nich może być „lepszy”. Kryterium może być efektywność, szybkość obliczenia czy zużycie pamięci. Wraz ze zdobytym doświadczeniem nabywamy wiedzę na temat charakterystyki danego algorytmu, jego zalet i wad w porównaniu do innych niezależnie od przeznaczenia programu lub urządzenia, na którym został użyty.
W najgorszym wypadku, możemy napotkać problem bez rozwiązania za pomocą algorytmu w rozsądnym czasie. Niezwykle ważne jest, aby nauczyć się rozdzielać problemy rozwiązywalne od takich, które rozwiązania nie mają lub mają, ale wymagają zbyt dużo czasu oraz zasobów do sprawnego działania.
W działania programisty wpisane jest ciągłe poszukiwanie kompromisu w zakresie technik użytych do wyznaczenia rozwiązania. Znalezienie najlepszego wyjścia z danego problemu jest zadaniem często żmudnym i powtarzanym w kółko, aż do osiągnięcia celu.