Projekty dla osób z mocnymi fundamentami

0

Cześć, witajcie!

Zmieniam trochę branżę i przypominam sobie C++'a. Można powiedzieć, że mam solidne podstawy - ogarniam wskaźniki, znam mniej więcej stla, OOP, liznąłem C++11.
Jakie projekty byście mi proponowali, żeby było się czym pochwalić w CV?

Jak zastanawiałem się nad czymś to dużo rzeczy trzeba by robić z wykorzystaniem np. Qt, a to już nie wiem, czy trochę nie spowoduje, że odejdę od czystego C++?
Jakie jest Wasze zdanie?

Dziękuję

3

Pozwolę sobie na cytat @several , ponieważ wydaje mi się bardzo zbliżone do tego

Nie wiem, choć się domyślam. Pisząć w Qt ma się wrażenie, jakby autorzy bardzo chcieli sprawić, by programista czuł się jakby programował w javie. Wielgachne klasy z dwucyfrową liczbą metod, wszystkie niemal klasy będące któryś tam listkiem w drzewku dziedziczenia i wszystkie ze wspólnym przodkiem - QObject, klasy typu QAbstract* żadnych namespace'ów (EDIT: Qt5 jakieś się pojawiły), zautomatyzowanie zwalniania pamięci poprzez relację rodzic - dziecko obiektów pochodzących od QObject i przez to rzucające się wszędzie w oczy surowe wskaźniki. Nawet konwencja nazewnictwa jest javowa.

No i jest to trochę nie ce plus plusowe podejście obecnie, silnie obiektowe wzorce i wielkie klasy to nie droga do wydajnego korzystania z tego języka. Podejście Qt jest jeszcze całkiem naturalne jeśli zamkniemy się tylko w obrębie gui (guziki, layouty, dialogi itp.), ale był czas, że każdy feature miał być zamknięty w jednej wielkiej klasie (np. nieobecne już QHttp). Dzisiaj programiści C++ skupiają się raczej by ich kod był bliżej danych na których operują, bez żadnych fikuśnych abstrakcji. Stąd wzrost popularności bibliotek gui typu immediate mode jak dear imgui albo nuklear.

Czy to powód, żeby odrzucać Qt? Oczywiście że nie. Można psioczyć, że kobyła, że wielkie dllki, ale prawda jest taka, że Qt nie ma konkurencji jeśli chodzi o feature'y, wsparcie czy społeczność. Ma też tą, przyjemną cechę, że mimo swojego romiaru próg wejścia jest niski - możesz nie wiedzieć za co odpowiedzialne jest 3/4 frameworka a i tak zrobisz swoje własne gui ;)

No i razem z Qt dostaliśmy QtCreatora, bardzo niedocenianie IDE, które poleciłbym nawet w projektach, gdzie nie używa się Qt.

To co od siebie tylko dopiszę, to że szkoda, że nie ma jakiegoś sposobu na uruchomienie projektu vs z poziomu IDE Qt, ale to już taki off-top

Aktualnie, kiedy już lepiej się rozeznałem w QT jak i QML, to do produkcji GUI dla C++ ciężko jest sięgnąć po coś innego.

2

Qt daje Ci kilka komponentow ktore warto znac jesli bedziesz robil w GUI.
Ale IMHO wazniejsza biblioteka to Boost.

Do tego dolozylbym jakies rozwiazanie restowe / mikroserwisowe. Crow/mongoose/k8s/docker/zookeeper/redis/mongodb...
Bo w C++ mozesz pisac co chcesz ale fajnie by to bylo potem gdzies podpiac.

1

A ja bym doradził zainteresować się Cmake, bo możesz sobie bardzo dobrze znać język czy biblioteki, ale jeśli nie będziesz umiał zrobić projektu z ogarnięciem zależności to będziesz miał problemy. Do tego dodałbym jeszcze znajomość jakiegoś systemu dostarczania zależności, jak np. Conan.

0

Dzięki Wam za pomoc!
@GutekSan, CMake - nie pomyślałem o tym. To się na pewno przyda. Dzięki.
@vpiotr - to co wymieniałeś, to przykłady gier/aplikacji do napisania?
@BartoSAS - dzięki za odpowiedź. Właśnie coś takiego miałem na myśli, że trochę się odchodzi od różnych feature'ów C++'a przez Qt, ale z drugiej strony w samym C++ ciężko napisać coś kompletnego.

1

To co wymienilem to narzedzia do robienia backendu.
CMake plus CLion ulatwia robienie przenosnych projektow.
Poza tym jest cala galaz gamedev ktora rzadzi sie swoimi prawami (embedded tez chyba).

1

Mam takie wrażenie, że jak mamy taką możliwość, to trzeba wykorzystywać w tej nierównej grze dostępne środki, o ile podam teraz podam dobry przykład, C# - powców też nikt nie czepia się, że mają bardzo dobry zestaw w postaci .NET-a ;)

1
amiko napisał(a):

Zmieniam trochę branżę i przypominam sobie C++'a

Witam i powodzenia! Wybierając C++ nie wybrałeś najlżejszej drogi, szanuję i trzymam kciuki.

amiko napisał(a):

liznąłem C++11.

Jeżeli tylko liznąłeś to niestety nie możesz jeszcze uznać, że masz solidne fundamenty. C++11 ma już dziewięć lat i nie znam nikogo kto za regularne pieniądze będzie chciał pracować w projekcie gdzie obowiązuje starszy standard. Zaryzykowałbym nawet stwierdzenie, że obecnie ważniejsze jest dobre rozumienie move semantics niż dogłębne zrozumienie wskaźników, jako że to drugie obecnie spłaszcza sie głównie do wzorca observer pointer a samo żognlowanie wskaźnikami na prawo i lewo często jest wytykane na pull requestach.

amiko napisał(a):

Jak zastanawiałem się nad czymś to dużo rzeczy trzeba by robić z wykorzystaniem np. Qt, a to już nie wiem, czy trochę nie spowoduje, że odejdę od czystego C++?
Jakie jest Wasze zdanie?

Moje zdanie jest takie, że jeśli umiesz programować to frameworki i języki nie mają większego znaczenia. W trakcie kariery spotkasz się z wieloma bibliotekami czy frameworkami, każdy będzie miał jakąś swoją własną specyfikę i każdego narzedzia będziesz musiał się uczyć na nowo. Oczywiście, jeśli przyzwyczaisz się do Qt to potem pisanie bez niego będzie początkowo niezręczne, ale jeśli zachowasz otwarty umysł to będzie to tylko kolejny przeskok między technologiami w Twoim życiu. A o Qt warto mieć jakieś pojęcie, zdecydowanie najpopularniejszy, niezamknięty gui framework wśród ofert pracy.

amiko napisał(a):

Jakie projekty byście mi proponowali, żeby było się czym pochwalić w CV?

Ja bym zaproponował, żebyś najpierw napisać coś sam od zera, coś nietrywialnego co działa. Np. serwer czata z dostępnymi pokojami i klientem gui. Potem mógłbyś dodać do tego szyfrowanie. Jeżeli chcesz nauczyć się Qt to możesz napisać klienta poczty. Co prawda własne hobbystyczne projekty gorzej wyglądają w CV ale na początku zdecydowanie więcej się nauczysz robiąc kompletne rozwiązanie samemu niż naprawiając małe bugi w wąskim zakresie w większym projekcie.

0

Skoro liznąłeś C++11, to mało. Jeżeli teraz zabierzesz się za jakiegoś toola (np Qt) i za bardzo się na tym skupisz, to poznasz nowości z toola, a ogarnięcie nowszych standardów cepa (które trochę nowości względem 11 wprowadzają) niestety odejdzie na drugi plan.

Jeżeli ja chciałbym wrócić do cepa po jakimś czasie, to zrobiłbym jakąś nietrywialną libkę, która robi coś konkretnego i jest kompletna. Do takiego czegoś CLI w zupełności wystarczy. Ewentualnie bardzo cięką warstwę widoku w Qt, ale nie skupiałbym się nad tym zbytnio.

Pomysłów na samą libkę nie będę Ci wypisywał bo pełno tego w necie.

Powodzenia!

P.S. Za parę tygodni/miesięcy wróć ze statusem, jaką drogę wybrałeś i z jakimiś wnioskami (:

1

Dokładnie tak jak piszą poprzednicy - Cpp11 to już staroć. Pod koniec tego roku cpp20 będzie miało swoją premierę, a naprawdę to będzie duuuuuża premiera. Korutyny, zakresy, koncepty i moduły, to będzie piękna sprawa, dlatego warto już teraz się tym interesować. Jak do znajomości cpp20 dodasz jeszcze boosta i Qt5 + jakiś język skryptowy typu python, to będziesz solidnym kandydatem :P

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