konto usunięte

Temat: Rozwój C++ na studiach

Dariusz R.:
No bez przesady. Np. nie sądzę żeby ktoś odpadł w prostym zadaniu typu FizzBuzz, zadanie które wyświetla "Fizz" dla liczb całkowitych podzielnych modulo przez 3, "Buzz" dla liczb podzielnych przez 5 oraz "FizzBuzz" dla liczb podzielnych jednocześnie przez 3 i 5, dla reszty wyświetlą się te liczby. Gorzej jest z Codility, tam zadania wcale nie są takie proste, tym bardziej że muszą być rozwiązane w określonym czasie a są firmy które rekrutują przy użyciu tego narzędzia. Na odesk.com są testy kompetencyjne C++ tylko trzeba się tam zarejestrować.

Akurat to czytałem w innym wątku, i ponoć tak jest. Ja tego nie wiem
jeszcze nawet nie byłem na takiej rozmowie :)

Dariusz R.:
Coś co później może się przydać a przy okazji można się tym pochwalić. Jakiś menedżer finansów, odtwarzacz multimedialny, gra czy cokolwiek. Na początku z tym ciężko ale z czasem zaczniesz pisać coraz bardziej poważne projekty, o ile dobrze czujesz się w C++ bo ja osobiście wolę Delphi.

Grę prostą napisałem w C++/CLI. Lepiej czuje się w samym C++.
I zamierzam skorzystać też z rad starszych kolegów z początku wątku.
Dariusz R.:
Książka nic nie da. Jest taki megatutorial "Od zera do gier kodera", z kilkaset stron o C++ i to za darmo. Ale to dotyczy nauki języka, są tylko proste przykłady. Dopiero praktyka coś wniesie.

Chodziło mi o taką książkę która zaczyna się od tego że znasz
paradygmat programowania obiektowego, przeciążanie operatorów i etc.
I zaczyna się coś na wyższym poziomie, wyzwanie .
Dariusz R.:
Nie wiem skąd to przekonanie, że lepiej uczyć się popularnych języków ze względu na ilość ofert pracy. Z pewnością łatwiej będzie pracodawcy zastąpić kogoś n-tą liczbą studentów. Czyż nie jest tak?

Nie chodziło mi o pracę w C#. Bardzo lubię C++ ale C++/CLI już niekoniecznie
a pozatym chyba tylko do celów akademickich jest wykorzystywany.
Dlatego doszedłem do wniosku że warto zająć się C++ a przejście na C# w razie
konieczności (program windows forms) nie będzie niczym strasznym bo przecież to łatwiejszy język.
Wolałbym się zająć pisaniem driverów czy coś w tym stylu w C++ ale umieć też w C# napisać
ładny programik okienkowy.

konto usunięte

Temat: Rozwój C++ na studiach

Nowego języka można się nauczyć dość szybko, problem jest wtedy gdy przyjdzie coś w nim napisać. A chodzi o dostępność bibliotek i czas który jest potrzebny na napisanie aplikacji. W C++ też można pisać aplikacje okienkowe, do tego jest wxWidgets, więc nie tylko pod Windows. Ale problem jest następujący. Bardzo dobrze czuję się w aplikacjach okienkowych dla Windows a najczęściej używam Lazarusa, odpowienika Delphi więc z przyzwyczajenia i znajomości dostępnych tam komponentów pisanie programów idzie bardzo sprawnie i szybko. Ale próbowałem coś napisać przy użyciu wxDEV C++ (a C++ znam od dawna, tylko w tym nie piszę) i niestety muszę powiedzieć jedno. Z braku przyzwyczajenia i doświadczenia w tym kompilatorze tworzenie aplikacji idzie niestety dość ciężko. Że już nie wspomnę o połączeniach z bazą danych SQLite czy Firebird, komponentach DBGrid. To niestety nie taka prosta sprawa. W Builderze sprawa byłaby znacznie prostsza. Ktoś kto już długo w tym siedzi będzie bez problemu radził sobie z wxDEV C++ ale niech tylko spróbuje przejść na inny kompilator, już nie mówiąc o innym języku.
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Rozwój C++ na studiach

Devc++ to nie kompilator, a środowisko, uzywany jest kompilator gcc. Można użyć wx-ów, a można użyć róznych innych bibliotek do tworzenia GUI. Nie ma znaczenia. Builder ma jedną poważną wadę, jest na bakier ze standardem, dodatkowo generuje mało optymalny kod.... Jeśli mam coś już zrobić w środowisku, to wolę to zrobić jednak w Delphi, a kody które mam najwyżej przerzucę do bibliotek i skompiluję innym kompilatorem. Builder jest może mniej przekombinowany niż C++ z CLI, ale tu też kombinacje nie wyszły mu na dobre.

konto usunięte

Temat: Rozwój C++ na studiach

Za to w wxDEV C++ GCC nie wiem dlaczego wygenerował mi plik EXE o rozmiarze aż 10 MB w przypadku prostej aplikacji z jednym okienkiem, czego nie powiedziałbym o Builderze. Poza tym jest różnica między VCL a wxWidgets. Racja, DEV C++ to nie kompilator a jedynie środowisko. Ale niestety dość toporne dla kogoś kto jest przyzwyczajony do DELPHI.
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Rozwój C++ na studiach

Dariusz R.:
Za to w wxDEV C++ GCC nie wiem dlaczego wygenerował mi plik EXE o rozmiarze aż 10 MB w przypadku prostej aplikacji z jednym okienkiem, czego nie powiedziałbym o Builderze.

Kwestia opcji kompilatora....
Poza tym jest różnica między VCL a wxWidgets.

Jeśli zamiast użyć dll-ki wkompilujerz kod, a dodatkowo nie ustawisz stripowania, to fakt - będzie kiepsko.
Racja, DEV C++ to nie kompilator a jedynie środowisko. Ale niestety dość toporne dla kogoś kto jest przyzwyczajony do DELPHI.

Zgadza się toporne, dlatego od wieków go nie używam (ostatnio chyba używałem coś w okolicach 2004-2005). Jako ciekawostkę powiem, że powstało jako odprysk projektu stworzenia alternatywnego środowiska dla Delphi (który umarł) i jest napisane w Delphi.

konto usunięte

Temat: Rozwój C++ na studiach

Arkadiusz W.:
Zanim skończę studia jeszcze 4 lata, na zajęciach zawsze był jakiś projekt do zrobienia, różne wyzwania nad którymi trzeba było trochę pogłówkować. Trzeba pisać kod żeby być coraz lepszym, tylko co pisać ?
Jeśli brakuje Ci zadań a'la uczelnia, to możesz skorzystać z http://uva.onlinejudge.org - dużo zadań typu konkursowego o różnym stopniu trudności.

konto usunięte

Temat: Rozwój C++ na studiach

Dobre jest to:

http://www.codility.com/train

Niektóre zadania mają rozwiązanie.
Mateusz Mirkowski

Mateusz Mirkowski Co-Founder @ Visent
Coders

Temat: Rozwój C++ na studiach

Moim zdaniem trudno o pracę znając tylko C/C++. Jakiś czas temu wertowałem rynek pracy i ogłoszeń było mało. Głównie rzucał się w oczy znany operator telewizji cyfrowej i pewna koreańska firma. Oczywiście C/C++ jest bardzo szeroko wykorzystywany tak jak Tomek wspomniał: game dev, systemy embedded, tylko że w Polsce niedużo jest takich firm. Owszem w ciągu ostatnich kilku lat game dev przeżywał rozkwit, mnóstwo firm powstało, ale i tak sytuacja nie jest wcale taka dobra. Poza tym inaczej sytuacja wygląda dla starych wymiataczy z kilkuletnim stażem, a inaczej dla jakiegoś gostka po studiach. Temu drugiemu o wiele trudniej znaleźć pracę. Jasną sprawą jest to że pod kątem rynku pracy lepiej uczyć się C#, Objective-C czy tam Rubiego. Tak powinny postąpić osoby niezdecydowane czego się uczyć i bez większych preferencji. Z drugiej strony jeśli jesteś pasjonatem, to pasjonat zawsze(no prawie) znajdzie pracę w tym czego się uczył. Prędzej czy później zostaniesz dostrzeżony. Co do C# to ostatnio mogłem się sam przekonać jak trudno znaleźć programistę z podstawowym poziomem programowania w tym języku. Chętnych brak.

Co do C/C++ na studiach, to i u mnie (PJWSTK) sprawa wygląda dosyć słabo. Na początku była Java(2 semestry) a potem semestr C/C++ i zaczęła się jazda: a po co te wskaźniki, a te destruktory to trzeba robić itp? Dlatego właśnie jak ktoś zna C/C++ to praktycznie każdy nowoczesny, popularny język będzie prosty. Wracając do studiów to faktyczne C/C++ do algorytmów się bardzo przydaje i mogę to potwierdzić. Większość ludzi pisała zadania w Javie i się męczyła(a to żeby zadanie wykonać, a to żeby nie przekroczyć założonego czasu itp.), dlatego najlepiej było pisać właśnie w C lub C++. Generalnie programowanie niskopoziomowe umiera na uczelniach, większość stawia na Javę, niektóre na C#. U mnie niestety jest wałkowana Java. Mimo że są specjalizacje niskopoziomowe to oczywiście nie muszę mówić, że chętnych jest mało i rzadko są uruchamiane, a jedna jest bardzo ciekawa: "systemy równoległe i rozproszone".Ten post został edytowany przez Autora dnia 11.06.13 o godzinie 23:00

konto usunięte

Temat: Rozwój C++ na studiach

Sama nauka języka to nie jest żaden problem, zresztą C# jest dość prosty i cechuje go pewne podobieństwo do C++, podobnie JAVA.

Tu jest przykład tworzenia sieci neuronowych w C#:

http://codeguru.geekclub.pl/baza-wiedzy/komputer-prawi...

Co więcej, to można dość łatwo przetłumaczyć na C++/pascal/python czy jakiś inny język programowania o ile ktoś zna te języki i ma jakieś doświadczenie.

Problem jest inny. Nie wiadomo jakie technologie będą za 5 lat, teraz można uczyć się JAVA albo C# i coś w tym tworzyć, problem jest taki, że jeżeli trzeba się przekwalifikować na jakiś inny język np. python, to ten język jest bardzo prosty, problem jest tylko z praktycznym wykorzystaniem tego. Kwestia praktycznego doświadczenia w nowym języku i przyzwyczajenia do nowego środowiska np. BOA constructor w pythonie.
Mateusz Mirkowski

Mateusz Mirkowski Co-Founder @ Visent
Coders

Temat: Rozwój C++ na studiach

Czy ja wiem czy trudno przewidzieć co będzie na topie za 5 lat? Wystarczy na Tiobe porównać języki popularne dziś, a jakie były 5 lat temu. Wyraźnie widać, że tylko Objective-C zyskało bardzo dużo na popularności, ewentualnie można wyróżnić Ruby czy inne tego typu języki. Moim zdaniem dużo za kilka lat się nie zmieni, musiałaby się dokonać mega rewolucja, że nagle będziemy programować jakieś hologramy jak w Star Wars i to będzie się wiązało z innym podejściem do programowania(taki przykład tylko). Technologie się zmieniają mocno, a języki na razie niewiele.
Krzysztof Z.

Krzysztof Z. programista C++, C#,
VB, VBA, PHP,
javascript,HTML,
Pytho...

Temat: Rozwój C++ na studiach

Ja piszę w C++ WinApi. Moim zdaniem ważne są dwie rzeczy: umiejętność tworzenia rozwiązań (algorytmów) i umiejętność wykorzystania funkcji systemowych, bibliotecznych etc. etc. a to wymaga doświadczenia.

A tutaj mój open sourcowy program napisany w C++ WinApi: http://registry.gimp.org/node/25571
łączy on umiejętność tworzenia własnych algorytmów z umiejętnością praktycznego wykorzystania funkcji systemowych.

konto usunięte

Temat: Rozwój C++ na studiach

Krzysztof Z.:
Ja piszę w C++ WinApi. Moim zdaniem ważne są dwie rzeczy: umiejętność tworzenia rozwiązań (algorytmów) i umiejętność wykorzystania funkcji systemowych, bibliotecznych etc. etc. a to wymaga doświadczenia.

Jedno i drugie wymaga doświadczenia bo w pierwszym przypadku nie chodzi wcale o stworzenie jakiegoś algorytmu naiwnego o złożoności O(n^2) tylko zoptymalizowanego (np. O(n)) i to jeszcze odpornego np. na warunki ekstermalne. W tym przypadku testy Codility mogą pokazać, że programista nie jest aż tak dobry w algorytmach jak by mu się wydawało. No ale tam są oderwane od rzeczywistości (ale czy aby napewno?) zadania gdzie trzeba być jednocześnie dobrym matematykiem.

A to drugie to też kwestia odpowiedniego środowiska bo zupełnie inaczej wygląda praca w Builderze (VCL) a co innego to DEV C++ (wxWidgets).

Poza tym język to też nie taka prosta sprawa bo ostatnio przenosiłem pewien kod z pascala (a wcześniej z C#) na pythona a tam nie ma czegoś takiego jak przeciążenie funkcji czy konstruktorów, więc nie chodzi tu już tylko o szybkie klepanie kodu. Tak czy inaczej jeśli się pisze bez zastanowienia to różne rzeczy wychodzą.

konto usunięte

Temat: Rozwój C++ na studiach

Krzysztof Z.:
Ja piszę w C++ WinApi. Moim zdaniem ważne są dwie rzeczy: umiejętność tworzenia rozwiązań (algorytmów) i umiejętność wykorzystania funkcji systemowych, bibliotecznych etc. etc. a to wymaga doświadczenia.

Zgadzam się. BTW: bardzo fajne masz te projekty :) Takich programistów - z pasją - zatrudniałbym w ciemno.
Krzysztof Filipek

Krzysztof Filipek Programista C++

Temat: Rozwój C++ na studiach

Próbuj brać sobie projekty w tym języku, które są w miarę ciekawe to Ci się on nie znudzi zbyt szybko.
W poprzednim semestrze zrobiłem z kolegą coś takiego: http://www.youtube.com/watch?v=1CX89q1JXqk
A z rozmowy kwalifikacyjnej pamiętam, że sporo pytań dotyczyło polimorfizmu i trochę może wątków, więc na to też warto zwrócić uwagę.
Było kilka takich smaczków z C++ o których się niedawno dowiedziałem, ale musiałbym zobaczyć kod, żeby sobie przypomnieć :)
Na stronie Bjarna kiedyś znalazłem dużo UB (Undefined Behaviour) w jego FAQTen post został edytowany przez Autora dnia 15.06.13 o godzinie 14:42

konto usunięte

Temat: Rozwój C++ na studiach

Moim zdaniem jeśli chodzi o sam C++:
1. Poznać standard C++11, smart pointers
2. Biblioteka boost, szczególnie boost::asio, boost::threads
3. STL
4. Metaprogramowanie

Znajomość języka (nie tylko pętle, ale polimorfizm, templejty i cała reszta) obowiązkowa. Dowiedz się też dlaczego std::auto_ptr to zło.

Do tego:
1. wzorce projektowe (design patterns)
2. TTD (test driven dev.)
3. RAII

To są zagadnienia niezależne od systemu operacyjnego i rodziny kompilatorów. Do tego algorytmika. Obawiam się, że na kursie akademickim może zostać wspomniana jedynie STL, może jakiś prosty wzorzec lub test, raczej jako sygnalizacja że takie coś istnieje, niż ćwiczenia praktyczne. Cała reszta to wykorzystanie gotowych bibliotek, czasem uniwersalnych (zlib, opengl), czasem specyficznych dla poszczególnych systemów.

Z książek (jeśli koniecznie musisz kupować papier), to tylko te, które omawiają standard C++11. Cała reszta to strata pieniędzy i miejsca na półce



Wyślij zaproszenie do