Zamiana liczby na string i znaku na liczbę – prośba o ocenę kodu

0
kq napisał(a):

Grębosza też nie polecamy - przynajmniej Symfonii, Opus Magnum jeszcze nie miałem czasu ruszyć, ale po spisie treści też wydaje się uczyć w ten sam błędny sposób.

A to ciekawe, bo z tego co widziałem, to zbierał same dobre opinie i dlatego kupiłem, choć język jakim się posługuje, mnie silnie odtrąca.
Owszem, wersja pierwsza to były dawne lata, więc do niej były zarzuty, że to się zmieniło. Dlatego gość wydał poprawioną wersję Symfonia Standard, która była dostosowana bodajże do C++03, a potem wydał właśnie wersję pod 11 i dodatek do 14/17. Ja właśnie sobie kupiłem te 4 tomy 11/14/17 za kupę hajsu. A ty mi mówisz, że to niby nie jest zgodne ze standardem?

1
heillos napisał(a):

Ja właśnie sobie kupiłem te 4 tomy 11/14/17 za kupę hajsu. A ty mi mówisz, że to niby nie jest zgodne ze standardem?

Wiesz co ? Tak moim skromnym zdaniem OLAĆ standardy, przynajmniej na początku nauki - czym one są ? Dodali jakieś lambdy, kontenery, listy, jakieś przedrostki i inne cuda i nazwali to "standardem" (tak, wiem, zaraz mnie tu te "szpece" zajeżdżą) Ale tak naprawdę można C++ uczyć się z tych staroci, bo niech mi ktoś z tych "szpeców" wyjaśni czym się różni warunek "if" z 1979 roku do warunku "if" z 2020 roku ? Albo czym się różni instrukcja "case" z lat '70, do tej samej instrukcji z lat '20 XXI wieku ? Czy w klasach zaszły jakieś zmiany ? No chyba raczej nie... Więc w mojej ocenie NICZYM się nie różnią, bo robią tą samą robotę - jedynie dla użytkownika końcowego te instrukcje mogą być zoptymalizowane i nie rzuca się to w oczy więc i tak robią dokładnie to samo. Tak czy inaczej, czy komuś się to podoba czy nie, czy ktoś jest fanatykiem "standardów" czy nie, program będzie DZIAŁAŁ o ile jest poprawnie napisany.

A standardy według mnie są po to aby ułatwić kilka rzeczy ale sądzę, że są dla wyjadaczy - nie zaszkodzi to też początkującym ale pierdzielenie, że "ksiażka" nie jest zgodna ze "standardami" to grube przegięcie pały.

I możecie się tu spinać jakie to standardy są "potrzebne" ale prawda jest taka, że bez standardów da się żyć, nie są one niezbędne do nauczenia się C++. Poza tym czytając książki STROUSTRUPA on nawet nie piśnie o standardach, ba nawet nie uczy w podręcznikach dla początkujących standardów. Więc gadanie, że "książka jest niezgodna ze standardami" można śmiało włożyć między bajki i z niej się uczyć. Kasy nie żałuj, bo to dobrze wydane pieniądze.

1
heillos napisał(a):
kq napisał(a):

Grębosza też nie polecamy - przynajmniej Symfonii, Opus Magnum jeszcze nie miałem czasu ruszyć, ale po spisie treści też wydaje się uczyć w ten sam błędny sposób.

A to ciekawe, bo z tego co widziałem, to zbierał same dobre opinie i dlatego kupiłem, choć język jakim się posługuje, mnie silnie odtrąca.
Owszem, wersja pierwsza to były dawne lata, więc do niej były zarzuty, że to się zmieniło. Dlatego gość wydał poprawioną wersję Symfonia Standard, która była dostosowana bodajże do C++03, a potem wydał właśnie wersję pod 11 i dodatek do 14/17. Ja właśnie sobie kupiłem te 4 tomy 11/14/17 za kupę hajsu. A ty mi mówisz, że to niby nie jest zgodne ze standardem?

Owszem, zbiera pozytywne opinie (początkujących), bo jest napisane przystępnym językiem. Dla mnie to straszne wodolejstwo, ale rozumiem co tu może się podobać jak ktoś ma problem ze zrozumieniem co to jest wskaźnik. Niemniej jednak nie są to opinie osób (przynajmniej w większości) mających kompetencje aby oceniać sam materiał, a nie tylko sposób jego podania. Bardzo polecam tę prezentację:

Jeśli pierwsze kilka rozdziałów książki zawiera rzeczy, które musisz z nowicjuszy oduczać albo wskazywać im, że ich się nie powinno używać poza pewnymi wyjątkiami, to chyba coś jest nie tak.

1
heillos napisał(a):
kq napisał(a):

Grębosza też nie polecamy - przynajmniej Symfonii, Opus Magnum jeszcze nie miałem czasu ruszyć, ale po spisie treści też wydaje się uczyć w ten sam błędny sposób.

A to ciekawe, bo z tego co widziałem, to zbierał same dobre opinie i dlatego kupiłem, choć język jakim się posługuje, mnie silnie odtrąca.
Owszem, wersja pierwsza to były dawne lata, więc do niej były zarzuty, że to się zmieniło. Dlatego gość wydał poprawioną wersję Symfonia Standard, która była dostosowana bodajże do C++03, a potem wydał właśnie wersję pod 11 i dodatek do 14/17. Ja właśnie sobie kupiłem te 4 tomy 11/14/17 za kupę hajsu. A ty mi mówisz, że to niby nie jest zgodne ze standardem?

Symfonia jest chyba polecana trochę przez takie osoby jak ja, które zaczynały od tej książki w wieku 11-13 lat i mają do niej sentyment. Do tej pory czuję ciepło w serduszku jak otwieram jej pierwsze strony. Współcześnie Symfonia jest uważana za słabą książkę głównie z tego względu, że porusza zagadnienia nie w tej kolejności co trzeba. Jest tak, gdyż jej pierwsze wydanie ukazało się bardzo dawno temu i od tego czasu podejście do tego języka (jak i sam język) znacznie się zmieniło.

0
kq napisał(a):
heillos napisał(a):
kq napisał(a):

Grębosza też nie polecamy - przynajmniej Symfonii, Opus Magnum jeszcze nie miałem czasu ruszyć, ale po spisie treści też wydaje się uczyć w ten sam błędny sposób.

A to ciekawe, bo z tego co widziałem, to zbierał same dobre opinie i dlatego kupiłem, choć język jakim się posługuje, mnie silnie odtrąca.
Owszem, wersja pierwsza to były dawne lata, więc do niej były zarzuty, że to się zmieniło. Dlatego gość wydał poprawioną wersję Symfonia Standard, która była dostosowana bodajże do C++03, a potem wydał właśnie wersję pod 11 i dodatek do 14/17. Ja właśnie sobie kupiłem te 4 tomy 11/14/17 za kupę hajsu. A ty mi mówisz, że to niby nie jest zgodne ze standardem?

Owszem, zbiera pozytywne opinie (początkujących), bo jest napisane przystępnym językiem.

Dla mnie nie, ale ja dla niego nie jestem grupą docelową, bo ja jestem człowiek w średnim wieku, a tacy już się nie uczą programowania, jestem o tyle wyjątkiem, ze douczam się pod moich uczniów, więc miałem nadzieję na usystematyzowanie wiedzy pod kątem młodzieży.

Dla mnie to straszne wodolejstwo,

Niestety wodolejstwo, dlatego głównie przewijam :)

Bardzo polecam tę prezentację:

Tylko że jakby dyskusja o uczeniu C++ jako nakładki na C to nieco inne zagadnienie, bo jasne – pierwotna książka była 30 lat temu, to cieżko, żeby była wtedy inna. Pytanie czy najnowsze książki Grębosza również uczą źle czy nie. Jak chcesz, to ci mogę przesłać prywatnie w ramach DU, to sobie przewiniesz (choć to tyle tysięcy stron, że trzeba mieć szybkiego scrolla) i zobaczysz.

Jeśli pierwsze kilka rozdziałów książki zawiera rzeczy, które musisz z nowicjuszy oduczać albo wskazywać im, że ich się nie powinno używać poza pewnymi wyjątkami, to chyba coś jest nie tak.

Wtedy rodzi się pytanie – gdzie jest dobrze? Bo ja np. dość lubiłem styl pisania Stephena Praty, ale też właśnie jest zarzut do niego, że napisał książkę do C, a potem „przetłumaczył” ją na C++.

Więc właśnie rodzi się pytanie, z czego się powinien uczyć taki mój uczeń, co mu pokazać, co ma Dobre Praktyki.

1

Uczenie C++ od C to trochę uczenie angielskiego zaczynając od łaciny, albo nauki jazdy zaczynając od pierwszych modeli samochodów z lat 20-tych XX wieku. To jest złe, nawet jeśli przekazana wiedza C jest poprawna (a najczęściej nie jest to C, tylko taki potworek-zlepek C i C++). To jest mój zarzut do Symfonii (dlatego dałem też linka do tej prezentacji), a także do Praty (który zbiera średnie opinie btw: link ). Nowsze książki Grębosza - jak łatwo wywnioskować z niezmienionego prawie spisu treści - nie czynią tu żadnych postępów. Chociaż przed jechaniem po Opus Magnum staram się na razie wstrzymywać, bo siedzi na półce i czeka na recenzję (od 2017 :​( ).

edit w trakcie pisania ;​)
Przejrzałem trochę spis treści i jest trochę lepiej, ale i tak za dużo tablic i wskaźników na początku, a podstawowe operacje na bibliotece standardowej czy lambdy na samiutkim końcu.

0
kq napisał(a):

Uczenie C++ od C to trochę uczenie angielskiego

Właśnie jeśli chodzi o angielski, to chyba nawet jest fajny przykład, bo w szkołach uczy się czegoś, co bodajże nazywa się Standard English czy jakoś tak i Nikt Tak Nie Mówi poza uczniami tychże szkół :)

Ale wracając do C++, to wciąż jakby nie ma konstruktywnej informacji. Bo wiadomo, że nie uczyć się z Praty, nie uczyć się z Grębosza, ale z czego się uczyć w takim razie?

I to z uwzględnieniem też tego, że nastolatek w szkole ma inne pojmowania i inną wiedzę. Ja np. ogarnąłem w 2 słowa to co mi pisałeś, że ASCII nie jest gwarantowane w charach, ale gwarantowane jest ułożenie cyfr na kolejne kody. Natomiast ja poprzestałem na lekcji z uczniami na samym ASCII, bo już widziałem, że Jest Problem.

Piszesz o wyjaśnianiu wskaźników parę listów wcześniej i powiem ci, że ja bylem przeszczęśliwy jak pod koniec technikum załapałem trochę jak działają wskaźniki (w Pascalu wtedy), ale już np. PCharów nie umiałem ogarnąć, choć teraz wydają mi się Proste. Więc jakby wiem, że nastolatek uczący się od zera ma inne zupełnie postrzeganie i rozumienie i może tu takie koślawe C++ Grębosza czy Praty jest lepsze, bo przynajmniej do niego trafi? A na tym etapie, to cud, jak w ogóle pętlę ktoś obczai.

3

Pozytywny przykład: https://stackoverflow.com/a/388282/2456565 AFAIK przynajmniej książki Josuttisa mają spoko przekład na polski.

Wskaźniki newbowi nie są właśnie wcale potrzebne. I nie powinno ich być na początku wg mnie. Na przykładzie mojego kolegi z kilku prac temu: przyszedł jako przed-junior z mojego polecenia, nie umiejąc nic, w tym programować. Pierwszą klasę napisał (i się z tego bardzo cieszył w tamtym momencie) w pracy. Przez dobre kilka lat nie miał pojęcia o niczym takim jak wskaźnik, wskaźnik na wskaźnik, a już tym bardziej jakiś wskaźnik na niestatyczny element klasy. Gdy potrzebował tablicę miał std::vector/array. Gdy potrzebował coś posortować, to nie pisał bubblesorta, tylko użył std::sort. Jeśli kierunek sortowania był zły to sobie użył std::greater, albo przekazał własną lambdę; podobnie gdy musiał odfiltrować jakieś dane. Jak potrzebował referencji to używal referencji. Jak potrzebował optional to używał optional. A jak chciał iterować tylko po części sekwencji, to używał iteratorów. C się nauczył jako osobnego języka gdy poszedł programować drivery dla kernela linuksa w innej firmie, wtedy miał też kilka pytań dotyczących wskaźników, ale było mu dużo łatwiej zrozumieć, że wskaźnik to połączenie koncepcji rebindable referencji i iteratorów. Nie mówię, że nie było problemów (np. ile to razy prosiłem żeby zechciał przeczytać co kompilator mu mówi, gdy pokazywał mu linię i kolumnę z błędem, wraz z proponowanym - dobrym - fixem :​)​ ), ale po kilku latach na forum wiem ilu idiotycznych problemów uniknęliśmy dzięki nauce rzeczy przydatnych i dobrych, a nie od [przyp. kq: złej] strony.

Wracając do nauki przez młodocianych: rozumiem, że niektóre rzeczy im ciężej wytłumaczyć, ale to właśnie wskaźniki, ich arytmetyka oraz ręczne zarządzanie pamięcią zdają się sprawiać najwięcej problemów. Co do np. lamd, to takiemu nike javascriptowi nie zarzuca przekazywania funkcji (są inne zarzuty), więc nie wiem dlaczego C++ miałby tego nie robić.

0

wskaźnik to połączenie koncepcji rebindable referencji i iteratorów

IMHO lepsza jest prostsza definicja, mówiąca że wskaźnik jest obiektem przechowującym adres w pamięci, szczególnie że jest to pojęcie **pierwotne **w informatyce, stworzone na początku lat 60 XX wieku. Trudno jest zatem mówić o połączeniu koncepcji pojęć, które jeszcze nie istniały w tamtym momencie. To tak samo jakby określić fonograf jako połączenie koncepcji gramofonu i dyktafonu.

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