Tłumaczenie z języka ludzkiego na język komputerowyEdit
Nowoczesne komputery są bardzo złożone i aby móc je produktywnie programować, potrzebne są różne abstrakcje. Na przykład, zamiast zapisywać binarną reprezentację programu, programista napisze program w języku programowania, takim jak C, Java lub Python. Narzędzia programistyczne, takie jak asemblery, kompilatory i linkery tłumaczą program z języka źródłowego możliwego do napisania i odczytania przez człowieka na bity i bajty, które mogą być wykonane przez komputer. Interpretery interpretują program w locie, aby uzyskać pożądane zachowanie.
Programy te wykonują wiele dobrze zdefiniowanych i powtarzalnych zadań, które mimo wszystko byłyby czasochłonne i podatne na błędy, gdyby wykonywał je człowiek, jak np. układanie części programu w pamięci i poprawianie odniesień między częściami programu, co robi linker.Optymalizujące kompilatory z drugiej strony mogą wykonywać złożone transformacje kodu źródłowego w celu poprawy szybkości wykonywania innych cech programu. Pozwala to programiście skupić się bardziej na wyższych, koncepcyjnych aspektach programu, bez martwienia się o szczegóły maszyny, na której jest on uruchamiany.
Udostępnianie informacji o programie dla ludzi
Z powodu wysokiej złożoności oprogramowania, nie jest możliwe zrozumienie większości programów na pierwszy rzut oka nawet dla najbardziej doświadczonego programisty.Abstrakcje dostarczane przez języki programowania wysokiego poziomu utrudniają również zrozumienie związku pomiędzy kodem źródłowym napisanym przez programistę a rzeczywistym zachowaniem programu.Aby znaleźć błędy w programach i zapobiec tworzeniu nowych błędów podczas rozszerzania programu, programista używa niektórych narzędzi programistycznych do wizualizacji wszelkiego rodzaju informacji o programach.
Na przykład debugger pozwala programiście wydobyć informacje o działającym programie w kategoriach języka źródłowego użytego do jego zaprogramowania.debugger może obliczyć wartość zmiennej w programie źródłowym na podstawie stanu konkretnej maszyny, korzystając z informacji przechowywanych przez kompilator. Debuggery pamięci mogą bezpośrednio wskazać wątpliwe lub jawnie błędne dostępy do pamięci działających programów, które w przeciwnym razie mogą pozostać niewykryte i są częstym źródłem awarii programów.