2 x 2 = 4, na wieki wieków

https://xpil.eu/pmv

W ramach przemierzania bezbrzeżnych stepów Internetu natknąłem się niedawno na całkiem interesujący artykuł, którego autor próbuje odpowiedzieć na pytanie: Czy umiejętności matematyczne są potrzebne współczesnym programistom?

Wychodzi na to, że na chwilę obecną jeszcze nie (w każdym razie nie wszystkim), ale już wkrótce - będą.

Oczywiście nie trzeba będzie być od razu doktorem habilitowanym matematyki wyższej; bardzo jednak przyda się znajomość podstaw (rozumianych jednak dużo szerzej, niż program szkoły podstawowej). A będzie tak, ponieważ kodowanie (czyli samo pisanie kodu) to tylko jedna z pięciu kolumn, na których opiera się współczesna nauka o komputerach.

Pozostałe cztery kolumny to: Algorytmy i struktury danych, Statystyka, Matematyka oraz Sztuczna Inteligencja.

Oczywiście ktoś mógłby się kłócić, że statystyka jest gałęzią matematyki, a sztuczna inteligencja to wąska specjalizacja, niekoniecznie niezbędna zwykłemu zjadaczowi bitów. Prawda jednak jest taka, że coraz więcej i więcej rozwiązań ze świata IT opiera się na sztucznej inteligencji, a więc i zapotrzebowanie będzie rosnąć.

Zobaczmy teraz na kilku przykładach, jak to właściwie jest z tą matematyką w programowaniu.

Algebra numeryczna: bardzo przyda się każdemu, kto będzie musiał wybrać jakiś algorytm (lub strukturę danych) spośród wielu dostępnych opcji. Dzięki użyciu algebry numerycznej będzie w stanie lepiej - dokładniej - ocenić różne aspekty wydajnościowe poszczególnych algorytmów.

Planimetria: przydaje się do projektowania UI.

Stereometria: wyobraźmy sobie, że tworzymy aplikację, w której musimy zaimplementować animację odbijających się obiektów 3d. Bez znajomości geometrii 3d polegniemy w przedbiegach.

Podstawy algebry: załóżmy, że dostaniemy za zadanie ocenić, o ile powinna wzrosnąć stopa zwrotu z aplikacji mobilnej X, jeżeli poprawimy wydajność silnika na zapleczu o 20%? Mamy tutaj układ równań z wieloma niewiadomymi, którego rozwiązanie bez znajomości algebry może być trudne, jeżeli nie niemożliwe.

Równania różniczkowe: ogromna ilość zastosowań: analizy finansowe, projektowanie systemów sterujących wszelkimi robotami i wiele, wiele innych dziedzin - bez rozumienia metod rozwiązywania równań różniczkowych możemy od razu iść po łopatę albo gumowe rękawice 😉

Statystyka: przeprowadzanie testów A/B jak również wszelkie analizy operujące na dużych zbiorach danych bez znajomości podstaw statystyki będą raczej niemożliwe.

Algebra liniowa: przetwarzanie obrazów, algorytmy rankingowe do wyszukiwarek i wiele innych zastosowań.

Notacja dużego O: umiejętność oszacowania zależności wydajności skomplikowanego algorytmu lub systemu od ilości danych, na których ów operuje, może się okazać zbawienna w sytuacjach nagłej ekspansji biznesu na nowe rynki czy grupy klientów / produktów.

Optymalizacja: wszędzie, gdzie musimy poprawić szybkość działania lub zminimalizować zużycie zasobów, znajomość technik wyliczania maksimów lub minimów złożonych funkcji może się okazać niezastąpiona.

Powyższa lista, mógłby ktoś powiedzieć, jest trochę naciągana. Trochę na wyrost. Trochę za bardzo. Niemniej jednak rokowania są takie, że znajomość matematyki będzie w ciągu najbliższych 10-20 lat nabierać coraz większego znaczenia przy wyborze kandydatów na różne stanowiska pracy w branży IT. Już teraz w coraz większej ilości firm pojawiają się wakaty na stanowiska typu "Data Scientist", gdzie jednym z wymagań jest znajomość tej czy tamtej gałęzi matematyki. Ja sam pracowałem kiedyś w firmie zajmującej się badaniami klinicznymi, gdzie bez znajomości statystyki praktycznie nie da się w ogóle ruszyć z miejsca. Kiedy indziej pracowałem dla jednego z największych producentów gier on-line i tam na przykład analizy statystyczne były jedynym sensownym sposobem na wykrywanie oszustów. Zresztą w badaniach klinicznych statystyka też pomaga "wyłapywać" nieuczciwych / leniwych lekarzy, którzy próbują manipulować wynikami badań (na przykład biorą ciśnienie krwi z kapelusza, zamiast je faktycznie zmierzyć). I tak dalej.

No ale takie pitu-pitu to sobie można aż do podwieczorka. Rzućmy teraz okiem na stronę finansową zagadnienia. Końcem końców każdego z nas interesuje taki scenariusz, w którym będziemy mieli jutro co włożyć go garnka, nieprawdaż.

Oto jak kształtują się przewidywane roczne inwestycje (a także różne inne wskaźniki) w trzy wybrane gałęzie rynku IT w ciągu najbliższych czterech lat (globalnie):

Sztuczna inteligencja / uczenie maszynowe:
Teraz: 427,000,000 USD
Za 5 lat: 5,000,000,000 USD
Wzrost ilości firm eksperymentujących ze sztuczną inteligencją: 50%

Szyfrowanie danych i cyberbezpieczeństwo:
Teraz: 70,000,000,000 USD
Za 5 lat: 170,000,000,000 USD
Odsetek firm, które w pełni zaadaptowały technologie szyfrowania danych: 41%
Wzrost ilości ofert pracy dla fachowców od bezpieczeństwa / szyfrowania danych w latach 2007 - 2013: 74%

Przetwarzanie obrazów / wizja komputerowa:
W 2014: 5,700,000,000 USD
W 2017: 33,000,000,000 USD
Ilość zdjęć otagowanych obecnie w systemie ImageNet: 14,000,000 (w 2009: 80,000)

Dla wścibskich: ImageNet to projekt Open Source, w którym zdjęcia są tagowane w celu uczenia komputerów "rozumienia" tego, co widzą.

Reasumując ten przydługi i nieco nudnawy wpis, chodzi o to, że fachowcy z branży IT powinni w szerszym zakresie skupiać się na podstawach: algorytmach, matematyce, logice, a mniej dać się "porywać" różnym "nowoczesnym" technologiom, które prędzej czy później przeminą. Dwa razy dwa zawsze będzie równało się cztery (z wyjątkiem, oczywiście, Maszyny Trurla, dla której wynik dożywotnio wynosi siedem: http://solaris.lem.pl/ksiazki/beletrystyka/cyberiada/227-maszyna-trurla) i nie zmienią tego ani nowe wersje pakietu .Net, ani ulepszony cukier syntaktyczny nowego Pythona, ani nowe, udoskonalone mechanizmy synchronizacji węzłów MongoDB.

Programista, który zna piętnaście "nowoczesnych" języków programowania, za to jest noga z matematyki, będzie miał za 10 lat więcej trudności ze znalezieniem fajnej pracy niż taki, który zna "tylko" pięć języków, za to świetnie orientuje się w algebrze, statystyce i notacji dużego O.

A to wszystko dlatego, że matematyka jest jednym z niewielu, naprawdę niewielu niezmiennych elementów świata. Pamięta ktoś jeszcze techologię CORBA? Używa ktoś jeszcze dyskietek? (oczywiście poza komputerami Pentagonu, które sterują głowicami nuklearnymi). Pamięta ktoś dzisiaj, który rejestr w ZX Spectrum trzeba było przełączyć, żeby dobrać się do pamięci RAM stacji dysków? No właśnie.

A dwa razy dwa ciągle równa się cztery.

https://xpil.eu/pmv

3 komentarze

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.