Ucz się programowania, nie języków programowania - część 1

W pierwszym odcinku naszego kursu programowania zastanowimy się jak "myśli" komputer. Opowiemy na jakie rozkazy tłumaczone są skomplikowane konstrukcje programistyczne, które omówimy później, takie jak klasy, obiekty i aspekty.

Czytaj inne artykuły z cyklu:

Programowanie jest niekiedy definiowane jako zapisywanie algorytmu (czyli określonej procedury postępowania) w języku komputerowym.

Gdyby komputery mogły samodzielnie o czymś decydować, zapewne stworzyłyby ruch poparcia dla takiej definicji. Analiza faktycznego stanu technologii wytwarzania oprogramowania prowadzi jednak do wniosku, że definicja ta jest niepełna.

Algorytmy i nie tylko

Programowanie może być prostsze niż sądzicie

Programowanie może być prostsze niż sądzicie

Nie można powiedzieć, iż zapis algorytmu w postaci sekwencji rozkazów jest główną zasadą każdego języka programowania - oprócz szeroko rozumianego programowania opartego o rozkazy (imperatywnego) istnieją dwa inne nurty określane jako programowanie deklaratywne. W pierwszym z nich program składa się z reguł wnioskowania, w drugim podstawową jednostką jest funkcja czyli odwzorowanie przypisujące elementom zbioru argumentów elementy zbioru wartości.

Podejście deklaratywne w programowaniu nie zrobiło jednak takiej kariery jak deklaratywny stosunek do religii, który jest atrybutem całkiem sporej części ludzkości niezależnie od wyznania. Zarówno tzw. programowanie w logice jak i programowanie funkcyjne to rozwiązania mniej rozpowszechnione niż języki, o których można powiedzieć, że wywodzą się z rdzenia imperatywnego.

Nie oznacza to jednak, że główny nurt programowania opiera się tylko o sekwencje rozkazów - współczesne języki z nurtu imperatywnego, bazują obecnie na komponowaniu programów z abstrakcyjnych bytów (klasy, klasy sparametryzowane, aspekty), o którym nie śniło się projektantom procesorów. Obecnie za dobrego programistę uznaje się osobę, która w pełni opanowała operowanie abstrakcjami związanymi z wybranym przez nią językiem, ale także rozumie to jak kod programu przekłada się na działania sprzętu.

Głównym "partnerem do rozmowy" dla programisty jest procesor składający się z trzech zespołów układów: jednostki sterującej, jednostki wykonawczej, szyny wejścia-wyjścia.

Informatycy lubią kanapki

Wspomniane już zespoły układów cyfrowych składają się z mniejszych komponentów takich jak rejestry- jednostki pamięci czy jednostka arytmetyczno-logiczna (ALU- arithmetic-logic unit). Problematykę budowy procesora z tych komponentów porusza nauka nazwana architekturą systemów komputerowych.

Komponenty procesora składają się z prostszych układów cyfrowych - np. ALU zawiera w sobie sumatory, czyli układy realizujące operacje dodawania. Układy cyfrowe zbudowane są z tranzystorów - nauką, dzięki której także na tym poziomie widzimy stały postęp jest elektronika.

Najistotniejsza dla programistów jest znajomość warstwy architektury. Wiedza ta pozwala pisać wydajniejsze aplikacje, tak jak opanowanie obecnego we wszystkich działach informatyki "myślenia warstwowego" sprzyja tworzeniu rozwiązań bardziej elastycznych. Wiele rysunków poglądowych prezentujących koncepcje informatyczne pokazuje struktury wielowarstwowe. Ryciny takie są niekiedy żartobliwie określane jako "kanapki".


Zobacz również