Bestiariusz informatyczny
Software itp.
Szósty odcinek cyklu przybliży nam kilka bardziej technicznych akronimów związanych z oprogramowaniem (software)...
Programiści zapisują zadania, które ma wykonać komputer, w odpowiednim języku programowania. Dzielimy je na generacje od 1GL do 5GL (First- do Fifth-Generation programming Language), począwszy od niskopoziomowych języków maszynowych, aż do wysokopoziomowych języków wizualnych. Wiele z nich ma nazwy będące akronimami, np. BASIC (Beginner's All-purpose Symbolic Instruction Code), COBOL (COmmon Business-Oriented Language), ALGOL (ALGOrithmic Language), APL (A Programming Language), LISP (LISt Processing), VB (Visual Basic) czy w końcu język zapytań do relacyjnych baz danych SQL (Structured Query Language).
Programy zapisane w niektórych językach muszą być przed uruchomieniem skompilowane do kodu maszynowego; dla języka C++ możemy użyć kompilatora GCC (GNU Compiler Collection). Z kolei programy w języku Java uruchamiane są w maszynie wirtualnej JVM (Java Virtual Machine), która wspiera kompilowanie kodu "w locie" JIT (Just-In-Time compilation). Natomiast język Python udostępnia również możliwość pracy w interaktywnym środowisku REPL (Read-Eval-Print Loop).
Programy mogą komunikować się wzajemnie i z systemem operacyjnym dzięki zdefiniowaniu zestawu reguł opisujących wywołania funkcji w kodzie źródłowym API (Application Programming Interface) oraz wykonywalnym ABI (Application Binary Interface). Przykładem jest tu np. standardowy interfejs systemu operacyjnego POSIX (Portable Operating System Interface) lub standard bibliotek współdzielonych DLL (Dynamic-Link Library). Z kolei komunikacja programów ze sprzętem odbywa się przez warstwę HAL (Hardware Abstraction Layer), a w sieci jest możliwa np. dzięki zdalnemu wywoływaniu procedur RPC (Remote Procedure Call).
Inżynieria oprogramowania musi dziś radzić sobie z projektami zawierającymi miliony wierszy kodu SLOC (Source Lines Of Code), przy których niezbędne jest użycie systemu CVS (Concurrent Versions System) umożliwiającego wspólną pracę wielu programistów. W latach 80. popularnością cieszyło się programowanie obiektowe OOP (Object-Oriented Programming), a programiści tworzyli oprogramowanie pudełkowe, uaktualniane co kilka miesięcy. Dziś priorytetem staje się stosowanie procesów umożliwiających częste aktualizacje, takie jak programowanie ekstremalne XP (eXtreme Programming) i kładące duży nacisk na testy TDD (Test-Driven Development), oraz wykonywanie aplikacji na serwerach producenta SaaS (Software as a Service).
Zestaw niezbędnych programiście narzędzi tworzy SDK (Software Development Kit). Oprócz tego ważna jest dla niego znajomość podstawowych struktur danych, jak kolejka FIFO (First In, First Out), oraz algorytmów, jak przeszukiwanie grafu wgłąb i wszerz DFS, BFS (Depth- oraz Breadth-First Search) czy algorytm wyszukiwania wzorca w tekście KMP (Knuth-Morris-Pratt), który wziął nazwę od nazwisk swoich twórców.
Niektóre akronimy są też dobrymi radami dla programistów. Reguła KISS (Keep It Simple, Stupid) preferuje prostotę przy projektowaniu, natomiast reguła DRY (Don't Repeat Yourself) zaleca unikanie powtórzeń (tj. pisanie podobnych fragmentów kodu lub brak automatyzacji procesu kompilacji).
Mamy też rady dla użytkowników programów komputerowych. Przede wszystkim wyniki obliczeń są na tyle sensowne, na ile sensowne są dane wejściowe, innymi słowy GIGO (Garbage In, Garbage Out), czyli śmieci na wejściu generują śmieci na wyjściu. Zamiast więc obwiniać komputer o błędne działanie, należy się zastanowić, czy nie zachodzi PEBKAC (Problem Exists Between Keyboard And Chair), czyli poszukać winnego gdzieś pomiędzy klawiaturą a krzesłem. Gdy wszystko inne zawodzi, mamy też RTFM (Read The F*cking Manual), czyli niezbyt grzeczne odesłanie użytkownika do instrukcji obsługi bądź też listy popularnych pytań FAQ (Frequently Asked Questions). Dziś raczej zastąpione przez uprzejmą prośbę o skorzystanie z wyszukiwarki GIYF (Google Is Your Friend).