Programuję od 3-4 lat i czuję, że nie mogę już być nazywany początkującym, ale czytam kilka pytań na tej stronie i myślę, że o WTF mówią? Tak samo czuję się, kiedy wybieram książki o programowaniu.
Przeczytałem kilka początkujących książek o programowaniu, niektóre o C / C ++, a inne o grach. Napisałem kilka bardziej złożonych rzeczy, takich jak bardzo podstawowy interfejs AI, szeregowy i TCP / IP.
Planuję zostać programistą gier, ale ostatnio zainteresowałem się systemami wbudowanymi po tym, jak miałem okazję nad nimi pracować (interfejs szeregowy).
Bardzo trudno mi było znaleźć materiały do dalszej nauki po ukończeniu wstępu i książek dla początkujących, ponieważ nie są to żadne pośrednie książki w C ++, które mogę znaleźć.
Jakich rad udzielisz mi, aby zwiększyć i poszerzyć moją wiedzę i umiejętności? Szczególne zasoby byłyby bardzo mile widziane.
Odpowiedzi:
Jeśli mówisz o C / C ++, na pewno możesz skorzystać z dodatkowego doświadczenia. Pierwszą wskazówką, którą ci dam, jest to, że C i C ++ to zupełnie inne języki . Najlepszym zasobem do nauki języka C ++ jest StackOverflow - jest tam wielu ludzi, którzy mają ogromne doświadczenie i wiedzę.
Następną rzeczą do zrobienia jest rozpoczęcie dużego projektu, na przykład próba napisania silnika grafiki 3D w niskopoziomowym interfejsie API, takim jak DirectX, a gdy twój projekt niefortunnie zawiedzie, jak robią to wszystkie pierwsze projekty, dowiesz się czegoś o tym, jak nie do programu.
Możesz sprawdzić ten link na StackOverflow, aby znaleźć dużą listę dobrych książek do nauki języka C ++.
źródło
Przede wszystkim zwiększ swoje podstawy teoretyczne w czymkolwiek, czego jeszcze nie znasz. Przestudiuj teorię i napisz kilka krótkich przykładów.
Przykładowe podstawowe podstawy teoretyczne obejmują:
Następnie rozważ naukę dodatkowego języka (na przykład Java lub C #). - Uczenie się dodatkowych języków pomaga lepiej wady i zalety każdego używanego języka i pomaga nauczyć się najlepszych praktyk, o których możesz nie wiedzieć.
Następnie wybierz nową domenę (programowanie internetowe, grafika komputerowa, przetwarzanie obrazu, widzenie komputerowe, dostęp do danych, ...). Przestudiuj teorię i napisz kilka krótkich przykładów.
Następnie utwórz duży przykład, który zawiera w sobie wielowarstwową aplikację, obsługującą dostęp do danych, interfejs użytkownika i określoną domenę, którą wybrałeś. Połóż nacisk na architekturę aplikacji (upewnij się, że jej części są możliwie luźno połączone).
Mamy nadzieję, że nauczysz się, jak uczyć się nowych podejść i technologii oraz integrować je z dobrą architekturą.
Specjalnie do programowania gier polecam wybranie następujących domen / technologii:
Edytować:
Jak się nauczyć:
źródło
Używając C ++ (w połączeniu z C) załóżmy, że będziesz miał więcej do nauczenia się rozumieć WTF, o którym mówią. C ++ jest kilkoma językami, kilkoma warstwami abstrakcji mieszkającymi w tym samym miejscu i odkrywanie go zajmuje dużo czasu, a następnie zrozumienie tego, co właśnie zobaczyłeś.
Byłem w twoim przypadku i wciąż uczę się o tych językach. Dużo się też uczę, pracując na systemach wbudowanych.
Oto moja rada:
Nie zakładaj, że wiesz już dużo o programowaniu. Większość programistów osiąga dojrzałość programistyczną dopiero po ponad 10 latach praktyki w świecie rzeczywistym, z innym kontekstem i rodzajem projektów, platform itp.
Właśnie zaczynasz swoją podróż.
źródło
W oparciu o twoje zainteresowania wbudowanym programowaniem i grami, polecam również następujące - możesz przejrzeć listy z powyższych postów, aby znaleźć dobre materiały źródłowe na wszystkie te tematy. Jedną z książek, które uznałem za niezbędne, była The C ++ Standard Library: A Tutorial and Reference
Jeśli nie znasz podstaw OOP - naucz się ich w pierwszej kolejności. Zrozumienie podstaw dziedziczenia i hermetyzacji. Dowiedz się, jak zachowują się słowa kluczowe wirtualne, publiczne / chronione oraz prywatne i statyczne.
Korzystaj ze wskaźników i odniesień (i ogólnie preferuj odniesienia). Naucz się i korzystaj z konstrukcji smart_ptr <>, aby osiągnąć „automatyczne” zarządzanie pamięcią.
Dowiedz się, jak korzystać z szablonów C ++ - początkowo jako typy danych kontenerów. Będziesz stale odkrywał nowe i bardziej zaawansowane techniki, które szablony C ++ mogą wykonywać za pomocą metaprogramowania.
Naucz się języka STL: używaj ciągów znaków, iostream, wyjątków i klas kontenerów i preferuj je nad typami danych char *, FILE * i char [], o ile jest to praktyczne.
Zacznij korzystać z części biblioteki Boost - polecam najpierw zapoznać się z ich biblioteką asio i wątków, biorąc pod uwagę twoje zainteresowania. Jest to bardzo wydajna, wieloplatformowa baza kodu C ++ o otwartym kodzie źródłowym, która umożliwia pisanie wysokiej jakości kodu, który jest również przenośny. (Wiele dodatków do podstawowego standardu C ++ pochodzi z wkładów Boost)
Baw się dobrze! Poważnie - wybierz kilka domowych projektów do kodowania. Może majstrujesz przy tablicach Arduino, jeśli lubisz osadzone projekty programistyczne.
Zdobądź trochę doświadczenia - jeśli używasz tylko Windows / Visual Studio C ++, spróbuj napisać kod dla Linux / g ++ lub OS X / XCode (możesz napisać C ++ na Macu lub naprawdę poszerzyć swoje horyzonty i przejść dla Celu C, aby zobaczyć, jak inna gałąź języków OOP rozwiązuje problemy!)
źródło