Nauka C++ a język C

1

Od października zaczynam studia informatyczne na uniwerku. Jako że mam obecnie wolny czas chciałbym go jakoś spędzić w bardziej wartościowy sposób, oraz odciążyć się z podstaw programowania na studiach. Z tego co widziałem pierwszy semestr zacznie się od języka C. Jest wiele zwolenników nauki C->C++ jak i samego C++. Ostatnio czytałem wiele opinii że warto poznać najpierw język C lecz googlując znalazłem inny ciekawy poradnik (http://www.intercon.pl/~sektor/cbx/cbx.html) który zachęca do pominięcia tego języka. Teraz już sam nie wiem jak się za to zabrać. Chciałbym poznać Waszą opinię-ludzi którzy w tym siedzą. Czy dobrym pomysłem jest nauka C++ (wiedząc że na studiach zaczniemy C), czy jednak lepiej zacząć od samego C ? Trochę zawile to napisałem, mam nadzieje że każdy zrozumiał. Pozdrawiam

1

To, co zaczniesz się uczyć przez wakacje powtórzy Ci się na pierwszych zajęciach w programowaniu. Możesz zacząć od czego chcesz, i tak za dużo w tak krótkim czasie nie zaczarujesz ;-) argumentem nad nauką C zamiast C++ może być to, że przy znajomości pierwszego nauka drugiego będzie o wiele łatwiejsza (dużo rzeczy będzie oczywistych).

1

Ucz się C. Tzn printfy/ scanfy/ fready itp ogólnie stdio i takie tam sprawy. Na studiach powinieneś mieć zajęcia z algorytmiki, a tam ważne jest wyciśnięcie maksymalnej wydajności. Dlatego strumienie (np iostream) odpadają przy zadankach z algorytmów. Z drugiej strony C++ ma STLa - bardzo pomocna biblioteka, ma np bardzo wydajny algorytm do sortowania tablic (o ile nie są to tablice referencji, wtedy możnaby wymyślić jakiś własny, być może szybszy).

Sam język C jest bardzo prosty, a z drugiej strony C++ to rozszerzenie C. Nie ma więc powodów, abyś nie uczył się obu naraz (oczywiście zakładając, że nauka C++ to nie nauka C).

1

Ja osobiście odradzałbym Ci zaczynanie od języków C, czy C++, bo prawda jest taka, że wykonanie ciekawego programu w tych językach wymaga nie lada umiejętności i oczytania. Dość dużo kruczków tu występuje dlatego te języki wg mnie nie są idealnym rozpoczęciem programowania. Sugerowałbym, abyś nie uczył się programowania na wzgląd uczelni, a własnych potrzeb bądź ciekawości. Zacznij od pythona.

1
absent napisał(a)

Zacznij od pythona.

Uważasz że rozpoczęcie nauki od języka dynamicznie typowanego jest dobrym pomysłem? Wg mnie powinno się zacząć od języka z silną kontrolą typów. Osobiście nie polecałbym rozpoczynanie nauki od C++, ale od C jak najbardziej.

1

Na studiach i tak jest wałkowany C/ C++ i do tego C# lub Java (u mnie na UJ najwięcej jest chyba Javy, oprócz C/ C++). Nauka Pythona mu niewiele da. Nauka C wręcz przeciwnie.

0

Jeśli celem jest pobawienie się pamięcią, czy wykonanie kilku prostych algorytmów. Jasne, lepiej w takim razie zacząć od C. Jednak dla mnie tego typu ruch jest po prostu głupi, bo gdy adept będzie chciał wykonać coś bardziej kreatywniejszego to wtedy będzie miał kajdany na łapach. Wykonanie programu gui, aplikacji sieciowej czy cokolwiek innego będzie w C czy C++ znacznie większą trudnością niż w Pythonie. Jeśli was bawią zapasy z językiem niech sobie ten gość i w Asm programuje. Ja mówię za siebie, że nauka pływania nie powinna zaczynać się od skakania na główkę.

1

Po pierwsze trochę dziwne, że ktoś idzie na studia informatyczne, a nie zna C. Po drugie, skoro na uczelni nie używa się Pythona, to po co się go teraz uczyć zamiast C? Chyba lepiej na luzie pouczyć się C/ C++, po których łatwo się nauczyć Javy czy C#, a gdy się nabierze ochoty na robienie GUI czy innych pierdół, to się pouczyć Pythona? Zwłaszcza, że na 90%+ na studiach będzie robił GUI, ale w Javie lub C#, a nie w C++ czy Pythonie.

0

Po pierwsze trochę dziwne, że ktoś idzie na studia informatyczne, a nie zna C
Nie jest to dziwne, ale naturalne. Większość osób jaka zaczyna studia informatyczne to typowi turyści, którzy idą na studią bo mają w domu PC. Nie ma się co dziwić, ale też nie ma sensu robić z tego powodu jakiegoś wielkiego HALO, bo może autor okaże się bystrym programistą. Kto to wie?

Po drugie, skoro na uczelni nie używa się Pythona, to po co się go teraz uczyć zamiast C?
Bo python jest łatwiejszy i doświadczenie wynikające z programowania na pewno przyda się w ogarnięciu C.

Chyba lepiej na luzie pouczyć się C/ C++, po których łatwo się nauczyć Javy czy C#, a gdy się nabierze ochoty na robienie GUI czy innych pierdół, to się pouczyć Pythona?
Nie wiem co Ci się nie podoba w pythonie. Uważasz, że po nim trudniej ogarnąć kolejny język?

1
absent napisał(a)

Po drugie, skoro na uczelni nie używa się Pythona, to po co się go teraz uczyć zamiast C?
Bo python jest łatwiejszy i doświadczenie wynikające z programowania na pewno przyda się w ogarnięciu C.

Nie przyda się. Python ma bardzo rozbudowaną bibliotekę standardową i dynamiczne typowanie co oznacza dwie zupełne inne podejścia do pisania programu.

absent napisał(a)

Chyba lepiej na luzie pouczyć się C/ C++, po których łatwo się nauczyć Javy czy C#, a gdy się nabierze ochoty na robienie GUI czy innych pierdół, to się pouczyć Pythona?
Nie wiem co Ci się nie podoba w pythonie. Uważasz, że po nim trudniej ogarnąć kolejny język?

To nie jest tak że się nam coś w pythonie nie podoba, python to bardzo dobre narzędzie dla programistów które ma skrócić ich pracę i ułatwić proces wytwarzania aplikacji. Tylko że autor, jeśli dobrze zrozumiałem, programistą jeszcze nie jest. Po pythonie łatwiej ogarnąć kolejny język skryptowy, ale jeśli chodzi o naukę języków obecnie mainstreamowych w niczym nie pomaga. Gdyby autor nie zawęził wyboru do dwóch języków poleciłbym mu scalę, ale że do wyboru jest C albo C++ to ja doradzam C. Tobie też radzę nie mieszać autorowi w głowie i wciskać mu technologię o której pewnie wcześniej nie słyszał.

(edit literówki)

1

absent:
Chodzi mi po prostu o kolejność nauki. Jeśli autor ma te półtora miesiąca do końca wakacji i chce na ludzie ogarnąć C, to po co go męczyć przez te półtora miesiąca jeszcze Pythonem? W tak krótkim czasie cudów nie zdziała, a nauka dwóch języków naraz na pewno jest bardziej czasochłonna i pracochłonna.

Można zrobić analogię do twojej porady. Np autor ma sobie zrobić prawo jazd kat B w ciągu dwóch miesięcy, a ty mu proponujesz, żeby na początku pojeździł sobie motorem, bo jest szybszy, zwinniejszy, mniej pali i łatwiej się jeździ. To jest bez sensu, bo i tak musi nauczyć się jeździć samochodem i będzie praktycznie tylko nim jeździł, a nauka jazdy motorem + samochodem na pewno jest dłuższa niż nauka jazdy samym samochodem.

Jak pójdzie na studia to pozna wiele języków i wybierze sobie jaki tam chce, będzie też pewnie miał kolegów, którzy znają się dobrze na innych językach niż C/ C++. Nie ma co odwracać kota ogonem.

0

Mnie wasze gadanie nie obchodzi. Jasno powiedziałem, co o tym myślę.

0
Hustek napisał(a)

Od października zaczynam studia informatyczne na uniwerku.

Masz już rezerwową wątrobę?

Hustek napisał(a)

Jako że mam obecnie wolny czas chciałbym go jakoś spędzić w bardziej wartościowy sposób, oraz odciążyć się z podstaw programowania na studiach. Z tego co widziałem pierwszy semestr zacznie się od języka C. Jest wiele zwolenników nauki C->C++ jak i samego C++. Ostatnio czytałem wiele opinii że warto poznać najpierw język C lecz googlując znalazłem inny ciekawy poradnik (http://www.intercon.pl/~sektor/cbx/cbx.html) który zachęca do pominięcia tego języka. Teraz już sam nie wiem jak się za to zabrać. Chciałbym poznać Waszą opinię-ludzi którzy w tym siedzą. Czy dobrym pomysłem jest nauka C++ (wiedząc że na studiach zaczniemy C), czy jednak lepiej zacząć od samego C ? Trochę zawile to napisałem, mam nadzieje że każdy zrozumiał. Pozdrawiam

Zazwyczaj lepiej uczyć się programowania zaczynając od mniej wymagających języków, np. Pythona, które wyrobią algorytmiczne myślenie i umiejętność rozwiązywania problemów. Koledzy tutaj już proponowali i mają rację. Jednakże Ty nie masz zbytnio na to czasu, zatem pozostaje Ci C lub C++ (tzn. możesz się uczyć czego chcesz, nawet Java, ale lepiej wybrać któryś z tych dwóch skoro na studiach będziesz miał podstawy na C).
Moim zdaniem lepiej zacząć od C. Jest dużo prostszy i opiera się na nieskomplikowanych zasadach. Za nim przemawia także to, że na studiach zaczynacie od tego języka i C++ w dużej mierze bazuje na C. Minusem jest to, że wiele rzeczy trzeba sobie wydłubać samemu, gdyż biblioteka standardowa i "ficzery" języka są relatywnie ubogie. Minus ten zamienia się w plus, jeśli chcesz się czegoś nauczyć i nie piszesz skomplikowanych aplikacji "na wczoraj".
Żeby nauczyć się C++ i tak musisz poznać pewne podstawy, a te podstawy to jest właśnie C. Moja propozycja jest taka: przejdź się do księgarni, kup "K&R", poświęć jeden dzień na przeczytanie książki oraz zrobienie zadań i wtedy zastanów się czy chcesz dalej dłubać w C, czy też przejść od razu do C++. Ani książka, ani ten cały dzień z pewnością nie pójdą na marne, a wręcz przydadzą Ci się kiedy ruszą studia (chociaż po takim kursie na pierwszych zajęciach będziesz się pewnie nudził).

1

A ja polecę Delphi, gdyż ma zasady podobne do C/C++ i jest prostsze do ogarnięcia. (Eheh, fan Delphi/Pascala :P )
Zawsze też można uczyć się C, ale ktoś już wspomniał, że ma on (głupie według mnie) udziwnienia.
Python ma zasady bardzo dalekie od C/C++, więc nie wiem po co się go uczyć.

Więc sądzę że C i Delphi wchodzą w grę . .

(Takie jest przynajmniej jest moje zdanie)

1

jeśli chcesz zmarnować czas, to rzeczywiście najlepiej ucz się pascala albo delphi :] Nie zastanawiaj się chłopie bo szkoda czasu na to, bierz co popadnie (czyli najlepiej c/c++) i zacznij kodzić.

2
absent napisał(a)

Bo python jest łatwiejszy i doświadczenie wynikające z programowania na pewno przyda się w ogarnięciu C.

Doświadczenie z Pythona prawdopodobnie spowoduje, że gdy zacznie pisać w normalnym języku będzie zadawał głupie pytanie skryptowców: "po co zmiennej typ". A nam tutaj już się nie chce tłumaczyć.

1
somekind napisał(a)

Doświadczenie z Pythona prawdopodobnie spowoduje, że gdy zacznie pisać w normalnym języku będzie zadawał głupie pytanie skryptowców: "po co zmiennej typ". A nam tutaj już się nie chce tłumaczyć.

Generalizujesz. A jak nie chcesz tłumaczyć, to tego nie rób.

0

Nierozumiem waszej zakichanej postawy. Macie pythona za jakieś badziewie, które należy omijać szerokim łukiem, bo niby swoją aurą ogłupia. Zastanawiam się czemu w takim razie nikt jeszcze nie podrzucił asemblera na ruszt?

2
absent napisał(a)

Nierozumiem waszej zakichanej postawy. Macie pythona za jakieś badziewie, które należy omijać szerokim łukiem, bo niby swoją aurą ogłupia.

Nie rozumiesz, bo sobie dopowiadasz słowa, które nigdy nie padły. Jeśli przestaniesz, to może zrozumiesz.

Autor spytał, czy uczyć się C czy C++, bo takie języki go interesują ze względu na studia. Nie widzę sensu w proponowaniu innych i obrażaniu się na krytykowanie tych porad.

1

Nie denerwuj się tak bardzo, bo sobie spodnie pobrudzisz i co wtedy będzie?

Assembler na studiach (w pewnym punkcie) powinien być naturalnym krokiem wraz z wiedzą i zrozumieniem jak właściwie działają komputery (procesor, pamięć, jak wygląda komunikacja pomiędzy nimi i nie tylko). Nawet jeżeli ktoś się zaprze i na samym początku stwierdzi, że będzie tylko pisał w językach skryptowych i działających na wirtualnych maszynach, powinien podstawy znać. Jestem pewien, że w końcu każdemu programiście ta wiedza się przyda.

Na mojej uczelni, jeszcze do ubiegłego roku, językiem na "podstawach programowania" był Python. Mam też znajomych, którzy zaczynali od C i zdecydowanie mogę stwierdzić, że lepiej wyszli na tym ci drudzy. Fakt, męczyli się bardziej, ale przynajmniej coś teraz potrafią. Przejście na C++ było właściwie bezbolesne, a większość "Pythonowych" kolegów z mojego roku miało później gigantyczny problem z programowaniem strukturalnym w C. Teraz podstaw uczy się na mojej uczelni w C# i to jest wiodący język wykładowy (podstawy, obiektowe i właściwie każdego innego przedmiotu, który ma w sobie projekt programistyczny - inżynieria oprogramowania, fakultety w stylu podstawy heurystyki itd).

Jeżeli byłbym na miejscu wykładowców - zdecydowanie zacząłbym od ostrej nauki C i C++ w pierwszym roku. Być może jedne z najtrudniejszych na początek, ale zdecydowanie najwięcej dających. Python nie jest zdecydowanie moim ulubionym językiem, ma IMO zbyt dużo wad (poprana składnia, niespójna standardowa biblioteka, czasem miałem wrażenie, że twórcy przy niektórych wyborach rzucali kością) w porównaniu do innych opcji.

0
Rev napisał(a)

Python nie jest zdecydowanie moim ulubionym językiem, ma IMO zbyt dużo wad (poprana składnia, niespójna standardowa biblioteka, czasem miałem wrażenie, że twórcy przy niektórych wyborach rzucali kością) w porównaniu do innych opcji.

Nie zamierzam rozpętywać świętej wojny, ale jestem ciekaw co rozumiesz przez:

  1. "popapraną składnię", skoro Python jest uważany za jeden z języków o najbardziej eleganckiej składni,
  2. "niespójną bibliotekę standardową", skoro jest ona tworzona zgodnie z całym mnóstwem reguł spisanych w PEPach.

Będę też wdzięczny za przykłady, które pomogą zrozumieć mi Twój punkt widzenia.

P.S. Nie zamierzam się kłócić, czy trolować. Jestem tylko ciekaw.

0

python ma popapraną składnię, gdyż WYMUSZA pewne konwencje. Nie lubię gdy język mi coś narzuca, a zwłaszcza jeśli jest to formatowanie kodu. To co ty uważasz zapewne za zaletę tego języka, dla mnie jest jego wadą.

0

Tu się zgodzę. Blokowanie przez wcięcia na początku przeszkadza. Co prawda idzie się przyzwyczaić, ale nadal są problemy np. przy wklejaniu kodu czy otwieraniu źródła napisanego przez osobę mającą dziwnie ustawiony edytor.
Jednakże ten argument jest nie na temat. Wcięcia są spójne i wymuszają porządek w kodzie, zatem są przeciwnością "popapranej składni" ("paprać" jest synonimem takich słów jak "mieszać", "bałaganić" czy "brudzić"). Argument ten zatem tu nie przystaje.

0

Nie zakładam nowego tematu, bo ten zawiera problem podobny do mojego. Ów temat dał mi powód do zastanowienia. U mnie sytuacja wgląda trochę inaczej. Od pewnego czasu uczę się C++. Rozumiem, że warto również "liznąć" języka C ?

1

Ja uważam tak: najpierw naucz się programować, a potem ucz się samego języka. Najlepiej zacząć od języka który uczy pewnych nawyków: tj. ścisła kontrola typów itp. Jeśli załapałeś choć trochę jakikolwiek język programowania to zacznij się uczyć tego, w którym pisze Ci się najwygodniej aplikacje. Nauka C, przy dobrze ogarniętym C++ nie powinna zająć dłużej niż dwa dni i ogólnie uważam ją za zbędną jeśli nie planujesz pisać aplikacji na mikrokontrolery.

C,C++ nie wydają mi się językami dobrymi na początek. C ze względu na używanie adresów przy scanf, a C++ ze względu na to, że od samego początku rzuca na głęboką wodę: przeciążone operatory, szablony, przestrzenie nazw itp. (wydaje mi się, że osobie rozpoczynającej naukę może przysporzyć to wiele problemów - jak mi na początku, mimo tego że już wtedy byłem po kilku latach nauki Pascala - odwraca to uwagę od nauki samego programowania a skupia na kruczkach języka - jednak jak się już zna jakiś inny język to można spokojnie ogarnąć podstawy (składnię: podstawy, klasy, szablony itp.) w dwa tygodnie). Do samego rozpoczęcia nauki polecam Pascala, ze względu na to, że przyzwyczaja do typów, błędy wyświetlane są w prostej i zrozumiałej postaci. Jak tylko załapiesz podstawy proponuje od razu przesiadkę na C lub C++ (nieobiektowo), żeby nauczyć się wskaźników, c-stringów i ogólnie zagłębi Cię trochę bardziej w działanie tego wszystkiego. Potem proponuje nauczyć się tworzyć proste aplikacje obiektowe, chodzi tylko o liźnięcie jak działają klasy, hermetyzacja, polimorfizm (wydaje mi się, że przejście z C++ nieobiektowego na obiektowego jest dosyć płynne). Następnie proponuje przesiadkę na język bardziej obiektowy, żeby nauczyć się projektować aplikacje i wykorzystywać prawidłowo klasy: C# (lub coś innego .NETowego), Delphi/C++ Builder, ... (lub inne, ale innych nie testowałem to się nie wypowiadam). Potem już jest z górki i sam będziesz wiedział co robić.

W trakcie nauki C++ polecam liznąć podstaw assemblera. Dzięki temu niektóre rzeczy mogą się wydać bardziej zrozumiałe (np. jak nie wiesz "o co chodzi z tym całym stosem").

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