Umiem C++ - Co dalej?

0

Witam.
Piszę gdyż dalej nie wiem co ze sobą począć ;]] Aktualnie uczęszczam do liceum ogólnokształcącego. Nauczyłem się języka C++ w stopniu średnio-zaawansowanym (przynajmniej tak mi się wydaje ;)) i myślę nad kolejnym. Zastanawiam się nad C#. Ponoć bardzo przydatny język. Jak myślicie dobry wybór? Czy polecacie coś innego (Dlaczego?)?
Pozdr.

0

Umiesz C++ to teraz naucz się programowania i projektowania. BTW - skoro znasz C++ to oczywiście boostem posługujesz się swobodnie?

0

IMHO znajomość języka to dopiero początek, tak jak napisał ... znajomość języka nie gwarantuje umiejętności programowania. Oprócz boost jest jeszcze STL przecież, o Qt nie wspominając ;)

0

@several, STL jest częścią C++, nie można mówić nawet o średniej znajomości C++ nie znając STL. To tak jakby znać C i nie umieć printf/scanf użyć. Boost to praktycznie niezbędne rozszerzenie standardu.

Liby do GUI są fajne, ale nikt nie każe tworzyć aplikacji GUI w C++. Poza Qt jest sporo innych, chociaż faktycznie, Qt jest bodaj najlepszym z dostępnych.

Język to tylko narzędzie, do zastąpienia dziesiątkami innych. Programowanie i algorytmika są w dużej mierze niezależne od języka.

0

To zależy w czym chcesz programować w przyszłości. Albo chociaż w jakiej branży. Jeśli np. kodować chcesz w branży webowej, to poleciłbym Ci może Pythona lub Ruby'ego -- myślę, że ten ostatni również w Polsce zdobędzie odpowiednią popularność za te 5 lat, gdy będziesz kończył studia :). A programistów PHP jest multum (Pythonowcy też się mnożą jak grzyby po deszczu). Możesz też ugryźć to od innej strony i nauczyć się JavaScriptu. Ale tak porządnie. Większość ludzi -- i prawie wszyscy w Twoim wieku -- używają tego języka na pałę. Tak naprawdę jest on bardzo potężny i bardzo ekspresywny. Poznając go dobrze, nauczysz się zupełnie innych "paradygmatów" niż te używane w C++: programowania funkcyjnego, dziedziczenia prototypowego, czy wykorzystania zalet (bo są i takie!) słabej typizacji. Aplikacje JavaScriptowe stają się coraz potężniejsze, potężniejsze i bardziej rozbudowane. W przyszłości myślę, że odsetek script-kiddies umiejących JS bardzo słabo spadnie. I wtedy będziesz mógł wejść Ty :). Dodatkowo, przy okazji nauki takiego JavaScriptu siłą rzeczy nauczyłbyś się uniwersalnych interfejsów, pomocnych w różnych językach programowania: wyrażeń regularnych i obiektowego modelu dokumentu (DOM). Nawet ten drugi przydaje się nie tylko w branży webowej -- choćby do obsługi XML-a.

Popularnym i być może "pewnym" językiem jest Java. Mnóstwo rzeczy biznesowych pisze się właśnie w niej. Dodatkowo, jest to dość prosty język, choć biblioteka standardowa jest bardzo rozbudowana. Można w Javie zarobić niezłą forsę, ale nie wystarczy znać (dość prostych) elementów samego języka. Trzeba znać odpowiednie biblioteki, sposoby kodowania itd.

C# nie wydaje mi się wcale głupim wyborem, choć niektórzy bardzo tego języka nie lubią. .NET jest dość popularny. Sytuacja jest tu podobna do Javy. Oprócz samego języka (który ma więcej syntaktycznego cukru niż Java) musisz wiedzieć sporo więcej.

Tak naprawdę muszę Ci przyznać, że nie wierzę Ci, że znasz już tak dobrze C++. Jeśli znasz, to gratuluję, ale... C++ to bardzo skomplikowany język. Sam język jest bardzo trudny do ogarnięcia.

Wiesz np. coś o dziedziczeniu wirtualnym / wirtualnych klasach podstawowych? Masz w małym palcu przeładowanie operatorów i wiesz czemu operatorów biblioteki iostream nie można przeładowywać używając metod składowych? Umiesz czytać deklaracje typu int walk(Node root, int (*visit)(Node n, int index)) (to nie hardcorowy przykład, tylko taki całkiem realny)? Znasz reguły konwersji typów?

Na razie to nie są jeszcze zaawansowane rzeczy, tylko takie bardzo średniutkie. A co z szablonami? W jakim stopniu masz je opanowane -- szablony funkcji i klas? Podstawy szablonów wciąż nie należą do rzeczy zaawansowanych, choć potem robi się... ciekawiej. Korzystasz swobodnie z STL-a? Albo z klas pomocniczych typu auto_ptr?

Jeśli na zbyt wiele z tych rzeczy odpowiedziałeś "nie", to możesz jednak nie być średnio-zaawansowany. Za takowego ja sam się uważam (mam w C++ za małe doświadczenie), a jestem już po dobrych studiach i pracuję jako koder (choć nie w C++).

Pamiętaj też, że oprócz samego opanowania języka liczy się bardzo, bardzo dużo rzeczy. W zasadzie opanowanie nowego języka od zera (tj. samych konstrukcji) dobremu koderowi przychodzi dość łatwo. Samo pisanie kodu wysokiej jakości jest jednak niezmiernie trudne. To w zasadzie nie wychodzi nikomu ;). Choć ci, co się bardzo starają, mają doświadczenie i wciąż się uczą, są w lepszej sytuacji niż pozostali.

Powiem Ci, jak to jest w moim wypadku. Staram się kupować średnio jedną branżową książkę miesięcznie. No dobra, średnio może wychodzi więcej niż jedna, bo jedna to raczej minimum. Czasem kupuję coś o nowym języku. Częściej kupuję coś o języku, który już jakoś umiem, ale chcę umieć lepiej. Ale wiesz, co ostatnio sobie kupiłem?

Knigę o algorytmach i strukturach danych -- ot tak, żeby pozostać w formie (na studiach było tego sporo, potem -- różnie). A teraz zamówiłem dwie kolejne książki. Jedna jest o testach jednostkowych. Co prawda w Javie, ale o wiele bardziej skupia się na samej idei testów, niż implementacji w konkretnym języku (jest bardzo prawdopodobne, że przez następny rok będę pisał testy tylko dla innych języków niż Java). Jeśli nie wiesz, co to testy jednostkowe, to mówię, że bardzo pomagają one utrzymać wysoką jakość aplikacji (automatycznie testują Twoją aplikację kawałek po kawałku). Nie jestem bynajmniej w tej dziedzinie totalnym n00bem -- miałem to na studiach, miałem w robocie, a ostatnio piszę własną implementację architektury testów XUnit do JavaScriptu (istniejące rozwiązanie, JSUnit, pod wieloma względami mnie nie satysfakcjonuję). Ale chcę być w tym lepszy, więc będę czytał.

Druga książka to legendarna pozycja ogólnie o pisaniu porządnego kodu: "Pragmatyczny programista". Długo walczyłem, by ją zdobyć i cieszę się jak głupi, że mi się udało, choć niestety zamówienie jeszcze nie zostało zrealizowane (mam nadzieję, że właśnie nie zapeszyłem).

Także, jak widzisz, język to nie wszystko.

0

@trzy_kropki masz całkowitą rację, wspomniałem o STL nie bez powodu, spotkałem się z osobami którzy twierdzili że na znajomość STL można machnąć ręką :D Qt, hmmm...mam od kilku dni dopiero i moje zdanie nie może być opiniotwórcze ale na razie jestem oczarowany ;)

0

@bswierczynski
Hmm... Gdzie chcę programować? W "marzeniach" widzę siebie za kilka lat w jakiejś większej korporacji (Google, Microsoft, ...) ;d

Uczyć się programować w C++ zacząłem w II klasie gimnazjum, gdy dostałem od kuzyna książkę "Symfonia C++". Strasznie mnie to wciągnęło i tuż po przeczytaniu/przerobieniu tej książki kupowałem następne. Z tych rzeczy co wymieniłeś to większość kojarzę.

PS. Jak przeczytasz książkę "Pragmatyczny programista" to byłbym Ci szalenie wdzięczny gdybyś powiedział coś o niej bo nie mogę nigdzie recenzji znaleźć. :)

0

ile pisałeś większych projektów w C++ ? Bo to, że umiesz pisać nawet w stopniu średnio zaawansowanym (mam namyśli znajomość odpowiednich bibliotek) to jeśli nic większego nie pisałeś to raczej coś napisz. Bo po pierwsze spotkasz się z nowymi problemami, których do tej pory nie napotkałeś oraz programowanie będzie przychodzić ci znacznie szybciej.

0

głównie chodzi mi o to aby ktoś skierował mnie na dobrą drogę żebym nie uczył się czegoś co kompletnie mi się nie przyda...

Większe projekty? hmm... Robiłem różnego typu ćwiczenia z książek, pomagałem na forach ale żeby napisać jakiś duży projekt to nie... nie mam żadnego pomysłu na coś takiego...

0

ehh kolejny ktoremu sie wydaje ze c++ opanowal ;]

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