7.6. Języki programowania wysokiego poziomu
Rzadko zdarza się, aby programiści pisali programy bezpośrednio w języku maszynowym lub asemblerze. Pliki wykonywalne dla większości aplikacji zawierają setki tysięcy, a nawet miliony instrukcji języka maszynowego. Byłoby bardzo trudno stworzyć coś takiego od zera.
Języki programowania wysokiego poziomu zostały wymyślone, aby oddzielić szczegóły kodu maszynowego i pomóc programistom skupić się na rozwiązywaniu problemów. Podczas gdy dodanie dwóch liczb w języku asemblera może zająć 3 lub 4 linie kodu, w językach programowania wysokiego poziomu, takich jak C++, Java czy Python, zadanie to można wykonać za pomocą jednej instrukcji. W języku wysokiego poziomu programista tworzy program, używając potężnych, „dużych” operacji, które później zostaną przekształcone w wiele małych operacji maszynowych.
Programy napisane w języku wysokiego poziomu muszą zostać przekształcone w kod maszynowy, aby mogły zostać uruchomione. Można to zrobić z wyprzedzeniem, przekształcając cały program na kod maszynowy za pomocą kompilatora (kompilując kod), lub linia po linii, gdy program jest uruchamiany przez interpreter. Jedna linia w języku programowania wyższego poziomu może zamienić się w dowolną liczbę instrukcji maszynowych, od jednej do kilkudziesięciu lub więcej. Oznacza to nie tylko mniej kodu do wpisania, ale także mniej kodu do debugowania – gdy coś pójdzie nie tak, często łatwiej jest to wyśledzić.
Zakładki poniżej pokazują, jak może wyglądać kod na różnych poziomach języka. Wyobraźmy sobie, że projektujemy oprogramowanie dla terminala sprzedaży w restauracji; przyjrzymy się części kodu, która może obliczyć 15% napiwek, który jest automatycznie dodawany do dużych grup. (Uwaga: wszystkie języki składają się z przedstawicieli danego poziomu – nie przejmuj się szczegółami każdego z nich.)
Aby obliczyć całkowitą należną kwotę, najpierw pomnóż całkowitą cenę posiłku przez 0,15. W ten sposób otrzymamy napiwek za posiłek. Następnie należy dodać tę kwotę do ceny posiłku, aby uzyskać całkowity rachunek.
tip = mealCost * 0.15bill = mealCost + tip
LOAD MealCostMULT TIPRATESTORE TipLOAD MealCostADD TipSTORE Bill
010101011110010111110110101011101101101010010101010111011000111100010101011111001101101010111111
Zauważ, że język wysokiego poziomu jest znacznie bardziej zwarty niż kod asemblerowy lub maszynowy i, jeszcze ważniejsze, pozwala nam wyrazić algorytm na poziomie znacznie bliższym rzeczywistej domenie problemu. Zamiast martwić się o LOADing i STOREing wartości do rejestrów, możemy wyrazić polecenia, które wyglądają bardziej jak normalne obliczenia: tip = mealCost * 0.15
.
Online Interactive Modules for Teaching Computer Science by Osman Balci et al.
Introduction to Computer Science using Java by Bradley Kjell (CC BY-NC 3.0)