eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Re: Spieszmy się kochać Windows
Ilość wypowiedzi w tym wątku: 57

  • 21. Data: 2021-01-07 15:03:05
    Temat: Re: Spieszmy się kochać Windows
    Od: heby <h...@p...onet.pl>

    On 07/01/2021 14:55, Smok Eustachy wrote:
    > Jaki procesor był niedziadoski?

    W tamtych czasach? Czy ogólnie?

    Z resztą bez znaczenia. MC68000 na przykład.

    "[...] IBM considered the 68000 for the IBM PC but chose the Intel 8088
    because the 68000 was not ready[...]".

    MC68000 to 1979. IBP PC to 1981. Trudno powiedzieć co mieli na myśli
    pisząc "not ready". Dla innych był ready.

    >> ST mimo zupełnie innych zasobów gotówki. Team od MS-DOSa musiał być
    >> chyba często na wakacjach, bo nic tam się nie działo.
    > Obsługa szerokiego wachlarza sprzętu.

    W 99% wypadków pisana w software, bo DOS nie miał śladu abstrakcji na
    cokolwiek, poza bardzo wolnym dostępem do ekranu i prymityną abstrakcją
    na dyski, a po "odkryciu" 32 bitów, ogólnie niemożliwą do użycia wprost.

    DOS nie miał w sobie praktycznie śladu sterowników do czegokolwiek.
    Bazował na BIOSach urządzeń i bezpośrednim dostępie. Pamiętasz BLASTER=
    czy juz umknęło?


  • 22. Data: 2021-01-07 22:13:29
    Temat: Re: Spieszmy się kochać Windows
    Od: Maciej Sobczak <s...@g...com>

    > > Nie wiem, czy są. Ale wiem, że NVIDIA kupiła ARMa.
    > I nagle zmieniła politykę czy tylko wyciska dalej co się da z licencji?

    A już jest powód, żeby zmieniać politykę? Ta nasza dyskusja na pewno takim powodem
    nie jest.

    > Ależ zobaczymy. Nie można też wykluczyć że nvidia ma interes w NIE
    > dawaniu rdzeni ARMa konkurencji.

    Może tak być. Ale, ale... Kto jest ich konkurencją? Producenci embedded? Od kiedy?
    Producenci embedded będą dla nich nowym dochodowym klientem a nie konkurencją.

    > > i otwarte a projekty bardzo drogie. Ciekawe, nie?
    > Nie, nic takiego nie istnieje jak "otwarte projekty darmowe" dotyczące
    > rynku embedded. Ja nie mówie o miganiu diodą z RISC. Ja mówie o grubych
    > graczach którzy projektują choćby dla lotnictwa czy medycyny. Tam nie ma
    > nic za friko. NIC.

    No dobra. To po co komu ten RISC-V?
    Na rynku, na którym NIC nie jes darmowe, NIKT nie oczekuje, że będzie taniej. Taka
    dziwna, rozumiesz, społeczność.
    Po prostu się wlicza koszty w cenę produktu, na całej długości łańcucha. Ostatecznie
    i tak płaci podatnik, jeśli mówimy o tych konkretnych branżach. Więc kogo obchodzi
    RISC-V?

    > POSIX nie jest "bardzo dobrą abstrakcją" bo sam jest bardzo niedobry z
    > punktu widzenia embedded. To nie do tego.

    Uuu, to nie dość, że już poobrażałeś wszystkich (że psychiczni) to teraz jeszcze
    POSIX niedobry.
    Czy nie ustaliliśmy już w tych dyskusjach, że tylko my dwaj robimy dobrze?

    > używanie POSIXa w embedded jest komplenie bez sensu w
    > większosci zastosowań. FreeRTOS składa się z wątków, schedulera, jakiś
    > mutexów i tyle.

    No, i każda z tych rzeczy może mieć API POSIX. Bo niby w czym funkcja
    xSemaphoreCreateMutex jest lepsza od pthread_mutex_init?
    Ja wiem, w czym jest gorsza. Otóż kod działający na POSIX nie kompiluje się na
    FreeRTOS. I trzeba robić "abstrakcje", co jest o tyle idiotyczne, że POSIX już jest
    abstrakcją. No ale po co projekty mają być tanie, skoro mogą być drogie?

    > POSIXa też się zawija w abstrakcję w swoim kodzie.

    No właśnie się pytam, po co? Rozumiem, że rejestr w mikrokontrolerze do mrugania
    LEDem można opakować, bo w każdym uC się mruga inaczej. Ale po co zawijać coś, co już
    jest przenośną, niezależną od implementacji abstrakcją? To jest chore.

    > Abstrakcji nie szukasz w 3-rd party. Abstrakcję robisz u siebie.

    Albo korzystam ze standardów. Takim standardem jest POSIX.

    > Własnie
    > po to aby od detali posix-nie posix nie uzależniać się w swoim kodzie,
    > poza adapterami do konkretnego OSu.

    Dalej mylisz pojęcia (żadna nowość, w sumie):

    https://en.wikipedia.org/wiki/POSIX

    "The Portable Operating System Interface (POSIX) is a family of standards specified
    by the IEEE Computer Society for maintaining compatibility between operating
    systems."

    Ostatnie 4 słowa są kluczowe.
    A teraz mam robić abstrakcję do tej abstrakcji, bo każdy januszowy RTOSik musi
    koniecznie mieć ourMutexCreate()?

    > Nie jest przenośny. Jest vendor-lockin. Tutaj vendorem jest POSIX

    Czyli dalej, uporczywie, mylisz pojęcia. POSIX nie jest vendorem. Vendorem jest np.
    Texas Instruments. Albo np. Ja&Szwagier Sp. z o.o. Natomiast POSIX jest standardem,
    dzięki któremu programy łatwiej[*] jest przenosić z jednego OSa na drugiego.

    [*] Co oczywiście nie przeszkadza OSom konkurować parametrami albo ficzerami, ani
    programom korzystać z ich unikalnych ficzerów. Tylko że wtedy programy stają się
    nieprzenośne na życzenie, a nie z przymusu.

    > > Klikasz w złym miejscu. https://www.apple.com/pl/mac-pro/specs/
    > > Jak dla mnie, ma wystarczająco dużo złącz.
    > I nagle przestają działać.

    USB-C przestanie działać?
    Może inaczej: któro ze złącz w powyższym Macu, które można znaleźć też na pececie
    windowsowym, przestanie działać?
    Bo chyba chodziło o to, że w Macu jest mniej złącz, niż w pececie? Czy o co chodziło?

    > > Nie zrozumiałeś. Pluginy do obróbki dźwięku albo obrazu (albo video) nie są
    pisane w Pythonie.
    > Nie są, a Mac przeskoczył na ARMa i reszta 3rd-party zrobiła to chwile
    > potem.

    Nie, nie zrobiła. Właśnie w tym rzecz. I ten proces będzie trwał bardzo długo, dla
    niektórych pewnie się nigdy nie skończy.
    I dlatego Apple ma w ofercie obie platformy *równocześnie*. Bo naprawdę nie da się
    przekompilować cudzego kodu.

    > Rozmawiamy o embedded i zmienach embedded cpu.

    No i ja dalej tej zmiany w najbliższym czasie nie widzę. Rozszerzenie oferty, może i
    tak. Ale to żadna rewolucja, bo i tak wszyscy producenci mają różne alternatywy, dla
    różnych segmentów rynku. Po prostu będzie jeszcze większy bałagan.

    --
    Maciej Sobczak * http://www.inspirel.com


  • 23. Data: 2021-01-07 23:46:06
    Temat: Re: Spieszmy się kochać Windows
    Od: heby <h...@p...onet.pl>

    On 07/01/2021 22:13, Maciej Sobczak wrote:
    >>> Nie wiem, czy są. Ale wiem, że NVIDIA kupiła ARMa.
    >> I nagle zmieniła politykę czy tylko wyciska dalej co się da z licencji?
    > A już jest powód, żeby zmieniać politykę?

    Skoro tak, to aktualny właściciel jest mało ważny.

    >> Ależ zobaczymy. Nie można też wykluczyć że nvidia ma interes w NIE
    >> dawaniu rdzeni ARMa konkurencji.
    > Może tak być. Ale, ale... Kto jest ich konkurencją?

    AMD. I za chwile chińczycy.

    > Producenci embedded?

    Niektórzy. Na ten przykład nvidia produkuje SoC oparte o różne dziwne
    technologie. "Dokładnie takie same" SoC produkują chińczycy i sprzedają
    je kilka razy taniej. Stąd te wszystkie tanie adnroid boxy.

    > No dobra. To po co komu ten RISC-V?

    Aby się urwać od ARMa. Aby mieć więcej mocy z wata. Aby mieć źródło pod
    kontrolą i nie patrzeć czy za 2 lata zapukają prawnicy albo czy kupi to
    Orlen i udostepni licencje pod warunkiem biało-czerownej obudowy i
    grania Mazurka po podłączeniu zasilania.

    > Na rynku, na którym NIC nie jes darmowe, NIKT nie oczekuje, że będzie taniej.

    Taniość jest trzeciorzędna w niektórych wypadkach. A w innych nie.
    Różnie bywa.

    Taki producent odpowiednika STM32 ale opartego o rdzeń RISC może ściąć
    cenę swoich cpu o dolara, powiedzmy. A to robi różnicę kiedy ich
    sprzedajesz setki milionów, choćby jako sterowniki dildo i szczoteczek
    do zębów.

    > Po prostu się wlicza koszty w cenę produktu, na całej długości łańcucha.

    Zależy co produkujesz. Jeśli toalety na stacje kosmiczne to możesz sobie
    wliczać w koszty wszystko. Ale jeśli mikrokontrolery do szczoteczek do
    zębów, to już liczysz centy. Różnie.

    > Więc kogo obchodzi RISC-V?

    Różnych ludzi z różych powodów. ARM to taki vendor-lockin w branży. W
    dodatku aktywnie zniechęca stosując agresywną politkę patentową i
    spuszczając prawników z łańcucha jak ktoś za głośno protestuje.

    >> POSIX nie jest "bardzo dobrą abstrakcją" bo sam jest bardzo niedobry z
    >> punktu widzenia embedded. To nie do tego.
    > Uuu, to nie dość, że już poobrażałeś wszystkich (że psychiczni) to teraz jeszcze
    POSIX niedobry.

    POSIX w embedded nie jest dobry. Pewnie, że można postawić Linuxa i
    nazywać to "embedded" ale to tylko taki mały komputer w małym
    pudełeczku. Z embedded to ma tyle wspólnego na ile to pojęcie napompujemy.

    Osobiscie wolałbym aby mój respirator niekoniecznie pracował na POSIXie.

    > Czy nie ustaliliśmy już w tych dyskusjach, że tylko my dwaj robimy dobrze?

    Nie. Ja widzę świat tylko przez moje doświadczenia, które są zasadniczo
    mocno inne niż innych, najzwyczajniej pracuje w dośc specyficznym i
    hermetycznym miejscu. Nie twierdze że mam monopol na poglądy, ale zawsze
    bedę tuptał nogą jak będe słyszał że profesjonalizmem albo niemożnością
    tłumaczy sie dziadostwo, szczególnie w kodzie.

    >> używanie POSIXa w embedded jest komplenie bez sensu w
    >> większosci zastosowań. FreeRTOS składa się z wątków, schedulera, jakiś
    >> mutexów i tyle.
    > No, i każda z tych rzeczy może mieć API POSIX. Bo niby w czym funkcja
    xSemaphoreCreateMutex jest lepsza od pthread_mutex_init?

    Bez znaczenia. Jeśli masz na to abstrakcję może sobie pracować na
    AmigaOS. Ale musisz mieć abstrkację. Masz, prawda? Jak byś inaczej mógł
    to testować. Wiec musisz mieć.

    > Ja wiem, w czym jest gorsza. Otóż kod działający na POSIX nie kompiluje się na
    FreeRTOS.

    Nic dziwnego, skoro nie ma abstrakcji na system. Mój sie kompiluje na
    posixie i na windowsie, tanim kosztem mogę dodać MacOsa. FeeeRTOSa nie
    dodam bo nie ma potrzebnego hardware na platformach FreeRTOSowych. Czy
    to czary?

    > I trzeba robić "abstrakcje", co jest o tyle idiotyczne, że POSIX już jest
    abstrakcją.

    Nie jest abstrakcją na różne OSy. Jest tylko abstrakcją od hardware i
    konkretnych implementacji OSu. NIE jest abstrakcja od systemu, bo sam
    jest tym konkretnym systemem.

    Zaznajom się np. z Qt. To jest abstrakacja na system. Średnia, ale
    bardzo skuteczna, POSIX jest tylko jednym z paru implementacji możliwych
    do użycia.

    > No ale po co projekty mają być tanie, skoro mogą być drogie?

    To nigdy nie działa w ten sposób. Koszt pisania z abstrkacją jest
    mikroskopijnie wyższy niż refaktorowania tony g...na napisanego przez
    team który wszędzie wciskał pthread_mutex razem z jedgo wszystkimi
    cechami specjalnymi.

    >> POSIXa też się zawija w abstrakcję w swoim kodzie.
    > No właśnie się pytam, po co? Rozumiem, że rejestr w mikrokontrolerze do mrugania
    LEDem można opakować, bo w każdym uC się mruga inaczej. Ale po co zawijać coś, co już
    jest przenośną, niezależną od implementacji abstrakcją? To jest chore.

    POSIX nie jest przenośny. Istnieje masa systemów z nim niezgodnych.

    Zaś wszystkei zgodne maja mała użytecznośc w embedded. POSIX jest do
    stacji roboczych a nie migania diodami lub kontroli oddechu. Naprwadę,
    nie potrzebujesz parentpid i fopen w respiratorze.

    >> Abstrakcji nie szukasz w 3-rd party. Abstrakcję robisz u siebie.
    > Albo korzystam ze standardów. Takim standardem jest POSIX.

    Dalej nie pojmujesz że posix nie jest abstrakcją. Abstrakcją jest
    MyTools::MyMutex a nie pthread_mutex. Abstrakcją może byc też Qt, ale to
    jest abstrkacja 3rd-party i niekoniecznie chcesz być zależny od decyzji
    biznesowych Qt.

    >> Własnie
    >> po to aby od detali posix-nie posix nie uzależniać się w swoim kodzie,
    >> poza adapterami do konkretnego OSu.
    > Dalej mylisz pojęcia (żadna nowość, w sumie):
    > https://en.wikipedia.org/wiki/POSIX
    > "The Portable Operating System Interface (POSIX) is a family of standards specified
    by the IEEE Computer Society for maintaining compatibility between operating
    systems."

    Przeczytałeś cos nie na temat. To jest abstrkacja do konkretnej rodziny
    systemów. W tej rodzinie nie ma FreeRTOSa ani Widnowsa CE, a są one w
    embedded używane.

    Posix to NIE jest abstrakcja na systemy operacyjne. Co najwyżej na wąską
    grupę bardzo podobnych systemów, o nikłej uzytecznosci w embedded.

    Abstrakcja na systemy operacyje jest wysokopoziomowa. Tam gdzie nie
    wiadomo czy mutex to int, handle, pointer czy foo.

    > A teraz mam robić abstrakcję do tej abstrakcji, bo każdy januszowy RTOSik musi
    koniecznie mieć ourMutexCreate()?

    Januszowe RTOSiki są popularniejsze od grażynowych posixów.

    Pewnego dnia januszowy RTOSik zostanie zamieniony na mirkowy CE bo taki
    się zwidziało właścicielowi biznesu. Jesli Janusz nie był iditiotą to
    zmiana na to CE może być mało bolesna. Jesli był idiotą to właśnie
    przewalają przez miesiące biliony ton kodu szukając tych wszystkich
    problemów sepcyficznych dla FreeRTOSa.

    Co kto woli. Przecież nie ma problemu aby pisać nieprzenośnie, jesli to
    jednorazowy projekt.

    Pamiętaj o czym rozmawiamy: stwierdziłeś że zmiana procesora to nie
    tylko zmiana makefile, tylko bardzo ciezka rzecz.

    No więc to cieżka rzecz, jak się ma dziadowski kod.

    >> Nie jest przenośny. Jest vendor-lockin. Tutaj vendorem jest POSIX
    > Czyli dalej, uporczywie, mylisz pojęcia. POSIX nie jest vendorem.

    Bo to nie ma znaczenia. Może być OS-Lockin jeśli już takim purystą
    jesteś? Co to ma za znaczenie? Jesteś foo-lockin. Czy to interfejs,
    bibliteka 3rd-party czy procesor. Wsio rawno z punktu widzenia problemu.

    > Natomiast POSIX jest standardem, dzięki któremu programy łatwiej[*] jest przenosić
    z jednego OSa na drugiego.

    W obrębie mało przydatnej w embedded rodziny OSów.

    Tak wiem, zaraz ktoś wyjmie z kieszeni jakiś przykład że gdzieś stosują
    Linuxa w embedded. Owszem. Gdzieś stosują.

    >>> Klikasz w złym miejscu. https://www.apple.com/pl/mac-pro/specs/
    >>> Jak dla mnie, ma wystarczająco dużo złącz.
    >> I nagle przestają działać.
    > USB-C przestanie działać?

    Wyobraź sobie że tak się właśnie stało. Trach i po aktualizacji OS kilka
    tysięcy dolców na Twoim biurku zamieniło się w cegły.

    Oczywiscie nie złacze. Tylko pewna cecha tego złacza, pozawlająca na
    przesyłanie obrazu. Czysto "softwareowa" awaria, nie przypadkowa. Nawet
    się nie zainteresowałeś co się stało, prawda? Podpowiem ponownie:
    DisplayLink. Poczytaj. To nawer patriotyczna firma jest.

    Nie nie, oni dalej będa kupować Apple, to religia.

    > Bo chyba chodziło o to, że w Macu jest mniej złącz, niż w pececie? Czy o co
    chodziło?

    Nie. Chodziło o to że cwaniaczki od Apple wycyckały pewnego wieczoru
    tysiące "profesjonalistów" którzy podpinali zewnątrzne monitory do
    swoich laptopów myśląc że uzyskują w ten sposób profesjonalne narzedzie
    do dicking-around. I ktoś wyłaczył światło. Bez słowa. I to nie jest awaria.

    >>> Nie zrozumiałeś. Pluginy do obróbki dźwięku albo obrazu (albo video) nie są
    pisane w Pythonie.
    >> Nie są, a Mac przeskoczył na ARMa i reszta 3rd-party zrobiła to chwile
    >> potem.
    > Nie, nie zrobiła.

    Wiec photoshop nie działa na M1 i tracą pieniądze? Serio, myslisz że
    będzie to trwało bardzo długo? Oni te swoje pluginy kompilowali w
    popłochu na ARMy jak tylko Apple pierdło coś w temacie ARMa.

    > I dlatego Apple ma w ofercie obie platformy *równocześnie*. Bo naprawdę nie da się
    przekompilować cudzego kodu.

    Bo taki system dystrybucji aplikacji: z wysypiska. Ale spokojnie, da sie
    skompilować cudzy kod. Cudzymi rękami właśnie. Działa. Po prostu patrz
    jak robią to firmy które straciły by pieniądze gdyby tego nie zrobili
    zawczasu.

    >> Rozmawiamy o embedded i zmienach embedded cpu.
    > No i ja dalej tej zmiany w najbliższym czasie nie widzę.

    Nie widzisz, bo też ten rynek nie jest do wygooglania. To jest coś
    głęboko na poziomie aplikacji i narzędzie niedostepnych dla Kowalskiego,
    dziejace się w tle, zasłonięte NDA.

    > Po prostu będzie jeszcze większy bałagan.

    Raczej dodatkowy kompilator do makefile.


  • 24. Data: 2021-01-08 22:42:21
    Temat: Re: Spieszmy się kochać Windows
    Od: Maciej Sobczak <s...@g...com>

    > Taki producent odpowiednika STM32 ale opartego o rdzeń RISC może ściąć
    > cenę swoich cpu o dolara, powiedzmy. A to robi różnicę kiedy ich
    > sprzedajesz setki milionów, choćby jako sterowniki dildo i szczoteczek
    > do zębów.

    Ale przecież do tego już mają rdzenie. Każdy. Np. Texas ma MSP430. Bardzo fajny, też
    RISC, swoją drogą. Pobór prądu ma mniejszy, niż naturalny wyciek z typowej
    konsumenckiej baterii. Czyli bateryjkę prędzej szlag trafi ze starości, niż z
    wyładowania. I każdy poważny producent takie coś ma, w dodatku swoje, więc nie musi
    się martwić o czyjeś licencyjne fanaberie. To po co jakiś RISC-V?

    > POSIX w embedded nie jest dobry.

    Nadal nie napisałeś, dlaczego.

    > Osobiscie wolałbym aby mój respirator niekoniecznie pracował na POSIXie.

    Na pewno nie chcesz, żeby opracował na FreeRTOSie, bo to ma poziom poniżej
    amatorskiego.
    Ale ponieważ POSIX to jest tylko API a nie implementacja, to dlaczego nie? Mogę mieć
    dobrej jakości implementację z interfejsem POSIX. Nadal nie napisałeś niczego, co by
    temu przeczyło.

    Przykładowo, dobrej jakości systemem do embedded z interfejsem POSIX jest QNX.
    W szczególności, jest używany w systemach medycznych:

    https://blackberry.qnx.com/en/software-solutions/emb
    edded-software/medical

    Więc jednak masz POSIX w urządzeniu medycznym. I dobrze.

    > Ale musisz mieć abstrkację. Masz, prawda? Jak byś inaczej mógł
    > to testować. Wiec musisz mieć.

    Przecież napisałem, że mam. Nazywa się POSIX.

    > Zaznajom się np. z Qt.

    Już mnie kiedyś chciałeś do tego zachęcić, ale słabo wyszło.

    > POSIX nie jest przenośny. Istnieje masa systemów z nim niezgodnych.

    Ręce opadają, nic nie rozumiesz.
    To nie POSIX ma być przenośny, tylko programy napisane pod to API. I zapewniam, że
    takie programy są przenośne pomiędzy systemami, które ten standard implementują.
    Np. kod, który napisałem na Linuksie zadziałał od ręki na QNX. Radości było z tego
    jak mało kiedy. Właśnie na tym polega ta przenośność.

    > Zaś wszystkei zgodne maja mała użytecznośc w embedded. POSIX jest do
    > stacji roboczych a nie migania diodami lub kontroli oddechu. Naprwadę,
    > nie potrzebujesz parentpid i fopen w respiratorze.

    Czyli dalej nie rozumiesz. Kto powiedział, że system ma mieć wszystkie funkcje?
    Chodzi o to, że jeśli już ma np. funkcję inicjalizującą mutex, to niech ta funkcja
    się nazywa pthread_mutex_init a nie ourMutexCreate. I jeśli system ma tylko 10 takich
    funkcji, to niech one się nazywają tak jak 10 funkcji z POSIX. I to wystarczy, żeby
    kod napisany na taki system można było bez żadnej modyfikacji przenieść albo zrobić
    mu unit-testy na innym systemie, np. na Linuksie, bo akurat taki jest łatwiej
    dostępny.

    > > Albo korzystam ze standardów. Takim standardem jest POSIX.
    > Dalej nie pojmujesz że posix nie jest abstrakcją.

    Dalej nie przeczytałeś nawet pierwszego zdania z Wikipedii na ten temat. A dałem
    linka.

    > Abstrakcją jest
    > MyTools::MyMutex a nie pthread_mutex.

    To jest abstrakcja na abstrakcję. Też tak robię - ale to jest dodatkowy koszt,
    którego nie musiałbym ponosić, gdyby systemy były zgodne ze standardami. A niestety
    nie są, bo przecież fajniej jest mieć ourMutexCreate().
    I teraz masz milion firm robiących systemy embedded i każda z nich robi wrapper
    MyTools::MyMutex. Dlaczego? Ile jest interesujących systemów w użyciu, nawet
    wliczając te dziadoskie typu FreeRTOS? No ile? To zobacz teraz, jaki jest stosunek
    kosztów: milion firm robi własne abstrakcje do abstrakcji, bo w przybliżeniu 2-3
    systemy koniecznie musiały mieć ourMutexCreate. Czyli sumaryczny koszt tych
    wszystkich abstrakcji jest większy, niż to pod spodem. To jest choroba naszej branży.

    > Abstrakcją może byc też Qt

    Ale czemu sobie żałować? Zróbmy abstrakcję na to też. Przecież nie wszystkie
    frameworki są zgodne, prawda? A co jak management zdecyduje, że zmieniamy Qt na coś
    innego? I teraz, jeśli programiści nie są idiotami, to pójdzie sprawnie, bo mają
    abstrakcje, tak?
    Wszystkie Twoje argumenty można tu zastosować.

    [POSIX]
    > Przeczytałeś cos nie na temat. To jest abstrkacja do konkretnej rodziny
    > systemów.

    Konkretnej? Nie, żadnej rodziny tam nie było. Niektórych systemów w ogóle jeszcze nie
    było, jak ten standard powstał.

    > W tej rodzinie nie ma FreeRTOSa ani Widnowsa CE, a są one w
    > embedded używane.

    No są. Niestety. Bo po co być zgodnym ze standardami, skoro można mieć - *beż żadnej
    wartości dodanej* - ourMutexCreate?
    Ale o to można obwiniać tylko autorów tych systemów.
    POSIX jest standardem. QNX spełnia ten standard. FreeRTOS nie spełnia tego standardu.
    Co zrobić.

    > Posix to NIE jest abstrakcja na systemy operacyjne.

    Właśnie dokładnie tym jest.

    > Co najwyżej na wąską
    > grupę bardzo podobnych systemów, o nikłej uzytecznosci w embedded.

    Nadal czekam na wyjaśnienie, dlaczego nie do embedded.
    Dlaczego ourMutexCreate jest do embedded a pthread_mutex_init nie jest. To ciekawe
    bardzo. Funkcja się inaczej nazywa i już nie nadaje się do embedded. Kurdę, muszę
    uważać, jak funkcje nazywam.

    > Abstrakcja na systemy operacyje jest wysokopoziomowa. Tam gdzie nie
    > wiadomo czy mutex to int, handle, pointer czy foo.

    Właśnie tak jest w POSIX. pthread_mutex_t nie jest określony w standardzie i w
    różnych implementacjach może być różnie zdefiniowany.

    > Januszowe RTOSiki są popularniejsze od grażynowych posixów.

    A x86 i DOS były popularniejsze swego czasu. Tylko że samodzielnie wylałeś na nie
    tyle żółci, że powinieneś sam rozumieć, jaki jest związek popularności z wartością
    merytoryczną.

    > Pewnego dnia januszowy RTOSik zostanie zamieniony na mirkowy CE bo taki
    > się zwidziało właścicielowi biznesu. Jesli Janusz nie był iditiotą to
    > zmiana na to CE może być mało bolesna.

    Niestety nie jest to zgodne z moimi obserwacjami. Zmiana jednego systemu POSIX na
    drugi system POSIX może być mało bolesna, ale zmiana OurRTOS na TheirRTOS to większy
    problem, bo jak już ktoś miał gdzieś standardy, to zwykle w różnych, niezależnych
    kierunkach. Wtedy to nie jest kwestia taniego wrappera. Zwłaszcza, jak to tego
    dołożymy stos TCP. Np. popularnym partnerem dla dziadoskiego FreeRTOSa jest dziadoski
    LwIP. To jest dopiero duet, wszystko wtedy opada.

    > Pamiętaj o czym rozmawiamy: stwierdziłeś że zmiana procesora to nie
    > tylko zmiana makefile, tylko bardzo ciezka rzecz.
    >
    > No więc to cieżka rzecz, jak się ma dziadowski kod.

    Jeszcze cięższa, jak się nie ma kodu. O tej możliwości też cały czas mówimy, bo to
    jest realna możliwość.

    Ale trochę rozwlekła nam się ta dyskusja zrobiła, więc może skupmy się: dlaczego
    POSIX nie jest dobry do embedded? Dlaczego funkcja, która się nazywa na literkę "p"
    nie nadaje się do embedded a funkcja robiąca dokładnie to samo, ale na inną literkę
    się nadaje?
    "U mnie działa."

    --
    Maciej Sobczak * http://www.inspirel.com


  • 25. Data: 2021-01-09 01:23:48
    Temat: Re: Spieszmy się kochać Windows
    Od: heby <h...@p...onet.pl>

    On 08/01/2021 22:42, Maciej Sobczak wrote:
    >> Taki producent odpowiednika STM32 ale opartego o rdzeń RISC może ściąć
    >> cenę swoich cpu o dolara, powiedzmy. A to robi różnicę kiedy ich
    >> sprzedajesz setki milionów, choćby jako sterowniki dildo i szczoteczek
    >> do zębów.
    > Ale przecież do tego już mają rdzenie.

    Nie wiesz jakie mają kryteria. Jak dildo ma 40 programów i trzeba tak
    pod 1Ghz FPU do tego?

    > Texas ma MSP430

    I sprzedają go jako IpCores coby sobie ASICowy SoC dorobić na około?

    > To po co jakiś RISC-V?

    Bo pewnego dnia Texas zatrudni na CEO Balmera, który znowu będzie rzucał
    krzesłami?

    Od jakiegoś czasu jest tendencja aby w miarę mozliwości nie zamykac się
    ze swoimi projektami za bardzo. RISC-V to jest taki "opensource ARM".
    Tak jest postrzegany. W razie jak na stanowisku CEO ARMa stanie świr,
    mamy się gdzie ewakuować.

    >> POSIX w embedded nie jest dobry.
    > Nadal nie napisałeś, dlaczego.

    Wiele systmów embedded:
    a) nie ma plików
    b) nie ma procesów
    c) nie ma rurek
    d) nie ma sygnałów
    e) nie ma konsoli
    f) a wniej interaktywnych poleceń

    Ale ma 40 programów w dildo, albo 20 programów w respiratorze. W tym
    drugim nawet formalnie weryfikowanych.

    POSIXa w jakiejś implementacji ciężko będzie formalnie weryfikować, on
    sam z siebie jest bardzo kiepski i mocno chaotyczny, oraz *NIE DO TEGO*.

    >> Osobiscie wolałbym aby mój respirator niekoniecznie pracował na POSIXie.
    > Na pewno nie chcesz, żeby opracował na FreeRTOSie, bo to ma poziom poniżej
    amatorskiego.

    Jednak wolę dalej FreeRTOSa nad POSIXa w respiratrorze, jesli już mam
    wykitować z powodu OSa. Może sygnał przyjdzie w wątku z obsługa, a może
    nie. POSIX? Nie, dziękuję.

    > Ale ponieważ POSIX to jest tylko API a nie implementacja, to dlaczego nie?

    Bo POSIX jest niezwykle trudny do weryfikacji. Z powodu komplikacji
    swojego API.

    > Mogę mieć dobrej jakości implementację

    Możesz. A masz?

    > z interfejsem POSIX. Nadal nie napisałeś niczego, co by temu przeczyło.

    Weryfikacji formalnej by przeczyło. Z tego powodu czasem wybiera się
    takie cuda na kiju jak jadra formalnie zweryfikowane (L4) i dziwaczne
    metody kostrukcji scalaków.

    Niekiedy, aby dostać jakiś konkretny certyfikat, musisz wykazac że dany
    kawałek softu jest *dobrze* napisany. To kłopotliwe pojęcie, ale fakt że
    wsadziłeś POSIXa do migania diodą lub kontroli oddechu może być powaznym
    problemem w odpowiedzi na pytanie czy jest dobrze napisany.
    Najzwyczajniej możesz nie dać rady jej formalnie udzielić. Dlatego
    istnieją znacząco mniejsze systemy w któych masz na to jakąś szansę.

    > Przykładowo, dobrej jakości systemem do embedded z interfejsem POSIX jest QNX.
    > W szczególności, jest używany w systemach medycznych:
    > https://blackberry.qnx.com/en/software-solutions/emb
    edded-software/medical
    > Więc jednak masz POSIX w urządzeniu medycznym. I dobrze.

    Tak, istnieją systemy, narzędzia, cores certyfikowane. Nie ma problemu
    aby były zgodne w jakiejś częsci z posix. Nic tak nie powoduje ulgi
    doczesnej jak to że na moim respiratorze można zrobić fread z EINTR i
    jest na to 15 ifów, a miało być 16.

    >> Ale musisz mieć abstrkację. Masz, prawda? Jak byś inaczej mógł
    >> to testować. Wiec musisz mieć.
    > Przecież napisałem, że mam. Nazywa się POSIX.

    Nie, to tylko kilka implementacji. Abstrakcja to nie jest.

    >> Zaznajom się np. z Qt.
    > Już mnie kiedyś chciałeś do tego zachęcić, ale słabo wyszło.

    Nie namawiam, to tylko przykład co to jest abstrakcja na OS a nie
    abstrkacja na rodzię OSów.

    >> POSIX nie jest przenośny. Istnieje masa systemów z nim niezgodnych.
    > Ręce opadają, nic nie rozumiesz.
    > To nie POSIX ma być przenośny, tylko programy napisane pod to API.

    Staje się wtedy tak samo nieprzenośne jak implementacja POSIXa. Na
    przykład sa nieprzenośne na to i tamto.

    > I zapewniam, że takie programy są przenośne pomiędzy systemami, które ten standard
    implementują.

    Czyli wąska grupa unixo-podobnych + duperele.

    > Np. kod, który napisałem na Linuksie zadziałał od ręki na QNX.

    A na freeRTOS? A na Windows CE?

    Ok, ustalmy wobec tego że masz program *częściowo* przenośny. Tak lepiej?

    > Właśnie na tym polega ta przenośność.

    Nie. Ale może takie masz warunki pracy, w których interesuje Cie
    przenośnośc z Ubuntu na NetBSD i wtedy POSIX faktycznie można uznać za
    jakiś rodzaj abstrakcji. Ja nie mam takiego komfortu. Nie tylko ja.

    >> Zaś wszystkei zgodne maja mała użytecznośc w embedded. POSIX jest do
    >> stacji roboczych a nie migania diodami lub kontroli oddechu. Naprwadę,
    >> nie potrzebujesz parentpid i fopen w respiratorze.
    > Czyli dalej nie rozumiesz. Kto powiedział, że system ma mieć wszystkie funkcje?

    Czyli nie jest zgodny z POSIX?

    > Chodzi o to, że jeśli już ma np. funkcję inicjalizującą mutex, to niech ta funkcja
    się nazywa pthread_mutex_init a nie ourMutexCreate.

    Wycinasz przenośność na nieposixy.

    > I jeśli system ma tylko 10 takich funkcji, to niech one się nazywają tak jak 10
    funkcji z POSIX.

    Nie, to już za daleko. Przecieka Ci implementacja przez abstrkację.
    Dotyczy ona nie tylko nazw, ale przede wszystkim sposobu użycia. W sumie
    bez znaczenia czy masz pthread_mutex_init nazwany dupa. Istotne jest że
    w innym systemie (niezgodnymz POSIX) może w ogóle nie itnieć inicjacja
    poza miejscem deklaracji, albo istnieć przyjmująca paramter resursive.
    Itd itp. Przeciekanie POSIXa do kodu to nie tylko nazwy, to sposoby ich
    używania.

    Dlatego masz class MyMutex a nie void MyMutexInit(). To drugie
    faktycznie nic by nie dało.

    > zrobić mu unit-testy na innym systemie, np. na Linuksie, bo akurat taki jest
    łatwiej dostępny.

    A na windowsie?

    >>> Albo korzystam ze standardów. Takim standardem jest POSIX.
    >> Dalej nie pojmujesz że posix nie jest abstrakcją.
    > Dalej nie przeczytałeś nawet pierwszego zdania z Wikipedii na ten temat. A dałem
    linka.

    Przeczytałem. Zmartwie Cie równiez. Na codzień piszę kod na POSIXie i
    Windowsie *jednoczesnie*. Powiedzmy że mam zielone pojęcie gdzie POSIX
    jest przenośny. Powiedzmy że nieco powyżej średniej, mam to pojęcie.
    Nijak nie udało mi się zawołać funkjci Posixowych w Windowsie.
    Najwyraźniej Wikipedia pisze od rzeczy lub nie pojmujesz o co chodziło
    autorom.

    >> Abstrakcją jest
    >> MyTools::MyMutex a nie pthread_mutex.
    > To jest abstrakcja na abstrakcję.

    To jest abstrakcja na więcej implementacji OSów niż tylko POSIX.

    > Też tak robię - ale to jest dodatkowy koszt

    Kosztuje mnie absolutnie 0 czasu w runtime, absolutnie 0 czasu w
    pisaniu. Ba, jest tańszy niż POSIX bo mogę używać RAII, więc robie mniej
    błedów emulując ręcznie RAII, tak jak chce POSIX.

    > I teraz masz milion firm robiących systemy embedded i każda z nich robi wrapper
    MyTools::MyMutex. Dlaczego?

    Aby się uniezależnić od OSa. Aby móc przeprowadzić unit testy. Aby móc
    łatwiej znaleźć błedy. Aby szybciej pisać kod. Aby łatwiej go czytać.
    Aby łatwiej go refaktorować.

    Zgadnij dlaczego mamy (wreszcie) std:: z obsługą wątków, i to nie jest
    POSIX like API. Najwidoczniej ktoś kombinuje jak ja - abstrakcja na OS.

    > Ile jest interesujących systemów w użyciu, nawet wliczając te dziadoskie typu
    FreeRTOS? No ile?

    Co najmniej kilkanaście. Twoje POSIXy, Win32/64, mikroskopijne RTOSy,
    dedykowane dziwadła jak L4 i systemy pisane pod zagadnienie, np. do
    lotów kosmicznych. I pewnie masę, których nie wymieniam, bo przecież
    znam je tylko z tego że się obiły o uszy.

    > To zobacz teraz, jaki jest stosunek kosztów: milion firm robi własne abstrakcje do
    abstrakcji

    Które kosztują, zwyczajowo prawie nic i dzięki temu, że sa pisane z
    myslą o czymś nowoczesniejszym niż kompilatory z lat 70, pozwalaja
    dodatkowo zredukować koszta pisania kodu, używając nowocześniejszych
    technik generujacych mniej błedu. std::lock_guard jest nieskończenie
    lepszym wyborem niż ręczne dziubdzianie mutex lock/unlock w posixie.

    Nie robią własnych. Wiele z tych abstrakcji jest już napisanych:
    boost/std i masa pomniejszych dupereli.

    > , bo w przybliżeniu 2-3 systemy koniecznie musiały mieć ourMutexCreate

    Zniknąłeś pozostałe zalety.

    >. Czyli sumaryczny koszt tych wszystkich abstrakcji jest większy

    Jest prawie zerowy. Przykładowo moja abstrakcja na rurki, zajeła mi 2h
    do napisania i otestowania i od lat nie zmieniłem w niej bajta. Ta sama
    funkcjonalność, reimplemntowana ręcznie kończy się deadlockiem bo ktoś
    zapomniał ponowić ::read, bo wyleciał EINTR.

    Koszta takich bugów są niebotyczne, bo wylatują tylko przy pełni
    księżyca w Kambodży podczas monsunów. Po to owijamy, między innymi,
    POSIXa w dodatkową abstrakcję wysokopoziomową, aby chronić się od
    popełniania w kółko tych samych błedów tego dziwdowskiego interfejsu.

    Zauważyłeś ile jest makr które "ułatwiają" pracę z funkcjami POSIXowymi?
    To dlatego, że to jest wyjątkowo żałosne API i nawet najbardziej
    zatwardziali unixiarze w końcu poddali się, wrapując te klocki w makra.

    > To jest choroba naszej branży.

    Nie. Pisanie na wysokim poziomie nie jest chorobą.

    >> Abstrakcją może byc też Qt
    > Ale czemu sobie żałować? Zróbmy abstrakcję na to też.

    Oczywiście że się robi i na to abstrkację. Chcesz aby po Twoim kodzie
    latały QString czy std::string? Co jest bardziej niebezpieczne?

    Wybór może być biznesowy. Przykładowo kilka lat temu zamieszanie z
    licencjonowaniem Qt spowodowało że "ludzie" poważnie zastanowili się czy
    warto się od Qt uzależnić. I zauważyli że część abstrakcji z Qt można
    znaleźc w boost/std.

    > Przecież nie wszystkie frameworki są zgodne, prawda?

    Nie są. Dlatego najlepiej oddzielić wartwę logiki od wartwy GUI aby w
    razie czego "łatwo" GUI wymienić. To rodzaj sztuki, w prewnym sensie
    robienie abstrkacji na GUI uważam za znacznie trudniejsze niż na OS.

    > A co jak management zdecyduje, że zmieniamy Qt na coś innego?

    To mam do przepisania jakieś 10% kodu, często tylko poprawienia.
    Pozostały jest abstrakcyjny, przetestowany, nic się w nim nie zmienia.

    > I teraz, jeśli programiści nie są idiotami, to pójdzie sprawnie, bo mają
    abstrakcje, tak?

    Nie, bo używanie Qt jest mocno zaraźliwe. Znacznie bardziej niż uzywanie
    POSIXa. Wiec, o ile można część apliakcji skompilować w oderwaniu od Qt
    (np. modele i częsciowo kontrolery) to już widoki będą wymagały wymiany.

    Ale dalej, poprawna higiena ratuje 90% apliakcji.

    > Wszystkie Twoje argumenty można tu zastosować.

    Tak, Qt było przykładem jak wygląda abstrakcja na OS 3-rd party, a nie
    wzorzec w dyskusji jak ją robić. Co napisałem wyraźnie. Uzycie Qt jako
    abstrakcji to wybór biznesowy i niekoniecznie poprawny wszędzie i zawsze.

    > [POSIX]
    >> Przeczytałeś cos nie na temat. To jest abstrkacja do konkretnej rodziny
    >> systemów.
    > Konkretnej? Nie, żadnej rodziny tam nie było. Niektórych systemów w ogóle jeszcze
    nie było, jak ten standard powstał.

    I jakimś trafem mało który system suwerena ten standard implementuje,
    podobnie w embedded OSa może w ogóle nie być, ba, może być napisany na
    miejscu, do potrzeb. Nikt nie będzie implementował dziadowskich
    koncepcji z POSIXa tylko dlatego że jest jakiś "standard" pochodzący z
    mainframes.

    >> W tej rodzinie nie ma FreeRTOSa ani Widnowsa CE, a są one w
    >> embedded używane.
    > No są. Niestety. Bo po co być zgodnym ze standardami, skoro można mieć - *beż
    żadnej wartości dodanej* - ourMutexCreate?

    Pisałem juz kilka razy o tej wartości dodanej. W sprawie zgodności z
    POSIxem udaj się do MS. Zaznaczam, ze mimo lat dziubdziania Cywina i
    ostatnio samego MS, POSIXa w windowsie nie zobaczysz, są fundamentalne
    problemy z faktem że posix to nie przemyslany standard, tylko zbiór
    aktualnie działajacego stanu jakiegoś wiekowego UNIXa, zamrożony i
    nazwany "abstrakcją", pełen debilizmów i workaroundów.

    > Ale o to można obwiniać tylko autorów tych systemów.

    Zgadza się, jednak z jakiejś przyczyny WinApi, mimo stwojej śmieszności
    w tak wielu kwestiach, nie ma kompletych bzdur w np. obsłudze pipes, jak
    jest w unixie. Nie ma sygnałów wyskakujących w dowolnym wątku i
    kopiących programistę prosto w dupę. Itd itp. Może jednak WinAPI było
    bardziej przemyślane i nie po drodze im z POSIXem. To co, postulujesz
    nie używać Windowsa w programowaniu bo niezgodny z tym zbiorem głupich
    rozwiązań nazywancyh POSIX i oferujący swój własny zbiór głupich
    rozwizań nazywanych WinAPI? A może jednak odciąc się od obydwu, co?

    > POSIX jest standardem. QNX spełnia ten standard. FreeRTOS nie spełnia tego
    standardu. Co zrobić.

    Odciąć się abstrakcją.

    >> Co najwyżej na wąską
    >> grupę bardzo podobnych systemów, o nikłej uzytecznosci w embedded.
    > Nadal czekam na wyjaśnienie, dlaczego nie do embedded.

    Bo mało kiedy potrzebujesz mieć procesy, rurki, pliki w systemie
    embedded. A jak ich nie masz, to nie masz POSIXa.

    > Dlaczego ourMutexCreate jest do embedded a pthread_mutex_init nie jest.

    Bo jest nieprzenośne na inne embedded.

    > To ciekawe bardzo. Funkcja się inaczej nazywa i już nie nadaje się do embedded.

    Tak, właśnie odkryłeś na czym polega abstrakcja w wyjaśnieniu dla
    przedszkolaka.

    > Kurdę, muszę uważać, jak funkcje nazywam.

    Dokładnie tak, jesteś na własciwym trope. Dodatkowo jeśli dodasz że
    musisz uważać jakich typów są zmienne, jakich flag używasz itd itp to
    szybko dojdzieszdo tego co to jest *prosta* abstrakcja na system
    operacyjny. Tylko nie zakładaj że to koniec, dalsze tematy są bardziej
    skomplikoane, ale do ogarnięcia. Tak, trzeba zacząć od uszelniania
    szamba, aby POSIX nie przeciekał do kodu, a potem małymi krokami usuwasz
    kod supportujący dziwactwa i przenosisz go do wspólnych miejsc i jesteś
    już o krok od abstrakcji w której nie ma supportu dla EINTR czyli
    przeciekania szamba.

    >> Abstrakcja na systemy operacyje jest wysokopoziomowa. Tam gdzie nie
    >> wiadomo czy mutex to int, handle, pointer czy foo.
    > Właśnie tak jest w POSIX.

    Dokładnie, nie czyni to z niego jednk abstrakcji na Windows.

    >> Pewnego dnia januszowy RTOSik zostanie zamieniony na mirkowy CE bo taki
    >> się zwidziało właścicielowi biznesu. Jesli Janusz nie był iditiotą to
    >> zmiana na to CE może być mało bolesna.
    > Niestety nie jest to zgodne z moimi obserwacjami. Zmiana jednego systemu POSIX na
    drugi system POSIX może być mało bolesna, ale zmiana OurRTOS na TheirRTOS to większy
    problem, bo jak już ktoś miał gdzieś standardy, to zwykle w różnych, niezależnych
    kierunkach. Wtedy to nie jest kwestia taniego wrappera.

    Nikt tu nie pisze o *darmowej* migracji. Owszem, napisałem niedawno o
    zmianie kompilatora w makefile, ale to dotyczyło rekompilacji kodu na
    Macu z x86 na ARM, kiedy API systemu się nie zmienia, zmienia się tylko
    cpu i ABI. Wiele projektów embedded też będzie miało łatwo, bo nie
    zależą od CPU.

    Zmiana ma być mało bolesna. Przepisanie kilku adapterów nie kosztuje
    mało, ale na pewno taniej niż przepisanie całego kodu zasranego
    odwołaniami do POSIXa i logiką z EINTR.

    > Zwłaszcza, jak to tego dołożymy stos TCP

    To tego POSIX nie załatwił? A to niegrzeczny!

    >. Np. popularnym partnerem dla dziadoskiego FreeRTOSa jest dziadoski LwIP. To jest
    dopiero duet, wszystko wtedy opada.

    Nie miałem przyjemnosci, chętnie sprawdzę na ile jest rozsądniejszy od
    impelemntacji z unixów. Bo ta, moim skromnym zdaniem, wyznacza jednak
    poziom podłogi. Nie da się gorzej.

    >> Pamiętaj o czym rozmawiamy: stwierdziłeś że zmiana procesora to nie
    >> tylko zmiana makefile, tylko bardzo ciezka rzecz.
    >> No więc to cieżka rzecz, jak się ma dziadowski kod.
    > Jeszcze cięższa, jak się nie ma kodu.

    Nie wydaje mi się, aby taki był temat dyskutowania.

    > O tej możliwości też cały czas mówimy, bo to jest realna możliwość.

    Pewnie, ktoś musi stworzyc puste repo na nowy projekt, jednak w dużych
    firmach jest super jak można go zapełnić gotowcami z poprzeniego
    projektu. I to wszystko dzięki abstrakcji. O dzieki Ci, abstrakcjo!

    > Ale trochę rozwlekła nam się ta dyskusja zrobiła, więc może skupmy się: dlaczego
    POSIX nie jest dobry do embedded?

    Napisałem wyżej. Zawiera śmieci, które nie są użyteczne, oraz sam z
    siebie jest wyjątkowo dziadowski.

    > Dlaczego funkcja, która się nazywa na literkę "p" nie nadaje się do embedded a
    funkcja robiąca dokładnie to samo, ale na inną literkę się nadaje?

    Aby nie musieć zmieniać jej nazwy w 100 miejscach kiedy zmieniasz OS,
    poprawiajac przy okazji kod supportujacy też 100 razy.

    Aby udostepnić wysokopoziomy interfejs uzywajacy wspólczesnych jezyków
    zamiast POSIXowego, kieskiego API.

    Aby umożliwić unit testy.

    Aby odstrzec że czasem ta funkcja nie może być wywołana w innym systemie
    i trzeba pakować ją do wyższysz struktur języka.

    Pisałem to chyba ze 100 razy. Prosze, nie pytaj więcej, jestem zmęczony.

    > "U mnie działa."

    U mnie też. Przeciez wymieniamy doświadczenia. Ty masz jakieś, ja mam
    jakieś.

    Ja nie mogę spobie pozwolić na komfort "tylko POSIX" bo inaczej trace
    połowę klientów, dzięki temu wypracowałem metody uszczelniania szamba
    POSIXa i WinAPI tak, aby nie przeciekały do kodu.

    Ty najwidoczniej możesz sobie pozwolić na ogarnieniae abstrakcji w
    POSIXowym OSie.

    Stąd różne opinie. Moja w tym wypadku jest mojsza i tyle.


  • 26. Data: 2021-01-09 16:48:54
    Temat: Re: Spieszmy się kochać Windows
    Od: Maciej Sobczak <s...@g...com>

    > >> POSIX w embedded nie jest dobry.
    > > Nadal nie napisałeś, dlaczego.
    > Wiele systmów embedded:
    > a) nie ma plików
    > b) nie ma procesów
    > c) nie ma rurek
    > d) nie ma sygnałów
    > e) nie ma konsoli
    > f) a wniej interaktywnych poleceń

    No i?
    Taki przykładowy QNX jest oparty o mikrojądro, gdzie te wszystkie rzeczy powyżej to
    osobne usługi, których można nie mieć, to jest kwestia konfiguracji. I niepotrzebnych
    rzeczy nie ma, zwłaszcza w systemach embedded.
    Nie zmienia to faktu, że nadal QNX jest POSIX.
    I dlatego dalej nie rozumiesz.

    > Ale ma 40 programów w dildo

    Zaczynam mieć wrażenie, że to jedyna rzecz, o której masz coś do powiedzenia.

    > POSIXa w jakiejś implementacji ciężko będzie formalnie weryfikować

    Sam sobie zaprzeczasz. "W jakiejś implementacji"? A jeśli mam formalnie zweryfikowaną
    implementację, to czy w takiej implementacji będzie ciężko zweryfikować? Nadal nie
    odróżniasz API od implementacji. POSIX to tylko API.

    > Jednak wolę dalej FreeRTOSa nad POSIXa w respiratrorze,

    A jest formalnie zweryfikowany? Bo widzisz - POSIX to API. Natomiast FreeRTOS to
    konkretny system. I ten konkretny system nie jest zweryfikowany, nawet nieformalnie.
    Dlatego zdecydowanie nie chcesz go w respiratorze.
    (ale możesz chcieć SafeRTOS, którego napisali od nowa w tym celu)

    > Bo POSIX jest niezwykle trudny do weryfikacji. Z powodu komplikacji
    > swojego API.

    Od kiedy API utrudnia weryfikację? W jaki sposób?

    > > Mogę mieć dobrej jakości implementację
    > Możesz. A masz?

    Przecież już pisałem.

    > > Np. kod, który napisałem na Linuksie zadziałał od ręki na QNX.
    > A na freeRTOS? A na Windows CE?

    A tam nie zadziałał od ręki, bo autorzy uznali, że musi być ourMutexCreate(), zamiast
    pthread_mutex_init().

    > Ok, ustalmy wobec tego że masz program *częściowo* przenośny. Tak lepiej?

    Nie wiem, czy lepiej. Na pewno program napisany pod API POSIX jest bardziej przenośny
    (bo działa na wielu systemach), niż program napisany pod FreeRTOS (bo działa tylko na
    jednym).

    > W sumie
    > bez znaczenia czy masz pthread_mutex_init nazwany dupa. Istotne jest że
    > w innym systemie (niezgodnymz POSIX) może w ogóle nie itnieć inicjacja
    > poza miejscem deklaracji, albo istnieć przyjmująca paramter resursive.

    Może czy istnieje? Pokaż na przykładzie FreeRTOS (skoro już o nim mówimy i chcesz go
    w respiratorze).

    > Dlatego masz class MyMutex

    To mam z innego powodu. Otóż w programie C++ wolę mieć bardziej zunifikowane idiomy.
    Np. zwalnianie tego muteksa w destruktorze. Ale robię to z powodu *podniesienia*
    poziomu abstrakcji, a nie z powodu zapewnienia przenośności. Do przenośności
    wystarczyłby POSIX, gdyby twórcy januszowych RTOSików nie mieli przerostu ego i
    presji na wymyślanie własnych nazw.
    Dlatego chciałbym mieć *jedną* implementację mojej klasy MyMutex. A nie kilka
    różnych.
    (oczywiście teraz mamy też std::mutex, ale dyskusja jest ogólna)

    > > zrobić mu unit-testy na innym systemie, np. na Linuksie, bo akurat taki jest
    łatwiej dostępny.
    > A na windowsie?

    "U mnie działa"?
    Jeśli trzeba puścić unit testy, to Cygwin jest do tego jak najbardziej wystarczający.

    > Na codzień piszę kod na POSIXie i
    > Windowsie *jednoczesnie*. Powiedzmy że mam zielone pojęcie gdzie POSIX
    > jest przenośny. Powiedzmy że nieco powyżej średniej, mam to pojęcie.
    > Nijak nie udało mi się zawołać funkjci Posixowych w Windowsie.

    "U mnie działa"?

    > Zgadnij dlaczego mamy (wreszcie) std:: z obsługą wątków, i to nie jest
    > POSIX like API.

    A niby jak by miało być "like"? POSIX to jest API dla języka C. Logiczne jest, że API
    w std:: będzie inne. I dobrze.

    > Najwidoczniej ktoś kombinuje jak ja - abstrakcja na OS.

    Pominąłeś szczegół: ktoś z tym std:: kombinuje, że standardy są dobre. I ma nadzieję,
    że autorzy implementacji będą tego standardu przestrzegać, bo od przestrzegania
    standardu zależy przenośność końcowych programów, jak też obniżenie globalnych
    kosztów. Nie przypisuj sobie tego pomysłu, bo do tej pory byłeś od niego daleko.

    > > Dlaczego ourMutexCreate jest do embedded a pthread_mutex_init nie jest.
    > Bo jest nieprzenośne na inne embedded.

    Jest przenośne bardziej (również na embedded), niż ourMutexCreate, który w ogóle nie
    jest.

    > Ty najwidoczniej możesz sobie pozwolić na ogarnieniae abstrakcji w
    > POSIXowym OSie.

    Też nie mogę. Bo ktoś olewał standardy.

    > Stąd różne opinie. Moja w tym wypadku jest mojsza i tyle.

    Już rozumiem. Ty piszesz o tym, jak jest a ja o tym, jak powinno być. Stąd
    nieporozumienie. ;-P

    --
    Maciej Sobczak * http://www.inspirel.com


  • 27. Data: 2021-01-09 18:53:55
    Temat: Re: Spieszmy się kochać Windows
    Od: heby <h...@p...onet.pl>

    On 09/01/2021 16:48, Maciej Sobczak wrote:
    >> a) nie ma plików
    >> b) nie ma procesów
    >> c) nie ma rurek
    >> d) nie ma sygnałów
    >> e) nie ma konsoli
    >> f) a wniej interaktywnych poleceń
    > No i?

    To oznacza że POSIX nie jest dobrą abstrakcją na OS b wymaga tego
    wszystkiego aby być POSIXem. Inaczej nie jest POSIXem.

    > Taki przykładowy QNX jest oparty o mikrojądro, gdzie te wszystkie rzeczy powyżej to
    osobne usługi, których można nie mieć, to jest kwestia konfiguracji.

    Każda konfiguracja, inna niż *wszystko*, nie jest już POSIXem.

    > I niepotrzebnych rzeczy nie ma, zwłaszcza w systemach embedded.

    To po co tam wciskać POSIXa skoro używa się 5% jego api?

    > Nie zmienia to faktu, że nadal QNX jest POSIX.

    Jak zrobisz make all_shit_included to na pewno jest.

    >> Ale ma 40 programów w dildo
    > Zaczynam mieć wrażenie, że to jedyna rzecz, o której masz coś do powiedzenia.

    Nie, to dwa odległe światy: dilda i respiratory. jedne można programować
    byle jak, inne wymagają cięzkich certyfikacji. W obu stosuje sięte same
    procesory, techniki, abstrkacje, i w ani jednym z nich nie ma POSIXa.

    >> POSIXa w jakiejś implementacji ciężko będzie formalnie weryfikować
    > Sam sobie zaprzeczasz. "W jakiejś implementacji"?

    Jakiejś. Widzisz, POSIX ma bardzo dużo undefined behavior. To jak się
    zachowa, zależy od implemetacji, ba, nawet od wersji jądra, bibliteki,
    interakcji usera czy co tam na niego wpływa.

    > 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?

    >, to czy w takiej implementacji będzie ciężko zweryfikować?

    Tak, ponieważ posix generuje bardzo dużo stanów które wymagają formalnej
    oceny przejścia i obsługi. Tan interfejs jest bardzo ciezko weryfikować.

    Jeśli z ::read może wylecieć 20 róznych stanów to nie jest to dobre API.

    > Nadal nie odróżniasz API od implementacji. POSIX to tylko API.

    Więc sprawdź jak zachowuje się na różnych systemach. No wiec różnie.

    >> Jednak wolę dalej FreeRTOSa nad POSIXa w respiratrorze,
    > A jest formalnie zweryfikowany?

    Jest możliwy do weryfikacji łatwiej niż POSIX. I prawdopodobnie nie
    używany i tak, bo to zabawka do dildo. Podobnie jak POSIX na mainframes.

    > Bo widzisz - POSIX to API. Natomiast FreeRTOS to konkretny system.

    I tu wchodzi abstrakcja, cała na biało.

    > I ten konkretny system nie jest zweryfikowany, nawet nieformalnie. Dlatego
    zdecydowanie nie chcesz go w respiratorze.
    > (ale możesz chcieć SafeRTOS, którego napisali od nowa w tym celu)

    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.

    >> Bo POSIX jest niezwykle trudny do weryfikacji. Z powodu komplikacji
    >> swojego API.
    > 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!:
    }

    >>> Np. kod, który napisałem na Linuksie zadziałał od ręki na QNX.
    >> A na freeRTOS? A na Windows CE?
    > A tam nie zadziałał od ręki, bo autorzy uznali, że musi być ourMutexCreate(),
    zamiast pthread_mutex_init().

    Nie, autorzy mają inny rodzaj mutexa. Wątku. Rurki. To nie kwestia nazw,
    tylko użytku.

    >> Ok, ustalmy wobec tego że masz program *częściowo* przenośny. Tak lepiej?
    > Nie wiem, czy lepiej. Na pewno program napisany pod API POSIX jest bardziej
    przenośny (bo działa na wielu systemach), niż program napisany pod FreeRTOS (bo
    działa tylko na jednym).

    A program napisany w Qt jest jeszcze bardziej przenośny od tego w POSIXie.

    >> bez znaczenia czy masz pthread_mutex_init nazwany dupa. Istotne jest że
    >> w innym systemie (niezgodnymz POSIX) może w ogóle nie itnieć inicjacja
    >> poza miejscem deklaracji, albo istnieć przyjmująca paramter resursive.
    > Może czy istnieje?

    Na w tym miejscu jest std::mutex mutex; bez śladu free function.

    Na przykład obok jest CreateMutex biorący 3 parametry.

    > Pokaż na przykładzie FreeRTOS

    Nie, pokaże na dowolnym innym przykładzie, aby obalić Twoją tezę o braku
    sensu abstrakcji na inicjacje mutexa.

    >> Dlatego masz class MyMutex
    > To mam z innego powodu. Otóż w programie C++ wolę mieć bardziej zunifikowane
    idiomy. Np. zwalnianie tego muteksa w destruktorze. Ale robię to z powodu
    *podniesienia* poziomu abstrakcji, a nie z powodu zapewnienia przenośności.

    Robisz to z obu powodów. std::foo jest przenośne z definicji.

    > 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.

    >, gdyby twórcy januszowych RTOSików

    A twórcy januszowych Windowsów?

    > 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.

    >>> zrobić mu unit-testy na innym systemie, np. na Linuksie, bo akurat taki jest
    łatwiej dostępny.
    >> A na windowsie?
    > "U mnie działa"?

    Bo robisz je na cygwinie czy nie masz?

    > 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, pozerkaj jak bardzo
    wieli ból dupy mają twórcy cygwina z powodu niekompatybilnosci POSIXA z
    WinApi i dlaczego w paru miejscach maja spinlocki.

    >> Na codzień piszę kod na POSIXie i
    >> Windowsie *jednoczesnie*. Powiedzmy że mam zielone pojęcie gdzie POSIX
    >> jest przenośny. Powiedzmy że nieco powyżej średniej, mam to pojęcie.
    >> Nijak nie udało mi się zawołać funkjci Posixowych w Windowsie.
    > "U mnie działa"?

    Nie, działa Ci w cygwnie. I nie dział wydajnie. Rownie dobrze mógłbyś
    powiedzieć, że Ci działa w emulatorze odpalonym na windowsie. Ten sam
    poziom "działania na windowsie".

    >> Zgadnij dlaczego mamy (wreszcie) std:: z obsługą wątków, i to nie jest
    >> POSIX like API.
    > A niby jak by miało być "like"?

    Bo to taka znakomita abstrakcja. Kazdy by chciał POSIXa w każdym dildo i
    respiratorze, ale świat wyglada inaczej.

    > POSIX to jest API dla języka C.

    Nie tylko. Również dla ograniczonej klasy systemów, w tym w
    szczególności posiadajacych konsolę z interakcją z userem.

    >> Najwidoczniej ktoś kombinuje jak ja - abstrakcja na OS.
    > Pominąłeś szczegół: ktoś z tym std:: kombinuje, że standardy są dobre.

    Tak, ktoś kombinuje aby były *naprawdę* abstrakcyjne, a nie ściema, jak
    POSIX.

    > Nie przypisuj sobie tego pomysłu, bo do tej pory byłeś od niego daleko.

    Możesz powiedzie gdzie go sobie przypisuje?

    >>> Dlaczego ourMutexCreate jest do embedded a pthread_mutex_init nie jest.
    >> Bo jest nieprzenośne na inne embedded.
    > Jest przenośne bardziej (również na embedded), niż ourMutexCreate, który w ogóle
    nie jest.

    Ale jest, to 1 linijka kodu dla POSIXa i 1 linijka kodu dla WinAPI. To
    się nazywa adaper i itnieje w każdej implementacji interfejsu. W POSIXie
    też istnieje adapter z pthread do przestrzeni kernela.

    >> Ty najwidoczniej możesz sobie pozwolić na ogarnieniae abstrakcji w
    >> POSIXowym OSie.
    > Też nie mogę. Bo ktoś olewał standardy.

    Nie olewa standardów. POSIX to jest taki standard z przypadku. Microsoft
    nie ma śadu powodu aby go używac. Przyznał to Bill kiedy mówił że API
    windwosa jest jedyne w swoim rodzaju i to jest *najważniejsze* co
    Windows posiada. Inność. Dzieki czemu jest typowym vendor-lockin. Na
    szczęscie od dawna potrafimy to obejść, dzięki abstrakcji na OS.

    >> Stąd różne opinie. Moja w tym wypadku jest mojsza i tyle.
    > Już rozumiem. Ty piszesz o tym, jak jest a ja o tym, jak powinno być

    Idealista.

    Świad składający się z samych POSIXów byłby wyjątkowo gówniany, tak samo
    jak składający się z WinAPI. Oba to zamrożone dawno temu workaroundy, w
    tym wręcz krytyczne debilizmy.

    Tupanie nogą że świat nie jest POSIXowy i na siłe uzależnianei się od
    tego kipeskiego API nie jest specjalnie profesjonalne.


  • 28. Data: 2021-01-09 20:57:27
    Temat: Re: Spieszmy się kochać Windows
    Od: Luke <l...@l...net>

    W dniu 06.01.2021 o 14:28, heby pisze:

    >> Czyli potwierdzasz moją wersję - decyzja IBM była SPRZĘTOWA.
    >
    > To nie była decyzja. Wzieli co było i zrobili na kolanie byle co.
    > Decyzja to by była gdyby rozpatrywali różne koncepcja hardware, systemów
    > operacyjnych, rozszerzeń, planowali, badali.
    >
    > Tymczasme wzieli dziadowski procesor, nie mają pojęcia o systemie
    > operacyjnym jak na nim będzie i wyciągając druty z CPU nazywając to
    > "magistralą", zmuszając ludzi do ręcznego przydzielania IO i przerwań.
    > Taki "komputer poskładany na kolanie przez studenta".
    >

    Nie piszę co oni wzięli, lecz że UWOLNILI.

    >>> Niebywałe. Co oni tam robili przez te wszystkie lata? DoubleSpace?
    >> Nic.
    >
    > Nic? Czekaj, czyli potwierdzasz tezę o zapaści?

    Skoro DOS ludziom wystarczał i nie było konkurencji, był brak rozwoju.
    Zapaść? Zdefiniuj ten termin. Był brak konkurencji software'owej.
    Hardware była. Pecety taniały. Właśnie dzięki decyzji IBM.

    >
    >> W kwestii rozwoju Windows czy Office też długo nie robiono nic.
    >
    > Ależ robiono, jednak to dopiero *potem* było widać że cośtam dziubali z
    > Windowsem 1.0 który był wyraźnie gorszy nawet od GUI Amigi i Atari ST
    > mimo zupełnie innych zasobów gotówki. Team od MS-DOSa musiał być chyba
    > często na wakacjach, bo nic tam się nie działo.

    Od Windows 98 do Me oraz od wczesnych Office aż do 97 włącznie nawet nie
    łatano dziur. Bo ludzie i tak będą kupowali.

    Dopiero kiedy nagle się okazało, że ktoś używa Linuksa, który nawet
    czasem stabilnie działa (koniec 90.), a dodatkowo nagle pojawił się
    Openoffice (jesień 2000) nagle powstał XP oraz Office XP/2003, które
    wreszcie zaczęły jako tako działać.

    Pamiętam te czasy, chwilami można było wyrzucić komputer przez okno. Np.
    dokumenty były nieprzenośne (na innym komputerze w tym samym office
    otwierały się inaczej, a ich wygląd zależał np. od zainstalowanego
    sterownika domyślnej drukarki. Przenoszenie dyskietkami (kilkoma, bo już
    chwilami na jednej się nie mieściły) do znajomego z kolorową drukarką
    powodowało np. brak obrazków w dokumencie :) Nie, nie były to linki do
    innych dokumentów. Tak to wszystko się po prostu chrzaniło. Zainstaluj
    sobie takie vintage i się pobaw.

    Oczywiście każdy nie miał innego wyjścia, bo nie było konkurencji, a Ami
    Pro i TAG odeszły dawno w zapomnienie.

    Gdybym IBM nie uwolnił sprzętu, robiliby od strony hardware co chcieli i
    brali za to kasy ile chcieli. Bo mieliby monopol i ludzie nie mieliby
    wyjścia. Nawet wyprodukowanie jakiejkolwiek karty ISA 8-bit wymagałoby
    zgody albo opłat licencyjnych dla IBM. Oczywiście tak wysokich, jakby
    chcieli.

    >>> Dokładnie taka sama powstała by gdyby inny procesor wsadzono w PC, w
    >>> dobrej cenie i otwarto platformę. Można dyskutować czy taki był wtedy
    >>> na rynku.
    >> Więc poproszę o konkrety - co powinien był zrobić IBM
    >
    > Aby powiedzieć "zapoczątkował rewolucję" należało by porozmawiać o
    > udziale przypadku w tym całym biznesie.
    >
    > Bo dla mnie rewolucje zapoczątkował 100x bardziej Apple, dostarczając
    > GUIowy system operacyjny, zamiast filesystemu z promptem godnego lat 70.

    I poległ na początku, bo nic nie uwolnił. Przy czym im nie chodziło o
    dominację na rynku nigdy.

    > Nie rozumiesz czego się czepiam.
    >
    > Czepiam się piprzenia o wielkim zapoczątkowaniu rewolucji, itd itp. Nie,
    > nic z tego gównianego MS-DOSa i x86 nie zostało do dzisiaj gdziekolwiek,
    > poza żałosnym CMD windowsa, a cała ta rewolucja zapoczątkowana przez IBM

    Rewolucją było UWOLNIENIE sprzętu. Nie architektura, nie dos. Tylko
    UWOLNIENIE. Pozwolenie na produkcję sprzętów "kompatybilnych".

    L.



  • 29. Data: 2021-01-09 21:28:18
    Temat: Re: Spieszmy się kochać Windows
    Od: heby <h...@p...onet.pl>

    On 09/01/2021 20:57, Luke wrote:
    > Nie piszę co oni wzięli, lecz że UWOLNILI.

    A co było niewolne?

    >> Nic? Czekaj, czyli potwierdzasz tezę o zapaści?
    > Skoro DOS ludziom wystarczał

    Nie wystarczał. Patrz na Apple.

    > i nie było konkurencji

    Patrz na Apple.

    >, był brak rozwoju.

    Czyli stracone lata.

    > Zapaść?

    Wstecznictwo. Kiedy ludzie w końcówce lat 70 prjektują systemy
    wielozadaniowe, preemptive multitasking, wielodostęp, GUI itd itp IBM
    nasrał na to wszystko pudrując CP/M w dziadowskiej architektórze i
    sprzedając prawie za darmo. Fizycznie są odpowiedzialni za zatrzymanie
    rozwoju informatyki na wiele lat.

    > Hardware była.

    Raczej tylko kolonowali kiepski design.

    > Od Windows 98 do Me oraz od wczesnych Office aż do 97 włącznie nawet nie
    > łatano dziur.

    Win 98 SE.

    Me miał system aktualizacji i nawet w ograniczonej formie działał.

    > Bo ludzie i tak będą kupowali.

    Bo gry były.

    > Gdybym IBM nie uwolnił sprzętu

    NIkt nie ma pretencji IBM że uwolnił sprzęt. Pretensje można mieć że
    uwolnił *taki* sprzęt.

    > Nawet wyprodukowanie jakiejkolwiek karty ISA 8-bit wymagałoby
    > zgody albo opłat licencyjnych dla IBM.

    Nie ma to nijak związku z dziadowską architekturą x86 i dziadowskim
    systemem operacyjnym.

    Uwolnić mogli cokowliek, np. komputer oparty o MC68000. O mały włos tak
    się nie stało.

    >> Bo dla mnie rewolucje zapoczątkował 100x bardziej Apple, dostarczając
    >> GUIowy system operacyjny, zamiast filesystemu z promptem godnego lat 70.
    > I poległ na początku, bo nic nie uwolnił.

    A świat klepał klony Apple II w ilościach hurtowych, wliczając w to
    nieskoczone ilosci peryferiów do niego.

    https://en.wikipedia.org/wiki/List_of_Apple_II_clone
    s

    > Przy czym im nie chodziło o
    > dominację na rynku nigdy.

    I jakoś zdominowali rynek w USA.

    >> Czepiam się piprzenia o wielkim zapoczątkowaniu rewolucji, itd itp.
    >> Nie, nic z tego gównianego MS-DOSa i x86 nie zostało do dzisiaj
    >> gdziekolwiek, poza żałosnym CMD windowsa, a cała ta rewolucja
    >> zapoczątkowana przez IBM
    > Rewolucją było UWOLNIENIE sprzętu.

    Też nie. Poskładany na kolanie komputer z żałosnego cpu i kilku układów
    TTL trudno nazwać jakoś specjalnie rewolucyjnym.

    Takich uwolnien z okolic "każdy może robić peryferia" było kilka w
    świecie 8/16/32-bit. IBMowi się najzwyczajniej udało przebić, być może
    tylko dlatego że dzięki małym kombinacjom MS zdobył pokaźną ilośc
    software kiepskiej jakości na start i jakoś poleciało. Nie doceniasz
    roli przypadku w losach świata. A jak by MS nie miał skąd zajumać QDOS,
    to jaki mieli by rynek i skąd by wzieli OSa? Przecież nie potrafili sami
    napisać.

    > Nie architektura, nie dos. Tylko
    > UWOLNIENIE. Pozwolenie na produkcję sprzętów "kompatybilnych".

    Gdyby tego nie zrobili prędzej czy później uwolniło by się coś innego.

    Tymczasem spuszczono ze smyczy najgosze możliwe rozwiązanie. I tyle było
    z rewolucji.


  • 30. Data: 2021-01-10 14:37:42
    Temat: Re: Spieszmy się kochać Windows
    Od: Smok Eustachy <s...@W...pl>

    W dniu 09.01.2021 o 21:28, heby pisze:
    > On 09/01/2021 20:57, Luke wrote:
    >> Nie piszę co oni wzięli, lecz że UWOLNILI.
    >
    > A co było niewolne?
    >
    >>> Nic? Czekaj, czyli potwierdzasz tezę o zapaści?
    >> Skoro DOS ludziom wystarczał
    >
    > Nie wystarczał. Patrz na Apple.
    >
    >> i nie było konkurencji
    >
    > Patrz na Apple.

    Jakoś rynku nie podbiło

strony : 1 . 2 . [ 3 ] . 4 ... 6


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: