Uczyłem się z jego kursów i bardzo ciepło wspominam, załapałem dzięki niemu gigantyczną zajawkę na programowanie. Teraz mam 6 lat doświadczenia na frontendzie, żyję, "złe praktyki" w ogóle nie miały dla mnie znaczenia, bo to przecież nie jest jedyne źródło wiedzy z którego korzystałem, za to wyjaśnienie tych najbardziej podstawowych rzeczy i zainteresowanie tematem było tutaj genialne.
Też uważam, że złe praktyki nie są takie straszne, bo potem i tak się dowiemy, że są złe. Nawet jak nie od kogoś, to przez własne błędy - a tak jak piszesz, możemy dość szybko wkroczyć w świat kodowania, bo czasem te złe praktyki są przejrzyste w krótkich przykładach - natomiast nie sprawdzą się w programach typu AAA. Jednak jeśli ktoś nam pokaże odpowiednie przykłady w programowaniu, determinuje to jak sprawnie będziemy programować w przyszłości, a niestety większość nauczycieli od programowania nie jest urodzonymi nauczycielami.
No dokładnie. Dzięki niemu nauczyłem się programować w ogóle, potem uczyłem się javascripta od niego i mimo, że nauczyłem się pisać wtedy przestarzały kod (np. używałem var zamiast let, const) to niedługo potem oglądając wiele innych poradników zacząłem pisać ten bardziej "nowoczesny" i nabrałem już tych dobrych praktyk, a odszedłem od starych. Mirosław Zelent był takim początkiem, dzięki któremu ogarnąłem całą ideę programowania :)
Podzielam twoje zdanie. Ogólnie z tego co wiem np. pisanie kodu bez podziału na funkcje jest szybsze w wykonaniu niż funkcyjne, ale ludzie i tak uważają, że funkcje muszą być. (Sam oczywiście ich używam) Tylko widziałem zestawienie właśnie, że niby cleaner kod a czy szybszy cn. I wyszło na to że program podzielony bez funkcji w zasadzie jest szybszy. Bo wiesz w funkcji trzeba ją na stack wrzucić zapisać gdzie po wykonaniu ma się udać itd.
Zelent celowo używa w kursach dla początkujących polskich nazw, robi to po to by początkujący nie mieli wątpliwości które elementy są elementami języka, a które naszą inwencją, wielokrotnie to powtarzał i uzasadniał dlaczego łamie konwencję używania słów angielskich. Podobnie używanie podstawowych, pozbawionych bajerów narzędzi tłumaczy doświadczeniem dydaktycznym, z którego wynika, że pomaga to młodym skupić się na nauce kodowania, a nie szukania kolejnych bajerów środowiska do zabawy. Używanie starszych i podstawowych bibliotek jest podstawą jego wyjaśnień pomagających pasjonatom lepiej zrozumieć jak w ogóle działa to co piszą, zachęca do korzystania z zaawansowanych narzędzi w późniejszym czasie. Dodam, że tworzone później kursy JS i innych technologii webowych są zdecydowanie lepsze, bywają tam odwołania do kursu c++ który fragmentami uniwersalnie tłumaczy pewne zagadnienia programowania.
Zelent zrobił mega kurs, pracy przy jednym filmiku musiał mieć naprawdę sporo. Ciekawiło mnie czy jakoś odniesiesz się do Obiektowego C++ w którym to użył Borland'a. Jednak nie ma co oczekiwać że każdy przykład będzie idealny, zgodny ze standardami i najlepszymi rozwiązaniami. Każdy problem mozna rozwiązać na wiele sposobów i jeśli działa to jest to wystarczająco dobry sposób :)
Skoro film Zelenta był nagrany kilkanaście lat temu, no to nie trzeba mieć doktoratu z filozofii, żeby się kapnąć, że z definicji nie może się odnosić do "najlepszych rozwiązań", które powstawały przez te ostatnie kilkanaście lat.
No i właśnie tutaj zaczyna się prawdziwa wiedza nauczycielska. Dobry nauczyciel wie, żeby dać wędkę a nie rybę. Przedstawianie najlepszych praktyk i specjalistycznej wiedzy dla osoby początkującej która ma zastosowanie jedynie w komercyjnych projektach to największa głupota. Ma tyle efektów ubocznych, że nawet szkoda mi się rozpisywać, kumaci w tym temacie wiedzą o co chodzi. Programowania nigdy się nie nauczycie robić coś czego nie jesteście w stanie rozkminić w "inżynierii wstecznej" czyli co prowadzi do czego, potem taka osoba małpuje ślepo kurs, a po roku dalej nie może znaleźć pracy w IT i oczywiście winą jest tego rynek ;) Absolutnie nie. To czego uczy pan Mirosław to myślenia programistycznego, a nie klepania kodu. To jest umiejętność którą trzeba nabyć aby wejść do branży, a nie znajomość miliona frameworków.
W przypadku Zelenta trzeba pamiętać, że te poradniki nagrywane był dla ludzi, którzy w życiu linii kodu nie napisali. Owszem, patrzenie na ten kod teraz sprawia mi fizyczny ból, ale jak uczyłem się na sprawdzian w technikum to dzięki niemu zrozumiałem czemu ten for się wykonuje 11 a nie 10 razy. Dobre praktyki, standardy itd. przyjdą z czasem , na start wydaje mi się, że lepiej po prostu zrozumieć podstawy a te dziesięć lat temu to był najlepszy sposób jaki znałem
Bardzo ciężko słucha mi się krytyki tego kursu. To właśnie od niego zacząłem moją przygodę z c++. Kurs był opublikowany na stronie Pasja Informatyki i ta nazwa jest najlepszym opisem tego kursu. Kurs jest bardzo pieczołowicie przygotowany z ciekawą grafiką i bardzo szerokim zakresem wiedzy nie tylko z języka programowania. Widać, że pan Zelent zna się na metodyce nauczania i moim zdaniem kolejność wprowadzania tematów też jest dobra. Myślę, że kurs ten był tworzony z myślą o dzieciach i młodzieży, stąd wszędzie gdzie się dało język polski i dla niektórych zbyt wolne tempo kursu. Co do zarzutów o nie wprowadzaniu nawyków dobrego formatowania, to cóż ... tego nauczyłem się później. Kurs bardzo polecam każdemu na rozpoczęcie przygody z programowaniem.
Zgadzam się, co więcej, kurs p. Zelenta mimo być może swoich wad, jest bardziej czytelny dla początkującego, niż ten tutaj film z krytyką: - co chwilę słychać jakieś komentarze BEZ czytelnej informacji, jak zdaniem Autora być POWINNO, np. 9:54 ; - w innych fragmentach widać gołym okiem, że Autor komentuje, a nawet NIE OBEJRZAŁ tego, co komentuje (bo gdyby obejrzał, to by wiedział co jest pokazane, jak i po co - bo Zelent jasno to tłumaczy, (np. 18:09 ) że nie ma potrzeby pisać gorzej, i JAK można to samo napisać lepiej); - gdyby Autor sobie sprawdził to, co komentuje - to by ze zdumieniem odkrył, np. po do jest 2x getchar... no bo 1x to tu akurat nie działa (a dlaczego, to nie mam bladego pojęcia, nie jestem programistą, tylko nauczycielem) - gdyby odkrył, że 1x nie działa, to ja oczekuję, że mi POWIE dlaczego nie działa jak jest 1x i CO mam zmienić, żeby było dobrze (a właściwie, to po tych komentarzach to nawet nie wiem, czy jest coś źle, czy jest dobrze - tak ględzi i ględzi, żeby tylko poględzić); Dobra, oglądam dalej...
Fajna analiza legendarnego kursu C++. Sam zaczynałem swoją przygodę z c++ w 2014 od tego kursu i dla kogoś kompletnie zielonego ten kurs wydawał się świetny. Aktualnie do nauki programowania polecałbym IDE z automatycznym formatowaniem kodu i analizą statyczną, aby na bieżąco podświetlało popełniane błędy i sugerowało dobre praktyki.
Bo ten kurs był i jest świetny. To co Zelent zrobił genialnie to po prostu zaciekawił programowaniem (a przy okazji matmą). Znam osoby które nie mogły ruszyć z miejsca Albo w ogóle nie interesowało ich programowanie w C++ a po Jego kursie coś magicznie "zaskoczyło". Potem jak już jest zajawka to leci się z górki i człowiek szuka sam. Nie jest już dzieckiem we mgle. Przerabia różne inne kursy i dopasowuje się z tym wszystkim do siebie. Nie ma przecież szans że ktoś zostanie programistą po przerobieniu jednego nawet najlepszego kursu. Nie istnieje "jeden najlepszy i pozbawiony wad kurs". O ile w ogóle programowania można kogoś nauczyć. Tego się i tak trzeba nauczyć samemu a kursy mogą tylko przyspieszyć lub opóźnić ten proces.
Oj naoglądałem się takiego kodu na przełomie pierwszej i drugiej dekady XXI wieku za czasów liceum i pierwszych lat studiów. Już wtedy większość z tego to były złe praktyki, ale do nauczania osób, które miały pierwszą styczność z programowaniem to było ok. Na studiach na zajęciach C++ założenie było że C już znamy i od razu lecieli z STL, templatami i zaawansowaną obiektowością. Później było co nieco Javy, aż w końcu dowolność i mi najbardziej spodobał się Python jako że można mieć w nim w poważaniu nie tylko zarządzanie pamięcią, ale też deklaracje typów. Na dzień dzisiejszy C i C++ to zupełnie różne języki. Tak różne że osobno trzeba uczyć C, a osobno C++ i mieszanie jednego z drugim jak kilkanaście lat temu generuje same złe praktyki.
Ja pamiętam jak na lekcjach programowania w technikum używaliśmy getchar po return z main bo ktoś rzucił, że "czyści pamięć ram po zakończeniu programu", to dopiero była zła praktyka.
19:20 dopiero zaczynam, ale sprawdzałem akurat to - getchar jest 2x, bo jak jest raz, to dalej znika... a dlaczego to nie mam bladego pojęcia, mam dopiero kilka godzin nauki za sobą
Nie ma co krytykować na siłę kursu, który większości potrafi zachęcić do pisania kodu... Wiadomo że to nie będzie komercyjne.. To ma tylko na celu wskazać możliwości zaprogramowania czegokolwiek.. Poza tym ten kurs już swoje lata ma.. Wszystko po angielsku?, .. Nawet to co ma być wypisane na ekranie?, A jak to apka będzie dla Polaków? :) Poza tym szybciej polski uczeń zorientuje sięna początku co do czego jak będzie miał po PL.. Można zaznaczyć że warto się uczyć języków ;-)
18:46 chodzi o to że czasami przy wybudowanych plikach po użyciu funkcji cin enter jako potwierdzenie czasami wywołuje sie 2 razy przez co przy jednym getchar() moze kod nie zatrzymywać sie i od razu wylaczyc program
No chyba nie do końca, std::cin zostawia białe znaki w buforze, w tym przypadku znak nowej linii na końcu, który później jest pobierany przez pierwszy getchar().
Dzięki panu Zelentowi bez problemu zdałem maturę z informatyki. Miałem 98% i umiałem więcej z programowania niż wielu znajomych na Politechnice Warszawskiej. Może uczy on złych praktyk, ale na tyle uczy przydatnego myślenia, że nie mogę tego przecenić. Żaden inny kurs tyle mi nie dał. Mimo to bardzo ciekawy materiał patrzący na sprawę z różnych perspektyw.
Masakra. TO JEST KURS DLA POCZĄTKUJĄCYCH, DOBRE PRAKTYKI SA PÓŹNIEJ!!!!!!!!!! Początkujących się nie uczy pisać produkcyjnego oprogramowania. na studiach na egzaminie z C++ nie pytali o dobre praktyki tylko o SYNTAX!!!!!!!!! Jego kurs jest genialny dla początkujących, widać,ze włożył w to duzo czasu, i jego filmy wychowały cale pokolenie programistów. ZOBACZĘ CAŁOŚĆ I NAPISZE DUZY KOMENTARZ. Teraz nie ma czasu.
Cześć, Mała uwaga do Twojego komentarza, ale i dziękuję ci za Twoją analizę :) kawał dobrej roboty .... nawet obejrzałem do połowy "Kurs C++ odc. 9: Własne funkcje. Podejście proceduralne" - i łeska się pojawiła jak to kiedyś było i się uczyło programować. Jak ja zaczynałem to na youtube były tylko filmiki o kotkach :) Ile frajdy miałem odkrywając kolejne możliwości bibliotek i samego języka... Zastanawiam się czy obejrzałeś w ogóle, któryś z tych odcinków, które komentujesz, wg mnie nie - poszedłeś na spontanie - przewijasz i komentujesz wyrwane z kontekstu fragmenty np. "metry globalne" 30:56 skomentowałeś: "mamy funkcje to mogliśmy globalnych zmiennych nie używać" i przewinąłeś do kolejnego fragmentu i potem do kolejnego filmiku. No to teraz Task dla Ciebie - puść sobie ten fragment 30:56 przez kolejne dwie minuty bez przewijania - coś odkryjesz :) Wg mnie Pan Zalent ma niesamowite wyczucie i talent do nauczania. Wie co i jak kolejno powiedzieć i przedstawić aby zwiększyć szanse widza na zrozumienie tego... nawet te błędy co komentowałeś to wykonał (wydaje mi się) umyślnie (formatowanie to chyba przez pośpiech i złe IDE) - po to aby nie gmatwać dodatkowo, po to aby później to naprawić i powiedzieć dlaczego tak jest lepiej. Wg mnie Twój film powinien być zrealizowany inaczej - powinieneś najpierw wczuć się w osobę, która nie jest biegła 🤪🥺😜, stawia pierwsze kroki, powinieneś napierw obejrzeć całość i dopiero wtedy z punktu widzenia profesjonalisty opisać to co wg Ciebie powinno wyglądać inaczej (przyznam że troche tego jest :) ) - przeskakiwanie i komentowanie ekranu to "fatalne przejęzyczenie" ale i tak mi się podobało i dziękuję
Dziękuję za rzeczowy komentarz. Faktycznie niektóre rzeczy mogą być wyrwane z kontekstu, bo głównie przewijałem w miejsca, gdzie był jakiś kod i komentowałem to co akurat było na ekranie. Odnośnie tego wczucia się w osobę która nie jest biegła - owszem, mogłem to zrobić, ale grupa docelowa tego filmu jest inna. Jest on właśnie kierowany do osób, które już znają podstawy i chcą programować komercyjnie i chcą pisać lepszy kod. Taki jest profil mojej działalności i dla takiej widowni nagrywam filmy. Dzięki że poświęciłeś czas i napisałeś tak długi komentarz 🙂
Powiem tak, wideo ogólnie słabe. Na początku negatywna prekonkluzja i zarysowane oczekiwania (także wspierane w wielu wcześniejszych filmikach oraz tytułem "złe praktyki"), że wiele, wiele rzeczy jest be, non-stop złe praktyki itd itp. Następnie słaba budowa video, non-stop przeskakiwanie (przyznam, że męczące dla słuchacza). Moje subiektywne wrażenie - głównie czepianie się np. "zero polskiego, funkcje globalne, formatówki i podobne" . Nie mówię, że to nie istotne rzeczy ale z punktu widzenia kompletnych początkujących (a tylko dla takich jest ten kurs) to są na początku rzeczy marginalne (i mega łatwe do późniejszego usunięcia), a ich stosowanie na tym etapie nauki (przynajmniej moim zdaniem), daje poczatkującym więcej pozytywów (głównie polegających na lepszym oswojeniu z tym trudnym tematem) niż negatywów. No i na końcu prawdziwa bomba - (parafraza) "w sumie myślałem, że jest znacznie gorzej, a nawet jest dobrze, a nawet podziwiam talenty edukacyjne Pana Zelenta". Nie chcę być bardziej złośliwy ale przez to video przenika chyba... mała zazdrość, że 10 lat temu ktoś zrobił tak słuchany (darmowy) tutorial (mam nadzieję, że się mylę). Generalnie łatwo się robi review 20godz materiałów sprzed 10 lat (!) - to przepaść w IT. I na koniec moja konkluzja, którą kupuję od Pana - skoro "zero polskiego w kodowaniu" to najlepiej słuchać zagranicznych kursów i tutoriali - po co nam tablica skoro może być od razu array, po co nam stosy, sterty skoro mogą być heapy i stacks - słuchajmy od razu po angielsku - przyswoimy przy okazji angielski IT co później będzie tak przydatne w międzynarodowych zespołach.
Kiedy widziałem wstęp tego filmu, odnosiłem wrażenie, że to będzie jakiś hejt na Zelenta albo tania próba wybicia się kosztem bardziej popularnego twórcy. Jednak rzeczywiście zrobiłeś film, który jest konstruktywną krytyką i zwróceniem uwagi na kwestie praktyk programistycznych. Dlatego cieszę się, że ten film obejrzałem. Widać z jednej strony, że nie szukasz byle powodów na to, żeby "zjechać" ten kurs C++, jednocześnie zwracasz uwagę na ważne rzeczy z perspektywy zawodowego programisty, o których początkujący może nie wiedzieć. Jedyne, co mnie trochę kłuło to to, że sporo praktyk przytaczanych przez Ciebie się powtarzało. Może to działało tak, że jak widzę ponad 40 minut o złych praktykach, to to będzie działało na zasadzie "O jezu, ile tu złego", a w filmie wyszło, że dużo uwag działało na zasadzie: - "Poraz piąty niespójne formatowanie", - "O znowu zmienna globalna", - "Po co te polskie znaki". Można by było pewnie skrócić ten film, ale z drugiej strony faktem jest, że robiłeś formę analizy, w której po prostu pokazywałeś na bieżąco swoje przemyślenia, więc mimo tego, że długo schodziło, to warto było zobaczyć pełny kontekst, który potwierdził, że to nie jest czepianie się dla samego czepiania, tylko analiza kursu, podkreślanie, co dobre, a co złe, etc... Kilka rzeczy, które warto podkreślać, gdy się mówi o kursie Zelenta (pod wieloma aspektami się zgadzamy): - ten tutorial ma z 9 lat i C++ oraz standardy programowania mogły się mocno zmienić; - to jest tutorial robiony z założenia pod ludzi, którzy chcą zacząć programować od zera. - Zelent jest znany z bycia talentem pedagogicznym, a mniej z bycia zawodowym programistą; Szczególnie w aspekcie nr 2 to wyjaśnia, dlaczego wiele jest uproszczeń tj. język polski w nazewnictwie, deficyt wyrafinowanych poleceń czy praktyk programistycznych; Z perspektywy kogoś, kto wcześniej programowania nie miał bardzo ważne jest, żeby umiał zrozumieć wiele abstrakcyjnych konceptów tj. działanie kompilatora, składnia kodu, algorytmiczne myślenie, złożoność obliczeniowa, etc... Gdyby taki np. 13 latek, który jeszcze nie mówi płynnie po angielsku miał myśleć co 5 minut o tym, co oznacza dane słowo, to by się mógł szybciej wypalić. Zmienna składnia kodu, używanie zmiennych globalnych - to jest dobra okazja, żeby podkreślić, że można pisać jeden, tak samo działający kod na różne sposoby, ale w którymś momencie trzeba patrzyć bardziej na składnie, strukturę kodu, wzorce projektowe, etc... Nie wiem, czy to było celowe, czy nie, ale też ma to walor edukacyjny, bo pozwala skupić się na bardziej istotnych kwestiach (tych, których zlekceważenie wywala błędy). Zatem: bardzo dobrze, że zrobiłeś ten film, ponieważ z jednej strony daje do myślenia, z drugiej strony: nawet jeśli pewne treści są ponadczasowe i popularne, to warto nie traktować ich jak dogmaty, ale warto czasem się do nich wrócić. Świat IT zmienia się bardzo szybko, więc dobrze jest raz na jakiś czas sprawdzać i aktualizować kontent :)
Dziękuję za bardzo konstruktywny komentarz. W innych komentarzach widać bardzo różne opinie i różny odbiór mojego filmu, ale mogę dodać że nagrałem go dlatego, że wiele osób zaczyna od tego kursu, a z drugiej strony inni im go odradzają. Do mnie głównie przychodzą osoby, które chcą pracować jako programiści i chcą używać C++ komercyjnie, więc zrobiłem tę analizę kodu u Pana Zelenta właśnie pod tym kątem. Powiedziałem w jaki sposób nie piszemy komercyjnego kodu, aby po prostu zwrócić uwagę na pewne aspekty. W pełni zgadzam się (i mam nadzieję że z wideo też to wybrzmiało), że kurs Zelenta jest bardzo dobry dla wszystkich początkujących i warto się z niego uczyć. Dopiero gdy chce się czegoś więcej to warto zwracać już uwagę na to, żeby podnosić swój poziom i unikać pewnych praktyk.
Ja jestem zdania, że warto nauczyć się na początku tych starszych funkcji, gdyż w późniejszym czasie zrozumienie takiego np. std::vectora może być łatwiejsze niż pokazanie go od razu. Tak samo funkcje generujące liczby losowe zrozumiemy lepiej po poznaniu funkcji rand(). Przy okazji można się dowiedzieć rzeczy, które można np. użyć dla zaawansowanych projektów. Ogólnie rzecz biorąc rozumiem to, że lepiej używać funkcji z nowszych bibliotek, ale można również nauczyć się tych starszych. Wtedy można zrozumieć te nowsze. Poza tym film może być przydatny, zwłaszcza dla początkujących. Ogólnie polecam 😉
Sam zacząłem naukę od tego kursu i poza może zmiennymi globalnymi, właściwe sam wyplewiłem u siebie większość tych błędów, przy czym to przyszło automatycznie i jeśli ktoś tylko zaczyna pisać więcej to zauważy, że np jednolite formatowanie jest bardzo wygodne i czytelne. Uważam, że poziom tego kursu wykracza znacząco po za poziom większości informatyk szkolnych, a jak ktoś będzie potrzebował to z czasem i tak się stanie purystą:)
Nasuwa się pytanie, czy analiza bardzo starego kursu ma sens. Dla osób, które zaczynają z programowaniem, moim zdaniem, nie ma dużego znaczenia z czym zaczną się uczyć, ponieważ i tak musza zacząć od podstaw. Oczywiście dobrze jest zacząć korzystając już z dobrych i bezpiecznych bibliotek oraz praktyk, ale początkujący i tak tego tak łatwo nierozróźni. Sam zaczynałem od pisania prostych programów, korzystając z przestarzałych bibliotek, ale jeśli ktoś chce się doskonalić, to bez problemu z czasem zauważy/ znajdzie te lepsze biblioteki i praktyki. Aktualnie, korzystam z najnowszych bibliotek oraz śledzę nowości oraz zmiany w języku C++ oraz sprawdzam, w której wersji kompilatora będę mógł wprowadzić zmiany, które poprawią mój kod.
Przyznam się na wstępie że obejrzałem tylko 20 min i przeklikałem do końca (choć pytanie czy autor obejrzał cały kurs Pana Mirosława ;) ). Moim zdaniem, nauka pisania komercyjnego kodu, a nauka programowania to dwie różne rzeczy. A zdecydowanie ten kurs C++ jest po to żeby zrozumieć "jak to działa" a nie żeby jak najszybciej zarabiać na tym pieniądze. W uproszczeniu: Nie trzeba znać dobrze budowy samochodu żeby być mechanikiem. Można nauczyć się szybko obsługi narzędzi i zarabiać pieniądze, bo szkoda czasu. I nie mówię że to źle, po prostu jak ktoś nie ma czasu i chce szybko dostać prace to pewnie nie jest najlepszy kurs. Pytanie tylko czego się chce i potrzebuje. Niestety nie da się napisać kursu dogłębnego, szybkiego i zawsze aktualnego.
"W uproszczeniu: Nie trzeba znać dobrze budowy samochodu żeby być mechanikiem. Można nauczyć się szybko obsługi narzędzi i zarabiać pieniądze, bo szkoda czasu." W przypadku programowania komercyjnego trzeba obie te rzeczy opanować.
Dziękuję za film, kilka dni temu trafiłam na kurs pana Mirosława, nie znam się kompletnie na C++ a od jakiegoś czasu chciałam opanować przynajmniej podstawy więc zaczęłam oglądać, czerwona lampka zapaliła mi się w głowie w momencie skopiowania getchar drugi raz na wszelki wypadek i tak oto tu trafiłam :b Dokończę kurs ale ze świadomością co jest nie tak i wrócę na ten kanał już z podstawową wiedzą bo naprawdę miło się Pana słucha!
Jeśli chodzi o C++ to polecam 4 tomy Opus Magnum C++ pana Jerzego Grębosza, to człowiek o aparycji Zalenta lecz z bardzo sporą wiedzą i zapleczem programistycznym.
Ja bym się tym, co w tym filmie zostało wykazane nie przejmował, bo żadna z tych rzeczy ani w Opus Magnum ani u Zelenta nie jest stosowana i jest to uzasadnione dydaktycznie, nie mówi się na początku ani o bibliotekach, ani o przestrzeniach nazw,, ani o formatowaniu kodu, ani o tym dlaczego zmienne globalne są złe, no i oczywiście trzymając 2 tom Opus Magnum pragnę stwierdzić, że żaden kod nie jest napisany po angielsku. COOOO 0_0 A tak na marginesie, kilka nazw zmiennych/funkcji używanych przez Grębosza: Tzewn, Tluzak, funluz, obiektB, rezydent, sedzia, Tkwadrat, Twyj_sl_klucz.
@@wuza8405 To niestety prawda, bolało jak patrzyło się na funkcje napisane po Polsku itp ale Grębosz argumentował to nawet w książce tym że chce aby przekaz dotarł do każdego czytelnika, nie tylko znającego dobrze język angielski początkującego programisty ale też dzieciaka z wsi który trafiłby na jego książkę, więc jakiś argument to jest, w końcu nikomu się nie zabrania nadawania swoim zmiennym własnych nazw.
Chyba największą bolączką kursów Zelenta jest właśnie to formatowanie kodu - jakoś zapamiętałem je lepiej... 🙃 I bardzo słuszna uwaga, że coś tutaj podejrzanie za dużo tego C jak na kurs C++. Z drugiej strony, można te niedoskonałości wybaczyć ze względu na przystępny sposób, w jaki Zelent przekazuje wiedzę - na tamte czasy to było na prawdę coś.
Pan Mirosław wspominał ,że dużo wzorował się na książkach Pana Grębosza. Widać podobieństwo, tzn. kiepskie formatowanie, polskie nazwy zmiennych, i większość kodu na gołych wskaźnikach, to na minus. Dużo zaletą kursu jest bardzo dobre , proste i zrozumiałe przekazywanie wiedzy.
Lata temu zaczynałem z kursem pana Zelenta, masz całkowitą rację, on jest świetnym nauczycielem lecz słabym zawodowym programistą, potrafi popchnąć twoje życie na tory programowania i informatyki co jest świetne, w jego głosie czuć pasję i zaraża nią każdego słuchającego, ukończyłem jego kurs C++ lata temu i nigdy nie wróciłem do niego, teraz kawałek czasu później widzę ile nie wiedziałem w tamtym okresie i ile jeszcze pozostało nauki, i jak wybrakowy był to kurs gdzie mogłeś się nauczyć szkodliwych praktyk, ale potem jak ktoś słusznie zauważył te praktyki sam korygowałeś nawet wyrabiając sobie swój własny styl, konkluzja jest taka że pan Zalent jest świetnym nauczycielem, słabym programistą ale nie jest szkodliwy, jest jak taki nauczyciel na studiach który prowadzi wykłady z programowania, jak matka która uczy dziecko jazdy na rowerze popychając a potem puszczając i musisz znaleźć swój własny tor.
Brak inicjalizacji zmiennych globalnych nie jest błędem ani nawet zła praktyka, niektórzy powiedzą nawet za jawne inicializoeanie na 0 jest zła praktyka, tu można by się klucic ale jedno i drugie jest poprawne. Zmienne globalne zawsze są inicjalizowane na 0.
21:38: Taka tablica ze 100000 elementów raczej nie zmiesciłaby się na stacku, lepiej tego nie próbować, lokalna deklaracja mogłaby działać tylko i wyłącznie ze słowem kluczowym static, czyli umieszczona w bss'ie. 43:41: Te zmienne są zainicjalizowane, one są zdefiniowane poza funkcjami, czyli siedzą w BSS, które jest zerowane przed odpaleniem funkcji main.
@@wojtekdab7760 BSS to obszar pamięci, w którym umieszczone są wszystkie niezainicjalizowane przez użytkownika zmienne nie umieszczone na STACKu. Rozmiar BSSa jest ustalany podczas kompilacji. Cały obszar BSSa jest czyszczony zerami przed uruchomieniem funkcji main. Zmienne umieszczone w BSS "żyją" przez cały czas działania programu. Na STACKu znajdują się zmienne, które są definiowane wewnątrz funkcji, one "żyją" od ich definicji w funkcji do zakończenia jej działania, o ich inicjalizację musi dbać programista. Należy uważać na rozmiar zmiennych na STACKu, gdyż jego rozmiar jest limitowany.
@@wojtekdab7760 BSS - Block Started by Symbol - segment na dane niezainicjalizowane lub dane jawnie zerowane (c/c++ zeruje go). Dane mają tylko adres i wielkość. W przeciwieństwie do DATA - segmentu na dane zainicjalizowane.
Na studiach na samym poczatku mowili, zeby uwazac przy przejsciu ze zmiennych globalnych na lokalne, bo globalne sa zerowane, a lokalne trzeba koniecznie samemu zanicjalizowac.
Jest, zwykle wystarczy dać 200 ' ' (zresztą niektóre emulatory terminala na Linux zamiast czyścić konsolę dają ' '), ale zwykle lepsze jest napisanie wersji dla Windows i innych systemów które się przełącza przy użyciu poleceń preprocesora. Być może można to zrobić przy użyci stanic if, ale ja częściej pisze w C niż C++.
Tak jak @Cypekeh zaproponował ' ' będzie lepszym rozwiązaniem, ale on nie wyczyści całego ekranu konsoli, ale tylko pozwoli nadpisać bieżącą linię. Jeśli nowy tekst będzie krótszy niż poprzedni to mimo wszystko zobaczymy też końcówkę poprzedniego. Można też tak jak @jakubstepien7257 sugeruje za pomocą preprocesora wybrać odpowiednią komendę, czyli `std:sytem("cls")` dla Windowsa lub `std::system("clear")` dla Linuxa/MacOS/UNIX. W wideo wspomniałem o bibliotece NCurses, czyli "new curses", która niby ma być w miarę uniwersalna. Dla Widowsa podobno jest jej inna odmiana PDCurses. I jeśli tak jest to moglibyśmy mieć taki sam kod dla wszystkich systemów, ale wtedy na poziomie systemu budowania trzeba będzie wykryć system operacyjny i ściągnąć/zainstalować odpowiednią bibliotekę. Żadna z powyższych opcji nie jest idealna, ale bym preferował ostatnią. Gdybym faktycznie potrzebował takiej funkcjonalności że czyszczę cały ekran konsoli, to zakładam, że poszedłbym w bardziej profesjonalną jej obsługą, a więc dedykowaną bibliotekę typu curses. Jeśli to ma być tylko prosty programik, żeby się czegoś nauczyć to system("cls")/system("clear") jest ok.
@@jakubstepien7257 "zresztą niektóre emulatory terminala na Linux zamiast czyścić konsolę dają ' '" to nie jest kwestia emulatora terminala, w bashu jest wbudowany skrót ctrl+l który egzekwuje 'clear -x', czyli właśnie "Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen."
Sprawa z szybko rozwijającymi technologiami jest taka, że ich kursy bardzo źle się starzeją i dlatego należy być na bieżąco z dokumentacją, roadmapami i innymi aktualizowanymi na bieżąco źródłami informacji o danych technologiach. Kursy pana Zelenta mają już w tej chwili około dekadę, przez co wiele rzeczy, których uczy nie ma już sensu i będzie pewnie coraz więcej. Nie mniej jednak bliższy ponadczasowemu pozostaje sposób, w jaki przekazuje wiedzę, a moim zdaniem pozostaje genialny. Owszem, korzystał m. in. z memów, ale moim zdaniem względnie dobrze wplatają się w treść, jak nawiązania w _Shreku_ . Zelent ma talent do nauczania, ale gorzej wychodził mu dobór materiału, który przekazywał. To, jak tutor uczy i czego uczy to są dwie osobne sprawy.
Brakuje w tym materiale wzmiance o fakcie, iż pan Zelent w filmie o pętlach używa określenia "iterator" w kontekście INTa w pętli for. Jest to tak właściwie zmienna sterująca pętli i dla totalnego laika cudem będzie jeżeli załapie co oznacza słowo iterator nie wspominając o tym, że dla co po niektórych takie nazewnictwo to jakby wypowiadać ziemniak po angielsku - "puh tay tow" vs "potato". Sam miałem z tym styczność, gdy na studiach Doktor polecał, żeby w celu lepszego pogłębienia tematu CPP zapoznać się z materiałami Zelenta, ale zaznaczył, że jeżeli na kolosie ktoś nazwie zmienną sterującą pętli iteratorem, to uwali :).
Pętla for nie musi posiadać w szczególności posiadać żadnej zmiennej sterującej (albo może posiadać ich kilka) - przynajmniej ta "klasyczna" wersja. Wersje współczesne wymagają istnienia iteratorów.
38:12 i tak i nie. Jestem programistą C++ i pracuję ze starym polskim systemem, gdzie polskich znaków jest dużo, system ten jest na Windowsa, a nawet Windows 11 nadal nie koduje domyślnie w UTF-8 tylko w stronach kodowych i dla przykładu polskie wersje systemu kodują wszystko w Windows-1250. Można sobie opcjonalnie włączyć w Windowsie kodowanie UTF-8 ale jest to oznaczone jako BETA i że niekoniecznie wszystko będzie działać.
A nie korzystacie z jakiegoś frameworki do obsługi tłumaczeń, tak że w kodzie jako treści stringów są po prostu jakieś identyfikatory, a tłumaczenia na różne języki są w plikach tekstowych? Tak to robi np. QT i jest to mega wygodne. Nie trzeba wtedy w kodzie dbać o to, aby obsługiwać jakieś konkretne kodowanie.
Dla mnie osobiście ten kurs był bardzo szkodliwy pod względem nawyków. Ciężko mi było się później przerzucić na obiektówkę i odrzuciło mnie od programowania na jakieś dwa lata, a zacząłem kodzić zaraz po liceum. Łukasz Łukasz kiedy przewidujecie kurs z cpp 20?
Ale dlaczego odrzucił cię od programowania obiektówka? Pokazał jak wygląda podejście obiektowe w jednym z starszych języków obiektowych i nie jest to identyczna rzecz jak w językach w pełni obiektowych i nie tylko, po prostu tak wygląda obiektówka w cpp
@@_kloptv_599 Uważam, że wprowadzenie Zelenta do programowania jest chaotyczne. Mieszanie C z C++ , masa złych nawyków i brak planu odnoście tego czym chce się w danej chwili zająć. Brak sensownego uporządkowania tematów sprawia, że ilość rzeczy do nauki wydaje się nie kończyć i to wszystko jest niepotrzebnie rozwleczone. Gdy się wkracza do jego kursu z obiektowki, to wszystko daje o sobie znać. Mówię to wszytko oczywiście z perspektywy 2023 roku gdzie pod ręką jest masa kursów o znacznie lepszej jakości.
Jak długo będzie dostępny bonus czasowy w pakiecie zaawansowanym? Jestem nim zainteresowany a niestety będę miał możliwość kupna dopiero pod koniec przyszłego miesiąca.
@@CodersSchoola jeszcze w ramach uściślenia ten bonus przepada po tym 13 września w sensie osoby które kupiły przed tracą do niego dostęp czy poprostu osoby które kupią po 13 już tego bonusu nie dostaną
Nie czepiał bym się codebloksa , to było nagrane 9 Lat temu dużo się pozmieniało od tego czasu i chyba podobnie jest z rand, c++ 11 miał premierę w 2011 roku film był nagrany w 2012 mozliwe że poprostu nie był świadom istnienia tej biblioteki, skupiając sie na podstawach mało kiedy skupiamy się na nowościach wchodzących w najnowszych standardach :D
Tak, ale mamy teraz 2023 rok a 90% osób wchodzących do branży zahacza o ten kurs. Stąd moje nagranie jest takim suplementem do tego kursu dla osób które chcą rozwijać się dalej.
Od siebie powiem: to zależy do czego potrzebujesz. Przy competitive programming jest ona mega przydatna - nie trzeba dokładnie pamiętać w której bibliotece jest dana funkcja/struktura, poza tym powoduje, że nie trzeba bawić się w zamiany bibliotek przy myśleniu nad różnymi rozwiązaniami. Niby niewiele, ale kupuje to trochę czasu, który w contestach jest bardzo potrzebny. Z drugiej strony, przy pisaniu faktycznych aplikacji, ładuje masę niepotrzebnych rzeczy, więc zostawia niepożądane śmieci.
W komercyjnych programach się tego nie stosuje. Includuje to wiele rzeczy, wydłuża czas kompilacji i nie jest w standardzie i bodajże tylko g++ to wspiera. Także przy próba kompilacji na innych platformach lub z innymi kompilatorami możemy mieć problemy. Zawsze preferuję uniwersalne rozwiązania. Polecam narzędzie IWYU - Include What You Use
23:57 Nigdy nie wolno zostawiać otwartych plików, nawet jeżeli jest RAII, wystarczy że w kodzie biblioteki jest jakiś błąd albo nie ma implementacji w destruktorze i może się to skończyć w bardzo zły sposób. Dodatkowo to ogranicza czytelność kodu (nie wiemy kiedy kończymy z używaniem plików), to samo się tyczy pozostałych rzeczy z RAII. Potencjalne wycieki pamięci, dead locki i inne. RAII nie jest idealny i może wcale przed tym nie ochronić
No właśnie podejście RAII chroni dokładnie przed tym wszystkim co opisałeś. W kodzie biblioteki STL (jeśli o niej mowa) wszystko jest poprawnie zaimplementowane i jej bezpieczeństwo jest gwarantowane. Po co manualnie coś zwalniać, skoro i tak nie wiesz, w jaki sposób może zostać użyty Twój kod? Jeśli coś rzuci wyjątkiem, a nie obsłużysz zamknięcia pliku podczas obsługi wyjątku to będzie wyciek zasobów. Dlatego nic ręcznie nie zamykamy (czasami rzadko na unique_lock wołamy wcześniej unlock(), ale zazwyczaj ogranicza się zakres działania takiego managera RAII poprzez wsadzenie go do mniejszego lokalnego zakresu). Wszystkim zajmują się destruktory. Jeśli mamy bardzo ograniczone zasoby (jakiś system embedded) to wtedy możemy, ale często też wtedy nie alokuje się niczego dynamicznie.
zwykłe czepianie się, nikt po tym kursie nie będzie programował rakiety, nikt przez te błędy nie umrze, nikt nie pójdzie do pracy po jednym kursie, a nauczy sie wiele podstaw które mogą zaszczepić w kimś pasję, Mirosław Zelent pomógł nie jednemu odnaleźć sie w tym chaosie informacyjnym, wykorzystujesz tylko bardziej znane nazwisko aby podbić wyświetlenia, zupełnie niepotrzebny film
A dlaczego niby ma nie programować rakiety? Zauważ że C++ to nie jest język dla początkujących i wielu ludzi, którzy się go uczą potrafią programować i robią to dla zrozumienia rzeczy na niskim poziomie.
Dotrwaliśmy do 18 minuty... na trę chwilę sądzimy, że się przypierdalasz, tak jakbyś nigdy nie widział cudzego kodu (albo swojego sprzed dwóch lat) w jakiejś firmie. P.S. lubimy Twoje firmy.
Uczyłem się w 2020 roku z tego kursu i uważam że to najlepszy kurs dla początkujących na całym TH-cam. Czepianie się jakiś pierdół na siłę, jest żenujące, ten kurs ma już 10 lat.
@@Razor1379 hahaha. Zacznijmy od tego, że można uczyć się języka programowania lub/i samych podstaw programowania. Poznawać czym jest if czy loop nie muszę, a języków programowania uczę się z oficjalnych dokumentacji - i to polecam. Nie ma nic dokładniejszego od manuala. Nie mam również żadnych sentymentów do Pana Zelenta tym samym, że nie przedstawia nic szczególnego. To samo możesz znaleźć w podręcznikach dla szkół średnich (przecież z tego co rozumiem, to zawodowo uczy w technikum a osobiście wiem, jak żenująco niski poziom tam panuje, lecz żeby nie było - Zelent poziom podwyższa). Natomiast jeżeli chodzi ci o metodę przekazywania wiedzy, ok. Chodź np mnie nie urzekła. Ani dzisiaj, ani te 10 lat temu. Lecz rozumiem, że niektórzy dużo lepiej się uczą będąc prowadzonym za rączke... Ja natomiast preferuje rzucenie się na głęboką wodę. Więc twoje subiektywne uczucia znacząco kłócą się z moimi ;)
Pan Zelent uczy techników informatyków w Gliwicach. Stąd ten dar nauczania, poza tym podobno dorabia jako freelancer. Więc prawdopodobnie nie ma zbyt dużego doświadczenia komercyjnego
To mi wygląda jakby Pan Zelend nigdy nie pracował z komercyjnym c++. Widać, że ma potężną wiedze teoretyczną i z C i C++, ale doktoranci na mojej uczelni pisali właśnie taki kod. Czyli ktoś zna podstawy + zaawansowane techniki ale nigdy nie widział w praktyce jak go stosować. Ten kod jest poprawny ale pod względem maintanensu albo testowalności jest beznadziejny. W Nokii na pierwszym review by go zjedli :)
Hej. powiem tak. Ten filmik był dość ciekawy. Nie podoba mi się jednak, że tym filmikiem próbujesz niszczyć czyjąś reputację. Dlaczego tak mi się wydaje? Otóż korzystałem z kursów p.Mirka odnośnie HTML, CSS itd. Dzięki niemu stworzyłem własną stronę www od całkowitych podstaw. Obecnie (programując mikrokontrolery w języku "C"), chciałem spróbować c++. Z racji tego wiem, że kurs MZ jest idealny do "ucznia zerowego". Dlatego lubię jego kursy, a to że mówisz np. o formatowaniu kodu, czyli "dobre praktyki programowania" , to nie jest celem tego kursu. Zmienne globalne? Najpierw trzeba się nauczyć zmiennych a potem ich zasięgu. Co do używania j.polskiego w kodzie. jestem starej daty(wiekowy) i oprócz rosyjskiego, który był obowiązkowy w podstawówce, nie znam innego, choć staram się na ile to możliwe używać angielskiego. A co do includowanych bibliotek, też czasem includuję dodatkowe biblioteki, ponieważ nie nie wiem, czy danego programu nie rozbuduję a po drugie nie znam bibliotek na pamięć a szukanie w manualach zajmuje zbyt dużo czasu. Zaznaczam, że nie robię tego zawodowo i nie programuję PC-tów, choć piszę programy na PC do własnych potrzeb ale w środowisku (przestarzałym) DELPHI czyli Pascalu. Dlatego też uważam, że taka krytyka z Twojej strony jest zbyteczna i to bardzo. Pozdrawiam.
Te kursy głównie opierają się na podstawie programowej polskiej szkoły. O najnowsze standardy czy dobre praktyki nie ma co liczyć. Jedynie czym Pan Zelent się wyróżnia spośród innych nauczycieli, to chęci do przekazywania wiedzy. Nie oszukujmy się, na teście abcd z c++ w technikum jest duża szansa na dostanie kodu undefined behavior (gdzie nikt, łącznie z nauczycielem nie ma o tym pojęcia, po za może dwoma ogarniętymi uczniami). Zelent dostał złe opinie, bo po prostu przelał lekcje ze szkoły do internetu (a teraz dzieje się na odwrót, to te filmy Zelenta są puszczane na lekcjach hahaha)... Chodź oczywiście gdyby gość dzisiaj nakręcił te filmy, nie mówię że zrobił by je tak samo...
Oczywiście trzeba wziąć pod uwagę, że ten kurs był robiony 7 czy 8 lat temu. Pan Zelent dobrze tłumaczy, ale każde porównanie czy merytoryczna krytyka jest ok
Jeżeli chodzi o moją opinię dotyczaca Zelenta - wydaje mi się, że on faktycznie trochę C++ potraktował temat po macoszemu... Dowodem nawet nie są rzeczy o których mówisz, ale to, że zajmuje się głównie stronami internetowymi (przedstawiając te tematy) 🤔 To jest jego konik... Po drugie, seria, którą omawiasz, była jego pierwszą w ogóle na kanale, także miał świadomość że kanał dopiero buduje, przy jego ograniczonym czasie, ucząc w szkole 👍 Niestety, kursy C++ zostawił i do nich nie wrócił.. Jesli będę mieć trochę czasu - dokończę swoją myśl 👍
W sumie trochę nie rozumiem analizowania tych wideo pod kątem złych praktyk dzisiaj, skoro pochodzą one sprzed około dziewięciu lat (no w jednym, może dwóch momentach zauważyłeś datę, ale to chyba trochę za mało - od tego powinieneś zacząć, a nie na tym kończyć). Czepianie się co do bibliotek - powinieneś sprawdzić w jakim stopniu były wtedy popularne (mówisz, że niektóre już były - pytanie na ile znane) i czy w ogóle istniały. Oczywiście takie drobne rzeczy jak zapominanie o spacjach - ogólnie robi to za nas środowisko. Zaznaczasz cały kod i dajesz "oczyść" czy inny ekwiwalent. Nie wiem czy to jakiś duży problem. Zgadzam się, że niektóre formatowanie "boli w oczy" i to faktycznie można uznać za błąd, ale takie duże błędy nie zdarzają się u niego na filmach aż tak często. Oczywiście, bierzemy tu pod uwagę jedynie to, co obecnie komentowałeś. Jedyne co jest złe, to fakt, że te materiały nadal wykorzystuje się w szkołach. Problem w tym, że nie ma zbytnio nowszych i lepszych. Te są o tyle fajne, że wciąż działają (o czym zresztą wspominałeś na początku). Szkoda tylko, że niektórzy nauczyciele tak kurczowo trzymają się tych filmów i faktycznie nadal każą instalować CodeBlocks. Wydaje mi się, że większość tych rzeczy (o ile nie wszystkie), które tłumaczy Pan Zelent da się zrobić w innym środowisku, bardziej nowoczesnym. Mnie akurat wciągnął PHP, może nie tyle od Pana Zelenta co ze szkoły, a C++ ledwie liznąłem - zamiast niego poszliśmy w Pythona (jest nadzieja w niektórych szkołach 😅, ale to już w ogóle inna bajka i nie ma co go porównywać z C++). Dlatego wracając do PHP - w nim też można było spotkać złe praktyki. Używaliśmy wtedy ogólnie dobrego VSCode. Ale wszystkiego, co złe pozbyłem się właśnie dzięki lepszemu, ale wciąż darmowemu dla uczniów IDE - PHPStorm, które podpowiada mi co jest "brzydko", a co można uprościć. Trochę żałuję, że nie nauczono mnie podejścia obiektowego w PHP. Takiego bez żadnych frameworków na początku. No ale cóż. Wiadomo oczywiście, że komercyjnie korzysta się tylko i wyłącznie z frameworków. No chyba, że to wideo należy traktować jako suplement do tych nagrań Pana Zelenta, to wtedy ma to jakiś sens. Może to źle odebrałem. dupa
No dokładnie, to jest suplement, dla osób które chcą kształcić się dalej. Pokazuję im jak można ulepszyć kod, który widać w tym kursie. Taka jest moja grupa docelowa - osoby które chciałyby zostać programistami C++. To dla nich nagrałem to wideo i im pokazuję jakich rzeczy mają unikać w kodzie, aby wyglądał on bardziej profesjonalnie. Jak najbardziej powinniśmy korzystać z funkcji "oczyść" w IDE, tylko CodeBlocks chyba jej nie miał. W każdym projekcie komercyjnym, open-source czy też w zadaniach u mnie na kursie mamy automaty sprawdzające formatowanie i Continuous Integration nie przechodzi i nie pozwala na dostarczenie kodu, który ma niepoprawne formatowanie.
Tylko weź pod uwagę że filmy Zelenta mają prawie 10 lat więc jakoś mnie to nie dziwi że używał Code::Blocks zamiast Visual Studio Mirosław Zelent uczył mnie też w technikum pisania stronek i skryptów w JavaScript i też są pojedyncze drobnostki do których bym się dzisiaj przyczepił ale ogólnie rzecz biorąc to Zelent bardzo spoko wszystkiego uczył i nauczyłem się od niego chyba najwięcej także na + mimo wszystko
W kwestii nazewnictwa nie ważne którą konwencje się stosuje, ważne żeby było jednolicie. U Pana Zelenta na szczęście nazewnictwo było całkiem jednolite. Ja osobiście częściej spotkałem się z camelCase w C++, ale jest dużo bibliotek pisanych snake_case.
Robię analizę pod to, jak to powinno wyglądać w komercyjnym kodzie - dla moich studentów, którzy często zaczynali od tego kursu, a teraz poszukują pracy jako programiści C++. Zwracam uwagę na to, jakich błędów nie popełniać i co robić, aby kod wyglądał profesjonalnie. W samym kursie Zelenta jak najbardziej mogą sobie być polskie nazwy i nic mi do tego. W moich kursach od samego początku piszemy nazwy angielskie, pomimo tego że kursy są po polsku, bo mam inną grupę docelową. Nie są to osoby które jeszcze nie programowały, ale takie, które już coś potrafią i chcą pisać lepszy kod.
Wszystko jest kwestią umowną, ale ćwierć ponad wieku temu prowadzący kurs c++ podał jeden argument, dlaczego NIE należy używać polskich nazw: bo wszystkie słowa kluczowe są po angielsku. A jak poleciałem do Seulu na kontrakt to zobaczyłem nazwy zmiennych po koreańsku - a to już nie było fajne. Dlatego odradzam stosowanie nazw innych niż angielskie w programowaniu.
Dzięki @zebaothc, nie znałem tej Pani. Na razie po bardzo pobieżnym obejrzeniu widzę podobne problemy jak u Pana Zelenta, poza formatowaniem kodu, które jest spójne (przynajmniej w tych fragmentach które zobaczyłem). Nie ma tam niestety za wiele SLTa ani C++11 i wyższych, a kurs jest z 2019 roku.
ปีที่แล้ว +1
Jaki jest sens oceny kursy sprzed wielu lat? Wiadomo, że jak ktoś chce go obejrzeć, to jako ciekawostkę, a nie szkolenie.
Bo 90% osób, które uczą się C++ uczy się właśnie z tego kursu. To moje statystyki, ale bardzo ciężko o osobę, która ucząc się C++ nie zetknęła się z kursem pana Zelenta. I to teraz, w 2023 ogrom ludzi uczy się C++ z jego kursów, dlatego że są dostępne za darmo.
ปีที่แล้ว
@@CodersSchool krzywda im się z tego kursu nie stanie :)
@ Tak też miało wybrzmieć z tego wideo. Na grupach C++'owych na FB widzę jak dużo programistów odradza ten kurs i każe go unikać jak ognia. Ja mam inne zdanie :)
Szczerze fajnie móc mieć takie video na polskim yt poza poradnikami od kolegów z Indii z super akcentem lub właśnie jak to omawiane na filmie z przed 8 lat matriały z C z nawet złymi pakrtykami i nie aktualną wiedzą ale na pewno jest jej tam sporo i w dość fajny sps=ób przedstawiona a w dodatku za darmo i oglądając tamto i tutaj można coś się nauczyć nie kupując kursu który wydaje się super ale jest dość drogi, wiec super ogląda się ten kanał ale ten masochizm postaram się kontynuować bez kupna lecz może kiedyś kto wie zależy dokąd dojdę (przed emeryturą ). return 0;
Uważam, że raczej nie powinieneś się tutaj, aż tak bardzo czepiać. To jest tylko kurs dla początkujących i mnie np wiele na początku wytlumaczył. Masz oczywiście rację co do polskich nazw czy "oddupiania", ale chłopie to tylko materiał dla początkujących. To tak jakbyś oceniał człowieka obiektywnie po wyglądzie, a nie po tym jakim jest. Jasne są tacy, którzy może będą powtarzać te nawyki "bo tak pan uczył", ale jest wiele takich, którzy jednak mają swój rozum. W zasadzie wraz z nabywaniem coraz wiekszego doświadczenie tym bardziej zaczynasz kombinować. Ja pamiętam czasy jak nie ogarniałem co to int. Po prostu nie ma co analizowac.
Przecież ten kurs był robiony chyba z 10 lat temu więc na tamten czas wykorzystywał w miarę aktualne biblioteki. Polskie komentarze przy nauce podstaw programowania są jak najbardziej wskazane. Przy nauce podstaw koncentrujemy się za zrozumieniu omawianego zagadnienia i na to ten kurs kładzie główny nacisk. Koncentrowanie się na spacjach i innych pierdołach jest moim zdaniem słabe, liczy się kreatywność i umiejętność rozwiązywania zawiłych problemów, takich przy których cała rzesza poukładanych przepisywaczy kodu zazwyczaj polegnie... Na marginesie zamiast tylko krytykować trzeba napisać własny bardziej aktualny kurs i tyle.
to nie jest tak że przyczepiasz się do używania starych bibliotek ale wiesz że te filmy mają już swój czas i możliwe że wtedy jeszcze nie były uznane za deprecated?
Fajnie, że ktoś postanowił wziąc na warsztat kurs p. Zelenta. Tyle razy widziałem i słyszałem nieprzychylne opinie ale nigdy nikt nie chciał wytłumaczyć.
Zgadzam się, ale to zauważyłem dopiero jak już nagrałem wszystko i nie chciałem nagrywać tego jeszcze raz. Na słuchawkach miałem inny poziom głośności niż w programie do nagrywania.
mogles lepiej przygotowac sie do materialu nagrac to i wyciac a nie lecisz przez wszytskie filmiki i nie wiedziec nawet zabardzo co aktualnie dzieje sie na ekranie
Jeśli @matus_minecraft uważasz, że potrafisz zrobić to lepiej to zachęcam, abyś nagrał taką analizę. Ja zrobiłem to wideo dokładnie tak jak chciałem i jestem z niego bardzo zadowolony.
Natknełem się na ten kurs ale jak doszedłem do ściagania code blocks odpusciłem sobie kurs bo korzystam jak wiekszość z visiual studio, poradniki ogladam po angielsku jest jeden jednej kobiety bardzo fajnie spokojnie powoli tłumaczy, potem natknełem sie na inny i na poczotku spoko a w połowie odcinka z grubej rury odrazu :D tez sobie odpusciłem wole skonczyć najpierw ogladać kurs tej pani
To ja właśnie ogladałem ten kurs o cukierkach i o generowaniu liczb pseudolosowych i na tym skonczyłem widziałem ze formatowanie było nie chlujne i po 20 min kursu odrazu przechodzenie do rzeczy ktorych nikt na poczatku nie ogarnie bedzie musiał wracac do poradnika zeby podglądnąc kod
Uczyłem się z jego kursów i bardzo ciepło wspominam, załapałem dzięki niemu gigantyczną zajawkę na programowanie. Teraz mam 6 lat doświadczenia na frontendzie, żyję, "złe praktyki" w ogóle nie miały dla mnie znaczenia, bo to przecież nie jest jedyne źródło wiedzy z którego korzystałem, za to wyjaśnienie tych najbardziej podstawowych rzeczy i zainteresowanie tematem było tutaj genialne.
Też uważam, że złe praktyki nie są takie straszne, bo potem i tak się dowiemy, że są złe. Nawet jak nie od kogoś, to przez własne błędy - a tak jak piszesz, możemy dość szybko wkroczyć w świat kodowania, bo czasem te złe praktyki są przejrzyste w krótkich przykładach - natomiast nie sprawdzą się w programach typu AAA.
Jednak jeśli ktoś nam pokaże odpowiednie przykłady w programowaniu, determinuje to jak sprawnie będziemy programować w przyszłości, a niestety większość nauczycieli od programowania nie jest urodzonymi nauczycielami.
No dokładnie. Dzięki niemu nauczyłem się programować w ogóle, potem uczyłem się javascripta od niego i mimo, że nauczyłem się pisać wtedy przestarzały kod (np. używałem var zamiast let, const) to niedługo potem oglądając wiele innych poradników zacząłem pisać ten bardziej "nowoczesny" i nabrałem już tych dobrych praktyk, a odszedłem od starych. Mirosław Zelent był takim początkiem, dzięki któremu ogarnąłem całą ideę programowania :)
@@WaLoR a w czym programujesz najczęściej?
@@DaivaDarpana javascript i c#
Podzielam twoje zdanie. Ogólnie z tego co wiem np. pisanie kodu bez podziału na funkcje jest szybsze w wykonaniu niż funkcyjne, ale ludzie i tak uważają, że funkcje muszą być. (Sam oczywiście ich używam) Tylko widziałem zestawienie właśnie, że niby cleaner kod a czy szybszy cn. I wyszło na to że program podzielony bez funkcji w zasadzie jest szybszy. Bo wiesz w funkcji trzeba ją na stack wrzucić zapisać gdzie po wykonaniu ma się udać itd.
Zelent celowo używa w kursach dla początkujących polskich nazw, robi to po to by początkujący nie mieli wątpliwości które elementy są elementami języka, a które naszą inwencją, wielokrotnie to powtarzał i uzasadniał dlaczego łamie konwencję używania słów angielskich. Podobnie używanie podstawowych, pozbawionych bajerów narzędzi tłumaczy doświadczeniem dydaktycznym, z którego wynika, że pomaga to młodym skupić się na nauce kodowania, a nie szukania kolejnych bajerów środowiska do zabawy. Używanie starszych i podstawowych bibliotek jest podstawą jego wyjaśnień pomagających pasjonatom lepiej zrozumieć jak w ogóle działa to co piszą, zachęca do korzystania z zaawansowanych narzędzi w późniejszym czasie.
Dodam, że tworzone później kursy JS i innych technologii webowych są zdecydowanie lepsze, bywają tam odwołania do kursu c++ który fragmentami uniwersalnie tłumaczy pewne zagadnienia programowania.
Tak, dla mnie też lepiej, że był polski język, tam gdzie mógł być.
Zelent zrobił mega kurs, pracy przy jednym filmiku musiał mieć naprawdę sporo. Ciekawiło mnie czy jakoś odniesiesz się do Obiektowego C++ w którym to użył Borland'a. Jednak nie ma co oczekiwać że każdy przykład będzie idealny, zgodny ze standardami i najlepszymi rozwiązaniami. Każdy problem mozna rozwiązać na wiele sposobów i jeśli działa to jest to wystarczająco dobry sposób :)
"jeśli działa to jest to wystarczająco dobry sposób" - w przypadku C++ to zdanie jest tak bardzo nieprawdziwe, że aż razi ;)
Skoro film Zelenta był nagrany kilkanaście lat temu, no to nie trzeba mieć doktoratu z filozofii, żeby się kapnąć, że z definicji nie może się odnosić do "najlepszych rozwiązań", które powstawały przez te ostatnie kilkanaście lat.
No i właśnie tutaj zaczyna się prawdziwa wiedza nauczycielska. Dobry nauczyciel wie, żeby dać wędkę a nie rybę. Przedstawianie najlepszych praktyk i specjalistycznej wiedzy dla osoby początkującej która ma zastosowanie jedynie w komercyjnych projektach to największa głupota. Ma tyle efektów ubocznych, że nawet szkoda mi się rozpisywać, kumaci w tym temacie wiedzą o co chodzi. Programowania nigdy się nie nauczycie robić coś czego nie jesteście w stanie rozkminić w "inżynierii wstecznej" czyli co prowadzi do czego, potem taka osoba małpuje ślepo kurs, a po roku dalej nie może znaleźć pracy w IT i oczywiście winą jest tego rynek ;) Absolutnie nie. To czego uczy pan Mirosław to myślenia programistycznego, a nie klepania kodu. To jest umiejętność którą trzeba nabyć aby wejść do branży, a nie znajomość miliona frameworków.
15:15 Bibliotekę windows.h można zastąpić biblioteką chrono :
#include
#include
#include
int main()
{
for (int i = 1; i
W przypadku Zelenta trzeba pamiętać, że te poradniki nagrywane był dla ludzi, którzy w życiu linii kodu nie napisali. Owszem, patrzenie na ten kod teraz sprawia mi fizyczny ból, ale jak uczyłem się na sprawdzian w technikum to dzięki niemu zrozumiałem czemu ten for się wykonuje 11 a nie 10 razy. Dobre praktyki, standardy itd. przyjdą z czasem , na start wydaje mi się, że lepiej po prostu zrozumieć podstawy a te dziesięć lat temu to był najlepszy sposób jaki znałem
Ale nostalgią zaleciało i klimatem jego starych kursów, piękne czasy
Bardzo ciężko słucha mi się krytyki tego kursu. To właśnie od niego zacząłem moją przygodę z c++. Kurs był opublikowany na stronie Pasja Informatyki i ta nazwa jest najlepszym opisem tego kursu. Kurs jest bardzo pieczołowicie przygotowany z ciekawą grafiką i bardzo szerokim zakresem wiedzy nie tylko z języka programowania. Widać, że pan Zelent zna się na metodyce nauczania i moim zdaniem kolejność wprowadzania tematów też jest dobra. Myślę, że kurs ten był tworzony z myślą o dzieciach i młodzieży, stąd wszędzie gdzie się dało język polski i dla niektórych zbyt wolne tempo kursu. Co do zarzutów o nie wprowadzaniu nawyków dobrego formatowania, to cóż ... tego nauczyłem się później. Kurs bardzo polecam każdemu na rozpoczęcie przygody z programowaniem.
Zgadzam się, co więcej, kurs p. Zelenta mimo być może swoich wad, jest bardziej czytelny dla początkującego, niż ten tutaj film z krytyką:
- co chwilę słychać jakieś komentarze BEZ czytelnej informacji, jak zdaniem Autora być POWINNO, np. 9:54 ;
- w innych fragmentach widać gołym okiem, że Autor komentuje, a nawet NIE OBEJRZAŁ tego, co komentuje (bo gdyby obejrzał, to by wiedział co jest pokazane, jak i po co - bo Zelent jasno to tłumaczy, (np. 18:09 ) że nie ma potrzeby pisać gorzej, i JAK można to samo napisać lepiej);
- gdyby Autor sobie sprawdził to, co komentuje - to by ze zdumieniem odkrył, np. po do jest 2x getchar... no bo 1x to tu akurat nie działa (a dlaczego, to nie mam bladego pojęcia, nie jestem programistą, tylko nauczycielem) - gdyby odkrył, że 1x nie działa, to ja oczekuję, że mi POWIE dlaczego nie działa jak jest 1x i CO mam zmienić, żeby było dobrze (a właściwie, to po tych komentarzach to nawet nie wiem, czy jest coś źle, czy jest dobrze - tak ględzi i ględzi, żeby tylko poględzić);
Dobra, oglądam dalej...
Fajna analiza legendarnego kursu C++. Sam zaczynałem swoją przygodę z c++ w 2014 od tego kursu i dla kogoś kompletnie zielonego ten kurs wydawał się świetny. Aktualnie do nauki programowania polecałbym IDE z automatycznym formatowaniem kodu i analizą statyczną, aby na bieżąco podświetlało popełniane błędy i sugerowało dobre praktyki.
Bo ten kurs był i jest świetny. To co Zelent zrobił genialnie to po prostu zaciekawił programowaniem (a przy okazji matmą). Znam osoby które nie mogły ruszyć z miejsca Albo w ogóle nie interesowało ich programowanie w C++ a po Jego kursie coś magicznie "zaskoczyło". Potem jak już jest zajawka to leci się z górki i człowiek szuka sam. Nie jest już dzieckiem we mgle. Przerabia różne inne kursy i dopasowuje się z tym wszystkim do siebie. Nie ma przecież szans że ktoś zostanie programistą po przerobieniu jednego nawet najlepszego kursu. Nie istnieje "jeden najlepszy i pozbawiony wad kurs". O ile w ogóle programowania można kogoś nauczyć. Tego się i tak trzeba nauczyć samemu a kursy mogą tylko przyspieszyć lub opóźnić ten proces.
Oj naoglądałem się takiego kodu na przełomie pierwszej i drugiej dekady XXI wieku za czasów liceum i pierwszych lat studiów. Już wtedy większość z tego to były złe praktyki, ale do nauczania osób, które miały pierwszą styczność z programowaniem to było ok. Na studiach na zajęciach C++ założenie było że C już znamy i od razu lecieli z STL, templatami i zaawansowaną obiektowością. Później było co nieco Javy, aż w końcu dowolność i mi najbardziej spodobał się Python jako że można mieć w nim w poważaniu nie tylko zarządzanie pamięcią, ale też deklaracje typów. Na dzień dzisiejszy C i C++ to zupełnie różne języki. Tak różne że osobno trzeba uczyć C, a osobno C++ i mieszanie jednego z drugim jak kilkanaście lat temu generuje same złe praktyki.
Ja pamiętam jak na lekcjach programowania w technikum używaliśmy getchar po return z main bo ktoś rzucił, że "czyści pamięć ram po zakończeniu programu", to dopiero była zła praktyka.
19:20 dopiero zaczynam, ale sprawdzałem akurat to - getchar jest 2x, bo jak jest raz, to dalej znika... a dlaczego to nie mam bladego pojęcia, mam dopiero kilka godzin nauki za sobą
Dokładnie tak było.
Nie ma co krytykować na siłę kursu, który większości potrafi zachęcić do pisania kodu... Wiadomo że to nie będzie komercyjne.. To ma tylko na celu wskazać możliwości zaprogramowania czegokolwiek.. Poza tym ten kurs już swoje lata ma.. Wszystko po angielsku?, .. Nawet to co ma być wypisane na ekranie?, A jak to apka będzie dla Polaków? :) Poza tym szybciej polski uczeń zorientuje sięna początku co do czego jak będzie miał po PL.. Można zaznaczyć że warto się uczyć języków ;-)
18:46 chodzi o to że czasami przy wybudowanych plikach po użyciu funkcji cin enter jako potwierdzenie czasami wywołuje sie 2 razy przez co przy jednym getchar() moze kod nie zatrzymywać sie i od razu wylaczyc program
No chyba nie do końca, std::cin zostawia białe znaki w buforze, w tym przypadku znak nowej linii na końcu, który później jest pobierany przez pierwszy getchar().
Dzięki panu Zelentowi bez problemu zdałem maturę z informatyki. Miałem 98% i umiałem więcej z programowania niż wielu znajomych na Politechnice Warszawskiej. Może uczy on złych praktyk, ale na tyle uczy przydatnego myślenia, że nie mogę tego przecenić. Żaden inny kurs tyle mi nie dał.
Mimo to bardzo ciekawy materiał patrzący na sprawę z różnych perspektyw.
Masakra. TO JEST KURS DLA POCZĄTKUJĄCYCH, DOBRE PRAKTYKI SA PÓŹNIEJ!!!!!!!!!! Początkujących się nie uczy pisać produkcyjnego oprogramowania. na studiach na egzaminie z C++ nie pytali o dobre praktyki tylko o SYNTAX!!!!!!!!!
Jego kurs jest genialny dla początkujących, widać,ze włożył w to duzo czasu, i jego filmy wychowały cale pokolenie programistów.
ZOBACZĘ CAŁOŚĆ I NAPISZE DUZY KOMENTARZ. Teraz nie ma czasu.
Dla mnie ten poradnik to legenda
Cześć, Mała uwaga do Twojego komentarza, ale i dziękuję ci za Twoją analizę :) kawał dobrej roboty .... nawet obejrzałem do połowy "Kurs C++ odc. 9: Własne funkcje. Podejście proceduralne" - i łeska się pojawiła jak to kiedyś było i się uczyło programować. Jak ja zaczynałem to na youtube były tylko filmiki o kotkach :) Ile frajdy miałem odkrywając kolejne możliwości bibliotek i samego języka...
Zastanawiam się czy obejrzałeś w ogóle, któryś z tych odcinków, które komentujesz, wg mnie nie - poszedłeś na spontanie - przewijasz i komentujesz wyrwane z kontekstu fragmenty np. "metry globalne" 30:56 skomentowałeś: "mamy funkcje to mogliśmy globalnych zmiennych nie używać" i przewinąłeś do kolejnego fragmentu i potem do kolejnego filmiku. No to teraz Task dla Ciebie - puść sobie ten fragment 30:56 przez kolejne dwie minuty bez przewijania - coś odkryjesz :)
Wg mnie Pan Zalent ma niesamowite wyczucie i talent do nauczania. Wie co i jak kolejno powiedzieć i przedstawić aby zwiększyć szanse widza na zrozumienie tego... nawet te błędy co komentowałeś to wykonał (wydaje mi się) umyślnie (formatowanie to chyba przez pośpiech i złe IDE) - po to aby nie gmatwać dodatkowo, po to aby później to naprawić i powiedzieć dlaczego tak jest lepiej.
Wg mnie Twój film powinien być zrealizowany inaczej - powinieneś najpierw wczuć się w osobę, która nie jest biegła 🤪🥺😜, stawia pierwsze kroki, powinieneś napierw obejrzeć całość i dopiero wtedy z punktu widzenia profesjonalisty opisać to co wg Ciebie powinno wyglądać inaczej (przyznam że troche tego jest :) ) - przeskakiwanie i komentowanie ekranu to "fatalne przejęzyczenie"
ale i tak mi się podobało i dziękuję
Dziękuję za rzeczowy komentarz. Faktycznie niektóre rzeczy mogą być wyrwane z kontekstu, bo głównie przewijałem w miejsca, gdzie był jakiś kod i komentowałem to co akurat było na ekranie.
Odnośnie tego wczucia się w osobę która nie jest biegła - owszem, mogłem to zrobić, ale grupa docelowa tego filmu jest inna. Jest on właśnie kierowany do osób, które już znają podstawy i chcą programować komercyjnie i chcą pisać lepszy kod. Taki jest profil mojej działalności i dla takiej widowni nagrywam filmy.
Dzięki że poświęciłeś czas i napisałeś tak długi komentarz 🙂
Powiem tak, wideo ogólnie słabe. Na początku negatywna prekonkluzja i zarysowane oczekiwania (także wspierane w wielu wcześniejszych filmikach oraz tytułem "złe praktyki"), że wiele, wiele rzeczy jest be, non-stop złe praktyki itd itp. Następnie słaba budowa video, non-stop przeskakiwanie (przyznam, że męczące dla słuchacza). Moje subiektywne wrażenie - głównie czepianie się np. "zero polskiego, funkcje globalne, formatówki i podobne" . Nie mówię, że to nie istotne rzeczy ale z punktu widzenia kompletnych początkujących (a tylko dla takich jest ten kurs) to są na początku rzeczy marginalne (i mega łatwe do późniejszego usunięcia), a ich stosowanie na tym etapie nauki (przynajmniej moim zdaniem), daje poczatkującym więcej pozytywów (głównie polegających na lepszym oswojeniu z tym trudnym tematem) niż negatywów. No i na końcu prawdziwa bomba - (parafraza) "w sumie myślałem, że jest znacznie gorzej, a nawet jest dobrze, a nawet podziwiam talenty edukacyjne Pana Zelenta". Nie chcę być bardziej złośliwy ale przez to video przenika chyba... mała zazdrość, że 10 lat temu ktoś zrobił tak słuchany (darmowy) tutorial (mam nadzieję, że się mylę). Generalnie łatwo się robi review 20godz materiałów sprzed 10 lat (!) - to przepaść w IT. I na koniec moja konkluzja, którą kupuję od Pana - skoro "zero polskiego w kodowaniu" to najlepiej słuchać zagranicznych kursów i tutoriali - po co nam tablica skoro może być od razu array, po co nam stosy, sterty skoro mogą być heapy i stacks - słuchajmy od razu po angielsku - przyswoimy przy okazji angielski IT co później będzie tak przydatne w międzynarodowych zespołach.
Kiedy widziałem wstęp tego filmu, odnosiłem wrażenie, że to będzie jakiś hejt na Zelenta albo tania próba wybicia się kosztem bardziej popularnego twórcy.
Jednak rzeczywiście zrobiłeś film, który jest konstruktywną krytyką i zwróceniem uwagi na kwestie praktyk programistycznych.
Dlatego cieszę się, że ten film obejrzałem.
Widać z jednej strony, że nie szukasz byle powodów na to, żeby "zjechać" ten kurs C++,
jednocześnie zwracasz uwagę na ważne rzeczy z perspektywy zawodowego programisty, o których początkujący może nie wiedzieć.
Jedyne, co mnie trochę kłuło to to, że sporo praktyk przytaczanych przez Ciebie się powtarzało.
Może to działało tak, że jak widzę ponad 40 minut o złych praktykach, to to będzie działało na zasadzie "O jezu, ile tu złego", a w filmie wyszło, że dużo uwag działało na zasadzie:
- "Poraz piąty niespójne formatowanie",
- "O znowu zmienna globalna",
- "Po co te polskie znaki".
Można by było pewnie skrócić ten film, ale z drugiej strony faktem jest, że robiłeś formę analizy, w której po prostu pokazywałeś na bieżąco swoje przemyślenia, więc mimo tego, że długo schodziło, to warto było zobaczyć pełny kontekst, który potwierdził, że to nie jest czepianie się dla samego czepiania, tylko analiza kursu, podkreślanie, co dobre, a co złe, etc...
Kilka rzeczy, które warto podkreślać, gdy się mówi o kursie Zelenta (pod wieloma aspektami się zgadzamy):
- ten tutorial ma z 9 lat i C++ oraz standardy programowania mogły się mocno zmienić;
- to jest tutorial robiony z założenia pod ludzi, którzy chcą zacząć programować od zera.
- Zelent jest znany z bycia talentem pedagogicznym, a mniej z bycia zawodowym programistą;
Szczególnie w aspekcie nr 2 to wyjaśnia, dlaczego wiele jest uproszczeń tj.
język polski w nazewnictwie, deficyt wyrafinowanych poleceń czy praktyk programistycznych;
Z perspektywy kogoś, kto wcześniej programowania nie miał bardzo ważne jest,
żeby umiał zrozumieć wiele abstrakcyjnych konceptów tj. działanie kompilatora, składnia kodu, algorytmiczne myślenie, złożoność obliczeniowa, etc...
Gdyby taki np. 13 latek, który jeszcze nie mówi płynnie po angielsku miał myśleć co 5 minut o tym, co oznacza dane słowo, to by się mógł szybciej wypalić.
Zmienna składnia kodu, używanie zmiennych globalnych - to jest dobra okazja, żeby podkreślić, że można pisać jeden, tak samo działający kod na różne sposoby, ale w którymś momencie trzeba patrzyć bardziej na składnie, strukturę kodu, wzorce projektowe, etc...
Nie wiem, czy to było celowe, czy nie, ale też ma to walor edukacyjny, bo pozwala skupić się na bardziej istotnych kwestiach (tych, których zlekceważenie wywala błędy).
Zatem: bardzo dobrze, że zrobiłeś ten film, ponieważ z jednej strony daje do myślenia, z drugiej strony: nawet jeśli pewne treści są ponadczasowe i popularne, to warto nie traktować ich jak dogmaty, ale warto czasem się do nich wrócić. Świat IT zmienia się bardzo szybko, więc dobrze jest raz na jakiś czas sprawdzać i aktualizować kontent :)
Dziękuję za bardzo konstruktywny komentarz. W innych komentarzach widać bardzo różne opinie i różny odbiór mojego filmu, ale mogę dodać że nagrałem go dlatego, że wiele osób zaczyna od tego kursu, a z drugiej strony inni im go odradzają. Do mnie głównie przychodzą osoby, które chcą pracować jako programiści i chcą używać C++ komercyjnie, więc zrobiłem tę analizę kodu u Pana Zelenta właśnie pod tym kątem. Powiedziałem w jaki sposób nie piszemy komercyjnego kodu, aby po prostu zwrócić uwagę na pewne aspekty.
W pełni zgadzam się (i mam nadzieję że z wideo też to wybrzmiało), że kurs Zelenta jest bardzo dobry dla wszystkich początkujących i warto się z niego uczyć. Dopiero gdy chce się czegoś więcej to warto zwracać już uwagę na to, żeby podnosić swój poziom i unikać pewnych praktyk.
@@CodersSchool Warto zacząć od kursu Zelenta, warto też na nim nie kończyć :)
@@EduCoderPLbravo Ty, mój głos w internetach
Oczywiście najlepiej wciąć jakiegoś chłopaka do bicia, zamiast grać w jednej drużynie.
Dawno nie bawiłem się tak dobrze przy polskim filmie na yt :D
Gdyby nie Pan Zelent to bym sie nie dowiedział o istnieniu C++ a jak słyszałem o tym języku to myślałem że to czarna magia. A teraz kocham to robić.
27:00 wszystkie libki były wytłumaczone dlaczego są i dlaczego z tego co pamiętam.
Ja jestem zdania, że warto nauczyć się na początku tych starszych funkcji, gdyż w późniejszym czasie zrozumienie takiego np. std::vectora może być łatwiejsze niż pokazanie go od razu. Tak samo funkcje generujące liczby losowe zrozumiemy lepiej po poznaniu funkcji rand(). Przy okazji można się dowiedzieć rzeczy, które można np. użyć dla zaawansowanych projektów. Ogólnie rzecz biorąc rozumiem to, że lepiej używać funkcji z nowszych bibliotek, ale można również nauczyć się tych starszych. Wtedy można zrozumieć te nowsze. Poza tym film może być przydatny, zwłaszcza dla początkujących. Ogólnie polecam 😉
Sam zacząłem naukę od tego kursu i poza może zmiennymi globalnymi, właściwe sam wyplewiłem u siebie większość tych błędów, przy czym to przyszło automatycznie i jeśli ktoś tylko zaczyna pisać więcej to zauważy, że np jednolite formatowanie jest bardzo wygodne i czytelne. Uważam, że poziom tego kursu wykracza znacząco po za poziom większości informatyk szkolnych, a jak ktoś będzie potrzebował to z czasem i tak się stanie purystą:)
Nasuwa się pytanie, czy analiza bardzo starego kursu ma sens.
Dla osób, które zaczynają z programowaniem, moim zdaniem, nie ma dużego znaczenia z czym zaczną się uczyć, ponieważ i tak musza zacząć od podstaw.
Oczywiście dobrze jest zacząć korzystając już z dobrych i bezpiecznych bibliotek oraz praktyk, ale początkujący i tak tego tak łatwo nierozróźni.
Sam zaczynałem od pisania prostych programów, korzystając z przestarzałych bibliotek, ale jeśli ktoś chce się doskonalić, to bez problemu z czasem zauważy/ znajdzie te lepsze biblioteki i praktyki.
Aktualnie, korzystam z najnowszych bibliotek oraz śledzę nowości oraz zmiany w języku C++ oraz sprawdzam, w której wersji kompilatora będę mógł wprowadzić zmiany, które poprawią mój kod.
Przyznam się na wstępie że obejrzałem tylko 20 min i przeklikałem do końca (choć pytanie czy autor obejrzał cały kurs Pana Mirosława ;) ).
Moim zdaniem, nauka pisania komercyjnego kodu, a nauka programowania to dwie różne rzeczy. A zdecydowanie ten kurs C++ jest po to żeby zrozumieć "jak to działa" a nie żeby jak najszybciej zarabiać na tym pieniądze.
W uproszczeniu: Nie trzeba znać dobrze budowy samochodu żeby być mechanikiem. Można nauczyć się szybko obsługi narzędzi i zarabiać pieniądze, bo szkoda czasu.
I nie mówię że to źle, po prostu jak ktoś nie ma czasu i chce szybko dostać prace to pewnie nie jest najlepszy kurs. Pytanie tylko czego się chce i potrzebuje. Niestety nie da się napisać kursu dogłębnego, szybkiego i zawsze aktualnego.
"W uproszczeniu: Nie trzeba znać dobrze budowy samochodu żeby być mechanikiem. Można nauczyć się szybko obsługi narzędzi i zarabiać pieniądze, bo szkoda czasu."
W przypadku programowania komercyjnego trzeba obie te rzeczy opanować.
Dziękuję za film, kilka dni temu trafiłam na kurs pana Mirosława, nie znam się kompletnie na C++ a od jakiegoś czasu chciałam opanować przynajmniej podstawy więc zaczęłam oglądać, czerwona lampka zapaliła mi się w głowie w momencie skopiowania getchar drugi raz na wszelki wypadek i tak oto tu trafiłam :b
Dokończę kurs ale ze świadomością co jest nie tak i wrócę na ten kanał już z podstawową wiedzą bo naprawdę miło się Pana słucha!
Jeśli chodzi o C++ to polecam 4 tomy Opus Magnum C++ pana Jerzego Grębosza, to człowiek o aparycji Zalenta lecz z bardzo sporą wiedzą i zapleczem programistycznym.
Ja bym się tym, co w tym filmie zostało wykazane nie przejmował, bo żadna z tych rzeczy ani w Opus Magnum ani u Zelenta nie jest stosowana i jest to uzasadnione dydaktycznie, nie mówi się na początku ani o bibliotekach, ani o przestrzeniach nazw,, ani o formatowaniu kodu, ani o tym dlaczego zmienne globalne są złe, no i oczywiście trzymając 2 tom Opus Magnum pragnę stwierdzić, że żaden kod nie jest napisany po angielsku. COOOO 0_0
A tak na marginesie, kilka nazw zmiennych/funkcji używanych przez Grębosza: Tzewn, Tluzak, funluz, obiektB, rezydent, sedzia, Tkwadrat, Twyj_sl_klucz.
@@wuza8405 To niestety prawda, bolało jak patrzyło się na funkcje napisane po Polsku itp ale Grębosz argumentował to nawet w książce tym że chce aby przekaz dotarł do każdego czytelnika, nie tylko znającego dobrze język angielski początkującego programisty ale też dzieciaka z wsi który trafiłby na jego książkę, więc jakiś argument to jest, w końcu nikomu się nie zabrania nadawania swoim zmiennym własnych nazw.
Chyba największą bolączką kursów Zelenta jest właśnie to formatowanie kodu - jakoś zapamiętałem je lepiej... 🙃
I bardzo słuszna uwaga, że coś tutaj podejrzanie za dużo tego C jak na kurs C++.
Z drugiej strony, można te niedoskonałości wybaczyć ze względu na przystępny sposób, w jaki Zelent przekazuje wiedzę - na tamte czasy to było na prawdę coś.
Świetna analiza! 👌 Czekam na kolejną część z OOP
Będzie wkrótce! :)
Powiem szczerze że pr,ypiepszanie się o spacje w formatowaniu kodu na tym etapie jest smieszne😂😂😂
Pan Mirosław wspominał ,że dużo wzorował się na książkach Pana Grębosza. Widać podobieństwo, tzn. kiepskie formatowanie, polskie nazwy zmiennych, i większość kodu na gołych wskaźnikach, to na minus. Dużo zaletą kursu jest bardzo dobre , proste i zrozumiałe przekazywanie wiedzy.
Bardzo chętnie zobaczę analizę kursu obiektowego C++ Pana Zelenta.
Lata temu zaczynałem z kursem pana Zelenta, masz całkowitą rację, on jest świetnym nauczycielem lecz słabym zawodowym programistą, potrafi popchnąć twoje życie na tory programowania i informatyki co jest świetne, w jego głosie czuć pasję i zaraża nią każdego słuchającego, ukończyłem jego kurs C++ lata temu i nigdy nie wróciłem do niego, teraz kawałek czasu później widzę ile nie wiedziałem w tamtym okresie i ile jeszcze pozostało nauki, i jak wybrakowy był to kurs gdzie mogłeś się nauczyć szkodliwych praktyk, ale potem jak ktoś słusznie zauważył te praktyki sam korygowałeś nawet wyrabiając sobie swój własny styl, konkluzja jest taka że pan Zalent jest świetnym nauczycielem, słabym programistą ale nie jest szkodliwy, jest jak taki nauczyciel na studiach który prowadzi wykłady z programowania, jak matka która uczy dziecko jazdy na rowerze popychając a potem puszczając i musisz znaleźć swój własny tor.
Brak inicjalizacji zmiennych globalnych nie jest błędem ani nawet zła praktyka, niektórzy powiedzą nawet za jawne inicializoeanie na 0 jest zła praktyka, tu można by się klucic ale jedno i drugie jest poprawne. Zmienne globalne zawsze są inicjalizowane na 0.
21:38: Taka tablica ze 100000 elementów raczej nie zmiesciłaby się na stacku, lepiej tego nie próbować, lokalna deklaracja mogłaby działać tylko i wyłącznie ze słowem kluczowym static, czyli umieszczona w bss'ie.
43:41: Te zmienne są zainicjalizowane, one są zdefiniowane poza funkcjami, czyli siedzą w BSS, które jest zerowane przed odpaleniem funkcji main.
Co to bss?
@@wojtekdab7760 BSS to obszar pamięci, w którym umieszczone są wszystkie niezainicjalizowane przez użytkownika zmienne nie umieszczone na STACKu. Rozmiar BSSa jest ustalany podczas kompilacji. Cały obszar BSSa jest czyszczony zerami przed uruchomieniem funkcji main. Zmienne umieszczone w BSS "żyją" przez cały czas działania programu. Na STACKu znajdują się zmienne, które są definiowane wewnątrz funkcji, one "żyją" od ich definicji w funkcji do zakończenia jej działania, o ich inicjalizację musi dbać programista. Należy uważać na rozmiar zmiennych na STACKu, gdyż jego rozmiar jest limitowany.
@@wojtekdab7760 BSS - Block Started by Symbol - segment na dane niezainicjalizowane lub dane jawnie zerowane (c/c++ zeruje go). Dane mają tylko adres i wielkość.
W przeciwieństwie do DATA - segmentu na dane zainicjalizowane.
Na studiach na samym poczatku mowili, zeby uwazac przy przejsciu ze zmiennych globalnych na lokalne, bo globalne sa zerowane, a lokalne trzeba koniecznie samemu zanicjalizowac.
14:44 "inaczej się to zrobi pod Win, inaczej pod Linuxem". Czyli nie ma w tym przypadku rozwiązania uniwersalnego? Jeśli jest, czy możesz pokazać?
Jest, zwykle wystarczy dać 200 '
' (zresztą niektóre emulatory terminala na Linux zamiast czyścić konsolę dają '
'), ale zwykle lepsze jest napisanie wersji dla Windows i innych systemów które się przełącza przy użyciu poleceń preprocesora. Być może można to zrobić przy użyci stanic if, ale ja częściej pisze w C niż C++.
Mozna użyć symbolu '
' który ustawia kursor na początku linii, i nadpisać obecną linię (używając flush)
Tak jak @Cypekeh zaproponował '
' będzie lepszym rozwiązaniem, ale on nie wyczyści całego ekranu konsoli, ale tylko pozwoli nadpisać bieżącą linię. Jeśli nowy tekst będzie krótszy niż poprzedni to mimo wszystko zobaczymy też końcówkę poprzedniego.
Można też tak jak @jakubstepien7257 sugeruje za pomocą preprocesora wybrać odpowiednią komendę, czyli `std:sytem("cls")` dla Windowsa lub `std::system("clear")` dla Linuxa/MacOS/UNIX.
W wideo wspomniałem o bibliotece NCurses, czyli "new curses", która niby ma być w miarę uniwersalna. Dla Widowsa podobno jest jej inna odmiana PDCurses. I jeśli tak jest to moglibyśmy mieć taki sam kod dla wszystkich systemów, ale wtedy na poziomie systemu budowania trzeba będzie wykryć system operacyjny i ściągnąć/zainstalować odpowiednią bibliotekę.
Żadna z powyższych opcji nie jest idealna, ale bym preferował ostatnią. Gdybym faktycznie potrzebował takiej funkcjonalności że czyszczę cały ekran konsoli, to zakładam, że poszedłbym w bardziej profesjonalną jej obsługą, a więc dedykowaną bibliotekę typu curses. Jeśli to ma być tylko prosty programik, żeby się czegoś nauczyć to system("cls")/system("clear") jest ok.
@@jakubstepien7257 "zresztą niektóre emulatory terminala na Linux zamiast czyścić konsolę dają '
'"
to nie jest kwestia emulatora terminala, w bashu jest wbudowany skrót ctrl+l który egzekwuje 'clear -x', czyli właśnie
"Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen."
Sprawa z szybko rozwijającymi technologiami jest taka, że ich kursy bardzo źle się starzeją i dlatego należy być na bieżąco z dokumentacją, roadmapami i innymi aktualizowanymi na bieżąco źródłami informacji o danych technologiach.
Kursy pana Zelenta mają już w tej chwili około dekadę, przez co wiele rzeczy, których uczy nie ma już sensu i będzie pewnie coraz więcej. Nie mniej jednak bliższy ponadczasowemu pozostaje sposób, w jaki przekazuje wiedzę, a moim zdaniem pozostaje genialny. Owszem, korzystał m. in. z memów, ale moim zdaniem względnie dobrze wplatają się w treść, jak nawiązania w _Shreku_ .
Zelent ma talent do nauczania, ale gorzej wychodził mu dobór materiału, który przekazywał.
To, jak tutor uczy i czego uczy to są dwie osobne sprawy.
Bardzo fajna analiza, dzięki!
Brakuje w tym materiale wzmiance o fakcie, iż pan Zelent w filmie o pętlach używa określenia "iterator" w kontekście INTa w pętli for. Jest to tak właściwie zmienna sterująca pętli i dla totalnego laika cudem będzie jeżeli załapie co oznacza słowo iterator nie wspominając o tym, że dla co po niektórych takie nazewnictwo to jakby wypowiadać ziemniak po angielsku - "puh tay tow" vs "potato". Sam miałem z tym styczność, gdy na studiach Doktor polecał, żeby w celu lepszego pogłębienia tematu CPP zapoznać się z materiałami Zelenta, ale zaznaczył, że jeżeli na kolosie ktoś nazwie zmienną sterującą pętli iteratorem, to uwali :).
Pętla for nie musi posiadać w szczególności posiadać żadnej zmiennej sterującej (albo może posiadać ich kilka) - przynajmniej ta "klasyczna" wersja. Wersje współczesne wymagają istnienia iteratorów.
38:12 i tak i nie. Jestem programistą C++ i pracuję ze starym polskim systemem, gdzie polskich znaków jest dużo, system ten jest na Windowsa, a nawet Windows 11 nadal nie koduje domyślnie w UTF-8 tylko w stronach kodowych i dla przykładu polskie wersje systemu kodują wszystko w Windows-1250. Można sobie opcjonalnie włączyć w Windowsie kodowanie UTF-8 ale jest to oznaczone jako BETA i że niekoniecznie wszystko będzie działać.
A nie korzystacie z jakiegoś frameworki do obsługi tłumaczeń, tak że w kodzie jako treści stringów są po prostu jakieś identyfikatory, a tłumaczenia na różne języki są w plikach tekstowych? Tak to robi np. QT i jest to mega wygodne. Nie trzeba wtedy w kodzie dbać o to, aby obsługiwać jakieś konkretne kodowanie.
@@CodersSchool system jest mega stary i był pisany od początku po polsku mamy tłumaczenie, ale na angielski z polskiego.
Dla mnie osobiście ten kurs był bardzo szkodliwy pod względem nawyków. Ciężko mi było się później przerzucić na obiektówkę i odrzuciło mnie od programowania na jakieś dwa lata, a zacząłem kodzić zaraz po liceum.
Łukasz Łukasz kiedy przewidujecie kurs z cpp 20?
Ale dlaczego odrzucił cię od programowania obiektówka? Pokazał jak wygląda podejście obiektowe w jednym z starszych języków obiektowych i nie jest to identyczna rzecz jak w językach w pełni obiektowych i nie tylko, po prostu tak wygląda obiektówka w cpp
Kurs z C++20/23 chodzi mi po głowie, ale pewnie dopiero w przyszłym roku będę miał możliwości, aby go wypuścić.
@@_kloptv_599 Uważam, że wprowadzenie Zelenta do programowania jest chaotyczne. Mieszanie C z C++ , masa złych nawyków i brak planu odnoście tego czym chce się w danej chwili zająć.
Brak sensownego uporządkowania tematów sprawia, że ilość rzeczy do nauki wydaje się nie kończyć i to wszystko jest niepotrzebnie rozwleczone.
Gdy się wkracza do jego kursu z obiektowki, to wszystko daje o sobie znać.
Mówię to wszytko oczywiście z perspektywy 2023 roku gdzie pod ręką jest masa kursów o znacznie lepszej jakości.
Jak długo będzie dostępny bonus czasowy w pakiecie zaawansowanym? Jestem nim zainteresowany a niestety będę miał możliwość kupna dopiero pod koniec przyszłego miesiąca.
Do Dnia programisty, czyli 13 września.
@@CodersSchoola jeszcze w ramach uściślenia ten bonus przepada po tym 13 września w sensie osoby które kupiły przed tracą do niego dostęp czy poprostu osoby które kupią po 13 już tego bonusu nie dostaną
@@Marcin220a Osoby które kupią po 13 września tego bonusu nie dostaną. Gdy kupisz do 13 włącznie to będziesz miał dostęp do niego cały czas.
Nie czepiał bym się codebloksa , to było nagrane 9 Lat temu dużo się pozmieniało od tego czasu i chyba podobnie jest z rand, c++ 11 miał premierę w 2011 roku film był nagrany w 2012 mozliwe że poprostu nie był świadom istnienia tej biblioteki, skupiając sie na podstawach mało kiedy skupiamy się na nowościach wchodzących w najnowszych standardach :D
Tak, ale mamy teraz 2023 rok a 90% osób wchodzących do branży zahacza o ten kurs. Stąd moje nagranie jest takim suplementem do tego kursu dla osób które chcą rozwijać się dalej.
Jaka jest pana opinia na temat biblioteki bits/stdc++.h ?
Od siebie powiem: to zależy do czego potrzebujesz.
Przy competitive programming jest ona mega przydatna - nie trzeba dokładnie pamiętać w której bibliotece jest dana funkcja/struktura, poza tym powoduje, że nie trzeba bawić się w zamiany bibliotek przy myśleniu nad różnymi rozwiązaniami. Niby niewiele, ale kupuje to trochę czasu, który w contestach jest bardzo potrzebny.
Z drugiej strony, przy pisaniu faktycznych aplikacji, ładuje masę niepotrzebnych rzeczy, więc zostawia niepożądane śmieci.
W komercyjnych programach się tego nie stosuje. Includuje to wiele rzeczy, wydłuża czas kompilacji i nie jest w standardzie i bodajże tylko g++ to wspiera. Także przy próba kompilacji na innych platformach lub z innymi kompilatorami możemy mieć problemy.
Zawsze preferuję uniwersalne rozwiązania. Polecam narzędzie IWYU - Include What You Use
23:57 Nigdy nie wolno zostawiać otwartych plików, nawet jeżeli jest RAII, wystarczy że w kodzie biblioteki jest jakiś błąd albo nie ma implementacji w destruktorze i może się to skończyć w bardzo zły sposób. Dodatkowo to ogranicza czytelność kodu (nie wiemy kiedy kończymy z używaniem plików), to samo się tyczy pozostałych rzeczy z RAII. Potencjalne wycieki pamięci, dead locki i inne. RAII nie jest idealny i może wcale przed tym nie ochronić
No właśnie podejście RAII chroni dokładnie przed tym wszystkim co opisałeś. W kodzie biblioteki STL (jeśli o niej mowa) wszystko jest poprawnie zaimplementowane i jej bezpieczeństwo jest gwarantowane.
Po co manualnie coś zwalniać, skoro i tak nie wiesz, w jaki sposób może zostać użyty Twój kod? Jeśli coś rzuci wyjątkiem, a nie obsłużysz zamknięcia pliku podczas obsługi wyjątku to będzie wyciek zasobów. Dlatego nic ręcznie nie zamykamy (czasami rzadko na unique_lock wołamy wcześniej unlock(), ale zazwyczaj ogranicza się zakres działania takiego managera RAII poprzez wsadzenie go do mniejszego lokalnego zakresu). Wszystkim zajmują się destruktory. Jeśli mamy bardzo ograniczone zasoby (jakiś system embedded) to wtedy możemy, ale często też wtedy nie alokuje się niczego dynamicznie.
zwykłe czepianie się, nikt po tym kursie nie będzie programował rakiety, nikt przez te błędy nie umrze, nikt nie pójdzie do pracy po jednym kursie, a nauczy sie wiele podstaw które mogą zaszczepić w kimś pasję, Mirosław Zelent pomógł nie jednemu odnaleźć sie w tym chaosie informacyjnym, wykorzystujesz tylko bardziej znane nazwisko aby podbić wyświetlenia, zupełnie niepotrzebny film
A dlaczego niby ma nie programować rakiety? Zauważ że C++ to nie jest język dla początkujących i wielu ludzi, którzy się go uczą potrafią programować i robią to dla zrozumienia rzeczy na niskim poziomie.
A ja teraz korzystam z tego kursu. Przerobię tam wszystko co związane jest z tam z C i lecę dalej.
Polecam też zobaczyć jego lekcję : "Zamiana liczb - system dwójkowy, szesnastkowy, ósemkowy, dziesiętny"
Dotrwaliśmy do 18 minuty... na trę chwilę sądzimy, że się przypierdalasz, tak jakbyś nigdy nie widział cudzego kodu (albo swojego sprzed dwóch lat) w jakiejś firmie. P.S. lubimy Twoje firmy.
Uczyłem się w 2020 roku z tego kursu i uważam że to najlepszy kurs dla początkujących na całym TH-cam. Czepianie się jakiś pierdół na siłę, jest żenujące, ten kurs ma już 10 lat.
Łołoło na CAŁYM youtube? Nie przesadzasz z tym subiektywizmem ze swojej bańki?
Nie sądzę, spojrzenie na coś z drugiej strony też pozwala otworzyć nowe horyzonty 👍
@@Grasol Pokaż co lepszego znalazłeś.
@@Razor1379 hahaha. Zacznijmy od tego, że można uczyć się języka programowania lub/i samych podstaw programowania. Poznawać czym jest if czy loop nie muszę, a języków programowania uczę się z oficjalnych dokumentacji - i to polecam. Nie ma nic dokładniejszego od manuala. Nie mam również żadnych sentymentów do Pana Zelenta tym samym, że nie przedstawia nic szczególnego. To samo możesz znaleźć w podręcznikach dla szkół średnich (przecież z tego co rozumiem, to zawodowo uczy w technikum a osobiście wiem, jak żenująco niski poziom tam panuje, lecz żeby nie było - Zelent poziom podwyższa).
Natomiast jeżeli chodzi ci o metodę przekazywania wiedzy, ok. Chodź np mnie nie urzekła. Ani dzisiaj, ani te 10 lat temu. Lecz rozumiem, że niektórzy dużo lepiej się uczą będąc prowadzonym za rączke... Ja natomiast preferuje rzucenie się na głęboką wodę. Więc twoje subiektywne uczucia znacząco kłócą się z moimi ;)
No tak, ale wypadałoby obejrzeć te odcinki w całości jeśli chce się komentować
Też myślałem, że tak lata po kursie i omawia, ale chyba wcześniej to widział, ocenił i teraz nam na szybko pokazuje, co, gdzie i jak.
Analizuję głównie kod, więc tak skaczę i zatrzymuję się głównie w miejscach gdzie Pan Zelent pisze jakiś kod.
Pan Zelent uczy techników informatyków w Gliwicach. Stąd ten dar nauczania, poza tym podobno dorabia jako freelancer. Więc prawdopodobnie nie ma zbyt dużego doświadczenia komercyjnego
To mi wygląda jakby Pan Zelend nigdy nie pracował z komercyjnym c++. Widać, że ma potężną wiedze teoretyczną i z C i C++, ale doktoranci na mojej uczelni pisali właśnie taki kod. Czyli ktoś zna podstawy + zaawansowane techniki ale nigdy nie widział w praktyce jak go stosować. Ten kod jest poprawny ale pod względem maintanensu albo testowalności jest beznadziejny. W Nokii na pierwszym review by go zjedli :)
Hej. powiem tak. Ten filmik był dość ciekawy. Nie podoba mi się jednak, że tym filmikiem próbujesz niszczyć czyjąś reputację. Dlaczego tak mi się wydaje? Otóż korzystałem z kursów p.Mirka odnośnie HTML, CSS itd. Dzięki niemu stworzyłem własną stronę www od całkowitych podstaw. Obecnie (programując mikrokontrolery w języku "C"), chciałem spróbować c++. Z racji tego wiem, że kurs MZ jest idealny do "ucznia zerowego". Dlatego lubię jego kursy, a to że mówisz np. o formatowaniu kodu, czyli "dobre praktyki programowania" , to nie jest celem tego kursu. Zmienne globalne? Najpierw trzeba się nauczyć zmiennych a potem ich zasięgu. Co do używania j.polskiego w kodzie. jestem starej daty(wiekowy) i oprócz rosyjskiego, który był obowiązkowy w podstawówce, nie znam innego, choć staram się na ile to możliwe używać angielskiego. A co do includowanych bibliotek, też czasem includuję dodatkowe biblioteki, ponieważ nie nie wiem, czy danego programu nie rozbuduję a po drugie nie znam bibliotek na pamięć a szukanie w manualach zajmuje zbyt dużo czasu. Zaznaczam, że nie robię tego zawodowo i nie programuję PC-tów, choć piszę programy na PC do własnych potrzeb ale w środowisku (przestarzałym) DELPHI czyli Pascalu. Dlatego też uważam, że taka krytyka z Twojej strony jest zbyteczna i to bardzo. Pozdrawiam.
Jesli film jest 2013 roku, to wtedy nie bylo VS Code
Te kursy głównie opierają się na podstawie programowej polskiej szkoły. O najnowsze standardy czy dobre praktyki nie ma co liczyć. Jedynie czym Pan Zelent się wyróżnia spośród innych nauczycieli, to chęci do przekazywania wiedzy. Nie oszukujmy się, na teście abcd z c++ w technikum jest duża szansa na dostanie kodu undefined behavior (gdzie nikt, łącznie z nauczycielem nie ma o tym pojęcia, po za może dwoma ogarniętymi uczniami). Zelent dostał złe opinie, bo po prostu przelał lekcje ze szkoły do internetu (a teraz dzieje się na odwrót, to te filmy Zelenta są puszczane na lekcjach hahaha)...
Chodź oczywiście gdyby gość dzisiaj nakręcił te filmy, nie mówię że zrobił by je tak samo...
Super!
cstdlib to standardowa biblioteka C++ , błąd Pana Coder School
Nie, cstdlib to w C stdlib.h
Oczywiście trzeba wziąć pod uwagę, że ten kurs był robiony 7 czy 8 lat temu. Pan Zelent dobrze tłumaczy, ale każde porównanie czy merytoryczna krytyka jest ok
Jeżeli chodzi o moją opinię dotyczaca Zelenta - wydaje mi się, że on faktycznie trochę C++ potraktował temat po macoszemu... Dowodem nawet nie są rzeczy o których mówisz, ale to, że zajmuje się głównie stronami internetowymi (przedstawiając te tematy) 🤔 To jest jego konik... Po drugie, seria, którą omawiasz, była jego pierwszą w ogóle na kanale, także miał świadomość że kanał dopiero buduje, przy jego ograniczonym czasie, ucząc w szkole 👍 Niestety, kursy C++ zostawił i do nich nie wrócił..
Jesli będę mieć trochę czasu - dokończę swoją myśl 👍
Czy tylko mnie triggeruje nazywanie iostream biblioteką?
Film ma 10 lat tylko chciałam przypomnieć
W sumie trochę nie rozumiem analizowania tych wideo pod kątem złych praktyk dzisiaj, skoro pochodzą one sprzed około dziewięciu lat (no w jednym, może dwóch momentach zauważyłeś datę, ale to chyba trochę za mało - od tego powinieneś zacząć, a nie na tym kończyć). Czepianie się co do bibliotek - powinieneś sprawdzić w jakim stopniu były wtedy popularne (mówisz, że niektóre już były - pytanie na ile znane) i czy w ogóle istniały. Oczywiście takie drobne rzeczy jak zapominanie o spacjach - ogólnie robi to za nas środowisko. Zaznaczasz cały kod i dajesz "oczyść" czy inny ekwiwalent. Nie wiem czy to jakiś duży problem.
Zgadzam się, że niektóre formatowanie "boli w oczy" i to faktycznie można uznać za błąd, ale takie duże błędy nie zdarzają się u niego na filmach aż tak często.
Oczywiście, bierzemy tu pod uwagę jedynie to, co obecnie komentowałeś.
Jedyne co jest złe, to fakt, że te materiały nadal wykorzystuje się w szkołach. Problem w tym, że nie ma zbytnio nowszych i lepszych. Te są o tyle fajne, że wciąż działają (o czym zresztą wspominałeś na początku). Szkoda tylko, że niektórzy nauczyciele tak kurczowo trzymają się tych filmów i faktycznie nadal każą instalować CodeBlocks. Wydaje mi się, że większość tych rzeczy (o ile nie wszystkie), które tłumaczy Pan Zelent da się zrobić w innym środowisku, bardziej nowoczesnym.
Mnie akurat wciągnął PHP, może nie tyle od Pana Zelenta co ze szkoły, a C++ ledwie liznąłem - zamiast niego poszliśmy w Pythona (jest nadzieja w niektórych szkołach 😅, ale to już w ogóle inna bajka i nie ma co go porównywać z C++).
Dlatego wracając do PHP - w nim też można było spotkać złe praktyki. Używaliśmy wtedy ogólnie dobrego VSCode. Ale wszystkiego, co złe pozbyłem się właśnie dzięki lepszemu, ale wciąż darmowemu dla uczniów IDE - PHPStorm, które podpowiada mi co jest "brzydko", a co można uprościć.
Trochę żałuję, że nie nauczono mnie podejścia obiektowego w PHP. Takiego bez żadnych frameworków na początku. No ale cóż. Wiadomo oczywiście, że komercyjnie korzysta się tylko i wyłącznie z frameworków.
No chyba, że to wideo należy traktować jako suplement do tych nagrań Pana Zelenta, to wtedy ma to jakiś sens. Może to źle odebrałem.
dupa
No dokładnie, to jest suplement, dla osób które chcą kształcić się dalej. Pokazuję im jak można ulepszyć kod, który widać w tym kursie. Taka jest moja grupa docelowa - osoby które chciałyby zostać programistami C++. To dla nich nagrałem to wideo i im pokazuję jakich rzeczy mają unikać w kodzie, aby wyglądał on bardziej profesjonalnie.
Jak najbardziej powinniśmy korzystać z funkcji "oczyść" w IDE, tylko CodeBlocks chyba jej nie miał. W każdym projekcie komercyjnym, open-source czy też w zadaniach u mnie na kursie mamy automaty sprawdzające formatowanie i Continuous Integration nie przechodzi i nie pozwala na dostarczenie kodu, który ma niepoprawne formatowanie.
Tylko weź pod uwagę że filmy Zelenta mają prawie 10 lat więc jakoś mnie to nie dziwi że używał Code::Blocks zamiast Visual Studio
Mirosław Zelent uczył mnie też w technikum pisania stronek i skryptów w JavaScript i też są pojedyncze drobnostki do których bym się dzisiaj przyczepił ale ogólnie rzecz biorąc to Zelent bardzo spoko wszystkiego uczył i nauczyłem się od niego chyba najwięcej także na + mimo wszystko
Proszę więcej takich analiz.
7:54 to było 10 lat temu LOL
A camelCase?
W kwestii nazewnictwa nie ważne którą konwencje się stosuje, ważne żeby było jednolicie. U Pana Zelenta na szczęście nazewnictwo było całkiem jednolite. Ja osobiście częściej spotkałem się z camelCase w C++, ale jest dużo bibliotek pisanych snake_case.
@@CodersSchool Ja tam bardziej Java wolę, dlatego się dowiedziałem, że tam jest camelCase. :) To myślałem, że w C++ jest podobnie.
0:48 jest to zły kurs ale go polecam xd
directed by
robert e. wilde
no spoko, ale ten kurs był w 2014 roku i był do nauki podstaw ale dobra analiza
Polskie nazwy przy nauce maja sens, bo latwo odroznic slowa kluczowe jezyka od nazw wlasnych.
13:12 to był polski kurs i MOGŁY BYĆ POSKIE NAZWY nie było ich w "kodzie"- nie potrzebnie się czepiasz.
Robię analizę pod to, jak to powinno wyglądać w komercyjnym kodzie - dla moich studentów, którzy często zaczynali od tego kursu, a teraz poszukują pracy jako programiści C++. Zwracam uwagę na to, jakich błędów nie popełniać i co robić, aby kod wyglądał profesjonalnie.
W samym kursie Zelenta jak najbardziej mogą sobie być polskie nazwy i nic mi do tego. W moich kursach od samego początku piszemy nazwy angielskie, pomimo tego że kursy są po polsku, bo mam inną grupę docelową. Nie są to osoby które jeszcze nie programowały, ale takie, które już coś potrafią i chcą pisać lepszy kod.
Wszystko jest kwestią umowną, ale ćwierć ponad wieku temu prowadzący kurs c++ podał jeden argument, dlaczego NIE należy używać polskich nazw: bo wszystkie słowa kluczowe są po angielsku. A jak poleciałem do Seulu na kontrakt to zobaczyłem nazwy zmiennych po koreańsku - a to już nie było fajne. Dlatego odradzam stosowanie nazw innych niż angielskie w programowaniu.
Hahahaha Ja też raz zostawiłem jedną "dupę" w kodzie 🤣
Proponuję następny kurs do analizy youtuberki o pseudonimie Aitra.
Dzięki @zebaothc, nie znałem tej Pani. Na razie po bardzo pobieżnym obejrzeniu widzę podobne problemy jak u Pana Zelenta, poza formatowaniem kodu, które jest spójne (przynajmniej w tych fragmentach które zobaczyłem). Nie ma tam niestety za wiele SLTa ani C++11 i wyższych, a kurs jest z 2019 roku.
Jaki jest sens oceny kursy sprzed wielu lat? Wiadomo, że jak ktoś chce go obejrzeć, to jako ciekawostkę, a nie szkolenie.
Bo 90% osób, które uczą się C++ uczy się właśnie z tego kursu. To moje statystyki, ale bardzo ciężko o osobę, która ucząc się C++ nie zetknęła się z kursem pana Zelenta. I to teraz, w 2023 ogrom ludzi uczy się C++ z jego kursów, dlatego że są dostępne za darmo.
@@CodersSchool krzywda im się z tego kursu nie stanie :)
@ Tak też miało wybrzmieć z tego wideo. Na grupach C++'owych na FB widzę jak dużo programistów odradza ten kurs i każe go unikać jak ognia. Ja mam inne zdanie :)
Jedno pytanie. Po co?
Szczerze fajnie móc mieć takie video na polskim yt poza poradnikami od kolegów z Indii z super akcentem lub właśnie jak to omawiane na filmie z przed 8 lat matriały z C z nawet złymi pakrtykami i nie aktualną wiedzą ale na pewno jest jej tam sporo i w dość fajny sps=ób przedstawiona a w dodatku za darmo i oglądając tamto i tutaj można coś się nauczyć nie kupując kursu który wydaje się super ale jest dość drogi, wiec super ogląda się ten kanał ale ten masochizm postaram się kontynuować bez kupna lecz może kiedyś kto wie zależy dokąd dojdę (przed emeryturą ). return 0;
Uważam, że raczej nie powinieneś się tutaj, aż tak bardzo czepiać. To jest tylko kurs dla początkujących i mnie np wiele na początku wytlumaczył. Masz oczywiście rację co do polskich nazw czy "oddupiania", ale chłopie to tylko materiał dla początkujących. To tak jakbyś oceniał człowieka obiektywnie po wyglądzie, a nie po tym jakim jest. Jasne są tacy, którzy może będą powtarzać te nawyki "bo tak pan uczył", ale jest wiele takich, którzy jednak mają swój rozum. W zasadzie wraz z nabywaniem coraz wiekszego doświadczenie tym bardziej zaczynasz kombinować. Ja pamiętam czasy jak nie ogarniałem co to int. Po prostu nie ma co analizowac.
Przecież ten kurs był robiony chyba z 10 lat temu więc na tamten czas wykorzystywał w miarę aktualne biblioteki. Polskie komentarze przy nauce podstaw programowania są jak najbardziej wskazane. Przy nauce podstaw koncentrujemy się za zrozumieniu omawianego zagadnienia i na to ten kurs kładzie główny nacisk. Koncentrowanie się na spacjach i innych pierdołach jest moim zdaniem słabe, liczy się kreatywność i umiejętność rozwiązywania zawiłych problemów, takich przy których cała rzesza poukładanych przepisywaczy kodu zazwyczaj polegnie... Na marginesie zamiast tylko krytykować trzeba napisać własny bardziej aktualny kurs i tyle.
to nie jest tak że przyczepiasz się do używania starych bibliotek ale wiesz że te filmy mają już swój czas i możliwe że wtedy jeszcze nie były uznane za deprecated?
oj brzydko tak kogoś krytykować. aby wejść wyżej po swojej drabinie...
to nie jest dobry sposób na pokazanie że się jest lepszym...
BTW używa ktoś jeszcze tego jezyka c++ bo taką myszką trąci!
nofluffjobs.com/pl/C%2B%2B?page=1
Używa. I nieźle na tym zarabia.
Fajnie, że ktoś postanowił wziąc na warsztat kurs p. Zelenta. Tyle razy widziałem i słyszałem nieprzychylne opinie ale nigdy nikt nie chciał wytłumaczyć.
o nie, jak to możliwe, że kurs z 2013 używa ide które ma zaledwie c++ 17, beznadziejny kurs
czekam na obiektówke z zelentem
Troszkę za cicho Go zciszyłeś! Nie jestęśmy w stanie słyszeć co tam w tle jest mówione.
Zgadzam się, ale to zauważyłem dopiero jak już nagrałem wszystko i nie chciałem nagrywać tego jeszcze raz. Na słuchawkach miałem inny poziom głośności niż w programie do nagrywania.
To jest stary kurs dlatego był codeblock.
oho drama informatykow chce zobaczyc bitwe na klawiatury w fame mma
.
.
.
.
.
.
to zart wiem ze to nie drama
Kurs ma 9 lat..
mogles lepiej przygotowac sie do materialu nagrac to i wyciac a nie lecisz przez wszytskie filmiki i nie wiedziec nawet zabardzo co aktualnie dzieje sie na ekranie
Jeśli @matus_minecraft uważasz, że potrafisz zrobić to lepiej to zachęcam, abyś nagrał taką analizę. Ja zrobiłem to wideo dokładnie tak jak chciałem i jestem z niego bardzo zadowolony.
Natknełem się na ten kurs ale jak doszedłem do ściagania code blocks odpusciłem sobie kurs bo korzystam jak wiekszość z visiual studio, poradniki ogladam po angielsku jest jeden jednej kobiety bardzo fajnie spokojnie powoli tłumaczy, potem natknełem sie na inny i na poczotku spoko a w połowie odcinka z grubej rury odrazu :D tez sobie odpusciłem wole skonczyć najpierw ogladać kurs tej pani
To ja właśnie ogladałem ten kurs o cukierkach i o generowaniu liczb pseudolosowych i na tym skonczyłem widziałem ze formatowanie było nie chlujne i po 20 min kursu odrazu przechodzenie do rzeczy ktorych nikt na poczatku nie ogarnie bedzie musiał wracac do poradnika zeby podglądnąc kod