Article View: pl.comp.programming
Article #217260Re: Spieszmy się kochać Windows
From: Maciej Sobczak
Date: Sun, 10 Jan 2021 15:56
Date: Sun, 10 Jan 2021 15:56
123 lines
8334 bytes
8334 bytes
> To oznacza że POSIX nie jest dobrą abstrakcją na OS b wymaga tego
> wszystkiego aby być POSIXem. Inaczej nie jest POSIXem.
Osobiście nie mam problemu z określeniem "POSIX subset".
Więc chcę, żeby januszowe RTOSiki implementowały "POSIX subset" - w takim zakresie, w jakim w ogóle coś implementują.
> Każda konfiguracja, inna niż *wszystko*, nie jest już POSIXem.
I w konsekwencji program, który nie korzysta ze *wszystkiego* nie jest programem POSIXowym?
A program, który nie korzysta ze *wszystkiego* z biblioteki standardowej C++ nie jest programem w C++?
Ja ze słowem "subset" nie mam problemu, zwłaszcza w embedded.
Natomiast mam problem z niekompatybilnością bez wartości dodanej.
> > I niepotrzebnych rzeczy nie ma, zwłaszcza w systemach embedded.
> To po co tam wciskać POSIXa skoro używa się 5% jego api?
Dokładnie po to, co opisano w pierwszym zdaniu na wikipedii, któro nadal uporczywie ignorujesz. Po to, żeby zapewnić "compatibility between operating systems".
> > Sam sobie zaprzeczasz. "W jakiejś implementacji"?
> Jakiejś. Widzisz, POSIX ma bardzo dużo undefined behavior.
Czyli tego określenia też nie rozumiesz. Może podaj przykład.
> > A jeśli mam formalnie zweryfikowaną implementację
> Wątplię, aby ktoś formalnie weryfikował POSIXa. Z uwagi na UB. Ale może
> sie mylę, znasz przykład?
Najpierw podaj przykład tego UB. Wtedy będzie wiadomo, co trzeba z tym UB zrobić, żeby przestało być UB - a w dalszej kolejności jak to zweryfikować.
Ciekawe, że UB nie przeszkadza w osiągnięciu celu, którym jest przenośność. Tak jest też w C albo w C++.
> Jeśli z ::read może wylecieć 20 róznych stanów to nie jest to dobre API.
To, że może, to nie znaczy, że musi (patrz subset). A jeśli w ogóle nie ma read? Mówimy o embedded.
> Który to SafeRTOS jest bez wątpienia POSIX like. I w dodatku bazujący na
> API FreeRTOS :D Ależ to życie jest złośliwe.
Jest bazujący na API FreeRTOS z takiego powodu, że ktoś chce zarobić na tych wszystkich ludziach, którzy zaczęli robić projekty na januszowym FreeRTOS i dotarli z tymi projektami do punktu, w którym ktoś ich pyta o jakość (ale jak to?) a *nie są w stanie przenieść tych projektów na inny system, bo są więźniami tego nieprzenośnego API. Wtedy płacą cenę (w formie licencji za SafeRTOS) za januszostwo i olewanie standardów.
A gdyby tak zaczęli, od początku, zgodnie ze standardami? To nie byliby skazani na tą jedyną ofertę "nie do odrzucenia". To się nazywa ten vendor-lockin, o którym pisałeś.
Tutaj, oczywiście, wykażasz się odpornością na to zjawisko, bo napisałeś sobie wrapper. Ja się wykażę odpornością, bo piszę pod standard. Możemy się pogodzić w tym, że żaden z nas nie musi płacić za SafeRTOS.
> > Od kiedy API utrudnia weryfikację? W jaki sposób?
> W taki sposób:
>
> switch ( fooResult )
> {
> case Error:
> case OtherError:
> case UlikelyError:
> case SomethingBroken:
> case DoItAgainPlease:
> case MabyeLater:
> case OKButNotQuite:
> case Almost:
> case NeedRest:
> case Interrupt!:
> }
Dalej nie rozumiesz. Nikt nie każdy RTOSowi zwracać wszystkich możliwych błędów. Standard mówi, jakie błędy można zwrócić, a nie jakie trzeba. Więc jeśli jakiś RTOS ma tylko 3 stany w swojej implementacji, to te trzy stany mogą się nazywać tak jak w POSIX a nie inaczej "bo tak". Słowo klucz: "subset".
> A program napisany w Qt jest jeszcze bardziej przenośny od tego w POSIXie.
Albo i nie. Systemów POSIXowych jest chyba więcej, niż tych wspieranych przez Qt.
W szczególności, wspomniany przeze mnie TI-RTOS (od Texasa) ma interfejs POSIX a raczej Qt tam nie zadziała.
> Na przykład obok jest CreateMutex biorący 3 parametry.
pthread_mutex_init ma argument pthread_mutexattr_t, w dodatku przez wskaźnik, więc możliwości funkcjonalne tego są właściwie nieograniczone. Może być NULL dla zachowania domyślnego. Nie ma problemu, żeby w tej jednej funkcji zmieścić zarówno bezargumentową inicjalizację, jak i specjalne ficzery.
Właśnie o to chodzi w standardach.
> > Do przenośności wystarczyłby POSIX
>
> Nie chcesz takiej przenośności. POSIX to gówno. Pod wieloma względami to
> zamrożone workaroundy z lat 70tych.
Nie napisałeś niczego, żeby to potwierdzić.
> >, gdyby twórcy januszowych RTOSików
>
> A twórcy januszowych Windowsów?
Również. https://www.integrasources.com/blog/windows-ce-end-of-life-medical-devices/
Tak to jest jak się uwierzy komuś, kto olewa standardy.
> > Dlatego chciałbym mieć *jedną* implementację mojej klasy MyMutex. A nie kilka różnych.
> Nie ma takiej potrzeby. I tak masz dwie co najmniej. Przecięz masz
> jeszcze mocka do testów.
Mocka muteksa? A po co? Normalny muteks po prostu działa, bo... no właśnie, bo jest standardowy.
> > Jeśli trzeba puścić unit testy, to Cygwin jest do tego jak najbardziej wystarczający.
> Ano właśnie, znalazłeś adapter do systemu operacyjnego. Bardzo milutko.
> Nie sprzedasz jednak aplikcji napisanej na cygwinie,
Znowu manipulujesz. Aplikacja jest napisana na jakiś system embedded. A konkretnie na POSIXowy system. Sprzedam ją bez problemu. To, że być może testy nieformalne (!) były puszczane na Cygwinie, nie ma żadnego znaczenia.
> pozerkaj jak bardzo
> wieli ból dupy mają twórcy cygwina z powodu niekompatybilnosci POSIXA z
> WinApi
Nie jest to problemem dla *subsetu*, którego używam w projektach embedded.
> POSIX to jest taki standard z przypadku. Microsoft
> nie ma śadu powodu aby go używac.
Za to ludzie, którzy użyli Windowsa CE, mają teraz powody, żeby się przenosić gdzie indziej.
> > Już rozumiem. Ty piszesz o tym, jak jest a ja o tym, jak powinno być
> Idealista.
Inżynier. :-)
> Tupanie nogą że świat nie jest POSIXowy i na siłe uzależnianei się od
> tego kipeskiego API nie jest specjalnie profesjonalne.
Specjalnie nie jest, jest po prostu racjonalne, o ile w ogóle trzeba na jakimś API polegać.
Natomiast specjalnie nieprofesjonalne jest na siłę nieprzestrzeganie standardów, "bo nie".
--
Maciej Sobczak * http://www.inspirel.com
Technical Details
Message-ID:
<65ba724b-419d-42e9-b93a-6dee54005fe4n@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin2!goblin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<rqi91b$nft$1@news.icm.edu.pl> <28d6930c-14b1-4f52-a9ed-e356fea42675@hooterville.invalid> <rs1sfe$kee$1@news.icm.edu.pl> <5ff1ad9d$0$511$65785112@news.neostrada.pl> <rssb7d$1im$1@dont-email.me> <5bdc7c31-c50b-4125-9c9d-b19a410ddc59n@googlegroups.com> <rssorl$a7$1@dont-email.me> <8dff5945-0359-434f-bcdc-06d971c882e7n@googlegroups.com> <rt17c2$sju$1@dont-email.me> <f55c5cdd-2579-443c-ad2e-a751ffe7ff84n@googlegroups.com> <rt2n1n$p3j$1@dont-email.me> <51e942ab-1057-44f7-88bf-c82c5417f3c1n@googlegroups.com> <rt4oer$b83$1@dont-email.me> <f1e32e30-9f24-4f20-aa82-b346d9212958n@googlegroups.com> <rt82ve$lqf$1@dont-email.me> <4fa0a2e5-f76b-4c57-a8d1-4c0ab25ea4e6n@googlegroups.com> <rtat2k$abn$1@dont-email.me> <4bb01db3-f2cd-4b6d-a6c9-38257ae8113fn@googlegroups.com> <rtcqjk$53e$1@dont-email.me>Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:620a:4047:: with SMTP id i7mr12591278qko.3.1610294167763; Sun, 10 Jan 2021 07:56:07 -0800 (PST) X-Received: by 2002:ac8:c87:: with SMTP id n7mr9362745qti.24.1610294167480; Sun, 10 Jan 2021 07:56:07 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin2!goblin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Sun, 10 Jan 2021 07:56:07 -0800 (PST) In-Reply-To: <rtcqjk$53e$1@dont-email.me> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=213.108.152.51; posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S NNTP-Posting-Host: 213.108.152.51 References: <rqi91b$nft$1@news.icm.edu.pl> <28d6930c-14b1-4f52-a9ed-e356fea42675@hooterville.invalid> <rs1sfe$kee$1@news.icm.edu.pl> <5ff1ad9d$0$511$65785112@news.neostrada.pl> <rssb7d$1im$1@dont-email.me> <5bdc7c31-c50b-4125-9c9d-b19a410ddc59n@googlegroups.com> <rssorl$a7$1@dont-email.me> <8dff5945-0359-434f-bcdc-06d971c882e7n@googlegroups.com> <rt17c2$sju$1@dont-email.me> <f55c5cdd-2579-443c-ad2e-a751ffe7ff84n@googlegroups.com> <rt2n1n$p3j$1@dont-email.me> <51e942ab-1057-44f7-88bf-c82c5417f3c1n@googlegroups.com> <rt4oer$b83$1@dont-email.me> <f1e32e30-9f24-4f20-aa82-b346d9212958n@googlegroups.com> <rt82ve$lqf$1@dont-email.me> <4fa0a2e5-f76b-4c57-a8d1-4c0ab25ea4e6n@googlegroups.com> <rtat2k$abn$1@dont-email.me> <4bb01db3-f2cd-4b6d-a6c9-38257ae8113fn@googlegroups.com> <rtcqjk$53e$1@dont-email.me> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <65ba724b-419d-42e9-b93a-6dee54005fe4n@googlegroups.com> Subject: Re: Spieszmy się kochać Windows From: Maciej Sobczak <see.my.homepage@gmail.com> Injection-Date: Sun, 10 Jan 2021 15:56:07 +0000 Lines: 182 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit