8 słów, które rozumiemy inaczej

Chyba każda branża ma swoją własną terminologię i niekiedy własny żargon. IT nie jest wyjątkiem. Gdybym miał opisać, jak porozumiewają się informatycy powiedziałbym, że używają języka złożonego w 80% z języka polskiego i w 20% z mniej lub bardziej poprawnego języka angielskiego. Bardzo często w ich mowie pojawiają się również trzyliterowe skróty lub anagramy brane wprost z anglojęzycznych dokumentacji nowych technologii. Branża rozwija się od dawna bardzo szybko. Trudno się dziwić, że nazewnictwo jakiejś nowej technologii przyjmuje się natychmiast i nie ma czasu na tworzenie rodzimych wyrazów. Jednakże istnieją pewne wyjątki, z których całkiem spora część przyjęła się już lata temu. Inżynierzy IT nieraz używają słów, które brzmią dokładnie tak samo jak słowa używane na co dzień przez każdego, ale mają dla nich zupełnie inne znaczenie. Nieraz prowadzi to do nieporozumień. W dzisiejszym odcinku wymienię kilka słów, które informatycy rozumieją trochę inaczej niż wszyscy inni. Mam nadzieję, że po wysłuchaniu tego odcinka zrozumienie znajomego informatyka stanie się nieco prostsze.

1. Środowisko

Pierwsze słowo, które informatycy rozumieją inaczej niż ludzie niezwiązani z branżą IT to “środowisko”. Dla informatyka w pracy “środowisko” nie jest niczym związanym z naturą czy biologią. Dla informatyka środowisko jest raczej słowem używanym do opisania otoczenia działającej aplikacji, czyli można powiedzieć, że jej środowiska. Środowiskiem aplikacji może być zarówno system operacyjny jak i chmura czy serwerownia, w której wykupiono kolokację. Aplikacja, jako że można ją dowolnie kopiować, może mieć kilka takich środowisk. Na przykład jedno specjalnie stworzone po to, aby można było w nim spokojnie testować nowe zmiany w kodzie, bez obawy, że klient korzystający z niej zażąda zwrotu pieniędzy. Drugie takie środowisko można stworzyć specjalnie dla klienta, aby mógł z kolei on sobie spokojnie korzystać z aplikacji wiedząc, że nikt mu jej nie wyłączy testowo. Ostatecznie klientowi powinno się udostępniać produkt przetestowany i gotowy do używania. Środowisko jest ogólnie rozumiane jako otoczenie, w jakim działa dana aplikacja. Może zarówno chodzić o otoczenia bliższe, czyli na przykład system operacyjny, jak i dalsze, czyli choćby infrastruktura serwerowa. Środowisko dla informatyka jest dość szerokim pojęciem, dla tego nieraz wymaga doprecyzowania w rozmowie.

2. Produkcja

Drugie słowo, które informatycy rozumieją inaczej i które jest zarazem bardzo silnie związane ze słowem “środowisko” to “produkcja”. “Produkcja” to skrótowe określenie “środowiska produkcyjnego”. Skoro możemy mieć środowisko testowe, na którym zachodzą testy najnowszych zmian w aplikacji, to możemy również mieć i środowisko produkcyjne, czyli właśnie takie, z którego korzystają klienci. Na takim środowisku działa aplikacja z najnowszymi i przetestowanymi zmianami uznanymi za stabilne. Nieraz w firmach rozwijających jakieś aplikacje słyszymy zdanie “możemy te zmiany puścić na produkcję”. Oznacza to, że zmiany w kodzie wprowadzone przez zespół programistów zostały już przetestowane na środowisku testowym i można je udostępnić na “produkcji” czyli środowisku produkcyjnym, aby klient mógł z nich korzystać. Użytkownicy korzystający z aplikacji zawsze używają właśnie tej kopii aplikacji, która działa na środowisku produkcyjnym, czyli w skrócie “produkcji”.

3. Abstrakcja

Trzecie słowo, którego również często używamy i które zarazem jest iskrą zapalną dla nieporozumień jest słowo “abstrakcja”. Abstrakcja chyba większości ludzi kojarzy się z czymś wydumanym i nikomu niepotrzebnym, albo nurtem sztuki nowoczesnej. W IT to słowo ma zupełnie inne znaczenie. Wynika ono również ze specyfiki pracy programistów. Na całym świecie różne zespoły programistów w obrębie nawet jednej firmy nieraz zajmują się kompletnie różnymi, niezwiązanymi ze sobą zagadnieniami. Jedni zajmują się programowaniem komunikacji myszki na bluetooth z naszym laptopem, a inni zajmują się projektowaniem interfejsów graficznych. Wszyscy oczywiście pracują po to, aby gdzieś cała ich praca połączyła się w jeden spójny produkt, na przykład jakiś program. Ale zarówno programista od bluetooth nie będzie miał czasu na studiowanie interfejsu graficznego, jak i programista interfejsu graficznego może nawet nie mieć pojęcia jak działa bluetooth. Dla tego, każdy programista usiłuje swoją pracę zawrzeć w czymś co nazywamy właśnie “abstrakcją” lub “warstwą abstrakcji”. Programista bluetooth zamyka znaczną większość zaprogramowanych przez siebie funkcjonalności w sobie tylko znanych częściach kodu. Pozostałe części udostępnia tak, aby były bardzo proste do zrozumienia i użycia. Jeśli inny programista zajmujący się jakimś innym zagadnieniem będzie musiał skorzystać z bluetooth, ale bez zmieniania sposobu jego działania, jedyne co będzie musiał znać to te kilka prostych udokumentowanych funkcji. Nie będzie musiał studiować dokładnie tysięcy linii kodu jak działa bluetooth. Jedynie wykorzysta funkcje o tak opisowych nazwach jak “Połącz” albo “Rozłącz” itp. Jak dokładnie działają te funkcje i ile procesów w nich zachodzi już nie jest dla niego istotne. Więc osoba korzystająca z efektów pracy programisty bluetooth szybko połapie się w tym bez konieczności poznawania szczegółów implementacji. Dzięki temu również programista bluetooth może zająć się tylko blootothem, a programista z inną specjalizacją zajmie się swoimi obowiązkami. Takie zamykanie większej liczby funkcjonalności w pewnego rodzaju czarnej skrzynce nazywamy właśnie tworzeniem “warstwy abstrakcji”. Jeśli chcemy skorzystać z jakiejś funkcjonalności wystarczy, że użyjemy pewnego małego zestawu poleceń jakie oferuje czarna skrzynka, a co się w niej dzieje nie musi być nam znane. Można się nawet pokusić o stwierdzenie, że budowanie “warstw abstrakcji” w bardzo dużej mierze jest powodem, dla którego IT rozwija się tak szybko. Jeden programista zbuduje jedną warstwę abstrakcji, na jej podstawie drugi zbuduje kolejną, kolejny zbierze ich kilka i na ich podstawi zbuduje kolejne. Dzięki temu gdzieś na szczycie tych warstw powstają niezwykle skomplikowane programy, które łączą cały ogrom funkcjonalności i są coraz prostsze w obsłudze. Zatem pomimo tego, że słowo “abstrakcja” brzmi trochę groźnie, to tak naprawdę ma na celu opisanie procesu sprowadzania czegoś skomplikowanego, do prostej postaci, którą większość ludzi będzie w stanie intuicyjnie zrozumieć.

4. Obiekt

Skoro już mowa o abstrakcjach, to nie sposób pominąć czwartego słowa, czyli “obiektu”. Obiekt jest właśnie jednym ze sposobów tworzenia warstw abstrakcji. Gdyby programista miał zaprogramować samochód, stworzyłby obiekt, czyli taki wirtualny twór, który zawierałby dane, jak na przykład pojemność silnika czy prędkość maksymalną. Taki obiekt również miałby pewne funkcje jak na przykład “uruchom silnik” czy “przyspiesz”. Mając taki typ obiektu, programista może w bardzo prosty sposób stworzyć takich wirtualnych samochodów ile chce, i jedynie parametrami obiektu sobie regulować czy to samochód sportowy czy dostawczy. Gdyby programista chciał taki samochód zatankować, musiałby go zabrać do kolejnego obiektu typu “dystrybutor” i uruchomić funkcję “tankuj”. Warto tutaj zwrócić uwagę, że funkcja nazywa się “tankuj”. Nie jest to kilkanaście funkcji o nazwach “Wyłącz silnik”, “otwórz klapę”, “odkręć korek” i kilkanaście kolejnych, łącznie z “zapłać” na końcu. Wystarczy jedno proste “tankuj” i cały proces zostanie przeprowadzony zgodnie z najlepszą wiedzą programisty o tym modelu samochodu. Obiekty bardzo upraszczają pracę programistom. Nie dość, że zamykają dane o obiekcie w jego wnętrzu, to jeszcze zezwalają na działanie na ten obiekt poprzez funkcje, których szczegółów tak naprawdę nie musimy znać. Nieraz jak widzimy jakąś bardzo opisową nazwę funkcji jak “przyspiesz” nawet nie musimy się zastanawiać do czego służy i jak działa wtrysk paliwa. Po prostu wciskamy gaz i jedziemy szybciej.

 

5. Wyprodukować

Piąte słowo, które przede wszystkim programiści rozumieją inaczej to “wydrukować”. To słowo możemy w zasadzie przetłumaczyć sobie po cichu na słowo “wypisać”. W niezliczonych językach programowania funkcja “print” lub jej podobne funkcje dosłownie wypisują jakiś tekst do pliku lub na ekranie. Zazwyczaj jak programista uczy się nowego języka programowania, pierwsze co w nim robi to wykorzystuje funkcję print lub podobną do wypisania na ekranie słów “hello world” czyli “witaj świecie”. To już swego rodzaju tradycja. Jeśli ktoś z Państwa weźmie książkę o podstawach programowania w niemalże dowolnym języku, jest bardzo duża szansa, że na pierwszych jej stronach będzie gdzieś napisany kod print(“Hello World”). Po uruchomieniu takiego kodu na ekranie wyświetli się ten prosty napis “Hello World”. A skoro angielskie słowo “print” ma swój odpowiednik w języku Polskim, nieraz programiści mawiają, aby jakiś tekst wydrukować albo “wyprintować”. Mają wtedy na myśli zwykłe wypisanie na ekranie.

6. Wyjątek

Szóste słowo, o którym chciałem wspomnieć to “wyjątek”. Wyjątek jest dla programisty faktycznie czymś w miarę wyjątkowym, ale już w inny sposób niż byśmy chcieli. Wyjątek to pewnego rodzaju błąd, który zachodzi podczas działania programu. Kiedy programista wykonuje jakieś działania i zdaje sobie sprawę, że czasem nie wszystko może pójść zgodnie z planem, powinien przygotować swój kod na taką wyjątkową sytuację. Na przykład, jeśli wczytywany jest bardzo duży plik, programista może założyć, że na słabszych komputerach może dojść do całkowitego zapchania pamięci. W takim przypadku w trakcie takiego wczytywania system operacyjny zaraportuje wyjątek za dużego użycia pamięci przez aplikację. Obowiązkiem programisty jest na taką okoliczność przygotować zestaw procedur, które będą mieć na celu jakieś zaradzenie tej sytuacji, na przykład wczytanie tylko części pliku. W przeciwnym wypadku program może zostać siłą zamknięty. Zdarzyło się komuś z państwa zobaczyć powiadomienie o błędzie o treści “unhandled exception”? To właśnie jeden z takich wyjątków. A co gorsza, dla niego nie było zaprogramowanej żadnej procedury naprawczej. Dla tego często zaraz potem system sam wymusza zamknięcie takiego programu. Wyjątek zatem jest czymś bardzo istotnym dla programisty. Jest to faktycznie wyjątkowa sytuacja, ale niestety w tym złym znaczeniu. Ogólnie rzecz ujmując wyjątki mogą zarówno nieść informację o typie błędu, jak i być bliżej nieokreślone. Za każdym jednak razem programista musi być na to gotowy.

7. Serwer

Siódme słowo, które już niejednokrotnie sam wypowiadałem w poprzednich odcinkach to “serwer”. Słowo to najprawdopodobniej już wcześniej zrozumieli Państwo prawidłowo, ale jest jedna kwestia, która zasługuje na doprecyzowanie. Serwer może być maszyną fizyczną czy wirtualną, na której działa jakiś system operacyjny. Jednakże nieraz słowem “serwer” określamy aplikację serwerową, która czeka gdzieś na tym fizycznym serwerze na nowe zadania lub połączenia. Nieraz słyszymy od administratorów “na tej maszynie działa serwer poczty”. I właśnie w takim kontekście serwer poczty jest jakąś aplikacją pocztową działającą na jakimś serwerze. Czasami taka dwuznaczność wprowadza pewne zamieszanie, ale dość szybko można nauczyć się wyciągać z kontekstu o jaki serwer chodzi naszemu rozmówcy. W ostateczności można zawsze dopytać i nie jest to żaden wstyd.

8. Jądro 😀

Ostatnie słowo, które szczególnie często jest powodem nieco zabawnych sytuacji wśród informatyków jest “jądro”. Jądro systemu operacyjnego to taki program, który jest odpowiedzialny praktycznie za całą komunikację sprzętu elektronicznego jaki siedzi w naszych komputerach z zainstalowanym oprogramowaniem. Jest to w zasadzie podstawa systemu operacyjnego. Niejeden by powiedział, że jądro to w zasadzie jest system operacyjny a wszystko pozostałe jak interfejs graficzny, sterowniki i inne to już dodatki. Jądro czasem zwane również “rdzeniem” systemu działa prawie od samego momentu uruchomienia komputera. Nie możemy go wyłączyć bez zamykania wszystkiego innego. W praktycznie każdej czynności jaką robimy na naszych komputerach bierze udział jądro. Ostatecznie komputer to urządzenie elektroniczne, a nic z jego pomocą nie zrobimy, jeśli nie będziemy się z tą elektroniką porozumiewać. Jądro jest właśnie takim centrum komunikacji ze sprzętem. W systemach Linux jądro jest dość często aktualizowane jak inne oprogramowanie. Można w związku z tym trzymać kilka jego wersji u siebie lokalnie na wypadek, gdyby jakaś nowa nie zadziałała z jakiegoś powodu. Proszę się zatem nie zdziwić, jeśli znajomy informatyk, najprawdopodobniej administrator powie Państwu z pełną powagą, że musi usunąć sobie kilka jąder, bo są już stare i zajmują za dużo miejsca… Cóż, po angielsku jednak trochę sprytniej zostało rozwiązane to nazewnictwo. Dla tego nieraz używa się bezpośredniego zapożyczenia z języka angielskiego. I tak oto zamiast słowa “jądro” używamy słowa “kernel” – najpopularniejszego zamiennika.

I wiele, wiele więcej...

Słów inaczej rozumianych przez informatyków jest znacznie więcej. Aby poznać je wszystkie trzeba by pewnie zacząć pracować w tym zawodzie, do czego gorąco zachęcam. Mam nadzieję, że kilka z tutaj wymienionych słów pomoże trochę zrozumieć znajomych programistów, administratorów czy testerów, ponieważ IT coraz bardziej zaczyna się jawić jako tajemnicze i nieprzystępne. Może to właśnie za sprawą tak wielu warstw abstrakcji?