środa, lipca 15, 2020

Ehh... I po co nam te wszystkie algorytmy i struktury danych? ;-)

Bądźmy szczerzy większość czasu* programista spędza na pisaniu prostego kodu, który jest wariacją na temat "weź dane w jednym formacie, wypluj w innym", albo "weź dane, wrzuć do bazy", "weź z bazy, wyrzuć na ekran".

OK, możemy robić stada microserwisów, ale one de facto też przerzucają po prostu dane między sobą.

Ale raz na jakiś czas zdarza się coś bardziej niezwykłego.

W jednej firmie pisałem w Prologu ;-)
Kolega napisał mechanizm do wnioskowania co testować na podstawie zmian w kodzie, ja to troszkę dozbroiłem w to, że np. potrafiło stwierdzić na podstawie zmian w kodzie źródłowym co się zmieniło i dzięki temu mogło zawęzić poszukiwania.
Ten prolog w końcu jednak robił chyba głównie jakieś proste wyszukiwanie w grafie....

W kolejnej firmie też najdalej doszedłem chyba do grafów, i może małego LRU.
Grafów, a dokładnie BFS (choć próbowałem najpierw DFS) używałem do szukania najbliższego punktu gdzie można wrzucić koszyk na sieć konwojerów.... (w JavaScript ;-)), albo do tego by znaleźć powiązania między fragmentami kodu (w Pythonie i JavaScript), albo graf dependencji (JavaScript).
Najwięcej było tego BFSa w mojej wersji code forensics...

LRU napisałem w Java'ie i jego głównym, jeśli nie jedynym celem było działanie ciut inne niż LRU ;-) bo nie miał to być cache, ale po prostu mechanizm który miał pilnować żeby nam nikt nie był w stanie atakować aplikacji próbami logowania zbyt częstymi (pomiędzy 3 nieudanymi logowaniami miało minąć 10 minut, ale nie chcieliśmy żeby nam ktoś zawalił pamięć rzucając losowe requesty, więc był limit ilości prób logowania które śledziliśmy (wszyło LRU).

BFSa używałem jeszcze do kopiowania obiektów... ale moja zmiana była głównie na blokowaniu tego, a i pomogłem trochę w kawałku który miał za zadanie wyszukiwać wśród obiektów obiektu z jakimś łańcuchem...

Wcześniej miałem parsowanie SQLa, budowanie relacji i regeneracja SQLa... 
I sortowanie topologiczne ;-) (brałem serię insert'ów do bazy i wrzucałem tego kopię do innej, ale zmieniając IDki, nie znając tych IDików i ich nazw).

Całkowanie numeryczne, chociaż tak naprawdę to było po prostu sumowanie zakresów z miernika...

Reszta to rzeczy, które bez większych problemów można zrobić listami, setami, albo mapami... i to zwykle najprostszymi...

Najwięcej ciut bardziej wyszukanych algorytmów napisałem chyba na rozmowach ;-)

To jest ciut smutne.


* - co by mogło sugerować, że ja już programistą do końca nie jestem... bo mam coraz częściej wrażenie, że większość czasu spędzam na spotkaniach ;-)





Podobne postybeta
Dziś programista ma być teoretycznym algorytmistą, a praktycznym kleistą ;-)
Cukierki, radosny chaos i takie tam, czyli Przemkowe rojenia ;-)
Jestem anonimowym programistą....
A tak sobie ;-)
Nie inicjalizuj rozmiaru kolekcji...

Brak komentarzy:

Publikowanie komentarza