eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingDlaczego w branży rozrywkowej najsłabiej płacą?Re: Dlaczego w branży rozrywkowej najsłabiej płacą?
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: Wojciech Jaczewski <w...@o...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Dlaczego w branży rozrywkowej najsłabiej płacą?
    Followup-To: pl.comp.programming
    Date: Thu, 13 Oct 2011 11:10:53 +0200
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 76
    Message-ID: <j76a0i$nds$1@inews.gazeta.pl>
    References: <5...@n...onet.pl> <j4286s$jg9$1@inews.gazeta.pl>
    <j532hg$sr8$1@inews.gazeta.pl> <j59mgi$9rv$1@inews.gazeta.pl>
    <j5g378$ooq$1@inews.gazeta.pl> <j5s9mu$c1e$1@inews.gazeta.pl>
    <j60dl2$or5$1@inews.gazeta.pl> <j6f0tl$f35$1@inews.gazeta.pl>
    <f...@j...googlegroups.com>
    <j6hra9$6qj$1@inews.gazeta.pl>
    <4...@t...googlegroups.com>
    <j6l5sd$5u$1@inews.gazeta.pl> <j6m0pc$pp6$1@inews.gazeta.pl>
    <j6sqj7$skh$1@inews.gazeta.pl> <j6tqei$hr2$1@inews.gazeta.pl>
    <j6u1ie$2ri$1@inews.gazeta.pl>
    <d...@5...googlegroups.com>
    <j6udri$b1b$1@inews.gazeta.pl>
    <a...@d...googlegroups.com>
    <j71a8c$cti$1@inews.gazeta.pl>
    <6...@p...googlegroups.com>
    <j725i2$7d5$1@inews.gazeta.pl> <j73f5k$en8$1@inews.gazeta.pl>
    <j755n8$1f6$1@inews.gazeta.pl> <j75bgq$cuh$1@inews.gazeta.pl>
    NNTP-Posting-Host: user-188-33-125-90.play-internet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: 8Bit
    X-Trace: inews.gazeta.pl 1318497108 23996 188.33.125.90 (13 Oct 2011 09:11:48 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Thu, 13 Oct 2011 09:11:48 +0000 (UTC)
    X-User: wjaczewski1
    User-Agent: KNode/4.4.10
    Xref: news-archive.icm.edu.pl pl.comp.programming:192744
    [ ukryj 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.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: