Jak się uczyć programować?

Jak się uczyć programować?
K1
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:36
0

Z racji tego, że nauka programowania to trudny i złożony proces, a ja jestem jeszcze początkujący, napisałem poniżej schemat wg którego się uczę. Jeśli ktoś by coś dodał lub zmienił to chętnie przyjmę różne uwagi.

  1. Ustal priorytety np. 1) struktury danych i algorytmy, 2) programowanie obiektowe, 3) LINQ, 4) bazy danych, 5) grafika/refleksja/serializacja...
    przykładowo jeśli nie umiesz wystarczająco dobrze i nie stosujesz swobodnie programowania obiektowego to nie zaczynaj nauki baz danych, czy refleksji, bo wszystko ci się pochrzani

2 ) konsultuj pomysły/projekty. Jeśli zrobisz jakiś projekt koniecznie daj go do sprawdzenia komuś bardziej doświadczonemu a z pewnością wytknie ci mnóstwo błędów np brak refaktoryzacji, wzorców projektowych, nieużywanie bloku try and catch, zasady SOLID itp

  1. stawiaj sobie realne cele i uparcie do nich dąż, np jeśli uczysz się asp.net mvc to pierwszy projekt niech będzie dość prosty, tak żebyś bezstresowo go zrobił np. jakaś aplikacja do podliczenia rachunków, opłat, (wypełnienie prostych formularzy), potem nieco trudniejsza np strona internetowa z danymi wyświetlanymi z bazy, a potem jeszcze trudniejsza np sklep, forum itp

  2. selekcja informacji. Nie kupuj/pobieraj pierwszej lepszej książki, tylko sprawdz jej spis treści, opinie, porównaj z innymi. Najlepiej kupuj dość tanią i skondensowaną treść,

  3. nie czytaj książek od deski do deski. Jeśli robisz jakiś projekt i potrzebujesz bardziej szczegółowo wiedzieć o czymś to doczytaj o tym np w ksiażkach czy dokumentacji. Czytaj o czymś jeśli akurat tego potrzebujesz, a nie na zapas.

SH
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Poznań
  • Postów:109
2

Najlepiej to jednak lepiej przeczytać jakąś książkę od deski do deski żeby mieć jakieś pojęcie. Ja polecam "C# rusz głową", po spisie treści jest tam wszystko co powinien chyba wiedzieć początkujący, są trzy laboratoria kiedy można się wykazać samemu + dużo ćwiczeń. Mówię o spisie treści, bo ciągle się zacinam i nie mogę jej skończyć, bo przestaje i robię coś innego. Później ktoś się bierze za coś większego i się pyta na forum czemu mi się coś nie kompiluje, a np. źle inicjuje zmienne. Niestety dla początkujących którzy z programowaniem mają styczność po raz pierwszy, nie mają wyrobionego myślenia to wiedza w internecie jest dość rozproszona i często przy łączeniu kolejnych kawałków kodu wychodzą babole bo nie zna się podstaw.

K1
to jest trochę błędne koło, bo jak przeczytasz jakąś książkę to stracisz wiele miesięcy a 90% rzeczy i tak zapomnisz i nie będziesz potrafił zastosować, natomiast jak nie przeczytasz żadnej to o wielu ważnych rzeczach nie będziesz w ogóle wiedzieć i będziesz wtedy błądził.
AK
Inaczej jest ... informacje będą faktycznie nieco "przykryte" w głowie, ale przynajmniej w wersji "aha, coś o tym było, musze sprawdzić"
K1
ok. A jak ktoś jest jeszcze początkujący to dajmy na to przez pierwszy rok chyba lepiej jest czytać różne blogi niż książki, bo wiedza jest tam przekazana w prostszy i bardziej zrozumiały sposób, czy od razu od książek zacząć?
K1
przejrzałem właśnie tą książkę i wygląda na bardzo praktyczną i przystępnie napisaną, tak więc jeszcze raz dzięki!!!
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:10 dni
  • Postów:3561
1

Kursy / wiedza w internecie są 90% niskiej jakości. A to autorowi brakło energii do dalszych rozdziałów, a to sam ledwie wyszedł z etapu poczatkujacego , a to jego układ kursu jest nieoptymalny/ błedny
Szukanie przez googla z natury bardziej wystawiam problemy (więc błedny kod) niż coś dobrej jakości.
Do korzystania z wiedzy internetowej już tzreba mieć dobre fundamenty. Do kopiowania kodu tzreba być naprawdę dobrym.

Książka papierowa (właśnie do mnie jadą trzy) czy na czytnik wymaga zaangażowania przez wydawnictwo kasy i ludzkiej pracy, więc następuje odsiew. Pierwszą bym czytał sekwencyjnie, od deski do deski (z przerwami na ćwiczenie)


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
AdamWox
I wywnioskowałeś tą niską jakość po czym jak oglądając te kursy to, "teoretycznie", nie potrafiłeś programować?
semicolon
  • Rejestracja:ponad 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:114
1
  1. Ustal priorytety np. 1) struktury danych i algorytmy, 2) programowanie obiektowe, 3) LINQ, 4) bazy danych, 5) grafika/refleksja/serializacja...
    przykładowo jeśli nie umiesz wystarczająco dobrze i nie stosujesz swobodnie programowania obiektowego to nie zaczynaj nauki baz
    danych, czy refleksji, bo wszystko ci się pochrzani

Sztywne podejście. Po prostu dobieraj narzędzia do projektu. By działać nad projektem dajmy na to do 10LOC bardzo często nie potrzebujesz wiedzy specjalistycznej. Wystarczy, że zaczniesz badać wybrany temat gdy napotkasz jakiś większy problem. Poza tym Twoja pierwsza wersja projektu nie musi być idealna, jak będziesz z czasem poprawiać błędy to też będzie git.

2 ) konsultuj pomysły/projekty. Jeśli zrobisz jakiś projekt koniecznie daj go do sprawdzenia komuś bardziej doświadczonemu a z pewnością wytknie ci mnóstwo błędów np brak refaktoryzacji, wzorców projektowych, nieużywanie bloku try and catch, zasady SOLID itp

Sęk w tym, że te błędy czasem nic nie znaczą. Osoba, która sprawdza Twój projekt opiera się na pewnym zbiorze zasad do przestrzegania. Jesli zapytasz osobę, która rzeźbi bardzo duży system, to pewnie powie Ci, że nie masz tego czy tego wzorca (albo powie, że masz niewydajne zapytanie itp), a jak zapytasz kogoś kto pisze mniejsze aplikacje to ten powie Ci, że już strasznie komplikujesz (i że Twój problem to nawet bez bazy da się rozwiązać). I kto ma wtedy rację?

Na początku dużo eksperymentuj i niech Twoim sędzią będą Twoje doświadczenia z systemem. Przykładowo jeśli dostajesz wiele zgłoszeń o błędach to może dlatego, że nie masz testów. Jak wybrane testy ciężko dodać to może dlatego, że w pewnym miejscu przydałby się bardziej ogólny styl. Ale to nie znaczy, że od razu musisz wszystko ogólnie pisać. I to samo co do narzędzi. Jak apka wolno chodzi, to pierw zrozum dlaczego i jeśli faktycznie zapytanie będzie wolne to poducz się tematu, zbadaj z czego wynika i popraw.

Jako żółtodziub nie masz doświadczenia, a wszelkie rady i tak możesz źle zinterpretować. Jak chcesz mieć doświadczenie zbudowne poprzez rozwiązywanie problemów to reaguj na problemy - nie twórz ich z góry sam sobie.

  1. stawiaj sobie realne cele i uparcie do nich dąż, np jeśli uczysz się asp.net mvc to pierwszy projekt niech będzie dość prosty, tak żebyś bezstresowo go zrobił np. jakaś aplikacja do podliczenia rachunków, opłat, (wypełnienie prostych formularzy), potem nieco trudniejsza np strona internetowa z danymi wyświetlanymi z bazy, a potem jeszcze trudniejsza np sklep, forum itp

Trochę tak, ale w takim przypadku nie robisz projektu tylko uczysz się asp.net W normalnej sytuacji byłoby odwrotnie. Piszesz projekt, który jest ważny dla Ciebie i najpierw dobierasz jak najprostsze narzędzia, a jak sytuacja tego wymaga to podkręcasz swój warsztat.

  1. selekcja informacji. Nie kupuj/pobieraj pierwszej lepszej książki, tylko sprawdz jej spis treści, opinie, porównaj z innymi. Najlepiej kupuj dość tanią i skondensowaną treść,
  1. nie czytaj książek od deski do deski. Jeśli robisz jakiś projekt i potrzebujesz bardziej szczegółowo wiedzieć o czymś to doczytaj o tym np w ksiażkach czy dokumentacji. Czytaj o czymś jeśli akurat tego potrzebujesz, a nie na zapas.

Jeśli punkty 4 i 5 dotyczą dajmy na to książek o obsłudze frameworka to prawdopodobnie masz rację, ale tylko wtedy. Zacznij czytać więcej klasyki :-)

edytowany 1x, ostatnio: semicolon
K1
tak, 4 i 5 miałem głównie na myśli rzeczy związane z frameworkami. Chociaż czytanie książek z czystego języka od deski do deski też zbytnio nie widzę sensu, bo niby po co brać się od razu za 10 kobył naraz i robić smietnik w głowie. Lepiej jest chyba uczyć się ich jedna po drugiej, tak żeby jak najlepiej zrozumieć.
Mondonno
  • Rejestracja:prawie 6 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Polska
  • Postów:88
1

Odpowiem krótko i zwięźle:

Według mnie najlepiej się nauczyć programowania poprzez przeczytanie książki od danego języka (Z samgo czytania nawet bez wykonywania ćwiczeń się można sporo nauczyć), także ciekawym sposobem nauki jest czytanie dokumentacji języków/technologi. No i jeszcze jest ostatnia opcja nauki czyli youtube i kursy online. Z tego co piszesz to widzę że chcesz się nauczyć C# ' pa wg. mnie grafika i elementy interfejsu klienta czyli przyciski, zdjęcia itp. itd. to powinno iść na koniec ponieważ to nie jest aż tak ważne w nauce programwania, trochę ważniejsze już są bazy danych, ale jak się nie nauczysz od "deski do deski" podstaw to niez zrozumiesz nic z baz danych. Dlatego radził bym się skupić na początku na podstawach, bo jak dobrze się nauczysz podstaw jednego języka to inne zaawansowane rzeczy będą łatwiejesze tak jak i nauczyenie się innych języków programowania. Ja bym dodał jeszcze żeby się nie poddawać, ponieważ często może być tak że wyskoczy ci pierwszy Błąd i powiesz: "Eeeee... Za trudne to jest" to jest słomiany zapał i trzeba z tym walczyć.

Co do (2 punktu to się z tym zgadzam, ponieważ doświadczony programista może ci pomóc w wyeliminowaniu błędów i optymalizacji kodu ( Co do optymalziacji kodu to tu znajdziesz trochę więcej informacji: (Nie czepiać się że to jest moje ;p ) ).

Jak i koledzy do *(3 punktu * także się zgdzam i jak już napisałem nie możesz się zniechęcać. Powinienneś na początek zacząć z czymś prostym np. Napisaniem gry kółko-krzyżyk. Caly czas się uczysz i jak będziesz uparty i będziesz dążył do swego to na pewno będziesz dobrym programistą ;)

Punkt (4 i (5 cóż, jak się uczysz podstaw to powinieneś chociaż książkę z podstawami podstaw języka, przeczytać od deski do deski. Zgadzamsie z tym że jeśli potrzebujesz jakiś informacji, lub chcesz się douczyć to znajdź dokumentację. Także nie pobieraj szlamu z internetu. Poniżej dam ci kilka linków do fajnych książek i dokumentacji do C# ' pa

Linki:

Marcin Lis C# podstawy: https://helion.pl/ksiazki/c-praktyczny-kurs-wydanie-iii-marcin-lis,cshpk3.htm#format/d Btw, polecam wydawnictwo helion

Dokumentacja .NET Microsoftu: https://docs.microsoft.com/pl-pl/dotnet/

Mam nadzieję że pomogłem. @Mondonno :D


K1
dzięki pomogłeś. Tą książkę, którą mam przeczytać od deski do deski z podstawami danego języka to jaki mniej więcej zakres? ma mieć? Same algorytmy, obiektowe, kolekcje, LINQ, strumienie - wystarczą? Czy trochę więcej dołożyć np refleksja, wielowątkowość też?
Mondonno
Na kanale (Który ci podesłałem) Masz wielowątkowość, ale uważam że powinnieneś zostawić ją na później. Ta książka to ma być wprowadzenie do przygody, dobre wprowdzenie = dobre rozwinięcie. Jak już mówiłem podstawy! Jeśl iznasz podstawy późnej przejdź do plików, późnej do LINQ, a na końcu bazy danych i grafika. P.S. Polecam ci także nauczyć sie git i github: http://na-macu.pl/2020/03/02/github-i-git-czyli-bezpieczne-projekty/ Pozdrawiam
Mondonno
Jeśli ci pomogłem to zaznacz zielony haczyk przy mojej odpowiedzi
K1
ok zaznaczyłem. Jeszcze raz dzięki!
Mondonno
Nie ma problemu ;)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)