-
1. Data: 2024-11-17 18:11:03
Temat: 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
Od: ??Jacek Marcin Jaworski?? <j...@a...pl>
7. Raport Totaliztyczny: Sprawa Qt Group
1 Metadane
autor: [1]Jacek Marcin Jaworski
pseudonim: [2]Energo Koder Atlant
pomocnicy autora: BRAK
miejsce: Pruszcz Gd.
utworzono: 2023-08-20 (org. przed ustaleniem standardu Rap. Tot.)
wersja: 424 z dnia: 2024-11-17
program składu: Libre Office Writer
sys. op.: Kubuntu
Spis treści
[3]1 Metadane 1
[4]2 Wstęp 2
[5]2.1 Teza 2
[6]2.2 Streszczenie 2
[7]2.3 Słownik Pojęć 2
[8]3 Mój oryginalny wkład 3
[9]4 Metoda badawcza 3
[10]5 Fakty 3
[11]5.1 Czym jest bibl. Qt? 3
[12]5.2 Obecny stan prac nad Qt: 4
[13]5.3 Czym jest QML? 4
[14]5.4 Obecny model biznesowy Qt Group 4
[15]5.5 Rozwiązania celowo popsute w bibl. Qt (mowa tu o tym co
można używać z poziomu C++) 5
[16]5.6 Brak reakcji na raportowane błędy i na pomysły
racjonalizatorskie 7
[17]5.7 Jakie wsk. moralnej poprawności "są na tak" a jakie "są
na nie" wzg. firmy Qt Group 8
[18]6 Analiza proj. Qt Group w świetle wsk. moralnej
poprawności zwanym Kultura ekonomiczna i własne utrzymanie 12
[19]7 Podsumowanie 12
[20]7.1 Rewelacje, zalety, wady i partactwa w proj. Qt Group 13
[21]7.1.1 Rewelacje 13
[22]7.1.2 Zalety 13
[23]7.1.3 Wady 13
[24]7.1.4 Partactwa 13
[25]7.2 Wnioski 14
[26]7.2.1 Wątpliwy jest sens przepisywania Qt od zera wynika to
z wad C++ 14
[27]7.2.2 Wątpliwy jest też sens przepisywania Qt od zera w j.
D wynika to z wady j. D 14
[28]7.3 Przewidywania na przyszłość 15
[29]7.4 Zalecenia na teraz 15
[30]7.5 Zalecenia na przyszłość 15
[31]8 Bibliografia 16
2 Wstęp
Qt Group dostarcza wieloplatformową bibliotekę programistyczną
Qt dla języka C++. W latach 1991-2008 bibl. Qt w j. C++
zakodowała norweska firma Quasar, później zwana Trolltech. W
2008r. została ona sprzedana fińskiej firmie Nokia. W marcu
2011r. Nokia sprzedała dział Qt innej fińskiej firmie Digia. W
paź. 2014r. z firmy Digia wydzielono Qt Company. Rzekomo w
2016r. Digia i Qt Group całkowicie się rozdzieliły, ale jest to
nonsens, bo przecież wtedy ktoś musiałby nabyć udziały Qt
Company, jednak nabywcy nie ujawniono.
Z [Haavard Nord - s. WWW] wiadomo, że Quasar/Trolltech nigdy
nie przynosił zysków. Jednak po opublikowaniu Rap. Tot. pt.
,,Sprawa Qt Group" Haavard Nord usunął to zdanie. Nie odpowiada
też na listy el. z pyt. w tej sprawie.
2.1 Teza
Bibl. Qt jest najważniejszą powszechnie dostępną bibl. dla j.
C++. Qt Group to hamulcowy rozwoju biblioteki Qt. Qt Group robi
programistom wodę z mózgu promując j. QML. Dlatego należy
rozwidlić bibliotekę Qt by ją oczyścić i naprawić by dalej
można było z niej normalnie korzystać w normalnych programach
kodowanych w C++.
2.2 Streszczenie
Bibl. Qt zawiera niezbędne kl. do tworzenia prog. w C++.
Zawiera też bezużyteczne moduły. W bibl. Qt kl. dostępne z j.
C++ są zaniedbane: błędy nie są naprawiane, wygląd i zachowanie
kontrolek nie odpowiada dzisiejszym standardom. W Qt prog. i
kl. są celowo popsute, tak by nękać i odganiać programistów od
C++. Na [Qt Group - s. w Wiki] Qt Group wykazuje spore zyski,
jest to zaskakujące, bo aktualny model biznesowy jest b. dziwny
i sprzeczny z moją logiką i dostępną mi wiedzą. Qt. Analiza w
świetle wsk. moralnej popr. daje jednoznacznie negatywny wynik.
2.3 Słownik Pojęć
dok.
dokument
SZAP
w j. ang. USONA
j.
język
bibl.
biblioteka
kl.
klasa
f.
funkcja
graf.
grafika
wyśw.
wyświetlanie
dom.
domyślnie
zach.
zachowanie
konf.
konfiguracja
rozw.
rozwiązania
podst.
podstawowe
3 Mój oryginalny wkład
Postanowiłem poznać bibl. Qt po jej publikacji na licencji
LGPL. Nastąpiło to wkrótce po przejęciu firmy Trolltech przez
Nokię w 2008r. Programowanie z użyciem bibl. Qt wymaga używania
narzędzi dostarczanych razem z nią: Qt Assistant, Qt Linguistic
i Qt Creator. Może nie robię jakichś wielkich sys., ale mam
komercyjne wdrożenia do tego moje prywatne prog. też działają
całkiem przyzwoicie. Mogę się pochwalić, że pracując w gdyńskim
Posbit.pl nasz produkt Posnet Pospay Online dostał 1. nagrodę i
tytuł ,,Innowacja Handlu 2019" na ogólnopolskich targach
Retailshow [RetailShow - s. WWW].
4 Metoda badawcza
Opieram się przede wszystkim na swoim ponad 25 letnim (od
1997r.) doświadczeniu w programowaniu w j. C++. W dalszej kol.
opieram się na archiwum własnym i na art. w sieci Internet.
5 Fakty
5.1 Czym jest bibl. Qt?
Qt to wieloplatformowa bibl. zakodowana w C++. Jest podzielona
na kilka mniejszych bibliotek:
* podst. kontrolki graf.;
* kontrolka OpenGL: można wyświetlić w oknie Qt scenę OpenGL;
* bazy SQL: łączenie z bazami SQL i wykonywanie zapytań,
jednak bez żadnych mechanizmów serializacji danych
(kl.->baza i baza->kl.);
* sieć IP;
* port szeregowy;
* geolokalizacja;
* drukowanie;
* dźwięk;
* kl. do parsowania i zapisu plików Json i XML (do plików CSV
jest bibl. zew. [QtCSV - s. WWW]);
* DBus (to w sys. Linuks);
* Przydatnym (choć prostym) uzupełnieniem jest QtTest: do
tworzenia testów jednostkowych.
Co dziwne wyodrębniono też moduł QSvg (moim zdaniem powinna to
być zwykła wtyczka do renderowania obrazków).
Oprócz tego jest sporo w Qt bibliotek "robiących tłum":
* QtConcurrent: jakiś dziwny potworek do programowania
równoległego;
* QtRemote: tajemnicza bibl. do prog. systemów obiektów
rozproszonych - z dok. nie można nawet się dowiedzieć w
jakim modelu to działa: czy w modelu wywołań
synchronicznych czy asynchronicznych;
* QtScript: stary potworek skryptowy z czasów Trolltech
zastąpiony w czasach Noki przez potwora QML - od tamtej
pory wmawia się nam że do prog. interfejsów dotykowych jest
QML i że C++ ,,się nie nadaje";
* QWebView: stary silnik wyświetlania plików HTML. Cechował
się on dużymi możliwościami i wygodnym API;
* QWebEngine: nowy silnik wyśw. plików HTML. Mimo że powinien
on mieć API w 100% kompatybilne z QWebView, to ma on
zupełnie inne API - dosłownie wygląda to tak jakby ktoś
stwierdził, że QWebView jest zbyt prosty w użyciu.
W przeciwieństwie do QWebView QWebEngine nigdy nie został
podczepiony do listy kontrolek Qt Designer. Zrobiono to
prawdopodobnie z powodu niestabilności QWebEngine.
5.2 Obecny stan prac nad Qt:
Od 2008r, czyli od sprzedaży Trolltech firmie Nokia bibl. Qt
praktycznie nie jest rozwijana (innymi słowy proj. jest
mrożony). Nie chodzi mi o to że nie dają nam za darmo nowych
kl. w C++, chodzi mi o to, że:
* Jest b. mało dostępnych gotowych stylów QSS[32]^1 dla
,,normalnych" kontrolek dostępnych z C++;
* Nie ma wcale dostępnych gotowych stylów QSS dla twórców
prog. w C++ dla ekranów dotykowych;
* Nie wiadomo jak do własnych, nowych kontrolek tworzyć nowe
style QSS;
* Zarządzanie oknami w kl. QMdiArea oraz QDockWidget
(dostępnych z C++) jest od lat popsute. Należy uznać to za
sabotaż Qt Group mający zniechęcać do tworzenia
,,normalnych" prog.;
* Dom. zach. kontrolek (dostępnych z C++) jest już
przestarzałe (niezgodne z intuicją), przez co zawsze
wymagają one dodatkowej pracy. Np. kl. QTreeWidget mimo że
węzły i liście w tej kontrolce oparte są o kl.
QTreeWidgetItem i ma ona 3 stany zaznaczania, to dom. nie
są one używane. Podczas gdy normalne było by zaznaczanie
węzłów jako Qt::PartiallyChecked gdy część liści jest
zaznaczona a część nie.
Zamiast tego wszystkiego od 2009r. wśród programistów C++
używających bibl. Qt promuje się potwora QML opartego o język
skryptowy Jawa Skrypt.
5.3 Czym jest QML?
QML jest to zdegenerowany j. skryptowy oparty na Jawa Srypt.
QML reklamuje się, jako j. szybkiego tworzenia aplikacji które
mogą tworzyć nie tylko zawodowi programiści ale też
projektanci. Ale to fikcja. Cechą szczególną QML jest
połączenie w jedno deklaracji i implementacji klas oraz
tworzenia obiektu - te 3 rzeczy koduje się jednocześnie w tym
samym miejscu. Czyli klasę definiuje się w miejscu wystąpienia
obiektu w trakcie uruchomienia. TAKIEGO SZALEŃSTWA NIE MA
NIGDZIE INDZIEJ!!! Komunikacja między C++ i QML jest możliwa,
ale potwornie trudna. Kontrolki QML nie umożliwiają nawet
normalnej obsługi kliknięcia.
Pomimo 3 prób komercyjnego użycia QML dla mnie jest on tak
nienormalny, że nie jestem w stanie go używać.
5.4 Obecny model biznesowy Qt Group
- Tak jak wspomniałem we wstępie, Trolltech nigdy nie przynosił
zysków właścicielom;
- Jak podano na s. [Qt (software) - s. WWW w Wiki]:
,,In 2017, the Qt Company estimated a community of about 1
million developers worldwide[17] in over 70 industries.[18]"
- Wariacki model biznesowy Qt Group polega na udostępnianiu
wszystkiego za darmo, a na licencji komercyjnej nie oferowanie
niczego więcej (bo kompilator Qt Quick to jakiś żart). Tak
wygląda oferta Qt Group dziś w nie. 2023-11-25 patrząc na
tabelkę subskrypcji na s. WWW [qt.io/pricing].
- W sklepie [marketplace.qt.io] są bibl. i prog. jakie można
dokupić do Qt. Jest to b. dobry pomysł. Jednak przez
nienormalną politykę sprzedaży nie da się tego sklepu używać:
1. Wspierane są WYŁĄCZNIE najnowsze wer. bibl. Qt. Ja
kupowałem bibl. QtPdfViewer i mogłem go używać wyłącznie z
ost. wer. Qt5 czyli Qt5.15.xx albo z nie w pełni
funkcjonalną, wczesną wer. Qt6. Jest to kompletnie nie
uzasadnione technicznie, bo dawniej Qt Group chwało się, że
ma zasadę, że wszystkie wydania Qt5 są programowo i
binarnie kompatybilne - API i ABI są zgodne. Więc nie ma
powodów by produkty sprzedawane w [marketplace.qt.io] nie
działały na kilkuletnich instalacjach linuksowych distro
(które mają starsze wer. bibl. Qt - np. ja dziś w d.
2024-11-17, nie. mam zainstalowane distro Kubuntu 20.04 z
Qt 5.12.xx, a ostatnią wer. serii 5 była wer. 5.15.xx);
2. Produkty z tego sklepu można instalować jedynie
instalatorem od Qt Group. Tak więc nie można zintegrować
tych dodatków z sys. Linuks (razem z którym jest
instalowana bibl. Qt). A robi się to istotne w momencie gdy
w swoich proj. chcemy bazować na Qt z systemu. Ma to
znaczenie w sytuacji gdy prowadzimy własne proj. i
modyfikujemy źródła w prog. dostarczanych z distro. Własne
proj. łatwo przestawić na bibl. Qt w innym kat. Natomiast
przerabianie skryptów budowania prog. dostarczanych w
paczkach z distro to masakra. Poza nie może być w sys.
Linuks dwóch wer. bibl. Qt (tych samych serii gł., np. wer.
5.12 i wer. 5.15 by się gryzły).
5.5 Rozwiązania celowo popsute w bibl. Qt (mowa tu o tym co można
używać z poziomu C++)
* Nie używanie w bibl. Qt wyjątków. Zamiast nich do
sygnalizowania błędów używa się po prostu wart. zwracanej.
ROBI SIĘ TO BY DOPROWADZIĆ PROGRAMISTÓW C++ DO SZALEŃSTWA PRZEZ
CIĄGŁE WKLEPYWANIE TEGO SAMEGO KODU DO OBSŁUGI BŁĘDÓW.
Na to jest sposób: dziedziczenie kl. i przykrywanie f. kl. Qt
własnymi f., które spr. kod błędu i rzucają wyjątek.
W materiałach propagandowych Qt Group podaje, że w czasach gdy
zaczynano prace nad Qt nie było standardu C++, a drugiej strony
starano się by Qt działała z jak największą l. kompilatorów (a
później dodano, że chcą by Qt pracowała na jak największej l.
platform). Ponad to argumentowano, że niektóre z tych
kompilatorów miały problemy z prawidłową obsługą wyjątków.
Prace nad Qt zaczęto w 1991r. Wtedy już były wyjątki, bo
wprowadzono je do C++ w 1990r. Wyjątki objął też pierwszy
standard C++ jaki przyjęto w 1998r. No i teraz mamy już 2023r.,
czyli minęło 25lat, i dalej trzeba klepać w kółko ten sam kod
obsługi błędów zwracanych przez wart.!
Dowodem na celowe nie używanie wyjątków w bibl. Qt jest to, że
w tym samym standardzie C++ z 1998r. wprowadzono szablony i
przestrzenie nazw, które Qt wdrożyło w kodzie bibl.! Więc
szablony i przestrzenie nazw można było wdrożyć, a wyjątków
nie?
Aby temu zaradzić należy tworzyć własne prywatne i firmowe
bibl. separujące ogłupiający kod bibl. Qt od własnych prog.
W tych bibl. należy standardowo przezywać wszystkie typy Qt
(oraz typy proste C i C++) i w razie konieczności
dziedziczyć i rozszerzać je (np. o f. które w razie błędu,
zamiast po prostu zwracać kod, rzucają wyjątek).
* QSqlDatabase nie można awaryjnie zamknąć przez zwykłe
wywołanie destruktora. W Qt jest zabezpieczenie by nie
można po prostu zerwać poł. z bazą danych. A może być to
konieczne, np. do przerwania długiego zapytania SQL (np.
gdy użytkownik włączy generowanie długiego raportu i
zdecyduje się go przerwać po tym jak się wścieknie długim
czekaniem). Blokadę tą uzyskano f. statycznymi (działają
one w oparciu o zmienne globalne w pliku C++).
JEST TO ROBIONE PO TO BY UTRUDNIAĆ ŻYCIE PROGRAMISTOM.
Radykalnym obejściem tego problemu jest wydzielenie kodu
wywołującego zapytania SQL do osobnego prog. i jego
wywoływanie z własnej aplikacji. Wtedy gdy można po prostu
ubić prog. by przerwać zapytanie. Wtedy nic złego z bazą
się nie dzieje, więc jest to dowód na czysto złośliwe rozw.
w kl. QSqlDatabase;
* Wyliczenia w QSizePolicy są podane dokładnie odwrotnie od
ich znaczenia.
ROBI SIĘ TO BY DOPROWADZIĆ PROGRAMISTÓW C++ DO SZALEŃSTWA PRZEZ
PODWÓJNE MYŚLENIE TYPU: CZARNE JEST BIAŁE, A BIAŁE JEST CZARNE.
Mam takie obejście:
#define wMaks QSizePolicy::MinimumExpanding
#define wMin QSizePolicy::Maximum
#define wStala QsizePolicy::Fixed
* jw.: Zarządzanie oknami w kl. QMdiArea oraz QDockWidget
jest od lat popsute.
NALEŻY UZNAĆ TO ZA SABOTAŻ WOBEC TWÓRCÓW ,,NORMALNYCH" PROG.
Aby to naprawić konieczne jest rozwidlenie (w j. ang. fork)
proj. bibl. Qt i jej naprawa. Dla QDockWidget jest pewna
alternatywa w postaci kontrolki KDDockWidgets
[KDDockWidgets - s. WWW] szwedzkiej firmy Klarälvdalens
Datakonsult AB, ale to tylko ciekawostka z powodu nie
korzystnego licencjonowania (za darmo jedynie na licencji
GPLv2 lub GPLv3, a licencja komercyjna kosztuje tysiące EUR).
* jw.: Wygląd i dom. zachowanie kontrolek jest niezgodne z
intuicją i przestarzałe, przez co zawsze wymagają one
dodatkowej pracy;
NALEŻY UZNAĆ TO ZA SABOTAŻ WOBEC TWÓRCÓW ,,NORMALNYCH" PROG.
Aby to naprawić konieczne jest rozwidlenie (w j. ang. fork)
proj. bibl. Qt i jej naprawa.
* Z poziomu C++ nie można używać kl. QML. Jest to sztuczne
ograniczenie bo te kl. i tak są kodowane w C++. Te kl. QML
mają jedną zaletę: są dostosowane do ekranów dotykowych
(sprytne tel. i tablety).
To nachalne wpychanie QML można obejść: standardowe
kontrolki Qt można ostylować definiując własne pliki QSS.
Jednak wymaga to dodatkowej pracy I TO W DODATKU
ARTYSTYCZNEJ!!!. Na 100% jest to wykonalne, bo mam
wdrożenia takich prog. (terminale płatnicze Posnet Pospay
Online i Posnet Netpay).
NALEŻY UZNAĆ TO ZA SABOTAŻ WOBEC TWÓRCÓW ,,NORMALNYCH" PROG.
Aby to naprawić konieczne jest rozwidlenie (w j. ang. fork)
proj. bibl. Qt i jej popr.
* QApplication::exec() można wywołać jedynie z f. main().
Wywołanie z QApplication::exec() z innej f. kończy się
zawieszeniem prog. Aby coś takiego zakodować na prawdę
trzeba się postarać! PRAWDOPODOBNIE WYMUSZA SIĘ TO W CELU
ANALIZY KRADZIONEGO KODU.
Aby to naprawić konieczne jest rozwidlenie (w j. ang. fork)
proj. bibl. Qt i jej naprawa.
* W okienkowym programie Qt musi istnieć obiekt z oknem
głównym. Jak się zamknie okno główne cały program się
zamyka. Czyli nawet nie można zrobić kl. LogikaProgramu
jaka najpierw otwiera okno konfiguracji, zamyka je, potem
otwiera okno gł., zamyka je i na koniec wyświetla okno
podsumowania. PRAWDOPODOBNIE WYMUSZA SIĘ TO W CELU ANALIZY
KRADZIONEGO KODU.
Aby to naprawić konieczne jest rozwidlenie (w j. ang. fork)
proj. bibl. Qt i jej naprawa.
* Właściwości w kl. dziedziczących po kl. QObject: Te
właściwości są tylko po to by można było udostępniać
obiekty kl. Qt j. skryptowym. W trakcie prog. w C++ z tych
właściwości wcale się nie korzysta. WŁAŚCIWOŚCI W KL. QT SĄ
TYLKO PO TO BY MOŻNA BYŁO STWORZYĆ POTWORA QML!
Aby to naprawić konieczne jest rozwidlenie (w j. ang. fork)
proj. bibl. Qt, bo trzeba usunąć wariackie właściwości
przydatne jedynie dla twórców portów do j. skryptowych.
* jw.: Wariackie API kl. QWebEngine kl. do renderowania s.
HTML;
NALEŻY UZNAĆ TO ZA SABOTAŻ WOBEC TWÓRCÓW ,,NORMALNYCH" PROG.
Aby to naprawić konieczne jest rozwidlenie (w j. ang. fork)
proj. bibl. Qt, bo trzeba usunąć wariacki moduł QWebEngine
i zaktualizować moduł QWebKit.
* Część f. wirt. nazywa się zdarzeniami np. showEvent,
closeEvent, mouseEvent, keyPressEvent. Natomiast prawdziwe
zdarzenia nazywane są sygnałami.
ROBI SIĘ TO BY DOPROWADZIĆ PROGRAMISTÓW C++ DO SZALEŃSTWA PRZEZ
PODWÓJNE MYŚLENIE TYPU: CZARNE JEST BIAŁE, A BIAŁE JEST CZARNE.
Tego nie da się naprawić, można jedynie zakodować wszystko od
nowa w nowej bibl.
5.6 Brak reakcji na raportowane błędy i na pomysły racjonalizatorskie
Ja osobiście w pocz. okresie prog. z użyciem bibl. Qt
raportowałem wiele błędów na jakie napotykałem. Jednak
przestałem je zgłaszać, bo żadnego z nich nie naprawiono.
Początkowo brakowało IDE do programowania w C++ z Qt, ale po
przejęciu Trolltechu przez Nokię stworzyła ona Qt Creator.
Jednak miał i nadal ma wady spowalniające pracę i wymagające
wielu zbędnych klików. Ja miałem pomysł na jego ulepszenie, by
pod Ctrl+Tab zamiast prostej listy plików używać drzewka tak by
pliki nagłówkowe i z definicjami f. i z plikami ui występowały
w jednej linii. Zrobiłem nawet prototyp by z wizualizować to
rozwiązanie. N [Sprawa%20qt.io_html_93e21a745f5f1cf.png]
iestety odp. nie było. Z tamtego czasu zachował mi się zrzut
ekranu z takim oknem do przełączania plików:
5.7 Jakie wsk. moralnej poprawności "są na tak" a jakie "są na nie" wzg.
firmy Qt Group
Wsk. mor. popr.
Skrótowy opis wsk. mor. popr.
Skrótowa analiza zagadnienia
Ocena
1. Sprawiedliwość i karma uczuciowa!!!
Moralne jest przestrzeganie zasady ,,jaka praca taka płaca".
Konieczne jest doświadczenie takich samych uczuć jakie się
wzbudziło u innych.
Moralne jest wzbudzanie u innych takich uczuć jakie sam chciał
bym doświadczyć.
To że Qt Group udostępnia bibl. Qt za darmo to decyzja
właścicieli. Tylko, że to nie uzasadnia nękania programistów z
całego Świata. Bo oni nie pracują dla Qt Group.
Wciskanie popsutych bibl. C++ i ogłupiającego j. QML powoduje
negatywne uczucia i silne nerwy, więc jest to łamanie wsk.
karma uczuciowa.
NIE!
2. Pole moralne!!!
Moralne jest podejmowanie wysiłku intelektualnego (wykazywanie
się wysoką inteligencją).
Sprzeczne z wsk. pole moralne jest psucie istniejących kl., nie
naprawianie zgłaszanych błędów, ignorowanie pomysłów
racjonalizatorskich i nie dostosowywanie bibl. Qt do
dzisiejszych urządzeń.
NIE!
3. Totaliztyczne dobre uczynki i totaliztyczne grzechy!!!
To samo co wsk. Praca Moralna z uproszczeniem, że żyjemy w
idealnym Świecie.
Dostarczanie popsutych bibl. nie jest złym uczynkiem tylko
niemoralną pracą.
BRAK
4. Praca Moralna!!!
Moralna jest jest dobrowolna praca, najbardziej pod górę pola
moralnego i generująca dobrą karmę (czyli nikomu nie szkodzi).
Brak prac nad Qt w kontekście C++ to oznaka braku pracy.
NIE!
5. Uczucia!!!
Uczucia moralne:
1. Przyjemne uczucia umysłowe są moralne;
2. Przyjemności fizyczne są niemoralne;
3. Dobrowolne pokonywanie przeciwnych uczuć jest moralne;
Krzywdzenie istot postępujących moralnie jest niemoralne.
Nie wiadomo co czują pracownicy Qt Group.
BRAK
6. Motywacje!!!
Moralne jest podejmowanie wysiłku i przełamywanie lenistwa.
Brak prac nad Qt w kontekście C++ to oznaka lenistwa. Chęć
zniszczenia cudzego umysłu, to z kolei szataństwo.
NIE!
7. Odpowiedzialność!!!
Moralne jest branie odpowiedzialności za siebie i za innych.
Sabotowanie całego proj. bibl. Qt, to zupełny brak poczucia
odpowiedzialności za siebie, oraz brak poczucia
odpowiedzialności za tych którzy jej używają i brak poczucia
odpowiedzialności za Cywilizację która ma używać prog.
stworzonych z użyciem tej bibl.
NIE!
8. Sumienie!!!
Moralne jest słuchanie sumienia, bo zna ono wszystkie prawa
moralne i wydaje nieomylne sądy na temat każdego zrealizowanego
działania.
Widać, że właściciele Qt Group chcący zniszczyć umysły
programistom C++ nie mają wcale sumienia (zamiast niego mają ,,w
sercu kamień i mózg z betonu").
NIE!
9. Uczciwość!!!
Moralna jest uczciwość.
Moralny jest podstęp czyli iluzja przyszłości.
Moralny jest psikus czyli żart chwilowo wprowadzający w błąd i
nie powodujący konsekwencji.
Cytat z [Mat7:20]:,,A więc: poznacie ich po owocach". No te
owoce są popsute, brzydkie, przestarzałe, popsute i
ogłupiające.
NIE!
10. Solidność!!!
Moralne jest doprowadzanie projektów do końca jaki u
odbiorcy/klienta nie generuje negatywnych uczuć. Zaleca się by
wynik końcowy budził podziw i zachwyt.
Tolerowanie błędów w swoich publikacjach jest sprzeczne z wsk.
solidność.
NIE!
11. Braterstwo!!!
Moralna jest postawa koleżeńska.
Nie moralne jest pomijanie lub szykanowanie innych ludzi.
Moralne przestrzeganie zasady ,,Walczę o człowieka a nie z
człowiekiem!".
Dążenie do denerwowania i nękania ludzi oraz próby niszczenia
ich umysłów jest sprzeczne z wsk. braterstwo!
NIE!
12. Droga i wdrożenia!!!
Moralne jest ,,zrobienie wszystkiego co możliwe" w celu pełnej
realizacji proj. Wtedy mówimy, że droga do celu była moralna.
Moralne jest doprowadzanie proj. do fazy wdrożenia, czyli
przekazania ich użytkownikom do normalnej eksploatacji.
Wrogie przejęcie jakim było kupienie firmy Trolltech przez
Nokię w 2008r. i mrożenie od tamtej proj. bibl. Qt to łamanie
wsk. Droga. Jednak na przekór temu podbija się nr wer. bibl.
Qt, więc są jakieś lipne wdrożenia.
NIE!
13. Sukcesy naukowe i kompetencje!!!
Moralne jest zdobywanie kol. tytułów naukowo-technicznych, oraz
naukowe rozwiązywanie zagadek Naszego Wszechświata oraz
inżynierskie rozwiązywanie problemów technicznych.
Aby legalnie używać danej technologii trzeba na to uczciwie
zasłużyć solidnie ucząc się obsługi i uczciwie pracując by
legalnie tą technologię wytworzyć lub kupić.
Z jednej s. wklepano 30.703.306 linii kodu (do wer. Qt 5.12.12
włącznie), a toleruje się w niej liczne błędy. Te błędy w wielu
przypadkach uniemożliwiają użycie danej kl., np. QMdiArea i
QDockWidget. Wygląda to tak, jakby kompetencje były, ale
niewystarczające.
NIE!
14. Kultura osobista!!!
Moralne jest panowanie nad swoim gniewem i nad swoimi żądzami.
Moralne jest gonienie za legalnie uzyskiwaną wiedzą (kupowaną i
uzyskiwaną w drodze ,,białego wywiadu"), bo to buduje intelekt.
Nic nie wiadomo o wściekłości akcjonariuszy Qt Group wobec
programistów używających bibl. Qt. Nie wiadomo też nic o tym
czy gonią za wiedzą.
BRAK
15. Kultura techniczna!!!
Moralne jest wdrażanie pomysłów racjonalizatorskich i tworzenie
udoskonalonych narzędzi koniecznych do dalszej pracy.
Zakodowanie bibl. Qt wymagało ogromnej wiedzy programistycznej.
Jednak tego nie zrobiono w Qt Group tylko w firmach Quasar i
Trolltech. A wiem że wielu (najlepszych?) ludzi wygoniono po
wrogim przejęciu w 2008r. A od tamtej pory proj. bibl. Qt jest
mrożony.
NIE!
16. Kultura ekonomiczna i własne utrzymanie!!!
Moralne jest przestrzeganie w interesach zasady
,,wygrany-wygrany".
Moralna jest praca na własne utrzymanie.
Firma Qt Group łamie ten wsk. bo dostarczając ogłupiające rozw.
dla prog. łamie zasadę ,,wygrany-wygrany". To, że wykazuje zyski
[Qt Group - s. w Wiki] nie wiele tu zmienia.
NIE!
Występowanie w kol. ,,Ocena" 13x NIE! i 3x BRAK oznacza, że jest
jednomyślność wsk. moralnej popr. Dlatego cały proj. Qt Group
jest niemoralny.
6 Analiza proj. Qt Group w świetle wsk. moralnej poprawności zwanym
Kultura ekonomiczna i własne utrzymanie
Cytat z [Ideologia Geniuszy-Mocarzy]:
,,Miarą wks. Kultura ekonomiczna jest czysty zysk u wszystkich
partnerów w danym proj. biznesowym.
Ten wsk. mówi:
Moralne jest przestrzeganie w interesach zasady
,,wygrany-wygrany".
[...]
Niemoralne jest łamanie praw ekonomii (tak jak to było dawniej
w PRL i obecnie w UE).
Wsk. pochodnym od "ekonomi" jest wsk. "własne utrzymanie":
Moralna jest praca na własne utrzymanie."
1. Współpraca z Qt Group dla firm programistycznych oznacza
zawężanie możliwości zamiast ich rozszerzanie. Jest tak bo
Qt Group wymusza na programistach C++ przesiadkę na QML
czyli zmutowany Jawa Skrypt. Ten QML jest zaprzeczeniem
dobrych praktyk programistycznych: w nim w jedno poł.
deklarację, definicję i tworzenie obiektu. Takie
ogłupiające pomysły są wręcz nie do pomyślenia dla tych co
umieją programować w normalnych j. prog.! Programistom C++
celowo blokuje się dostęp do klas QML (które są kodowane w
C++) tylko po to by zmuszać programistów do używania tego
ogłupiającego j. QML.
2. Qt Group postępuje tak samo jak wszystkie wielkie korpo:
tworzy produkty w C++ i klientom karze używać
własnościowego j. skryptowego.
3. Trudno powiedzieć jakim cudem Qt Group wykazuje zysk. Bo
nawet ich sklep [marketplace.qt.io] jest zaprzeczeniem
zdrowego rozsądku (wymusza się użycie jedynie najnowszych
wer. bibl. Qt i instalację własnościowym instalatorem Qt
Group). Dlatego nie ma mowy by czegokolwiek z tego sklepu
używać na sys. Linuks. A sys. Linuks jest dziś (2024-11-17,
nie.) najlepszą platformą dostępną dla cywilnych
programistów;
4. Nonsensowny marketing (coś jak w Commodore w latach
1985-1994, czyli po wygnaniu założyciela Idka Trzmiela).
Zupełny brak obecności w mediach: likwidacja Qt Quarterly
(z końcem 2011r.), zero art. sponsorowanych w gazetach i
serwisach WWW, zero info o wdrożeniach komercyjnych, zero
przykładów proj. wzorcowych. Jedynie na blogu zamieszczają
komunikaty typu: ,,Wyszła nowa wer. Qt X.XX.0, nowości
brak.", albo ,,Wyszła nowa wer. Qt Creator XX.0, nowości
brak.".
Pow. fakty jednoznacznie świadczą o łamaniu wsk. moralnej popr.
Zwanego Ekonomia i własne utrzymanie w zakresie przestrzegania
zasady ,,wygrany-wygrany". Negatywnej oceny nie zmieniają
wykazywane zyski. Dlatego w świetle tego wsk. proj. Qt Group
jest niemoralny.
7 Podsumowanie
Biblioteka Qt od momentu przejęcia norweskiej firmy Trolltech
przez fińską firmę Nokia praktycznie nie jest rozwijana. Jest
tak na przekór postępów w elektronice w tym np. pojawieniu się
sprytnych tel. i tabletów z dotykowymi interfejsami
użytkownika.
Aby wspierać nowe interfejsy dotykowe opracowano potwora QML
jaki jest zaprzeczeniem filozofii Qt, C++ i w ogóle jest
zaprzeczeniem zdrowego rozsądku. Dlatego QML jest kompletnie
nie do przyjęcia dla programistów C++.
Model biznesowy Qt Group to fikcja: zarówno oferta subskrypcji,
jak zasada działania sklepu [marketplace.qt.io]. Nawet mi
nasuwają się różne pomysły jak na tej bibl. można zarabiać.
Obecnie już nawet nie wiadomo do kogo należy Qt Company. Qt
Group to trojan.
7.1 Rewelacje, zalety, wady i partactwa w proj. Qt Group
7.1.1 Rewelacje
1. Zakodowanie Qt w j. C++ (to zasługa fundatorów);
2. W bibl. Qt zastosowano mechanizm sygnał-slot oparty o
prekompilator moc (to zasługa fundatorów).
7.1.2 Zalety
1. W 2023r. bibl. Qt ciągle jest dostępna.
7.1.3 Wady
1. Prog. takie jak Qt Creator i Qt Assistant są uciążliwe w
użyciu[33]^2;
2. Zbędne właściwości w kl. dziedziczonych po QObject.
7.1.4 Partactwa
1. Krecia robota przeciwko społeczności programistów C++ (np.
wspomniane QSizePolicy, albo QApplication::exec(),
wymaganie wyświetlania przynajmniej jednego okna gdy prog.
używa QApplication);
2. Brak naprawy popsutych kluczowych kl. (takich jak
wspomniane QMdiArea i QDockWidget);
3. Nie wszystkie f. pub. są wirt.;
4. Nie wszystkie destruktory są wirt.;
5. Niemożność w kwestii wdrożenia w bibl. Qt wyjątków;
6. Niemożność w kwestii udostępnienia kl. QML na poziomie C++;
7. Brak aktualizacji zachowania kontrolek w bibl. Qt;
8. Brak aktualizacji wyglądu kontrolek na PC (brak nowych
stylów QSS);
9. Brak styli QSS dla ekranów dotykowych;
10. Brak możliwości rozszerzania sys. styli QSS (tak by można
je było definiować od zera w nowo tworzonych kontrolkach);
11. Niemożność w kwestii integracji zakupionych bibl. w
[marketplace.qt.io] z sys. Linuks.
12. Niemożność w kwestii nonsensownego marketingu;
13. Niemożność w kwestii nonsensownego modelu biznesowego.
7.2 Wnioski
Na przekór braku rozwoju Qt od 2008r. do dziś nie ma dostępnego
nic porównywalnego do tej bibl. (a przynajmniej ja o niczym
takim nie słyszałem). Czy jesteśmy skazani na Qt? W polskich
warunkach niestety tak, wynika to z faktu braku środków do
napisania porównywalnej bibl. bez wad Qt.
7.2.1 Wątpliwy jest sens przepisywania Qt od zera wynika to z wad C++
- Braku ABI;
- Brak działania f. wirt. w konstruktorach i destruktorach;
- Brak dziedziczenia operatorów;
- Brak wybierania najlepszego dopasowania typów, gdy pojawia
się jakakolwiek niejednoznaczność (przekleństwo ambigous);
- Brak w kl. aut. tworzenia f. typu virtual w przypadku
wszystkich f. w sekcjach public. Jest to konieczne z powodu
zapewnienia elastyczności kl. w bibl. Obecnie części pomysłów
nie można realizować z tego powodu, że nie wszystkie f. w
sekcjach public są typu virtual (np. nie można nadpisać
QWidget::update() co oznacza, że nie można swobodnie dodawać
kol. el. graf. do istniejących kontrolek, bo w razie zmiany
rozmiaru nie ma jak ich uporządkować przed wyświetleniem).
Jednak zdarzają się proste kl. opakowujące takie jak QRect lub
QSize lub QPoint w jakich z powodów wydajności nie powinno być
pub. f. typu virtual. Dlatego w C++ zwykłe f. pub. powinny być
jedynie w strukturach. Wtedy struktura od kl. różniła by się 2
el.:
1. W strukturze dom. sekcją jest public, a w kl. dom. sekcją
jest private (to już jest w C++);
2. W strukturze dom. f. w sekcji public nie są typu virtual, a
w kl. dom. wszystkie f. w sekcji public są typu virtual (to
należy dodać do C++).
- Brak znaków Unicode w dekl. makr ani w dekl. f. ani w dekl.
kl.
Moim zdaniem w tych 6 kluczowych postulatach niczego się nie
traci z obecnego C++, a zyskuje to co gdzie indziej już dawno
jest (np. w j. D). Jednak należy zachować podział na pliki
deklaracji (*.h++) i pliki definicji (*.c++). By naprawić te
wady konieczne jest niewielkie zmodyfikowanie kompilatora C++ i
zerwanie kompatybilności z obecnym kodem C++. Dopiero wtedy
należało by stworzyć następcę Qt.
7.2.2 Wątpliwy jest też sens przepisywania Qt od zera w j. D wynika to
z wady j. D
- D ma format plików źródłowych w modelu Asemblera (poł. w
jedno deklaracji i definicji f.) a nie w modelu j. C (osobne
pliki dla deklaracji i definicji f.). Programowanie w j. D jest
procesem odwrotnym do programowania w j. C i C++: w j. D
najpierw koduje się definicje f. w kl. i dopiero później można
wygenerować plik nagłówkowy z deklaracjami tych kl. Każdy
programista C i C++ potwierdzi, że to nienormalny sposób pracy
(nawiasem mówiąc tak samo nienormalne jest programowanie
sterowane przez testy). Wadą plików źródłowych w modelu j.
C/C++ jest puchnięcie kodu o 100% w porównaniu do j. D i Pyton
(sprawdziłem to kodując w tych j. przykładowy programik).
7.3 Przewidywania na przyszłość
Qt Group najprawdopodobniej dalej będzie cudakować z j. QML.
Będą się pojawiać nowe błędy w kl. dostępnych z C++. Qt Group
dalej będzie udawać, że marketing nie jest do niczego potrzebny
i dalej będzie cudakować ze swoim modelem biznesowym, dalej
będzie też cudakować z [marketplace.qt.io]. Wszystko to po to
by niszczyć programistów C++ (bo my wiemy, że ten język jest
najlepszy do programowania prog., choć nie jest idealny - jw.).
7.4 Zalecenia na teraz
Zalecenia dla programistów indywidualnych:
* Nie należy się pakować w QML, bo jest to sprzeczne z ustawą
o ochronie zdrowia psychicznego;
* Dalej kodować w C++ i Qt.
* Izolować własny kod C++ od kodu bibl. Qt. W tym celu
używane kl. Qt należy przezywać własnymi aliasami używając
dyrektyw using i #define. Robimy to po to, by w razie
konieczności te aliasy zastępować własnymi klasami (z
dodatkowymi zmiennymi i z dodatkowymi f.).
Zalecenia dla polskich firm, oprócz pow. dodatkowo:
* Należy ostylować w QSS kontrolki Qt tak by dało się je
używać na sys. z ekranami dotykowymi. Wymaga to też pewnej
pracy programistycznej dotyczącej obsługi kliknięć (w Qt
kliknięcie jest punktowe a na ekranach dotykowych powinno
działać w określonym promieniu). To na 100% działa, bo już
wdrożył nieistniejący Posbit.pl (jeszcze dziś, 2023-08-21,
można to zobaczyć w terminalach płatniczych Posnet Pospay
Online i Posnet Netpay).
7.5 Zalecenia na przyszłość
Zalecenie dla społeczności polskich programistów C++:
* Należy rozwidlić[34]^3 proj. Qt oraz poprawić w. wymienione
wady Qt;
Rozwidlenie Qt nie będzie możliwe do użycia w
mikrokontrolerach, bo w nich nie ma bibliotek współdzielonych
jakich dystrybucji wymaga licencja LGPL.
Jednak użycie Qt w mikrokontrolerach i tak jest trochę bez
sensu, bo Qt nie jest bibl. czasu rzeczywistego (bo jest oparta
o pętlę zdarzeń, która nie gwarantuje kiedy zdarzenie zostanie
obsłużone).
* Oferta komercyjnej subskrypcji rozwidlenia Qt powinna być
tak atrakcyjna, że uzasadniała by ponoszone koszty. Np.: Na
licencji LGPL dostępne były by konieczne narzędzia, ale
tylko konsolowe. Natomiast na licencji komercyjnej
udostępniane były by wygodne narzędzia[35]^4 z interfejsem
graf. (w rodzaju obecnych Qt Creator, Qt Designer, Qt
Linguist i Qt Assistant). Nie ma przy tym obawy o
konkurencję ze s. obecnych narzędzi graf. od Qt: one też są
nienormalne i popsute i wystarczy parę minut poklikać i już
jest mnóstwo pomysłów jak je można by naprawić i rozwinąć.
Jednak tego typu narzędzia należy zakodować od zera (z
powodu zapewnienia sobie do nich pełnych praw autorskich
koniecznych do ich sprzedawania);
* Należy stworzyć sklep z dodatkami dla rozwidlonego Qt, tak
by udostępniać w nim dodatkowe bibl. i prog. na
komercyjnych zasadach. Pomysłów jest mnóstwo: kl. do edycji
dok. ODT i ODS, kl. do wyświetlania plików HTML, PDF i
innych, wtyczki SQL do popularnych baz danych, bazy no-sql,
hurtownie danych, popularne protokoły: HTTP, FTP, CAN, RS.
Tego jest i będzie coraz więcej! Tu jest miejsce na biznes!
* Należy dbać o to by społeczność mogła też się włączyć do
tego interesu. W tym celu należy zdefiniować proste zasady
i jasne kryteria techniczne i biznesowe jakie pozwalają na
opublikowanie rozszerzeń dla rozwidlonego Qt.
8 Bibliografia
Bibliografia
Haavard Nord - s. WWW: Haavard Nord, Painful Lessons From
Scaling a Software Company, 2016,
https://medium.com/21st-century-decision-making-for-
teams/painf
ul-lessons-from-scaling-a-software-company-1d14ee7f9
ab3
Qt Group - s. w Wiki: , Qt Group, 2024,
https://en.wikipedia.org/wiki/Qt_Group
RetailShow - s. WWW: , Zwycięzcy w konkursie Innowacje Handlu
2019, 2019, https://retailshow.pl/pl/laureaci-2019-2
QtCSV - s. WWW: , GitHub - iamantony/qtcsv: Library for reading
and writing csv-files in Qt., 2024., github.com/iamantony/qtcsv
Qt (software) - s. WWW w Wiki: , Qt (software) - Wikipedia,
2024, https://en.m.wikipedia.org/wiki/Qt_(software)
qt.io/pricing: , Pricing and Packaging | Software Stack | Tech
Stack | Qt, 2023, qt.io/pricing
marketplace.qt.io: , All products Support | Qt Marketplace,
2024, marketplace.qt.io
KDDockWidgets - s. WWW: , KDDockWidgets, 2024,
https://www.kdab.com/development-resources/qt-tools/
kddockwidge
ts
Mat7:20: św. Mateusz, Biblia Tysiąclecia, 2002
Ideologia Geniuszy-Mocarzy: Jacek Marcin Jaworski, Ideologia
Geniuszy-Mocarzy, 2024
[36]1Jest to rozw. wzorowane na stylach CSS znanych ze s. HTML.
Moim zdaniem QSS to świetny pomysł!
[37]2Bo nie są tworzone zgodnie z zasadą wygody (w j. ang.
zero-conf).
[38]3w j. ang. fork
[39]4w j. ang. zero-conf
References
Visible links:
1. mailto:j...@a...pl
2. mailto:e...@a...pl