Powrót

Programowanie procesorów z przymrużeniem oka

Wielu osobom programowanie mikroprocesorów wydaje się walką z trudnym przeciwnikiem, którym jest zarówno mikroprocesor, jak i język programowania, którym obecnie najczęściej jest w sumie albo język C, albo C++ (także w Arduino). Czy i Tobie wydaje się, że procesory i komputery są „takie mądre”, a Ty źle się czujesz, bo nie potrafisz ich zaprogramować?

Programowanie to poinstruowanie komputera, co ma robić. A ty nie bardzo potrafisz go poinstruować, prawda? I czyja to wina?

Od dawna wiadomo, że aby pokonać przeciwnika którego się boimy, warto go ośmieszyć – wtedy przestanie być straszny.

Niektórzy od dawna podchodzą do procesorów i komputerów z niemal nabożną czcią, nazywając je „mózgami elektronowymi”. Możliwości współczesnego sprzętu, wyznaczone głównie przez parametry zastosowanych procesorów, są ogromne, przez co niektórym wydaje się, że komputery są nawet mądrzejsze od ludzi.

NIEPRAWDA!

Fakt, że nie potrafisz zaprogramować (mikro)procesora nie świadczy, że wina leży po twojej stronie. Wprost przeciwnie!

Dla mikroprocesora język człowieka jest zdecydowanie zbyt trudny, ponieważ…

mikroprocesor to idiota.

A jeśli nie pasuje Ci określenie idiota, to nazwij go inaczej. Wachlarz określeń masz niemały: mikroprocesor to kretyn, debil, dureń, imbecyl, przygłup, baran, muł, osioł, tuman, gamoń, bęcwał, głąb, cymbał, kołek, tępak, matoł, ciołek, bałwan, tłumok, głupek, tłuk, półgłówek, cep, trep, młot, jełop, patafian, bezmózgowiec, kiep, ciemna masa, zakuta pała, kurzy móżdżek, kapuściana głowa i zakuty łeb.

Choćbyś mu milion razy mówił, czego od niego oczekujesz – nie zrozumie. Ten tuman/przygłup/tępak ma jednak istotne zalety: jest nieprawdopodobnie skrupulatny oraz niewiarygodnie pracowity i szybki. W sumie to jest nawet sympatyczny. Nie jest natomiast ani mądry, ani inteligentny.

Komputery i procesory są tylko na tyle mądre/inteligentne, na ile mądry był człowiek, który je zaprojektował i zaprogramował. Natomiast sam komputer i zawarty w nim mikroprocesor z mądrością nie mają nic wspólnego. Zapamiętaj: nawet najpotężniejszy mikroprocesor nie ma ŻADNEJ mądrości i sam z siebie nic nie zrobi.

On może tylko skrupulatnie i pracowicie wykonać wyłącznie prościutkie, drobne, elementarne rozkazy, bo jak już wiesz…

jest idiotą/debilem/kretynem. Proste?

Spójrz na sprawę z takiej oto strony: owszem, Ty masz problem z programowaniem procesorów, ale tylko z uwagi na ich głębokie upośledzenie. Wina wcale nie leży po Twojej stronie!

Wina winą, ale dobrze jest korzystać ze skrupulatności i szybkości tych pracowitych mikroprocesorowych tępaków.

I tu masz dwie główne drogi:

Możesz zniżyć się do najniższego poziomu (mikro)procesora, być anielsko cierpliwym i drobiazgowo wytłumaczyć mu wszystko czego od niego chcesz, używając wyłącznie najprostszych, elementarnych określeń i rozkazów podanych w bełkotliwej, nieprzyjaznej postaci zerojedynkowej, bo tylko to ten matoł jest w stanie zrozumieć. Wtedy nie możesz zapomnieć o najmniejszym szczególe, bo ten bezmózgi idiota niczego sam nie poprawi i nie skoryguje.

Masz i drugą drogę: wykorzystaj jakiegoś pomocnika – pośrednika, który ma wprawę, cierpliwość i przyzwyczajony jest do współpracy z takimi tępakami jak procesory. Nie myślę tu o ludziach – zawodowych programistach, tylko o „pomocnikach technicznych” – kompilatorach.

Niestety, także i ci „pomocnicy techniczni” nie są zbyt rozgarnięci. Też są ograniczeni, a za to mają liczne żądania i snobistyczne przyzwyczajenia. A oto bodaj najpaskudniejsza cecha takich pośredników: te nadęte snoby bezczelnie wymagają, żeby porozumiewać się z nimi z wykorzystaniem nowomowy – specyficznego slangu, ponieważ to, co chcielibyśmy nazwać i wytłumaczyć prosto, intuicyjnie i po ludzku, nazywają w wydziwiony, pokrętny sposób. Co jeszcze gorsze, choć slangi (języki programowania) różnych pomocników są do siebie po części podobne, tych slangów jest dużo, w sumie kilkaset! Możesz zerknąć na stronę: https://goo.gl/SxcUu6.

Wspomnę teraz o trzech charakterystycznych „pośrednikach”, których oznaczymy literkami A, B, C. Otóż pośrednik A jest najbardziej ograniczony. Też mu trzeba drobiazgowo objaśniać wszystkie szczegóły, ponieważ rozumie niewiele więcej, niż ten idiota mikroprocesor. Jest mało rozgarniętym, prymitywnym tłumaczem „słowo w słowo”. Nie wykazuje żadnej własnej inicjatywy i zwykle bezdusznie nie przejmuje się, czy to co robi ma sens, czy zawiera błędy.

Pośrednik B, którego może już poznałeś, na pierwszy rzut oka robi bardzo dobre wrażenie. Stara się Ci przypodobać, podlizać i zrozumieć, co do niego mówisz „po ludzku”, a nie tylko w komputerowym slangu. Niestety, jest strasznym bałaganiarzem i nie wiadomo, czy Cię naprawdę dobrze zrozumiał i jak przełoży twoje oczekiwania na bełkot zrozumiały dla procesora. Ma dobre chęci, ale przez swoje wrodzone bałaganiarstwo, niejednego już naraził na spore kłopoty.

Pośrednik C jest jeszcze inny. Na pierwszy rzut oka wygląda na strasznie zarozumiałego i wyjątkowo nieprzystępnego snoba. Nawet nie próbuje rozumieć, jeśli cokolwiek powiesz mu „po ludzku”. Nie tylko oczekuje, ale wręcz bezczelnie wymaga, żebyś w rozmowie z nim używał bardzo specyficznego slangu. Z drugiej strony ten paskud jest jednak bardzo dobry w tym, co robi: przejmuje się robotą, jest wyjątkowo solidny i porządny. Jeżeli już zgodzisz się na jego dziwne wymagania, to bardzo sumiennie i zwięźle przetłumaczy Twoje oczekiwania na postać zrozumiałą dla procesora, a przy okazji dopilnuje wielu ważnych szczegółów, by nie było błędów.

A jeśli tak się ma sprawa, to znów nie w Tobie tkwi problem, tylko w fakcie, że na razie nie ma idealnych „pomocników technicznych”, tłumaczących tym głąbowatym procesorom, czego od nich oczekujesz. Widać w tej dziedzinie pewien postęp, ale nadal nie można zaprogramować mikroprocesorów „po ludzku” (i z pewnych ważnych względów nie widać na to żadnych szans).

Zła wiadomość brzmi:

trzeba nauczyć się nowomowy.

Dobra wiadomość jest taka:

jeśli już poznasz podstawy nowomowy wymaganej przez pośrednika C, otworzą się przed tobą nowe horyzonty i ogromne, wspaniałe możliwości.

Jeżeli masz problem z dogadaniem się z tymi przygłupiastymi mikroprocesorami. to wcale się nie dziwię. Ale jest pewne, że przy odrobinie wysiłku nauczysz się, czy to prawie bezpośrednio (asembler), czy raczej poprzez bardziej zaangażowanych pośredników (kompilatory) dogadać się z tymi głąbami. A już na pewno nie powinieneś mieć poczucia, że problem leży w Tobie.

Zachęcam, żebyś bez kompleksów, a za to  cierpliwie i z wyrozumiałością, konieczną przy kontaktach z takimi kretynami, zaczął poznawać ich specyficzny, ale jakże piękny  i obiecujący światek. A my będziemy do tego światka zaglądać, między innymi w artykule o numerze PR002.

Piotr Górecki