Kurs programowania w C++ Mirosława Zelenta - moja opinia.

1

Za pewnie sporo osób, które programują w C++ znają lub chociaż słyszeli o kursie programowania w tym języku od Mirosława Zelenta.
Kursy są dostępne tutaj:


Na początku swojej nauki C++ przerobiłem cały ten kurs, potem wiedzę czerpałem z dwóch książek do programowania w C++ w tym z jednej do programowania w C i z dokumentacji dostępnej w internecie na np. http://en.cppreference.com/w/ Uważam, że kurs pod względem merytorycznym jest bardzo słaby porównując go do książek, dokumentacji i do niektórych innych kursów. Choć już wiele osób mówiło to samo co ja, w tym wątku napiszę dokładniej czego brakowało w tym kursie. Oczywiście jako że ostatnio oglądałem ten kurs dość dawno i nie jestem jakimś specem od C++, być może znalazłoby się jeszcze więcej rzeczy do wytknięcia.
Część 1 kursu:
-Brak omówienia wielu podstawowych typów danych i pominięcie słów kluczowych takich jak unsigned czy short.
-Nie wspomniano jak dokładnie działają niektóre podstawowe instrukcje. Np. nie pokazano, że w pętli for można zrobić dwa liczniki. Dla pętli pominięto też słowa kluczowe break i continue.
-W ogóle nie wspomniano o operatorach bitowych, nie wspomniano o preinkrementacji i predekrementacji, tylko o post dekrementacji i inkrementacji.
-Nie omówiono funkcji zwracających wskaźnik.
-Pominięto wskaźniki typu void, wskaźniki na funkcje, wskaźniki wskazujące na inne wskaźniki i tym samym pominięto dynamiczną deklarację wielowymiarowych tablic. Pominięto arytmetykę wskaźników.
-Pominięto słowa kluczowe takie jak typedef, extern czy static.
Część 2 kursu:
-Nie powiedziano co to jest struktura.
-Kopletnie pominięto takie zagadnienia jak: lista inicjalizacyjna w konstruktorze klasy, szablony klas i funkcji czy przeciążanie operatorów.
-Polimorfizm został też dość kiepsko omówiony, nie przypominam sobie, aby zaprezentowano przykład bez metod czysto-wirtualnych i tym samym nie pokazano, że można zrobić też obiekt klasy nadrzędnej, gdy ona ma metody wirtualne.
Oczywiście temat biblioteki STL czy standardu C++11 też został kompletnie pominięty.
Nie rozumiem też czemu tworzenie aplikacji okienkowych zostało pokazane na przestarzałym C++Builderze 6, skoro są do tego dużo lepsze darmowe narzędzia i biblioteki np. Qt wraz z QtCreatorem.
To tyle z mojej strony. Oczywiście pewnie zaraz się posypie pełno komentarzy, że dzięki temu kursowi ktoś nauczył się szybko i łatwo programowania. Otóż nie. Ktoś po samym tym kursie poznał niektóre elementy najbardziej podstawowych konstrukcji. Ktoś po tylko takim kursie nie byłby w stanie samemu napisać czegoś więcej niż bardzo prostego zadania zaliczeniowego, o czym sama taka osoba przekona się prędzej czy później jak jest odpowiednio zdeterminowana i zechce sama napisać coś większego i konkretnego. Z czego to zauważyłem, to kursy na kanale Mirosława Zelenta zostały dopasowane do poziomu rozszerzonej informatyki i przedmiotów zawodowych w technikum i liceum. A jaki jest poziom polskiej edukacji, to chyba nie trzeba tłumaczyć nikomu, kto ma jakieś ambicje ;)

1

raz widzialem typka co sie pytal czy po przerobieniu kursu Pana Miroslawa mozna isc na juniora C++ takze ten :P

6

Nie oglądałem, ale jeśli chodzi o krytykę części pierwszej: zarzucanie nowicjusza nadmiarem informacji to nie jest dobry pomysł, więc pewna selekcja jest jak najbardziej na miejscu, a rzeczy które wymieniłeś nie są na początku niezbędne.

Jeśli zaś chodzi o sam kurs, to akurat na wykopie jest aktywny temat o tym (mój komentarz tutaj), ponadto warto zwrócić uwagę na ten post Marka R22 oraz dyskusję pod nim.

Czyli w skrócie: nie mam podstaw aby wypowiadać się o poziomie całego kursu, ale to co widziałem już go przekreśla, ponadto nie napawa optymistycznie co do reszty treści.

0

@kq: Omówienia operatorów bitowych czy słów kluczowych takich jak break czy continue to nie byłby nadmiar zbędnych informacji, bo nie dość, że to są podstawy, bez których nie da się zrobić pewnych rzeczy lub ich zrobienie będzie trudniejsze, to jeszcze na dodatek zrozumienie jak działają takie rzeczy to nie jest wielka filozofia. Jedyne co może być tam trudniejsze, to wskaźniki, ale ich temat można by było podzielić na dwa czy trzy odcinki, aby nie zasypać tym nadmiarem wiedzy.

2

continue/break - jak najbardziej, ale operatory bitowe? Poza µc dość rzadko znajdują użycie w kodzie. Tak jak mówię, nie oglądałem, więc może by się dało, a może nie, ale nie traktuję akurat tych elementów jako niezbędników. Tutorial to nie referencja.

0

kurs po polsku, neah

0

Od siebie dodam tylko temat, w którym gołym okiem widać, że autor pobierał nauki z kursów Zelenta. Po prostu schemat wśród początkujących oglądających te kursy bardzo często się powtarza: korzystanie namiętnie ze zmiennych globalnych czy copy-paste wszem i wobec.

instrukcja warunkowa - dlaczego nie działa zgodnie z oczekiwaniami?

Oczywiście to absolutnie nie jest wina autora wątku. Ot wybrał takie, a nie inne źródło wiedzy ale o to właśnie chodzi. Ludzie początkujący nie są świadomi złych praktyk, ktorych się uczą z tych kursów i min. dlatego są tak szeroko polecane innyn początkującym i koło się zamyka.

0

zelent to klasyka jest

0

C++ to jeden z najtrudniejszych języków programowania (jeśli nie najtrudniejszy). A instalacja tego wszystkiego co pozwala na pisanie aplikacji desktopowych czyli dobre IDE np. NetBeans, CodeBlocks i co bardziej istotne wszelkich bibliotek typu QT czy wxWidgets pod GNU C++ też potrafi przysporzyć problemów. Nie znalazłem w C++ nic podobnego do Lazarusa, które jest świetną alternatywą dla DELPHI a które by było alternatywą dla C++ Buildera. Próbowałem kiedyś z wxDev C++.

Jasne, można podwyższyć poziom oferując kursy z wiedzą na poziomie full pro. Biorąc jednak pod uwagę że kursy są przeznaczone dla początkujących i że C++ jest trudny, im wyższy ten poziom, tym mniej zainteresowanych będzie miało szanse się w ogóle nauczyć a chyba nie o to chodzi.

0

ale jak juz zostalo powiedziane object sender, break i continue to raczej ulatwienie a nie utrudnienie

brak unsigned a MZ ma przeciez na swoim kanale materialy z systemow liczbowych i binarnego zapisu liczb ujemnych

Zelent na pewno dobrze zacheca do zaczecia przygody ale najwazniejszym krokiem w takiej edukacji jest po wszystkim oderwanie sie od tego kanalu i nauka z innych zrodel a przede wszystkim zaklepanie z wlasnej inicjatywy tysiecy linii kodu
inaczej to sie konczy tak: https://forum.pasja-informatyki.pl/269623/umiejetnosci-juniora-c

0

Obejrzałem 2 odcinki tego kursu i nie poleciłbym tego kursu nikomu do nauki. W ogóle chyba żadnego You Tube'owego kursu by mi nie polecił zwłaszcza początkującym, którzy wierzą w każde słowo.

Nie będę bronił tego kursu, ale dla mnie post kolegi @amb00, to próba podbudowania własnego ego. Napisałeś, to o czym wszyscy wiedzą, rzuciłeś kilkoma nowinkami, a z drugiej strony piszesz, że brakowało ci wskaźników typu void, wskaźników na funkcje, wielowymiarowe tablice? - Przecież to też archaizmy w dzisiejszym języku C++. Qt - ? Mocno rozbudowane, może lepiej FLTK? Piszesz o STL, a są firmy, które go nie używają, ze względu na jego słabe strony, także nie ma co się licytować na znajomość tego, czy owego ;-) Wiele rzeczy nie zostało omówionych ale czy to uniemożliwi komuś napisanie aplikacji - wątpię (@ Brainf*ck). Będzie miał po prostu trudniej. Z czasem też zapomnisz o rzeczach, które przyjdzie Ci rzadko używać.

Piszesz o polskim systemie edukacji (OK - idealny nie jest), ale z drugiej strony to forum zasila kilkaset osób, które wykształcenie zdobyły w naszym kraju. Sam piszesz, że obejrzałeś, przeczytałeś, ćwiczyłeś - Nie wiem, skąd przekonanie niektórych, że ktoś / coś (Szkoła, uczelnia, kurs online) ma ich jak fabryka przerobić na specjalistę z jakiejś dziedziny.

Nie traktuj mojego odpowiedzi zbyt osobiście, ale sam byłem kiedyś na twoim etapie (Tak mi się przynajmniej wydaje), kiedy wydawało mi się, że jestem lepszy od innych, bo wiem więcej, lepiej, itd. Chciałem wszystkich oceniać, a potem okazało się, że jeszcze długa droga przede mną.

0

@Sparrow-hawk Nie wiem, gdzie tu widzisz próbę podbudowania własnego ego :P Po prostu chciałem podać kilka konkretów, które są istotne dla nowicjuszy oraz podzielić się doświadczeniami związanymi z kursem. A co do tych "archaizmów", to jednak warto je znać, gdyby np. chciałoby się samemu stworzyć jakąś bibliotekę lub zmodyfikować czy dokładnie przeanalizować jakąś istniejącą. Poza tym nawet jak się używa tylko np. smart pointerów to i tak trzeba mniej-więcej wiedzieć jak działają, aby ich dobrze używać. I gdzie ja piszę, że jestem lepszy od kogoś? Po prostu oceniam czyjąś pracę. Wiem dobrze, że jeszcze długa droga przede mną, bo do tej pory osiągnąłem jakiś tam ułamek moich obecnych celów związanych z programowaniem. To, że kilkaset osób na tym forum ma wykształcenie z tego kraju o niczym nie świadczy. Mówiąc o kiepskim systemie edukacji myślę o moim technikum(klasa technik informatyk), gdzie mam w tygodniu więcej lekcji polskiego niż rozszerzonej informatyki a programowanie kończy się na jakiś prostych konsolowych programach nie dłuższych niż na 100 linii kodu.

0

To w technikum programowania i tak nie ma w programie (nie liczac js/php)

a polski masz bo to nie zawodowka i piszesz mature

11

Chłop tam robi copy-paste i search-and-replace w notatniku i sprzedaje to jako dobre praktyki programistyczne, a wy sie tu rozwodzicie nad tym czy powinien umieścić w kursie operatory bitowe :D Jak posypiesz kupe rodzynkami to wiele to nie zmieni...

4

Na kurs ten trzeba spojrzec jak na swojego rodzaju ciekawostke - mozna zobaczyc w jaki sposob dzialaja/pracuja slabi developerzy i byc jakkolwiek przygotowanym na to co pozniej przyjdzie nam poprawiac :)

0

Jest pewien typ ludzi, którzy jak się nauczą podstaw to już próbują błyszczeć i zalewają internet kursami pomyjami.
Jak się jest nowicjuszem to bardzo trudno odsiać ziarno od plew, zwłaszcza, że plew jest dużo więcej.

Jako przykład wspomnę tu pewnego autora książek programistycznych (wydawał je w Helion), który się tu zarejestrował, ale jak zadawał pytania na forum, to się nogi pod mną uginały (pewnie nie tylko pod mną).
Wtedy zrozumiałe,m, czemu zmarnowałem tyle kasy na książki o programowaniu.

0

Mnie ten kurs dużo nauczył

4

To, że dużo nauczył to w porządku ale czy prawidłowych rzeczy...

3

Sprawą, którą dyskutujemy jest właśnie to, czy po przerobieniu tego kursu masz kompetencje, aby go rzetelnie ocenić. Te wycinki, które ja widziałem przeczą tej tezie.

0
amb00 napisał(a):

-Nie omówiono funkcji zwracających wskaźnik.
-Pominięto wskaźniki typu void, wskaźniki na funkcje, wskaźniki wskazujące na inne wskaźniki i tym samym pominięto dynamiczną deklarację wielowymiarowych tablic. Pominięto arytmetykę wskaźników.
-Pominięto słowa kluczowe takie jak typedef, extern czy static.
-Kopletnie pominięto takie zagadnienia jak: lista inicjalizacyjna w konstruktorze klasy, szablony klas i funkcji czy przeciążanie operatorów.

You made my day, kolego... To kurs dla początkujących, a przede wszystkim powstał po to aby zaszczepić innym pasję programowania. Kurs nie powstał po to, aby po obejrzeniu od razu można było dostać pracę jako programista C++. Może jeszcze powinien zwieńczyć swój kurs napisaniem systemu operacyjnego, co? Jak kolega wyżej wspomniał, to tutorial a nie referencja... Sam na początku bym też nie chciał zostać zalany informacjami takimi np. jak funkcje zwracające wskaźnik, czy arytmetykę wskaźników, bo bym chyba nie dotrwał do końca kursu. Ugruntowałbym sobie na początku zdobytą wiedzę z kursu, a następnie kupiłbym sobie dobrą książkę.

Moja wypowiedź z forum Pasji Informatyki:

"Mam dwóch znajomych którzy nigdy by się nie zajęli programowaniem i nie raz ich próbowałem zaciekawić programowaniem. Nie raz im nawet pożyczałem swoje ciekawe książki to nie chciało im się czytać i oddawali potem książkę której nigdy ani razu nie dotknęli. To jak jednemu pokazałem ten kurs C++, to o całe 360 stopni zmieniło się jego życie i obecnie jest programistą, a drugi zajmuje się programowaniem hobbistycznie. Wcześniej obaj nie mieli nic wspólnego z programowaniem. MZ w swoich kursach C++ może i pominął wiele kluczowych zagadnień, ale te filmy są po to aby zaszczepić w innych programowanie w łagodny sposób zamiast od razu robić pranie mózgu i wrzucać do głowy tonę informacji. Te kursy to takie liźnięcie i zaszczepienie programowania, a to chyba normalne, że kto będzie chciał wiedzieć więcej to kupi książkę. No chyba, że autor tego tematu uważa, że wystarczy obejrzeć tylko ten kurs i już się jest programistą."

To nie wina Zelenta, że każdy po obejrzeniu tego kursu zadaje pytanie czy dostanie od razu pracę jako programista C++, a potem jedziecie po nim bo tego czy tamtego nie omówił.

6

360? Czyli w sumie nic się nie.zmienilo :D

4

Chyba nikt nie ma nic przeciwko kursom skierowanym ku początkującym. Krytyka odnosi się tego, że uczone są bardzo złe praktyki. Porównać to można do elektryka-amatora, który w kursie widzi sprawdzanie tego, czy napięcie jest w gniazdku za pomocą dwóch gwoździ wsadzonych do niego i przytykania do nich żarówki.

1

przy tym nawale kursów, szkoleń to już nie ma znaczenia, kto kumaty i tak przechodzi na aktualne zagraniczne materiały

0

@jpacanowski Sama koncepcja wideo kursu programowania jest świetna, ale wykonanie kiepskie. Oczywiście taka forma nauki mi się podobała na sam początek, ale nie zaszkodziłoby, gdyby taki kurs miał omówione lepiej chociaż najbardziej podstawowe rzeczy. Nie napisałbym pewnie o takich rzeczach, gdyby nie fakt, że są one w wielu książkach do C/C++ dla początkujących. Rozumiem, że nie należy zasypywać początkującego nawałem informacji, dlatego też po prostu w bardziej szczegółowym kursie by się szło trochę wolniej z materiałem, ale potem nie trzeba by było wracać już do tych podstaw, aby poznać je bardziej szczegółowo. Aby nie obciążyć innych za bardzo, odcinek o np. wskaźnikach można by podzielić na kilka części(moim zdaniem 3 części to byłoby w sam raz). Chyba też przyznasz, że pominięcie operatorów bitowych to po prostu skandal. Niby rzadko się ich używa, ale jak bez nich byś chciał wyliczyć np. adres podsieci mają ip jakiegoś hosta i maskę podsieci? Oczywiście dałoby się to zrobić bez tych operatorów, ale znacznie trudniej i mniej wydajnie. W dodatku na każde z takich zagadnień jak lista inicjalizacyjna czy szablony klas i funkcji nie trzeba dużo czasu jak już się zna klasy i konstruktory, a takie rzeczy mogą na prawdę ułatwić pisanie programów i w szczególności analizę cudzego kodu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1