-
Data: 2011-10-13 09:10:53
Temat: Re: Dlaczego w branży rozrywkowej najsłabiej płacą?
Od: Wojciech Jaczewski <w...@o...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Andrzej Jarzabek wrote:
>> Nie wiem jak jest z interfejsami windowsowymi, bo z nimi doświadczenie
>> miałem znikome, ale interfejsy POSIX-owe są bardzo dobre. Abstrakcja w
>> postaci deskryptora pliku - coś wspaniałego.
>
> Właśnie kaszanka. Przykładowo, jeśli mówimy o niezawodności, to sam
> fakt, że deskryptor jest typem liczbowym ułatwia popełnienie błędu
> polegającego na tym, że jako deskryptora używasz liczby, która
> deskryptorem nie jest.
Teoretycznie możliwe, w praktyce jeszcze tego nie widziałem.
> Kolejny problem z deskryptorami jest taki, że łatwo przez pomyłkę o kod,
> który w pewnych sytuacjach nie zamyka deskryptorów, które otwiera, np.
> na wskutek early return czy rzucenia wyjątkiem.
Jeśli akurat mi w danym momencie na czymś takim zależy i akurat używam C++,
to robię klasę o nazwie fd_guard_t (analogiczną do lock_guard z nowego
standardu). I dalej operuję na nie-opakowanym deskryptorze.
> Dalej, jeśli np. próbujesz zrobić formatowane wyjście na deskryptor
> przez ręczne babranie się z alokowaniem buforów, kopiowaniem i
> sklejaniem stringów, jakimiś dodatkowymi funkcjami do formatowania
> liczb, to masz całą masę pomyłek, które łatwo popełnić z katastrofalnymi
> skutkami: dangling pointers, bufer overflow, memory leaks, czy dany
> string jest null-terminated czy nie itd. itp.
Do formatowania do pliku, czy na stdout, rzeczywiście może być wygodniejsze
użycie FILE* lub iostream. Natomiast ich interfejs nie pasuje do sensownej
obsługi np. połączeń sieciowych, gdzie przed wywołaniem funkcji nie wiadomo
ile bajtów będzie się dało w tej chwili odczytać/zapisać. W takim wypadku
lepszy jest jawny podział na dwie części: formatowanie do pamięci, a
następnie przerzucenie w jednym lub wielu etapach przez deskryptor.
>> Również dla krytykowanych przez niektórych uniksowych sygnałów daje się
>> czasem znaleźć fajne zastosowanie, gdzie bez sygnałów program byłby dużo
>> bardziej zawiły.
>
> Również dla sygnałów unixowych są abstrakcje, które będą zwykle
> sensowniejsze do stosowania niż systemowe API, na przykład w modelu
> programu, który obsługuje jakieś zdarzenia sygnał może wsytępować po
> prostu jako jeden z typów "zdarzeń".
Można. Z tym że nie wiem, czemu miałoby to być "sensowniejsze". Jest tak
samo sensowne jak POSIX-owe, tylko z innym interfejsem.
> Kolejne unixowe API którego łatwo przez pomyłkę użyć nieprawidłowo i
> rozwalić program to choćby pthreads.
Wątków akurat unikam jak mogę. Łatwiej się testuje dwa współpracujące
procesy, niż dwa współpracujące wątki. API opakowujące pthreads nie
wniosłoby mi w tej kwestii absolutnie nic.
>> Oczywiście w każdym API dałoby się wskazać jakieś wady, ale na jakiej
>> podstawie miałbym przypuszczać, że zrobiona w dużo krótszym czasie
>> abstrakcja będzie istotnie lepsza?
>
> Dlaczego zakładasz, że w dużo krótszym czasie?
Porównuję do czasu od którego istnieją systemy Uniksowe. Większość założeń
jest już bardzo starych, ale jednak przez bardzo wiele lat standard się
jeszcze rozwija.
>> Dla mnie "opakowywanie systemowego API" to takie wynalazki jak np.
>> QSocket z Qt. Dla programów międzyplatformowych - może ma sens. Dla
>> programów na jedną platformę - żadnego.
>
> Nie znam Qt, więc się nie wypowiem. Zapewne ewidentną zaletą tago
> rozwiązania jest to, że nie da się pomylić inta zawierającego deskryptor
> z intem zawierający liczbę przeczytanych bajtów.
Nie widziałem jeszcze przypadku pomylenia inta zawierającego deskryptor z
intem zawierającym liczbę przeczytanych bajtów. Ta zaleta jest czysto
teoretyczna.
Następne wpisy z tego wątku
- 13.10.11 09:58 Wojciech Jaczewski
- 13.10.11 14:13 Andrzej Jarzabek
- 13.10.11 16:12 Andrzej Jarzabek
- 15.10.11 21:51 Wojciech Jaczewski
- 15.10.11 21:59 Wojciech Jaczewski
- 16.10.11 21:26 Andrzej Jarzabek
- 17.10.11 09:45 Wojciech Jaczewski
- 26.10.11 11:40 Sarr.
Najnowsze wątki z tej grupy
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
Najnowsze wątki
- 2025-03-20 Grubość socketa AM4+procesor
- 2025-03-20 Środa Wielkopolska => Konsultant wewnętrzny SAP FI/CO <=
- 2025-03-20 Warszawa => Senior Programmer C <=
- 2025-03-20 Re: Dlaczego tak odstają od Tesli?
- 2025-03-20 Greenpeace została zobowiązana do zapłaty niemal 667 mln dolarów [USA,wyrok sądu]
- 2025-03-20 Re: Dlaczego tak odstają od Tesli?
- 2025-03-19 Brak ograniczeń dla chińskiego kapitału - wam nie do rządu, tylko na zmywak do chińskiej knajpy!!!
- 2025-03-19 Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- 2025-03-19 szal-Unia == federacja policyjna
- 2025-03-19 Polsza == państwo policyjne
- 2025-03-19 Grzegorz Płaczek o programie szczepień dzieci. ,,Stworzono eldorado dla firm farmaceutycznych"
- 2025-03-19 Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- 2025-03-19 Gemini
- 2025-03-19 Mokry sen Zenka :)
- 2025-03-19 Re: Dlaczego tak odstają od Tesli?