Cześć!
Mam problemy filozoficzne... Chcę:
- Łączyć rozwój, ciekawe projekty i biznes.
- Chcę programować nowoczesne aplikacje w C++ (na pohybel Java w wersji Script!!!).
2.1 Chcę programować modułowo.
By to wszystko osiągnąć mam zamiar stworzyć apkę edukacyjną (na wszystkie główne platformy czyli Android, Linux i WinDos).
Ta aplikacja nie ma być radosną twórczością nastolatka, tylko przemyślaną i zaprojektowaną apką w stylu aplikacji unix-owych. Jej architektura ma być następująca (numeruję poziomy logiczne):
1: [Moja biblioteka narzędziowa] oraz: [Biblioteka bazy danych]
2: [Biblioteka funkcji bazodanowych i klas zachowalnych]
3: [Program konsolowy]
4: [Nakładka w Qt] oraz: [Nakładka w NCurses]
Tu ważne jest że warstwą biznesową aplikacji ma być program konsolowy, natomiast okienka (ang. forntend) mają być zrobione zupełnie niezależnie. Ma to walory takie, że będę miał czysty silnik apki, bez żadnego syfu oraz skryptami w Bash-u czy Python-ie będę mógł dokładnie go przetestować.
Pierwotnie chciałem się nieco uniezależnić od Qt. Bo do momentu opublikowania tego dokumentu:
https://www.qt.io/blog/2019/08/07/technical-vision-qt-6
coraz dalej się oddalali od korzeni (opętała ich mania własnego języka Java w wersji Script). Ten dokument daje nadzieje że odświeżą warsztat C++ i to znacznie. Jest to o tyle ciekawe, że wcześniej zdawało się że niczego znaczącego w sferze C++ nie będzie.
Jednak cały problem polega na tym, że ta apka konsolowa nie może pracować bez pętli zdarzeń (której czysty C++ nie oferuje). Wynika to z tego, że muszę zapewnić jednoczesną (lub prawie jednoczesną) obsługę wysyłania danych pobieranych w wątkach z bazy danych i obsługę wiersza poleceń - chodzi o to, że wciąganie danych z bazy nie powinno blokować przyjmowania nowych rozkazów (w sumie martwi mnie też to, że wszystko będę pchał do GUI/TUI przez stdout, co prawie na 100% będzie powodowało lagi w aplikacji). To w Qt jest bez problemowe w pewnym sensie, bo zapewnia pętlę zdarzeń w QCoreApplication. Problem jaki obecnie ma Qt jest taki, że wątki nie mogą startować dowolnych funkcji typu std::function<>. Inny problem jest taki, że trzeba dociągać rdzeń bibliotek Qt do projektu.
Pytanie finałowe:
Jak Wy tworzycie aplikacje konsolowe (ew. demony) w C++ wymagające czegoś w stylu pętli zdarzeń?
Jeśli ktoś by powiedział, że powinienem stworzyć demona internetowego zamiast programu konsolowego, to powiem, że to było by strzelaniem z armaty do wróbla. Bo ma to być bardzo prosty programik konsolowy z nieco bardziej wyszukaną obsługą bazy danych (bo w tym kierunku również się rozwijam).
Z góry dzięki i pozdro!
Szyk Cech