• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Algorytmy - jak zacząć i sens nauki

Object Storage Arubacloud
+4 głosów
3,978 wizyt
pytanie zadane 15 marca 2018 w Algorytmy przez Utau Użytkownik (900 p.)
Hej. Zamierzam rozpocząć naukę algorytmów i ogólnie algorytmiki jednak zastanawiam się nad sensem tego przedsięwzięcia. Słyszałam, że algorytmy w dzisiejszych czasach są juz zaimplementowane w wielu bibliotekach, które się wykorzystuje i nie trzeba ich się uczyć na zasadzie "Po co wynajdywać koło od zera?"

Z drugiej strony słyszałam, ze programista który nie zna się na algorytmach nie jest programistą tylko zwykłym klepaczem kodu.

Pytanie - jak zacząć i czy warto rozpocząć naukę algorytmów i całej algorytmiki. Czy poza analizą matematyczną jest wymagana wiedza z innych dziedzin matematyki ? Czy algorytmy i struktury danych pokazane w filmikach Pana Zelenta są dobrą podstawą do rozpoczęcia przygody z algorytmiką ?

Piszę jakąś grę w C++ lub w Unity. Gdzie mogę spotkać się z koniecznością posiadania wiedzy z zakresu algorytmiki ?
1
komentarz 15 marca 2018 przez mi-20 Stary wyjadacz (13,190 p.)
myślę że mimo wszystko warto się ich pouczyć. Skoro masz możliwość je znać to czemu nie
1
komentarz 15 marca 2018 przez Jakub 0 Pasjonat (23,120 p.)

@Utau

Najwięcej uczysz się pisząc po prostu własne praktyczne gry/programy itd... Nie raz kiedy coś piszesz to będzie trzeba zaimplementować jakieś własne rozwiązanie danego problemu ( a to jest oczywiście algorytm ). Myślę że coś takiego cie najbardziej rozwinie bo wtedy od algorytmiki i tak nigdy nie uciekniesz. Jeśli natomiast chodzi o poświęcanie czasu na stricte matematyczne zagadnienia to jak ci się podoba... Jeżeli cię to kręci to to rób. Ale tworzenie algorytmów  na potrzeby jakiś twoich większych projektów moim zdaniem najbardziej cię rozwinie. (ćwiczysz wtedy nie tylko algorytmy ale też OOP itd)

3 odpowiedzi

+3 głosów
odpowiedź 15 marca 2018 przez Bosswell Nałogowiec (36,470 p.)
edycja 15 marca 2018 przez Bosswell

Moim zdaniem, warto trenować algorytmikę. Uczy ona myśleć programistycznie. Kiedy zaczynasz programować, uczysz się podstawowej składni która występuje we wszystkich językach programowania. Tj. pętle, instrukcje warunkowe, switche, operatory logiczne i arytmetyczne + typy zmiennych, ewentualnie struktury i proste wypisanie danych. Tylko później przychodzi pytanie, co teraz ? "Niby znam te rzeczy, ale jak przyjdzie co do czego, to nie wiem jak je praktycznie zastosować". Więc próbujesz. Robisz o kilka za dużo zmiennych, nie zwracasz uwagi na zarządzanie pamięcią, robisz 15 niepotrzebnych instrukcji warunkowych. Algorytm wygląda brzydko, ale jednak odnosisz sukces, wszystko działa jak należy. Potem lecisz do następnego zadania, idzie Ci już lepiej. Zaczynasz coraz świadomiej używać pętli i warunków. Następnie dostrzegasz pewną brzydotę w swoich starych algorytmach i z 80 linii kodu zamieniasz je na 20/30 liniowe bloki. Zauważasz pewne powtórzenia, i myślisz sobie "hej, może tu i tam pyknę funkcje ?". Główny kod zajmuje teraz 15 linii kodu. i jest podzielony na funkcje, z możliwością ponownego użycia w razie potrzeby. Wykonujesz kolejne algorytmy, zwracają one błędne wyniki, a ty dalej próbujesz. Poznajesz przy tym jak działa komputer. Jak zarządza pamięcią, jak w praktyce zachowują się liczby zmiennoprzecinkowe, o co z nimi chodzi. Nad rozwiązaniem kolejnych problemów będziesz myślała całkowicie inaczej niż na początku. W głowie przelatywać będą myśli, tutaj dam pętle foreach, albo while (bo wiem, że for w tym miejscu nie ma sensu), tam dam switcha (bo w tym przypadku zgrabniej i czytelniej wygląda, oraz nie zajmuje tyle placu). Rozwiązywanie takich problemów, dla Ci masę benefitów. Kiedy popatrzysz się na obcy kod, to zrozumiesz co on robi, nawet nie znając szczególnie składni tego języka.


Oczywiście, korzysta się z gotowych bibliotek i algorytmów, bo nie ma sensu pisać cały czas od nowa. Algorytmy tam zawarte, będą prawdopodobnie wydajniejsze od twoich i nie będziesz musiała się martwić o to jak on działa w środku, a jedynie popatrzysz w dokumentacje i wuala. Ale z samej czystej ludzkiej ciekawości, jak wejdziesz do paczki z takim algorytmem, to fajnie wiedzieć o co w nim chodzi. Nie z racji, że gdzieś akurat o tym algorytmie czytałaś i go przerabiałaś, ale po prostu spojrzysz na niego i przeczytasz go jak wiersz ;)


Tak, to co pokazał Pan Mirosław, jest wystarczające aby zacząć z algorytmikom, o czym już wcześniej pisałem.


Co do innych dziedzin. Wszystko zależy, co chcesz robić. Jak programujesz webowo, to nie potrzebujesz właściwie żadnej wiedzy z matematyki, a jedynie zasady działania podstawowych protokołów, kilku sieciowych zagadnień i nie tylko (przy backendzie oczywiście). Matematyka w programowaniu webowych również występuję, ale przy zagadnieniach które raczej Cię nie dotyczą, takie jak szyfrowanie danych, lub przy tworzeniu fizyki gier. Widywałem strony w 3D, ale raczej były robione, aby pokazać, ze się da. Jeżeli chcesz tworzyć gry, to narzędzia w których to robisz mają dla Ciebie wiele gotowych funkcji, a ty je po prostu wykorzystujesz. Natomiast Ci, którzy tworzą takie programy jak np Blender, Unity, lub Unreal Engine to potrzebują bardzo dużej wiedzy z zakresu fizyki, matematyki i szeroko pojętej algorytmiki. Tak samo jak firmy, które tworzą sterowniki do chociażby autonomicznych samochodów, samolotów, czy rakiet kosmicznych. 


Ale się elaborat zrobił :)

Podsumowują, od algorytmiki jako programista nie uciekniesz. Jest to po prostu sposób na rozwiązanie problemu. W jakim stopniu się w niej zgłębisz, zależy od Ciebie ;) A uczucie, które towarzyszy zielonemu światełku na spoju, czy też rozwiązaniu przez Ciebie trudnego problemu lub sprawienie, że autko pojedzie do przodu, jest bezcenne :)

+1 głos
odpowiedź 16 marca 2018 przez Strategiusz Dyskutant (9,220 p.)
Polecam ten kanał https://m.youtube.com/channel/UCD8yeTczadqdARzQUp29PJw

Musisz wiedzieć czym jest złożoność obliczeniowa i jaką mają ją standardowe struktury danych. Nikt Ci nie każe wkuwać na pamięć sortowania bąbelkowego czy quicksortu.
komentarz 16 marca 2018 przez Utau Użytkownik (900 p.)
Już się bałam, ze będę musiała kuć na pamięć te wszystkie algorytmy grafów, sieci neuronowe itd :P

Rozumiem, że dobór algorytmu/struktury danych odbywa sie na zasadzie: najpierw bierzemy pod uwagę te o najnizszej złożoności obliczeniowej i jesli dana nie pasuje to schodzimy o szczebelek niżej ?
0 głosów
odpowiedź 15 marca 2018 przez Beginer Pasjonat (22,110 p.)

Wszystko, co koledzy wcześniej i Ty sama napisałaś jest prawdą.

Programista który nie zna się na algorytmach nie jest programistą tylko zwykłym klepaczem kodu.

Powiem tak. Jeśli nformatyką zajmujesz się hobbystycznie, robisz proste gry i brak podstaw Cię nie ogranicza, to nie musisz "katować" algorytmów. Jeśli zauważysz jakieś ograniczenia, że nie możesz posuwać się do przodu, sama zaczniesz studiować podstawy, w zakresie jaki będzie potrzebny (w języku C++ nastąpi to dość szybko). To wcale nie muszą być kursy MZ. Uważam, że na początek lepsze są książki.

komentarz 16 marca 2018 przez Utau Użytkownik (900 p.)
Programuje póki co hobbystycznie bo programowanie jest jedyną rzeczą, która mnie naprawdę kręci i nad którą potrafię spędzić nawet 3/4 dnia (aż narzeczony się denerwuje żem go zaniedbuje :P), ale chciałabym robić naprawdę ambitne gry(C++) i aplikacje biznesowe(C#/Java).

Nie zajmuję się tym zawodowo bo uwazam, ze nic nie potrafię z programowania póki co tylko zwykła pseudo-znajomość kodu :>
komentarz 16 marca 2018 przez Beginer Pasjonat (22,110 p.)
Wielu ludzi chciałoby mieć Twój zapał, determinację i zacięcie. To daje przewagę. Na nadrobienia podstaw masz jeszcze czas. Całe życie przed Tobą. Staraj się nie "przeginać" - pasja, informatyka nie kosztem życia prywatnego, najbliższych, rodziny.

Podobne pytania

+2 głosów
4 odpowiedzi 835 wizyt
pytanie zadane 14 czerwca 2015 w Algorytmy przez rafalmagician Obywatel (1,320 p.)
0 głosów
1 odpowiedź 318 wizyt
pytanie zadane 28 czerwca 2020 w Algorytmy przez xdelvis Nowicjusz (120 p.)
0 głosów
1 odpowiedź 273 wizyt
pytanie zadane 13 czerwca 2020 w Algorytmy przez hackier Nowicjusz (170 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...