Początek nauki.

0

Witajcie, mam 14 lat i już od jakiegoś czasu myślę o nauce programowanie, tylko czy nie jestem za młody?
I stąd moje pytanie od czego mam zacząć się uczyć? Nie chce kursów, ponieważ wiem, że są nie dokładne. Interesuje mnie zakup książki tylko nie wiem jakiej, wiele osób poleca Symfonia c++, ale jest jeszcze pare książek, dlatego proszę was o dobór książki dla zupełnie początkującego.

1

Zacznij od nauki korzystania z wyszukiwarek internetowych..

0

Zacznij od poczytania wątków na forum Newbie.

0

Symfonia C++ STANDARD

0

Ja zacząłem, gdy miałem 13 lat od Pascal'a (właściwie to od Batch'a :D) i jeżeli chcesz zrozumieć mniej więcej o co chodzi w programowaniu zacznij od niego, bo C++ dla wielu ludzi jest za trudny na początek. Dodam też, że ja korzystałem tylko z kursów internetowych, dopiero po pół roku z C++ (to było z rok temu) kupiłem książkę o programowaniu obiektowym. Jak umiałem jako takie podstawy w Pascal'u, C++ to było dla mnie takie "wow, o co tu chodzi?", ale zmusiłem się do nauki. Zrobisz jak chcesz.

0

Ja też zaczynałem w wieku 13 lat i poznawałem C++ z książki "Od zera do gier kodera". Jak dla mnie bardzo dobry tutorial. Wszystko od podstaw i poparte przkładami.

0

Polecam książkę Thinking in C++, bardzo dobra!

1

Dla całkiem początkującego Symfonia jest idealna. Thinking jest ok, ale styl pisania Eckela nie każdemu odpowiada. "Od zera do gier kodera" jest już trochę przestarzałe i zawiera sporo błędów/nieścisłości.

0

Grębosz w "Symfornia C++ Standard" wszystko fajnie tłumaczy, dosłownie jak jakiemuś młotowi. Polecam jednak na początek "Szkoła Programowania w C++" Stephena Prata, gdyż w Symfonii nie ma sporej ilości rzeczy jak np korzystanie z biblioteki STL, czy jak posługiwać się obsługą wyjątków.
Natomiast książka jako druga to "C++ Dla każdego wydanie 2", bardzo bogata w informacje książka.

0

ja standardowo na początek polecam Pascala i później dopiero C++

0

"Symfonia C++ standard" jest bardzo dobrą książką, wszystko wytłumaczone w bajeczny sposób (czasami według mnie autor za dużo pisze na jeden temat - przez to książka ma taką objętość).
Niedawno sobie kupiłem "C++ dla każdego wydanie II", gdzie jest całkiem szczegółowo omówiona biblioteka STL (200 stron). Autorzy nie tłumaczą tam wszystkiego tak dobrze jak w Symfonii, ale również jest wszystko bardzo dobrze wytłumaczone, do tego jest sporo informacji, których nie ma Symfonia, a są dopiero w "Pasji C++" (która to niestety nie wyszła w wydaniu dostosowanym do standardu z 2003). Te dwie pozycje na pewno wystarczą na początek (wspomniana Szkoła Programowania też jest ponoć dobra na początek).

0

Ja zaczynałem w wieku 15/16 lat od c++ i książka Symfonia c++ Standard bardzo dobrze mnie wprowadziła w świat programowania nie żałuję że ją kupiłem. Polecam ;p
Też musisz wybrać jakiego języka chcesz się uczyć;p Chyba lepiej uczyć sięjednego do perfekcji niż kilka po trochu...

0
JumpSmerf napisał(a)

"Symfonia C++ standard" jest bardzo dobrą książką, wszystko wytłumaczone w bajeczny sposób (czasami według mnie autor za dużo pisze na jeden temat - przez to książka ma taką objętość).

Moim zdaniem dobrze, że autor w tej książce wałkuje niektóre rzeczy (wiem że czasem aż do znudzenia), gdyż przy C++ jest to niezbędne do przyswojenia sobie niektórych zasad programowania w tym języku. Również polecam tę książkę.

0

Na początek : Python potem C++ / C# ewentualnie java

1

moim zdaniem pierwszy powinien być C

1

Resident - gdyby gościu się nauczył Pythona a potem C# to nie wiadomo co by z tego wyszło - bo jak by gościu chciał napisać jakiś program do przetwarzania grafiki w C# to już by miał kłopot bo do tego celu trzeba użyć kodu niezarządzanego który wykorzystuje wskaźniki - no a skąd gościu by znał wskaźniki? Przecież w Pythonie i C# ich nie ma.

0

to nie prawdą jak zacznie od C to nie będzie się męczył.
A jak nie będzie znał wskaźników to takiego kodu nie napiszę w C#:

 
public static bool Invert(Bitmap b)
{
    // GDI+ still lies to us - the return format is BGR, NOT RGB. 

    BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), 
        ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); 
    int stride = bmData.Stride; 
    System.IntPtr Scan0 = bmData.Scan0; 
    unsafe 
    { 
        byte * p = (byte *)(void *)Scan0;
        int nOffset = stride - b.Width*3; 
        int nWidth = b.Width * 3;
        for(int y=0;y < b.Height;++y)
        {
            for(int x=0; x < nWidth; ++x )
            {
                p[0] = (byte)(255-p[0]);
                ++p;
            }
            p += nOffset;
        }
    }

    b.UnlockBits(bmData);

    return true;
}

"to nie prawdą jak zacznie od C to nie będzie się męczył." - źle się wyraziłem powinno być: to nie prawdą że jak zacznie od C to będzie się męczył

1

Jak nie napisze takiego to napisze inny robiący dokładnie to samo. W nowych rozwijanych językach programowania jest coś takiego jak referencja ona zastępuje to co w C/C++ dają wskaźniki (nie twierdzę, że referencja jest lepsza od wskaźników).

0

nie bądź śmieszny.

1

jak by gościu chciał napisać jakiś program do przetwarzania grafiki w C# to już by miał kłopot bo do tego celu trzeba użyć kodu niezarządzanego który wykorzystuje wskaźniki - no a skąd gościu by znał wskaźniki? Przecież w Pythonie i C# ich nie ma.
(btw. sam sobie przeczysz, chwilę później podajesz kod w C# - ze wskaźnikami.)

to nie prawdą jak zacznie od C to nie będzie się męczył.
A jak nie będzie znał wskaźników to takiego kodu nie napiszę w C#:

Rly? Idąc twoim myśleniem, jak zacznie od C to nie będzie umiał napisać czegoś takiego:

class Base {}
class Derived : Base {}

To ja bym już wolał nie wiedzieć co to wskaźnik

0

dlaczego nie będzie umiał - ja tylko proponuję zaczęcie nauki od języka C - potem może sobie wybrać dowolny. Ja zaczynałem od języka C , potem był C++, potem Java, C#, Python, Bash, AWK, PHP ....teraz dowolny język opanowuję w mig.

Zresztą jak się wie o co chodzi to można nawet nie znać danego języka - znam osobę która zaczynała pracę w firmie jako programista C# i dopiero w pracy się go nauczyła.

1

Czy tylko mnie się wydaje, że dobrze jest się uczyć języków programowania zgodnie z ich rozwojem?
Co prawda nie zalecałabym ASMa, ale:

  • na początek uczymy się programować imperatywnie, nieskomplikowane hello worldy i mini kalkulatorki

  • następnie ogarniamy programowanie strukturalne - pętle i warunki

  • potem dodajemy do tego programowanie proceduralne - zaczynamy ładnie dzielić nasz programik na funkcje, co w połączeniu z wcześniejszym podejściu strukturalnym da nam już teraz zgrabne narzędzie do programowania. Już teraz możemy napisać dużo prostych programów, mini gry nawet. Bez potrzeby zrozumienia paradygmatu obiektowego!

  • wtedy dopiero zalecałabym komukolwiek zabawę w programowanie obiektowe....

I nie mówcie proszę, że nie trzeba rozumieć paradygmatu programowania obiektowego, żeby pisać obiektowo.... Oczywiście że nie trzeba, można też jeździć autem bez prawa jazdy.
A sory, programowanie obiektowe nie jest takie banalne, jak to się wydaje, gdy już to się robi kilka lat. Choćby przeglądając wątki w Newbie można zobaczyć na własne oczy, że samo to, że napiszesz deklarację klasy nie świadczy o tym, że potrafisz programować obiektowo. To musi "zaskoczyć" w głowie, a według mnie, wymaga to pewnego przygotowania głowy poprzez zapoznanie się ze starszymi paradygmatami.

Zaczynając od C# nie masz jak zacząć nauki od paradygmatu strukturalnego i proceduralnego, od razu wrzucasz się na obiektówkę, co według mnie jest jak skok na głęboką wodę. Gdzie do budowania programów obiektowych, jak się dobrze nie opanowało funkcji i pętli....?

Proponowanie Pythona na początek znowuż jest po prostu śmieszne. Nie wiem skąd się ostatnio wziął taki trend, by początkującym polecać słabo typowane języki. Chcecie ich zepsuć za młodu, czy co?

0

no właśnie aurel - ty jedyny kapujesz o co w tym biega.

0
nnn napisał(a)

Zresztą jak się wie o co chodzi to można nawet nie znać danego języka

Skoro to takie proste - wytłumacz ten kawałek kodu:

fill = 1 : (zipWith (+) [1..] (tail >>= zipWith (+) $ replicate 2 =<< fill))

Programowanie to nie znajomość języków programowania, bez różnicy, od czego zacznie. Na początku po prostu klepie się kod, wyłącznie klepie, to nie ma przełożenia na późniejsze programowanie. Jeśli coś brać pod uwagę to cel nauki, czym chce się zająć w przyszłości, pod tym kątem dobierać język, chociaż mało kto pracuje w języku, od którego przygodę z naszą branżą zaczynał. Czy wskaźniki są naprawdę do szczęścia potrzebne? Czy OOP jest potrzebne? Czy FP jest potrzebne? Prawidłowa odpowiedź na większość pytań: "to zależy".

0

no właśnie aurel - ty jedyny kapujesz o co w tym biega.

Tak, aurel 'jedyny kapuje' :]

Ja zaczynałem od języka C , potem był C++, potem Java, C#, Python, Bash, AWK, PHP ....teraz dowolny język opanowuję w mig.

Wszystkie imperatywne. Naucz się Prologa albo Haskella, zobaczymy jak ci pójdzie.

1
aurel napisał(a)

Zaczynając od C# nie masz jak zacząć nauki od paradygmatu strukturalnego i proceduralnego

Dlaczego nie? Przecież C# te paradygmaty zawiera, czyż nie ma struktur sterujących i jednostek kodu (metod, delegatów, funkcji anonimowych etc)?

aurel napisał(a)

Proponowanie Pythona na początek znowuż jest po prostu śmieszne. Nie wiem skąd się ostatnio wziął taki trend, by początkującym polecać słabo typowane języki. Chcecie ich zepsuć za młodu, czy co?

Nie rozróżniasz typowań, kobieto. Python ma SILNE dynamiczne typowanie, słabe dynamiczne typowanie to masz w PHP. Trudno powiedzieć, czy statyczne typowanie jest lepsze na początek, w każdym razie assembler można uznać za język posiadający dynamiczne typowanie słabe...

0

a wy zaraz do zmieniacie temat - nie potraficie przyznać się do własnych błędów.

1
aurel napisał(a)

Proponowanie Pythona na początek znowuż jest po prostu śmieszne. Nie wiem skąd się ostatnio wziął taki trend, by początkującym polecać słabo typowane języki. Chcecie ich zepsuć za młodu, czy co?

Ja bym na to spojrzał tak: najpierw trzeba zadać sobie pytanie "chcę się nauczyć języka programowania czy programowania?". W pierwszym przypadku najlepiej jest się uczyć czegoś najbliżej lub dokładnie docelowego języka programowania. W tym drugim lepiej skupić się na rozwiązywaniu problemu przy pomocy algorytmu, a nie wkurzać się, że kompilator coś tam krzyczy o złym typie, czego na tym etapie nauki jeszcze nie rozumiemy. Do tego języki wysokiego poziomu, beztypowe, z bogatymi bibloiotekami standardowymi nadają się nalepiej. Przejście później na języki silnie typowane jest wbrew pozorom dość proste. Nieco trudniej jest ze wskaźnikami (na początku może być ciężko załapać o co chodzi).
To jak z nauką matematyki. Najpierw zaczynasz od dodawania/odejmowania i tabliczki mnożenia, a nie od całek.

0

MSM ty nie chcesz ze mną dyskutować bo ty jesteś uprzedzony do mnie.

0

@nnn, my nie chcemy dyskutować? Ustosunkuj się do mojego pierwszego postu, proszę.

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