1 / 6
Feb 2016

Hejka, jedna osoba poleciła mi Ciebie jako osobę znającą się na
programowaniu. O ile masz trochę czasu na przeczytanie tego co napisałem
i odpowiedź to chciałbym się zapytać o naukę C++. Jakoś 1 miesiąc temu
zacząłem się uczyć tego języka początkowo oglądając kurs Pana Mirosława
Zelenta potem kupiłem książkę Symfonia c++ standard. Ale ostatnio
zacząłem czytać wypowiedzi niektórych osób i jedni twierdzą że ta
książka jest dobra inni że nie podobnie jest z kursem Pana Mirosława
który już praktycznie skończyłem. Więc moje pytanie brzmi jaka jest
prawda czy ta książka jest naprawdę tak zła jak o niej piszą i jak w
dobry sposób nauczyć się tego języka?

Nie wiem i nie mam pojęcia, tak mógłbym odpowiedzieć na wszystkie pytania. Wydaje mi się że nie ma takiego uniwersalnego sposobu ani metody. Ale jednocześnie myślę, że wystarczy tylko jedna rzecz, pasja i wtedy napewno znajdziesz swoją drogę. Kurs w porównaniu do książek ma tą zaletę, że jest multimedialny, ale i tak nie jest interaktywny. Dodatkowo, kurs ten pisał/tworzył jednoosobowo autor kursu, mało podatny na sugestie i uwagi czytelników. Sam mu podsunąłem kilka, ale bez efektów. Np, w jednym miejscu twierdzenie, że powtórki kodu są motywem do zapisania ich jako jednej funkcji, a dalej pokazanie łatwej i przyjemnej metody kopiuj i wklej. To uczenie złych nawyków i praktyk programistycznych. Metoda kopiuj/wklej i uczenie jej początkujących to proszenie się o późniejsze kłopoty i problemy. Dodatkowo, w jednym miejscu znalazłem błąd, który świadczy o niewiedzy autora w jednej drobnej kwesti. Ogólnie kurs poza tym jest spoko. W porównaniu do kursu, książki pisane są zespołowo, chociażby autor i zespół redakcyjno/wydawniczy i raczej książka zawiera mniej błędów, ale ma swoje inne wady - jako środek do nauki.
Więc co nie ma złotego środka?
1. Dobra szkoła i dobry nauczyciel.
2. Jeszcze lepsza szkoła i jeszcze lepszy nauczyciel
3. Osobisty mistrz i guru.
4. Korepetytor [dobry]

Jeżeli chciałbyś zostać dobrym stolarzem ...[tu wpisz dowolny zawód] z jakiej książki byś się uczył? Tylko, praktyka, lata praktyki i jeszcze raz praktyka uczyni z Ciebie mistrza.

PS
Autor Symfoni zdaje się napisał też Pasję, ale nie o tym pisałem wyżej. Obu książek nie miałem w ręku, więc nie mogę ani polecić ani odlecić. Jedyną książkę jaką mogę polecić to Język C Kerningha [piszę z pamięci, więc mogłem się pomylić]. Nauka języka to i tak dużo za mało. Nauczysz się C++ i co dalej?

  • created

    Feb '16
  • last reply

    Aug '23
  • 5

    replies

  • 1.8k

    views

  • 4

    users

  • 6

    likes

  • 2

    links

PS 2
A praktyka to także SPOJ, Algoliga, Fraktal, PA, D24 itd i td, ale oczywiście nie tylko.

7 years later

Próbowałem zrobić zadanie MWP4_3C - Płyta główna https://pl.spoj.com/problems/MWP4_3C/2 najpierw w Swift ale jak zwykle stara wersja tutaj 4.2.2 nie pozwoliła na kompilację nowych cech języka a po dopasowaniu do starej wersji program nie przechodził kryterium czasu wykonania. Napisałem zatem program w C. Przeszło w czasie 0.05 .Moje pytanie: Czy mógłby mi ktoś podać chociaż jakieś wskazówki w jaki sposób ludzie uzyskali wydajność 0.00 .Jak to jest możliwe? Czego powinienem się douczyć?

Różnica między 0.05 a 0.00 podchodzi już pod wahania dokładność pomiaru. W zależności od obciążenia całego serwera lub konkretnego procesu, który wykonywał twoje zgłoszenie możesz dostać różne czasy.

W tym zadaniu możesz nieznacznie przyśpieszyć używając funkcji do szybkiego wczytywania i wypisywania danych (fast I/O), bo w samym algorytmie to za dużo nie poprawisz.
Co do fast I/O w C nie polecam Ci teraz się tym zajmować. Bardziej skupiłbyś się rozwiązywaniu innych zadań, nauki algorytmów i tego jak pisać optymalny kod. Większość zadań spokojnie da się zaliczyć nie korzystając z fast I/O. Tak jest przynajmniej dla C i C++. Niestety inne języki (Java, Python, Swift) nie wyrabiają się w czasie właśnie przez zbyt wolne wczytywanie danych (nawet jeśli zastosujesz optymalny algorytm).
Jeśli piszesz w Swift to musisz sam poszukać, czy są jakieś metody na przyśpieszenie operacji in/out na standardowe wejście/wyjście.

Korzystając z okazji, iż ktoś odświeżył wątek, taka historia mi się przypomniała zaledwie w wyniku przeczytania tematu.

Sytuacja: siedzimy sobie w trio i klepiemy kod. Wtem jeden przedstawia historię. W skrócie: ma znajomego, który uczy w szkole infy od X lat, lubi kodować i coś tam o tym wie, chciałby zmienić pracę i kodować zawodowo (choć nie pamiętam, czy w C++). Problem: co mu poradzimy?

Najciekawsza odpowiedź udzielona przez kolegę: spakować się, wyjechać do Niemiec i znaleźć tam pracę. A jak już pozna języki - zarówno naturalne jak i programowania - może wracać i nie będzie już miał takich problemów :slight_smile:

Nie wiem jak ludzie, wiem jak ja. Jak to jest możliwe? Dzisiaj nie jest to możliwe, ale może kiedyś znowu będzie?
Oprócz tego co napisał @quenthui, [podpisuje się wszystkimi moimi 19 palcami], także uaktalnianie kompilatorów do najnowszych wersji może powodować kompilację bezpieczniejszych ale wolniejszych programów wynikowych. Możliwych powodów jest więcej, ale patrz PS.
Więc może nie warto narzekać na starą wersję swiftta? :-).

Ps
Do podziękowań jest takie :heart: serduszko, a edytowanie własnego postu postfactum powodujesz moją dezaprobatę i niechęć do współpracy :slight_smile:

Ps 2
Miałem na myśli edytowanie w wątku zliczanie wystąpień. I nie chodzi mi o poprawianie literówek i błędów ortograficznych, czy programowych.

Suggested Topics

Want to read more? Browse other topics in Tutoriale, poradniki or view latest topics.