Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Programowanie od czego zaczac?

Huggarn 27 Sty 2009 14:31 3549 16
  • #1 27 Sty 2009 14:31
    Huggarn
    Poziom 8  

    Reedit calego posta:
    Poczytalem troche i teraz pytanie: jesli C++ to z kursow internetowych lepiej czy z ksiazek? I jakie IDE wybrac, albo osobno kompiler i program do pisania? Poniewaz wiekszasc opinii jakie przeczytalem na ten temat najlepiej uczyc sie C++ bo ma mozliwosci dokladnie te same co C a wychodzi mniej linii kodu ( asemblerowego ) to zreszta na poczatku niewazne ale pytanie: jakie sa roznice w konstrukcji w porownaniu co C? I czy te 2 jezyki wykluczaja sie nawzajem?
    A 2 pytanie: ogolnie to chyba w programowaniu chodzi zeby sie nauczyc ogolnie myslenia odpowiedniego i pisania/czytania kodu a jezyk to juz mniej wazna sprawa czy jak? A srednia nauka jezyka programowania zajmuje chyba 2 lata ( kolega uczyl sie pol roku pascala zeby kalkulator napisac prosty na konkurs ) wiec to mnostwo czasu he he.
    A i tak wogole w sumie chodzilo by mi o algorytmy i pisanie programow a nie programowanie niskopoziomowe jednak to zbyt wyseparowane tematy a informatyk zajmoje sie glownie programowaniem wysokopoziomowym.
    W języku polskim obowiązują pewne reguły - proszę poprawić post (Regulamin, punkt 15).
    [Dr.Vee]

    0 16
  • #2 27 Sty 2009 14:42
    AdeBe
    Poziom 13  

    Po pierwsze: naucz się pisać składnie i logicznie, bo jeśli swoje programy piszesz tak jak posty, to programista z Ciebie będzie kiepski.
    Po drugie: właśnie Java jest dość prostym językiem do nauki, może masz po prostu słabego nauczyciela?
    Po trzecie: ja bym zaczął od C albo właśnie od Javy, na Pascale i inne takie szkoda czasu.
    Po czwarte: nie polecałbym zaczynać od assemblera, raczej więcej Ci pomiesza w głowie niż pomoże. Assembler przydaje się później, gdy masz już trochę wprawy i potrafisz kojarzyć pewne rzeczy wysokopoziomowe z ich odpowiednikami w asm.

    0
  • #3 27 Sty 2009 14:50
    vandertadzio
    Poziom 2  

    Według mnie najlepszy do opanowania podstaw jest język C. Zaczynanie nauki od języka czysto obiektowego (np java) to troche jak uczyć się jeździć bolidem F1 bez prawa jazdy. Są do javy dobre tutoriale ale lepiej poznać porządnie podstawy. W C możesz też w miare łatwo programować uC.

    Najlepsza książka wg. mnie to ANCI C napisana przez twórców tego języka Kernighan'a i Ritchi'ego.

    0
  • #4 27 Sty 2009 20:09
    lord_dagoth
    Poziom 25  

    W życiu nie warto zaczynać od C! Od razu od C++, po co robić krok do tyłu, zamiast kroku na przód?
    Polecam tutorial do C++ napisany prawie że w formie książki (po polsku!), który nazywa się "Od Zera do Gier kodera" (poszukaj w dziale tutoriale na www.gamedev.pl ), zaoszczędzisz trochę gotówki już na samym początku (jak wiadomo, książki do programowania do najtańszych nie należą :P ).

    A jeżeli chodzi o budowanie własnego kompa po to, żeby nauczyć się programowania to... hmmm... jak dla mnie przesada :P

    0
  • #5 27 Sty 2009 21:08
    elektryk
    Poziom 42  

    lord_dagoth napisał:
    W życiu nie warto zaczynać od C! Od razu od C++, po co robić krok do tyłu, zamiast kroku na przód?
    To chyba miał być jakiś sarkazm. Nie chcę się tu rozwodzić na wyższością języków, ale od czegoś trzeba zacząć. C jest o wiele lepsze do nauki podstaw niż C++ czy JAVA. Owszem jest w tych językach o wiele uproszczeń i ułatwień tyle że wcześniej czy później one mszczą się na programiście który nie zna podstaw tworzenia algorytmów. A do nauki postaw C jest sporo lepsze niż JAVA czy C++ bo unika się obiektowości i dość rozbudowanej składni związanej z obsługą obiektów.

    0
  • #6 27 Sty 2009 22:07
    Dr.Vee
    VIP Zasłużony dla elektroda

    C++ można równie dobrze używać jako zamiennika C. Większość początkujących programistów i tak nie widzi między nimi różnicy :)

    Niech autor postu zdecyduje się o co mu chodzi - czy o programowanie w ogóle (algorytmy, pisanie programów), czy o poznanie podstaw działania komputerów i tzw. programowanie niskopoziomowe.

    Podobnych wątków było już co najmniej kilka, więc jeśli i ten się przerodzi w "wojnę języków", to zostanie zamknięty.

    Pozdrawiam,
    Dr.Vee

    0
  • #7 27 Sty 2009 23:14
    Huggarn
    Poziom 8  

    hehe dizeki za odpowiedzi :P przynajmniej wiem ze od C zaczac :P
    chodzilo mi tez oprocz programowania zeby wlasnie zrobic wlasny procek czy cos zeby zobaczyc w praktyce jak to dziala i co mozna z tym zrobic
    btw co to programowanie niskopoziomowe?
    bo nasz kolo z informatyki nie umie nam wyjasnic dokladnie programowania jako takiego bo niby sa zmienne etc ale jak mozna budowac program ktory robi 10 operacji w roznym czasie w roznych warunkach przy roznych danych ?? tu chyba wlasnie jest wymagane dziedziczenie ( ale to chyba objektowka? ) i tego sie usiluje dowiedziec
    i nie chodzilo mi o wywolanie wojny o jezykach :P tylko chcialbym uslyszec opinie :P niech kazdy powie co mysli o tym ^^

    0
  • #8 27 Sty 2009 23:43
    Dr.Vee
    VIP Zasłużony dla elektroda

    Ja np. myślę, że nie dociera do kolegi to, co się do niego pisze.
    Chyba w tej szkole uczą też języka polskiego?
    Proszę poprawić posty (Regulamin, punkty 8.2 i 15).

    Pozdrawiam,
    Dr.Vee

    0
  • #9 28 Sty 2009 00:19
    elektryk
    Poziom 42  

    Huggarn napisał:
    btw co to programowanie niskopoziomowe?
    bo nasz kolo z informatyki nie umie nam wyjasnic dokladnie programowania jako takiego bo niby sa zmienne etc ale jak mozna budowac program ktory robi 10 operacji w roznym czasie w roznych warunkach przy roznych danych ?? tu chyba wlasnie jest wymagane dziedziczenie ( ale to chyba objektowka? ) i tego sie usiluje dowiedziec
    Programowanie niskopoziomowe to programowanie na poziomie asemblera przy bezpośrednim dostępie do sprzętu. Operujesz bezpośrednio na rejestrach procesora i pamięci przy pomocy instrukcji procesora (ew jakiś makr). A o co biega z tymi 10 operacjami w różnym czasie i jak to się ma do obiektowości to ja nie mam pojęcia.

    0
  • #10 29 Sty 2009 10:35
    lord_dagoth
    Poziom 25  

    elektryk napisał:
    To chyba miał być jakiś sarkazm. Nie chcę się tu rozwodzić na wyższością języków, ale od czegoś trzeba zacząć. C jest o wiele lepsze do nauki podstaw niż C++ czy JAVA. Owszem jest w tych językach o wiele uproszczeń i ułatwień tyle że wcześniej czy później one mszczą się na programiście który nie zna podstaw tworzenia algorytmów. A do nauki postaw C jest sporo lepsze niż JAVA czy C++ bo unika się obiektowości i dość rozbudowanej składni związanej z obsługą obiektów.

    Po co zaczynać od C, skoro C++ na poziomie tak niskim niewiele się różni? Przecież w ksiażkach nie zaczynają od dziedziczenia wielobazowego, czy zastosowań funkcji wirtualnych, ale od prostego wypisywania "Hello World" na ekranie.
    Na tak niskim poziomie C++ od C różni się tym, że zamiast printf'a używamy cout'a, i zamiast alokować pamięć (i ją zwalniać) funkcjami używamy do tego new i delete'a. Ale nie ma problemu, jak autor ma bardzo dużo czasu i cierpliwości, to najpierw może przeczytać 600 stronnicową książkę do C, następnie 1600 stronnicową książkę do C++, gdzie przez pierwsze 10 rozdziałów będzie praktycznie to samo, tyle że z drobnymi różnicami w składni.
    Poza tym uważam, że jak książka jest dobra (polecam Szkołę programowania języka C++ Stephena Praty, wyd. Helion) to powoli i bardzo dobrze wprowadzi do programowania obiektowego, zaczynając najpierw od prostych, strukturalnych programów.

    U mnie na uczelni kiedyś powiedzieli, "Aby móc opanować prawdziwą potęgę C++, najpierw trzeba nauczyć się strukturalnego C", po czym wszystkie listingi i przykładowe programy zawierały iostream.h, cout'y, cin'y, vectory, stringi, new'y i delete'y...

    0
  • #11 30 Sty 2009 14:54
    Chris_W
    Poziom 35  

    Huggarn napisał:
    ... jak mozna budowac program ktory robi 10 operacji w roznym czasie w roznych warunkach przy roznych danych ?? tu chyba wlasnie jest wymagane dziedziczenie ( ale to chyba objektowka? ) i tego sie usiluje dowiedziec...

    Generalnie wykorzystuje się szybkość działania procesora i w bardzo krótkich odcinkach czasu robi po kawałku każdego zadania. Człowiek zauważa to jako płynne wykonywanie 10 procesów.
    Co do tego że program robi różne rzeczy w różnych warunkach i przy różnych danych - jest to wynik generalnie porównań matematycznych - każdy procesor posiada rozkazy porównywania liczb. Więc jeśli ustalisz sobie że czerwony kolor to '5' a zielony to '10' - i odczytując z czujnika liczbę '5' porównujesz i wychodzi że jest czerwony.

    0
  • #12 30 Sty 2009 22:23
    elektryk
    Poziom 42  

    lord_dagoth napisał:
    Po co zaczynać od C, skoro C++ na poziomie tak niskim niewiele się różni? Przecież w ksiażkach nie zaczynają od dziedziczenia wielobazowego, czy zastosowań funkcji wirtualnych, ale od prostego wypisywania "Hello World" na ekranie.
    Na tak niskim poziomie C++ od C różni się tym, że zamiast printf'a używamy cout'a, i zamiast alokować pamięć (i ją zwalniać) funkcjami używamy do tego new i delete'a.
    Różnica jest taka że programista musi panować nad kodem i rozumieć co się w nim dzieje i co to oznacza.
    W tym przypadku printf po sformatowaniu ciąga znaków otwiera dostęp do konsoli i wysyła. Składnia jest prosta, printf, ciąg formatujący i zmienne.
    W przypadku C++, cout jest OBIEKTEM (a nie czarną skrzynką do której się przekierowuje napisy strzałką) który musi być gdzieś tam stworzony (automatycznie), "znak większości" jest OPERATOREM który wykonuje operację jednoargumentową na obiekcie (przesłanie wartości), wartość ta jest formatowana zgodnie z bieżącymi ustawieniami cout (POLA OBIEKTU), a następnie podobnie (jak nie tak samo) do printf wysyłana. Nowsze wersje kompilatorów nakładają obowiązkowo wymaganie co do PRZESTRZENI NAZW. Każde ze słów pisanych wielkimi literami oznacza jakieś pojęcie języka C++ związane z obiektowością, a przecież to taki prosty program.
    Bardziej złośliwy przykład to spróbuj komuś wyjaśnić program helloworld zapisany w ten sposób cout << "hello world" << endl; i jakie tam są obiekty, operatory i w jaki sposób użyte.

    0
  • #13 30 Sty 2009 22:57
    Dr.Vee
    VIP Zasłużony dla elektroda

    Wszystko prawda, tylko w ten sposób tłumacząc program hello world można dojść do opisu bitów w rejestrach karty graficznej. Tak samo jak w C printf "magicznie" przyjmuje dowolną liczbę argumentów, tak w C++ można "magicznie" wypisywać do std::cout.

    Jeśli chodzi o rdzeń programowania (algorytmy), to najlepiej uczyć się w języku, który nie przeszkadza młodemu adeptowi w nauce. Ci co muszą - nauczą się później C i asemblera. Ci co nie muszą - będą pisać programy nawet nie wiedząc co to jest wskaźnik i pamięć :)

    Pozdrawiam,
    Dr.Vee

    0
  • #14 01 Lut 2009 00:55
    Huggarn
    Poziom 8  

    Dr.Vee czyli mowisz ze zaczac od C++ bo pozniej jak bede musial i tak sie C naucze? No to w takim razie musze poszukac sobie sensownego kursu takiego od bardzo podstaw i moge zaczynac :P Dzieki za odpowiedzi!!

    0
  • #16 01 Lut 2009 23:03
    kerad85
    Poziom 11  

    Ja bym polecał od razu uczyć się C++, z doświadczenia wiem, że C niepotrzebnie w głowie miesza i potem ciężko jest się przestawić na myślenie typowo obiektowe.
    Wiec warto zacząć choćby od książki Jerzego Grębosza "Symfonia C++", potem ewentualnie przejść do "Pasji C++" albo czegoś na wyższym poziomie, np. "Thinking in C++" Bruce'a Eckela czy ""Język C++ Bjarne'a Stroustrupa.
    Takie jest moje zdanie.

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo