C++: Co dalej??

0

Elo. Jestem nowy i mam dopiero 13 lat a probuje pojac programowanie. Mam za soba kurs C++, WinApi i nie wiem co mam dalej robic. Nie wiem czego sie uczyc. Prosze o pomoci moze jakies stronki z kursami.
Z gory THX.

0

Ja też mam 13 lat, i co? Jakoś sobie radzę. Wymyśl co by tu można było zrobić (np. ja ostatnio robię biblioteki do WinApi) i rób to. A czego się uczyć? Hmm... Wszystkiego co może się przydać.

0

Może najpierw pytanie: co chciałbyś programować? Ze znajomością C++ i WinApi możesz douczyć się OpenGL/DX i pisać gry. Możesz też przerzucić się na coś wysokopoziomowego typu Java/.NET. Zawsze dobrym pomysłem jest nauczyć się SQL i ogólnie baz danych. To prawie wszędzie się przydaje.

0
kamil256 napisał(a)

Elo. Jestem nowy i mam dopiero 13 lat a probuje pojac programowanie. Mam za soba kurs C++, WinApi i nie wiem co mam dalej robic. Nie wiem czego sie uczyc. Prosze o pomoci moze jakies stronki z kursami.
Z gory THX.

a jestes pewien ze znasz C++ :> ?
mysle ze gdybys znal to bys nie zadawal takich pytan [diabel]

0

Cóż, takich tamatów było już sporo...
Skończyłeś kurs C++? Piszę w C++ od 7 lat, także komercyjnie i nie uważam abym znał ten język idealnie. Może dobrze by było sięgnąć po klasyczną pozycję w tym temacie - Thinking in C++, książka dostępna w wersji elektronicznej za darmo, po angielsku - http://helion.pl/online/thinking/index.html /był też projekt tłumaczenia na język polski ale z tego co się orientuję prace w toku/. Lepszej książki do ugruntowania i uporządkowania wiedzy o C++ po prostu nie ma. Następnie proponowałbym się nauczyć korzystania z biblioteki boost /sam mam to w TODO od wieków/, pokazuje ona jak duże możliwości ma C++, sama w sobie bardzo ułatwia życie. Możesz też opanować C++/CLI jako pochodną C++ na platformę .NET ale to raczej tylko zabawka.
A teraz przejdźmy do rzeczy ciekawszych czyli 'na C++ świat się nie kończy'. O ile C++ jest świetnym językiem do pisania oprogramowania, gdzie kluczowymi elementami są kontrola i wydajność to w wielu wypadkach liczy się chociażby wygoda użytkowania. Wypadałoby się naumieć języków skryptowych takich jak Python czy Ruby. Tego ostatniego męczę od jakiegoś czasu, przewyższa Pythona niemal pod każdym względem... Jest po prostu piękny, bliski mojego ideału języka skryptowego. Perla tykać nie radzę ponieważ Ruby zawiera wszystkie jego przydatne elementy + całą masę innych jeszcze upraszczających pracę. Python zaś jest popularny jako język do tworzenia rozszerzeń oprogramowania. Ogółem języki skryptowe umożliwiają błyskawiczne pisanie zwięzłego kodu przeznaczonego do konkretnych zadań /np. boty ircowe.. po moim # krążą dwa malutkie ale całkiem funkcjonalne skrypciki/. Pracując pod Windows dobrym pomysłem jest poznanie Powershella - nowej powłoki tekstowej i języka skryptowego nadbudowane nad .NET Framework. Dla niewtajemniczonych - Powershell to 'odpowiednik basha'... ~10x od niego lepszy :>.
Każda opanowana technologia i metodologia znacząco zwiększa Twoje możliwości i wartość. Znając C++ można zająć się assemblerem aby zrozumieć jak to wszystko działa, na czym polega optymalizacja... Zainteresuj się też językami funkcyjnymi, jak Lisp /nie jest czysto funkcyjny/ albo Haskell. To zupełnie inne spojrzenie na programowanie, w pewnym momencie dojdziesz do wniosku, że w wielu zastosowaniach języki imperatywne, w rodzaju C++ to 'Zuo'. Ciekawym wyborem jest też F# - pochodna OCamla /krewniak haskella/ dla .NET rozwijana przez Microsoft. Napisałem w nim dotychczas raptem kilka linii ale muszę przyznać iż pewną klasę problemów rozwiązuje się w nim najwygodniej ze wszystkich języków .NET /może za wyjątkiem IronRuby ale to projekt we wczesnej fazie rozwoju/.
Hm, wielokrotnie wspomniałem o .NET Framework, dlaczego? To przyszłość. Umożliwia znacznie szybsze rozwijanie bezpieczniejszego, przenośnego oprogramowania niż języki natywne. Podstawowym językiem jest tu C#, bliższy raczej Javie niż C++.
Mógłbym pisać jeszcze długo ale plan minimum jeżeli o języki chodzi wygląda tak: dobrze opanowany C++ /niedługo wychodzi nowy standard, pewnie wiele osób na forum już sobie na niego ostrzy zęby/, assembler, coś skryptowego, coś do szybkiego tworzenia aplikacji, najlepiej na .NET... i mile widziana znajomość języków stricte obiektowych i funkcyjnych, znacznie poszerzają spojrzenie na programowanie.
Ale... język programowania to tylko narzędzie. Ważniejsza jest umiejętność rozwiązywania problemów niż zaimplementowania rozwiązania w N językach. Tutaj przychodzi algorytmika i matematyka, zwykłe klepanie kodu to pestka w porównaniu z rozwiązywaniem problemów, do którego to właściwie sprowadza się programowanie.
Hm, tak w sumie to rok temu mój plan jeżeli chodzi o zastosowania naukowe sprowadzał się do assemblera, C++ i Common Lispu, komercyjne zaś to C/C++ i C# głównie. W praktyce nie ma jednak co się ograniczać, używa się tego, co jest w danym momencie potrzebne\przydatne. Znajomość większej liczby problemów i narzędzi zdecydowanie wyjdzie Ci na plus.
Branża informatycvzna jest zdecydowanie najbardziej wymagającą po medycynie. Tu nie da się zatrzymać w miejscu, trzeba cały czas się rozwijać, staniesz na chwilę - przepadłeś. Nawet już nie liczę ile miesięcznie książek technicznych czytam. Jeżeli chcesz kiedyś być programistą musisz wiedzieć na co się piszesz. Tak w sumie całe to programowanie najchętniej pie......bym w ch*, mówiąc dosadnie, gdybym tylko miał taką możliwość i zająłbym się czymś ciekawszym. Zapewne wiele osób z tego forum ma podobne odczucia.

manfredek napisał(a)

(np. ja ostatnio robię biblioteki do WinApi)

Hm, ciekawe... WINAPI to jest zbiór bibliotek interface'u programowania pod Windows. Możesz podać jakieś konkrety?

cepa napisał(a)

a jestes pewien ze znasz C++ :> ?
mysle ze gdybys znal to bys nie zadawal takich pytan [diabel]

Opanowane podstawy to może i ma, na sensowne poznanie C++ potrzeba kilka lat praktyki.</quote>

0

Ja bym również proponował nauczyć się OpenGL / DX i napisać jakąś, nawet prostą, grę - wtedy zobaczysz, że mimo wszystko nie znasz jeszcze C++ :P

A tak poza tym, to polecam nauczyć się jeszcze jakiegoś języka, by mieć nieco szersze spojrzenie na programowanie. Może to być Java albo .NET, albo coś zupełnie innego niż C++, np. Python, Perl czy Ruby albo zupełny hardkor typu Haskell czy Common Lisp / Scheme, jak wolisz ;)

0
deus napisał(a)

na sensowne poznanie C++ potrzeba kilka lat praktyki.

dokladnie :)

a co do powyzszego tematu, to hmm uczenie sie po to aby sie naumiec jest delikatnie mowiac bez sensu, lepiej wyznacz sobie jakis cel, miej jakas wizje, jezeli bedzie trudna do zrealizowania to nawet jezeli sie nie uda zawsze ci cos w glowie zostanie bo najszybsza nauka jest przez praktyke :P

0

Wiem, wiem, czasami coś tak u mnie w mózgu nie działa jak trzeba. Chodziło o biblioteki DLL z funkcjami ułatwiającymi pisanie w WINAPI.

0
deus napisał(a)

(...)

Hmm... Wpadłem w kompleksy ^^
Jaki jest wymierny zysk z poznania tego wszystkiego, co napisałeś?
Czy lepiej znać wiele języków wyrywkowo, czy poznać dogłębnie jeden i jego wszystkie biblioteki oraz kompatybilne z nim technologie?
Lepiej być specjalistą, czy wszechstronnym?

0

@up -> dokładnie tak, jak napisał w poście: ważnym jest, by umieć programować, język to tylko narzędzie. Z własnego doświadczenia potwierdzę, że douczenie się nowego języka to później już tylko formalność ;)

0

Bzdury gadacie :P Zgodze się, że samego języka nauczyć się to nie problem tyle, że sam język jest nie wiele warty bez bibliotek i frameworków. Kto nie wierzy niech spróbuje nauczyć się w miare dokładnie J2EE i pokrewnych technologii w mniej niż pół roku :P

0

Ty też bzdury gadasz, bo najważniejsze to nauczyć się programować, myśleć algorytmicznie itp. Krótko, bo było wałkowane wiele razy.

0

Czy gdzieś napisałem, że myślenie algorytmiczne nie jest ważne ? :P
IMHO nauka technik jest tak samo ważna jak nauka matmy i algorytmów, a podejście typowo uniwersyteckie (0 technik 100% matmy) jest troche przestarzałe. Może kiedyś było słuszne, kiedy się klepało w prostym do nauczenia C czy assemblerze ale teraz wszystko mocno się pokomplikowało. Jak już mówiłem jeżeli ktoś nie wierzy niech spróbuje sił z J2EE.

0

Od poznawania bibliotek i frameworkow jest dokumentacja i doswiadczenie. Wiesz jaka jest roznica miedzy prawdziwym programista a poczatkujacym? Ten drugi czeka na gotowca albo zadaje milion pytan na forum o, w gruncie rzeczy, blahostki badz rzeczy, ktore znalazby po 5 minutach na google. Prawdziwy jezeli juz o czyms nie wie to szuka w google badz na forum slowa klucza. Typu Hibernate, AJAX, serializacja, nazwa algorytmu, itp. Po czym bierze dokumentacje do tej np. biblioteki czy technologii i jest w domu. Of coz lepszy programista znajacy juz biblioteke, ale ten nieznajacy w razie czego potrzebuje relatywnie niewiele czasu by ja ogarnac do wykonania zadania. To jest roznica. A wszystko opiera sie na tym co pokrotce napisal Dziex.

0

d poznawania bibliotek i frameworkow jest dokumentacja i doswiadczenie.

Doświadczenie, które trzeba jakoś zdobyć, a na pewno go się nie zdobędzie siedząc 5 lat w algebrze abstrakcyjnej i równaniach róniczkowych.

Wiesz jaka jest roznica miedzy prawdziwym programista a poczatkujacym? Ten drugi czeka na gotowca albo zadaje milion pytan na forum o, w gruncie rzeczy, blahostki badz rzeczy, ktore znalazby po 5 minutach na google. Prawdziwy jezeli juz o czyms nie wie to szuka w google badz na forum slowa klucza. Typu Hibernate, AJAX, serializacja, nazwa algorytmu, itp. Po czym bierze dokumentacje do tej np. biblioteki czy technologii i jest w domu

To chyba mówisz o programiście bardzo początkującym albo o kimś kto nigdy programistą nie będzie. Poza tym sporo upraszczasz - brzmi to tak jakby każdy framework był tylko zbiorem funkcji do których wystarczy przeczytac opis i zacząć wymiatać. Chyba zapomniałeś, że z bardziej innowacyjymi frameworkami wiążą się zazwyczaj nowe koncepcje, które najpierw trzeba zrozumieć. I żeby nie być gołosłownym przytocze może wypowiedź jednego z pracowników IBM:

Jeśli programista obeznany z technologią obiektową chce samodzielnie nauczyć się programowania w Javie, filozofii J2EE i technologii serwera aplikacji WebSphere, będzie musiał zapoznać się z treścią około 3000 stron podręczników. W sumie zajmuje mu to około 5 miesięcy

Więc chyba jednak nie wystarczy wpisać w google 'Hibernate' przejrzeć kawałek dokumentacji :P

0

Ha! Tu Cie mam ;)

Jeśli programista obeznany z technologią obiektową[...]

To 'jesli' jest bardzo istotne. Bo cala ta teoria i opanowanie algorytmiki oraz roznych paradygmatow programowania pozniej pozwala wlasnie sprowadzic problem do przeczytania dokumentacji. To raz. Po drugie - 3000 stron czytam w tydzien. To pozwala mi sie zapoznac z mozliwosciami tego o czym czytam. Czyli po takiej lekturze (z ktorej i tak polowe moge ominac, bo to przyklady zastosowan zwykle) wiem na co przykladowe J2EE stac, tak? Wiem co mozna a co nie. Teraz dostaje problem. Java nie stanowi problemu bo znam podejscie obiektowe, a Java to kolejny przyklad jezyka. Zatem biore sie za opis problemu za pomoca algorytmiki, pozniej za to czego bede potrzebowal w sferze mozliwosci platformy sprzetowej i programowej. I jak juz wiem czego potrzebuje to pamietajac, ze J2EE to potrafi szukam konkretnych rozwiazan i implementuje je. I tutaj juz nie musze czytac tych 3000 stron, tylko wybrane elementy.

Inny przyklad z zycia. Swego czasu nie wiedzialem co to AJAX (wiem, wiem, zupelnie inna skala, ale zadna roznica). Wielki szum, ze to nowa technologia, cuda, niedziwy, wpisalem w google'a, znalazlem pierwsza lepsza biblioteke (advAJAX), opis zastosowania i pierwsza mysl: 'W morde, tyle szumu o pare linijek kodu?'. Podobnie, choc wiecej czasu oczywiscie zaczynala sie moja przygoda z C#. Najpierw srodowisko, tutaj latwo, troche czasu na odnalezienie sie w dokumentacji i juz. Przeciez nie musze czytac calego msdn, zeby wiedziec jak napisac nie wiem jak skomplikowana stronke w ASP.net czy aplikacje WindowsForms, co?

A przy tym Java to nieco nietrafiony przyklad bo jakby wszystkie technologie mialy taka dokumentacje i tutoriale jak Java to by bylo pieknie ;)

PS. A doswiadczenie w temacie oczywiscie robi swoje, bo tego teoria nie zastapi. Ale pamietaj, ze doswiadczenie tez nie zastapi teorii. Dluzej bedziesz je po prostu zdobywal, stad obydwa elementy sa niezwykle istotne.

0
rnd napisał(a)

Czy gdzieś napisałem, że myślenie algorytmiczne nie jest ważne ? :P
IMHO nauka technik jest tak samo ważna jak nauka matmy i algorytmów, a podejście typowo uniwersyteckie (0 technik 100% matmy) jest troche przestarzałe. Może kiedyś było słuszne, kiedy się klepało w prostym do nauczenia C czy assemblerze ale teraz wszystko mocno się pokomplikowało.

Powiem tak. Bzdura.
Studiuję na uniwersytecie i miałem zajęcia np. o javie EE(JPA,sewlety, JSP, struts, JSF), XML(DTD, Schema, XQuery, XSLT), .Net(asp i aplikacje desktopowe).
Mówiąc "miałem zajęcia" mam na myśli, że musiałem zrobić w tym co najmniej jeden większy projekt.
Aktualnie uczę się GWT, RoR, GoG, Springa...

Ale to oczywiści też zależy jakie kto wybiera zajęcia. Z drugiej strony niektóre teoretyczne też są fajne.

0

Tu bardziej chyba chodziło o fakt, że jak nie ma metody .LoadFromFile() to nie jest możliwe odczytanie zawartości pliku tekstowego. Pomijam fakt, że na sieci nie ma komponentu TGotowyProgram. Całość opiera się o to, że coraz bardziej wysokopoziomowe programowanie zaciera coraz bardziej szczegóły implementacyjne a nie ma fizycznej możliwości napisania metod na wszystkie problemy świata. A zresztą co będę się rozpisywał. Zapraszam do działu newbie. Nie ma klasy - nie ma możliwości napisania programu.

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