Gdzieś w Twoich filmach zauważyłem w pierwszym argumencie pętli for taki ciekawy zapis: { length } = arr. Czy w którymś z Twoich filmów omawiasz tego rodzaju przypisanie?
Jeżeli interesuje Was ciekawa lista książek, polecam goodbooks.io/ Sporą część najczęściej polecanych mam już za sobą i potwierdzam - są to wybitne książki.
Czy wykorzystanie zwykłej funkcji reduce nie byłoby czytelniejsze pod względem czytania kolejności wykonywania funkcji przez funkcję compose ? Tutaj "compose(getBusiness, getPages, countPages)" parametry czytamy w kolejności wykonywania, w twoim przypadku jest odwrotnie. Pozdrawiam
Wynika to dokładnie z tego w jaki sposób te funkcje są zagnieżdżane (pokazuję to w pierwszej części filmu). W ogóle kompozycja funkcji ma swoje źródło w matematyce gdzie zapisujemy ją jako g(f(x)) i tam właśnie te wartości rozwiązywane są od prawej, do lewej. Także może na pierwszy rzut oka nieintuicyjne, jest to jak najbardziej logiczne.
4 года назад
@@overment Logiczne i ma swoje uzasadnienia, ale świat dąży do upraszczania i większej czytelności, czego przykładem może być dość młody pomysł - pipeline operator developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Pipeline_operator
@ o dziękuję Radek! Przy czym pipe nie jest jakoś szczególnie młody i nawet o nim myślałem. Różni się w końcu tylko kolejnością wykonywania funkcji. Większy sens kompozycja w przypadku gdy mamy komponenty np. w React: compose(Container, List, map(ListItem))(items). W takim przypadku compose ma przewagę nad pipe. Także fakt: pipe jest bardziej logiczny w tym konkretnym przypadku i powinienem go użyć albo przynajmniej wspomnieć na filmie. Raz jeszcze dziękuję za komentarz! 💪
Mocno się przychylam do tego typu rozwiązania. Pamiętanie, że jest to wykonywane od tyłu może być mylące dla osoby, która zaczyna. Nie chodzi o merytorykę, logikę tylko samą użyteczność. Pisanie pierwszego kroku na początku jest bardziej intuicyjne - o jeden element mniej do zapamiętania. Jestem pewny, że dając taki kod osobie początkującej 50% osób popełni błąd z kolejnością. Mimo mojej uwagi, materiał świetny!
W języku Julia istnieje podobny mechanizm (w języku D i R chyba też?) ,a mianiowicie " |> ". Twój przykład wyglądałby tak: business = bookshelf |> getBusiness |> getPages |> countPages . Osobiście uważam taki zapis za czytelniejszy, bo używając twojej funkcji muszę na poczatku wiedzieć, co zrobię jako ostatnie - countPages, getPages ... Nie jest to chronologiczne. W haskellu nie wiem czy czasami się tego kropką nie osiąga. Niemniej jednak ciekawy filmik, gdyż w js odruchowo starałem się pisać klasy, a da się jednak inaczej. Dzięki!
Hej, ja takie pytanie niezwiązane z tematem filmu, jak się nazywa ten cursor, który używasz, bo czasami pisząc w visualu, tracę go z oczu?a taki z animacją przydał by mi się. Pozdrawiam
Propsy za Sapiens ;) Bardzo fajny przykład, osobiście jestem fanem `chainingu` i pewnie bym zrobił .filter().map().reduce() ale widzę, że metoda którą pokazałeś jeszcze bardziej porządkuje kod i w dodatku mamy jeszcze mniejsze re-używalne funkcje, plus przy konieczności wykonania kilku operacji na jakims obiekcie taki `chaining` robi sie już brzydki, dzięki za inspiracje ;) Czy planujesz kiedyś filmik/filmiki o nazewnictwie zmiennych/funkcji/komponentów itp? Uważam, że pisanie czytelnego kodu jest równie ważnie o ile nie ważniejsze niż sama znajomość języków programowania i sam poświęcam na to zazwyczaj dość dużo czasu choć ciągle mam wrażenie, że można to zrobić lepiej. Może masz jakieś porady na bazie doświadczenia :D
Jak spodobało Ci się Sapiens, polecam Ci jeszcze Seeking Wisdom. Nigdy nie czytałem aż tak konkretnej książki 🤯 O chainingu również myślałem przygotowując przykład 😉 Jest rzeczywiście tak jak piszesz. A co do nazywania funkcji, spotkałem się z ciekawą sugestią: nazywając zmienne, nie kłam co do tego, co się w nich znajduje. Np. jeżeli masz licznik, nazwij go "counter" a nie np. "index". Oczywiście ten temat jest bardziej złożony i ta sugestia go nie wyczerpuje. Myślę że faktycznie taki zestaw porad dotyczących nazewnictwa byłby ciekawym pomysłem na odcinek "solo" 😀. Dopisuję do swojej listy! Dziękuję 🙂 P.S.: polecisz jakąś książkę? Już widzę że czytasz dobre pozycje. Rzuć okiem tutaj: goodbooks.io/
Dokładnie, mi chyba najwięcej pomogło nazewnictwo zmiennych bool, zamiast np. nazywać `visibility` lepiej użyć `visible` albo `isVisible` i wtedy dużo łatwiej pisać warunki logiczne i patrzac na taka zmienną od razu widać co oznacza jej wartość `true` (może akurat ten przyklad nie jest najlepszy ale jest cała masa takich sytuacji). Z książek no to przeczytałem wszystkie Harrariego, Homo Deus bardzo mocne, możliwe że lepsze niz Sapiens ;) 21 Lekcji na XXI wiek też spoko ale dużo rzeczy się powtarza z tych dwóch poprzednich. Bardzo mocno polecam książki Richarda Feynmana: 'Pan raczy żartować, Panie Feynman' oraz 'A co Ciebie obchodzi co myślą inni?'. Z innych mocno inspirujących to Carl Sagan: 'Błekitna kropka' - co prawda oparta na odkryciach układu słonecznego i już lekko przestarzała ale jej ogólny przekaz jest świetny. Ostatnio skończyłem też 'Przepis na człowieka' od Dawida Myśliwca z kanału Uwaga! Naukowy Bełkot i jest naprawdę super. Jeśli lubisz sci-fi to bardzo spoko są Andego Weira: Marsjanin i Artemis, Lema dopiero zacząłem niedawno czytac i moge polecić klasyk Solaris, Dzienniki Gwiazdowe dopiero czekaja na półce :p I jako ciekawostka na koniec, planuje kupić 'Rozmyślania' autorstwa ... Marka Aureliusza, cesarza rzymskiego, podobno mocno inspirująca i ciągle bardzo akrualna mimo 2 tyś. lat na karku 😁
@@darekgala4667 rzeczywiście, isVisible jest znacznie lepsze niż visibility. Spróbuję spisać jakieś dobre praktyki i omówić je na przykładach. Homo Deus mam w swojej kolejce, nie mogę się doczekać! 🙂 W tej chwili czytam Black Box Thinking. Feynmana dopisuję do listy :) A fantasty / sci-fi raczej nie czytam. W ogóle polecam Ci zacząć czytać książki...po angielsku. Kilka książek przeczytałem po polsku a potem w oryginale i w tym przypadku tłumaczenia były bardzo słabe. A już totalnie epickie jest słuchanie audiobooka czytanego przez samego autora (np. Jocko Willink opowiadający historię z wojny w Extreme Ownership 🤯). Audiobooków słucham na Audible jak coś. Trochę drogo ale masz w ramach abonamentu masz kredyty które możesz wymienić na książki.
Dzięki za pomysł, to o czym piszesz to tak mam z serialami/filmami, zawsze wolę oryginalny głos.czy dubbing, muszę przetestować audiobooki po ang w takim razie 😁
No to koniecznie 😁 Dodatkowo biblioteka Audible jest bardzo duża (w końcu to Amazon). Poza tym słuchanie książek można łatwiej łączyć z innymi czynnościami, np treningiem. Optymalizacja czasu ftw. 😅
@@krzysztofkasprzyk5232 Tak jak napisał Kacper, średniki są opcjonalne. To nawyk który wszedł mi mocno ze względu na to że sporo pracuję teraz w TypeScripcie. Aczkolwiek musisz wiedzieć że najpopularniejsze styleguide cały czas rekomendują wykorzystanie średników. Muszę przekonfigurować sobie eslinter do kolejnych filmów :)
@@overment Adam nie do końca się zgodzę z tą opcjonalnością, polecam: brendaneich.com/2012/04/the-infernal-semicolon/ TS też nie jest przeszkodą, bo ja też korzystam z TS zawodowo i oczywiście używam średników :) Pozdrawiam
Dokładnie! W ogóle niemal każdy element programowania funkcyjnego wydaje się być mega prosty sam w sobie. Świadome wykorzystywanie ich wszystkich ma naprawdę niesamowity wpływ na jakość kodu. No i warto znać te wszystkie pojęcia i techniki w kontekście pracy z Reactem...do którego też pewnie przejdziemy w kolejnych miesiącach :)
Heja 👋 Masz do mnie jakieś pytanie? Śmiało, jestem tu 👇
Gdzieś w Twoich filmach zauważyłem w pierwszym argumencie pętli for taki ciekawy zapis: { length } = arr. Czy w którymś z Twoich filmów omawiasz tego rodzaju przypisanie?
Chyba znalazłem odpowiedź. Czy chodzi o destrukturyzację tablicy/obiektu ? kursjs.pl/kurs/obiekty/destructuring.php
Taki świetny materiał i za darmo =D
Jeżeli interesuje Was ciekawa lista książek, polecam goodbooks.io/
Sporą część najczęściej polecanych mam już za sobą i potwierdzam - są to wybitne książki.
dobrą robotę robisz
Czy wykorzystanie zwykłej funkcji reduce nie byłoby czytelniejsze pod względem czytania kolejności wykonywania funkcji przez funkcję compose ? Tutaj "compose(getBusiness, getPages, countPages)" parametry czytamy w kolejności wykonywania, w twoim przypadku jest odwrotnie. Pozdrawiam
Wynika to dokładnie z tego w jaki sposób te funkcje są zagnieżdżane (pokazuję to w pierwszej części filmu). W ogóle kompozycja funkcji ma swoje źródło w matematyce gdzie zapisujemy ją jako g(f(x)) i tam właśnie te wartości rozwiązywane są od prawej, do lewej.
Także może na pierwszy rzut oka nieintuicyjne, jest to jak najbardziej logiczne.
@@overment Logiczne i ma swoje uzasadnienia, ale świat dąży do upraszczania i większej czytelności, czego przykładem może być dość młody pomysł - pipeline operator developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Pipeline_operator
@ o dziękuję Radek! Przy czym pipe nie jest jakoś szczególnie młody i nawet o nim myślałem.
Różni się w końcu tylko kolejnością wykonywania funkcji.
Większy sens kompozycja w przypadku gdy mamy komponenty np. w React:
compose(Container, List, map(ListItem))(items). W takim przypadku compose ma przewagę nad pipe.
Także fakt: pipe jest bardziej logiczny w tym konkretnym przypadku i powinienem go użyć albo przynajmniej wspomnieć na filmie.
Raz jeszcze dziękuję za komentarz! 💪
Mocno się przychylam do tego typu rozwiązania. Pamiętanie, że jest to wykonywane od tyłu może być mylące dla osoby, która zaczyna. Nie chodzi o merytorykę, logikę tylko samą użyteczność. Pisanie pierwszego kroku na początku jest bardziej intuicyjne - o jeden element mniej do zapamiętania. Jestem pewny, że dając taki kod osobie początkującej 50% osób popełni błąd z kolejnością. Mimo mojej uwagi, materiał świetny!
W języku Julia istnieje podobny mechanizm (w języku D i R chyba też?) ,a mianiowicie " |> ". Twój przykład wyglądałby tak: business = bookshelf |> getBusiness |> getPages |> countPages . Osobiście uważam taki zapis za czytelniejszy, bo używając twojej funkcji muszę na poczatku wiedzieć, co zrobię jako ostatnie - countPages, getPages ... Nie jest to chronologiczne. W haskellu nie wiem czy czasami się tego kropką nie osiąga. Niemniej jednak ciekawy filmik, gdyż w js odruchowo starałem się pisać klasy, a da się jednak inaczej. Dzięki!
Jeszcze mam jedno pytanie, co jeżeli te funkcje zwracałyby objetnice?
Hej, ja takie pytanie niezwiązane z tematem filmu, jak się nazywa ten cursor, który używasz, bo czasami pisząc w visualu, tracę go z oczu?a taki z animacją przydał by mi się. Pozdrawiam
W ustawieniach Visual Studio Code masz opcję "Cursor blinking". Tam możesz ustawić animację 🙂
@@overment dzięki wielkie :).
Propsy za Sapiens ;)
Bardzo fajny przykład, osobiście jestem fanem `chainingu` i pewnie bym zrobił .filter().map().reduce() ale widzę, że metoda którą pokazałeś jeszcze bardziej porządkuje kod i w dodatku mamy jeszcze mniejsze re-używalne funkcje, plus przy konieczności wykonania kilku operacji na jakims obiekcie taki `chaining` robi sie już brzydki, dzięki za inspiracje ;)
Czy planujesz kiedyś filmik/filmiki o nazewnictwie zmiennych/funkcji/komponentów itp? Uważam, że pisanie czytelnego kodu jest równie ważnie o ile nie ważniejsze niż sama znajomość języków programowania i sam poświęcam na to zazwyczaj dość dużo czasu choć ciągle mam wrażenie, że można to zrobić lepiej. Może masz jakieś porady na bazie doświadczenia :D
Jak spodobało Ci się Sapiens, polecam Ci jeszcze Seeking Wisdom. Nigdy nie czytałem aż tak konkretnej książki 🤯
O chainingu również myślałem przygotowując przykład 😉 Jest rzeczywiście tak jak piszesz.
A co do nazywania funkcji, spotkałem się z ciekawą sugestią: nazywając zmienne, nie kłam co do tego, co się w nich znajduje.
Np. jeżeli masz licznik, nazwij go "counter" a nie np. "index".
Oczywiście ten temat jest bardziej złożony i ta sugestia go nie wyczerpuje. Myślę że faktycznie taki zestaw porad dotyczących nazewnictwa byłby ciekawym pomysłem na odcinek "solo" 😀.
Dopisuję do swojej listy! Dziękuję 🙂
P.S.: polecisz jakąś książkę? Już widzę że czytasz dobre pozycje.
Rzuć okiem tutaj: goodbooks.io/
Dokładnie, mi chyba najwięcej pomogło nazewnictwo zmiennych bool, zamiast np. nazywać `visibility` lepiej użyć `visible` albo `isVisible` i wtedy dużo łatwiej pisać warunki logiczne i patrzac na taka zmienną od razu widać co oznacza jej wartość `true` (może akurat ten przyklad nie jest najlepszy ale jest cała masa takich sytuacji).
Z książek no to przeczytałem wszystkie Harrariego, Homo Deus bardzo mocne, możliwe że lepsze niz Sapiens ;) 21 Lekcji na XXI wiek też spoko ale dużo rzeczy się powtarza z tych dwóch poprzednich. Bardzo mocno polecam książki Richarda Feynmana: 'Pan raczy żartować, Panie Feynman' oraz 'A co Ciebie obchodzi co myślą inni?'. Z innych mocno inspirujących to Carl Sagan: 'Błekitna kropka' - co prawda oparta na odkryciach układu słonecznego i już lekko przestarzała ale jej ogólny przekaz jest świetny. Ostatnio skończyłem też 'Przepis na człowieka' od Dawida Myśliwca z kanału Uwaga! Naukowy Bełkot i jest naprawdę super.
Jeśli lubisz sci-fi to bardzo spoko są Andego Weira: Marsjanin i Artemis, Lema dopiero zacząłem niedawno czytac i moge polecić klasyk Solaris, Dzienniki Gwiazdowe dopiero czekaja na półce :p
I jako ciekawostka na koniec, planuje kupić 'Rozmyślania' autorstwa ... Marka Aureliusza, cesarza rzymskiego, podobno mocno inspirująca i ciągle bardzo akrualna mimo 2 tyś. lat na karku 😁
@@darekgala4667 rzeczywiście, isVisible jest znacznie lepsze niż visibility. Spróbuję spisać jakieś dobre praktyki i omówić je na przykładach.
Homo Deus mam w swojej kolejce, nie mogę się doczekać! 🙂 W tej chwili czytam Black Box Thinking.
Feynmana dopisuję do listy :) A fantasty / sci-fi raczej nie czytam.
W ogóle polecam Ci zacząć czytać książki...po angielsku. Kilka książek przeczytałem po polsku a potem w oryginale i w tym przypadku tłumaczenia były bardzo słabe.
A już totalnie epickie jest słuchanie audiobooka czytanego przez samego autora (np. Jocko Willink opowiadający historię z wojny w Extreme Ownership 🤯).
Audiobooków słucham na Audible jak coś. Trochę drogo ale masz w ramach abonamentu masz kredyty które możesz wymienić na książki.
Dzięki za pomysł, to o czym piszesz to tak mam z serialami/filmami, zawsze wolę oryginalny głos.czy dubbing, muszę przetestować audiobooki po ang w takim razie 😁
No to koniecznie 😁 Dodatkowo biblioteka Audible jest bardzo duża (w końcu to Amazon).
Poza tym słuchanie książek można łatwiej łączyć z innymi czynnościami, np treningiem. Optymalizacja czasu ftw. 😅
nie powinno być books? 9:06
Nie jestem pewien o co pytasz a nie widzę tego na filmie. Wyjaśnisz proszę?
@@overment linijka 15, zmienna przyjmuje listę, więc w parametrze można zapisać liczbę mnogą: books
Jak to robisz, że nie musisz dawać średników?
w języku javascript nie musisz używać zawsze średników na końcu linijki, pozdrawiam :D
@@kszarkiewicz Ciekawe, nie wiedziałem, muszę o tym poczytać, a i dzięki. Pozdrawiam.
@@krzysztofkasprzyk5232 Tak jak napisał Kacper, średniki są opcjonalne.
To nawyk który wszedł mi mocno ze względu na to że sporo pracuję teraz w TypeScripcie.
Aczkolwiek musisz wiedzieć że najpopularniejsze styleguide cały czas rekomendują wykorzystanie średników.
Muszę przekonfigurować sobie eslinter do kolejnych filmów :)
@@overment Adam nie do końca się zgodzę z tą opcjonalnością, polecam: brendaneich.com/2012/04/the-infernal-semicolon/ TS też nie jest przeszkodą, bo ja też korzystam z TS zawodowo i oczywiście używam średników :) Pozdrawiam
Niby proste, ale może się przydać, gorąco polecam z rodzinką
Dokładnie! W ogóle niemal każdy element programowania funkcyjnego wydaje się być mega prosty sam w sobie.
Świadome wykorzystywanie ich wszystkich ma naprawdę niesamowity wpływ na jakość kodu.
No i warto znać te wszystkie pojęcia i techniki w kontekście pracy z Reactem...do którego też pewnie przejdziemy w kolejnych miesiącach :)