Jak nauczyć się programować?


(Shiva) #1

Witam,

jestem studentem I roku zaocznych studiów Informatyki. Jako, że zazwyczaj siedziałem w sieciach i lekko zdałem I semestr tak teraz, gdy na II semestrze jest nacisk na programowanie leże i kwiczę! Kompletnie nic nie ogarniam! Moje umiejętności ograniczają się do napisania programu 2+2 -.-

Szkoda by było zawalić studia tylko i wyłącznie przez programowanie, bo z resztą daje sobie radę - średnią miałem na poziomie ~4,4. Także jako zdesperowany student i mam nadzieję przyszły Inżynier, błagam o pomoc doświadczonych ludzi - jak mam się tej magii nauczyć?!


(W0jc13h) #2

Jakiego języka używacie? Jest kilka fajnych pozycji, które tłumaczą podstawy. Jeśli piszecie w C++ to polecam "Symfonia C++ Standard" Jerzego Grębosza. Dobrze napisana i początkującemu powinna być bardzo pomocna. Jeśli piszecie w C to polecam "Język ANSI C" Kernighana i Ritchiego. To są jedynie książki. Wymagane jest jednak spędzenie czasu przed komputerem na poznawaniu tego wszystkiego.


(Shiva) #3

C++


(Johny) #4

Symfonia C++,możesz jakieś kursy poczytać,musisz nauczyć się jak się robi pętle,instrukcje,warunkowe,typy danych,co potrzebne jest przy tworzeniu zmiennych,operatory,w sieci też jest trochę kursów tłumaczących wszystko od podstaw.

Dalej są algorytmy i struktury danych,to jest całe sedno programowania i próbuj pisać nawet jak najprostsze programy,tylko w taki sposób nauczysz się programować.

Algorytm jest tak jakby sposobem postępowania dążącym do rozwiązania jakiegoś problemu.

Podstawowymi algorytmami są np. liniowe wyszukiwanie danych w tablicy,czy sortowanie.

Technika "dziel i zwyciężaj" - duży problem rozbijasz na mniejsze podproblemy i piszesz program,musisz nauczyć się myśleć jak maszyna,jakbyś sam był kompilatorem,tak rozbijasz problem do rozwiązania.Komputer działa na zasadzie wykonywania programów instrukcja po instrukcji i na zasadzie porównywania,w stylu "jeśli spełniony warunek to zrób to,albo tamto",albo "wykonuj coś dopóki spełniony warunek" - pętla while.

"Powtórz coś x ilość razy" - pętla "for".

czyli w c++ to będzie np.

if (a==b) - instrukcja warunkowa if,"==" - operator porównania dwóch wartoci "czy równe"

{

//zrób coś

}

if (a>b)

{

// zrób coś innego

}


(Rolek0) #5

Polecam:

Miłej zabawy :smiley:


(W0jc13h) #6

Nikt nie powiedział, że każdy musi być programistą. Jeżeli już ktoś chce nim zostać to powinien się uczyć rzeczy od podstaw (w tym wspomniany przez ciebie C). Jeśli chcesz zostać programistą to sam język (C, C++ lub inna Java) nie wystarcza. Do tego trzeba być otrzaskany w angielskim, trzeba znać struktury danych, podstawy algorytmiki oraz być specjalistą w dziedzinie, dla której pisze się oprogramowanie. Język programowania to narzędzie. Tylko i wyłącznie. A wspomniane przez Ciebie szablony to nie osobny język ( !!


(Shiva) #7

Emm... Ja chce programować, bo muszę - a nie z wewnętrznej potrzebny spełnienia się. Także Hello C++


(W0jc13h) #8

Najważniejsze to się nie zrażać :slight_smile: C++ nie jest czymś strasznym. Kwestia wprawy. Jakiego języka byś się nie zaczął uczyć to musisz pisać, pisać i jeszcze raz pisać.


(Shiva) #9

...ty tak na serio? Przeczytaj sobie mój pierwszy post i powściągaj się następnym razem z takimi komentarzami


(Shiva) #10

Może sformułuje pytanie inaczej - czego nie zrozumiałeś w fragmencie w którym określam, że jako student informatyki muszę ogarnąć C++, bo to jest w programie -,-


(pebal) #11

@RaveStar

Wieszasz psy na języku C++ a mnóstwo współczesnych projektów jest w tym języku tworzone.

Możesz pochwalić się jakimś własnym, większym projektem napisanym w jednym z tych, Twoim zdaniem, jedynie słusznych języków?


(Frankfurterium) #12

Raczej ciągnięte. C++ ma i będzie miał swoje nisze (obudowa OS-ów, gry, aplikacje mocno nastawione na szybkość, jakieś systemy wbudowane), ale ze wszystkiego innego jest skutecznie wypierany. Biznes i chmura go nie chce, Microsoft ze swoim Modernem się wypiął, na urządzeniach mobilnych prawie go nie ma.


(pebal) #13

To nie są nisze. Oddziel aplikacje biznesowe a niszowe będą wszystkie pozostałe języki.

I dobrze, bo tam sprawdzają się lepiej inne rozwiązania. Co jest do wszystkiego, jest do niczego.

Microsoft w żadnym wypadku nie wypina się na język C++. Świadczy o tym choćby to, że umożliwił tworzenie w tym języku aplikacji dla Windows Phone 8.

Tworzy także nowe rozszerzenia dla tego języka, jak choćby C++ AMP.

Na iOS większość aplikacji pisanych jest w języku Objective-C. Temu zaś z pewnością bliżej jest do języka C aniżeli Javy.


(pebal) #14

Jezyk C++ nie jest słaby. Słaba może być, co najwyżej, umiejętność jego wykorzystania. W wielu projektach języki wyższego poziomu nie są dla jezyka C++ żadną alternatywą. Nie pozwalają w tak dużym stopniu wykorzystywać dostępnych zasobów sprzętowych.

Ja sam nie ograniczam się tylko do jednego języka programowania. Wyciagasz błędne wnioski.


(W0jc13h) #15

C++ jest tak samo dobry jak C# czy jeszcze inne twory. Jednak będąc programistą trzeba wiedzieć jakiego narzędzia do jakich zadań używać. W C++ trzeba wiedzieć co i jak napisać. Do tego trzeba się sporo napisać. Ma to swoje dobre i złe strony. C# jest dosyć szybkim językiem z wieloma fajnymi i pomocnymi rozwiązaniami (nie, na pewno nie są to idealne rozwiązania). Java pewnie też jest w czymś dobra...

A Objective-C to język dynamicznie typowany, wywodzący się z innego - Smalltalka :slight_smile: I można w nim korzystać z C oraz C++. Również przyjemnie się w tym pisze. Kwestia otrzaskania.


(pebal) #16

Dla mnie nie ma znaczenia, czy coś ma być zrobione szybko czy wolno. O wyborze języka decyduje specyfika projektu. Jeżeli muszę wycisnąć wszystko z procesora i karty graficznej to wybór pada na język C++.

Szybko jest pojęciem względnym. Trzeba mieć dobry punkt odniesienia.

Nikt nikogo nie zmusza do nauki języka C++. Można pisać mułowate aplikacje w JavaScrip, jeżeli ktoś ma na to ochotę. Tylko potem ludzie się dziwią, dlaczego proste aplikacje wymagają szybkiego kompa.

Na chwilę obecną, kod asm.js uzyskuje się w wyniku kompilacji kodu napisanego w języku C++. Tak więc, to kiepski argument na to, aby się języka C++ nie uczyć.

Nie ma w pełni przenośnego języka programowania, który pozwalałby wykorzystać wszystkie możliwości danego systemu operacyjnego. Aplikacja w przeglądarce to tylko kolejna proteza, dobra jak każda inna.


(pebal) #17

Statyczne typowanie.

Ręczne zarządzanie pamięcią.

Możliwość programowania instrukcji SIMD z poziomu języka.

Łatwe tworzenie kodu dla układów GPU.

Co najwyżej może kuleć źle napisany kod a nie sam język.

Język C++ nie jest wolniejszy od języka C i jest przenośny. Nie wiem skąd pomysł, że może być inaczej.

Zawsze można napisać dobry kod w Pythonie i kiepski w C++. To nie jest żaden argument przemawiający za używaniem Pythona.

Możesz mi napisać w czym C++11 udaje inne języki?


(somekind) #18

Jest nieekspresywny, nieabstrakcyjny i wymaga skupienia się na składni, a nie na algorytmie. No i ma trochę udziwnień, które uczą złych wzorców (np. takie patologie jak klasy zaprzyjaźnione), ale to wynika głównie tego, że ma kompletnie schrzaniony projekt (o ile w ogóle ktokolwiek kiedykolwiek ten język zaprojektował).

Jako język programowania jest słaby. Co nie znaczy, że nie można w nim dobrze pisać, czy też pisać dobrych programów... Tylko to trwa za długo. :wink:

Jasne. Ale to nie znaczy, że język jest dobry. Język to składnia i semantyka oraz biblioteki, a nie jego zastosowania.


(pebal) #19

Aby stwierdzić czy język jest dobry, czy zły, trzeba przyjąć jakieś kryterium oceny. Jeżeli za kryterium oceny przyjmiemy, że kod źródłowy ma dobrze obrazować, co i jak będzie w danym fragmencie kodu wykonywane, to język C++ jest językiem dobrym.


(pebal) #20

@RaveStar

Nie wiem jakie masz doświadczenie w pisaniu kodu w języku C++, ale ja piszę wielowątkowy kod w tym języku i nie mam z tym najmniejszych problemów.

Ta dyskusja prowadzi donikąd. Praktyka pokazuje, że język C++ daje bardzo dużą kontrolę nad tym, jak kod jest wykonywany. Ta cecha języka C++ sprawia, że język ten ma, i będzie miał w środowisku wielu zwolenników. Inne wysokopoziomowe języki mają swoje zalety, ale nie dają takiej kontroli nad wykonywanym kodem jak język C++.