-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Andrzej Jarzabek <a...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: Dlaczego w branży rozrywkowej najsłabiej płacą?
Date: Sun, 16 Oct 2011 22:26:25 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 101
Message-ID: <j7fi63$mte$1@inews.gazeta.pl>
References: <5...@n...onet.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>
<j76a0i$nds$1@inews.gazeta.pl>
<0...@q...googlegroups.com>
<j7cvbk$nnh$1@inews.gazeta.pl>
NNTP-Posting-Host: 5ac53c1f.bb.sky.com
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1318800387 23470 90.197.60.31 (16 Oct 2011 21:26:27 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sun, 16 Oct 2011 21:26:27 +0000 (UTC)
X-User: septi
In-Reply-To: <j7cvbk$nnh$1@inews.gazeta.pl>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20110929
Thunderbird/7.0.1
Xref: news-archive.icm.edu.pl pl.comp.programming:192911
[ ukryj nagłówki ]On 15/10/2011 22:51, Wojciech Jaczewski wrote:
> Andrzej Jarzabek wrote:
>
>> niemożliwe - choćby że w trakcie modyfikacji kodu ktoś zmodyfikuje
>> zakresy tak, że deskryptor będzie zdefiniowany w innym niż jego lock,
>
> Mało prawdopodobne, aby w wyniku zwykłej pomyłki a nie celowego psucia
> rozdzielić taką sekwencję do osobnych bloków:
>
> int fd = jakas_tam_metoda_tworzenia_fd();
> fd_guard_t fd_guard(fd);
Nie jest to aż tak mało prawdopodobne, żeby dla wielu takich mało
prawdopodobnych zdarzeń te prawdopodobieństwa nie skumulowały się do
czegoś zbliżonego do pewności.
>> albo ktoś gdzies wstawi zamykanie tego deskryptora ręcznie.
>
> Opakowanie deskryptora w obiekt też wiele na to nie pomoże, bo np. dalsza
> część funkcji chciała coś wysłać przez deskryptor, a on zamknięty.
Kompilator wyłapie, że obiektu nie ma w zakresie.
>> streambuf ma buforowanie, więc tak to właśnie raczej powinno działać.
>> Jednak musisz przyznać, że z punktu widzenia kogoś, kto chce
>> sfotmatować komunikat i przesłać go po połączeniu albo z kolei
>> odczytać komunikat zakończony np. CR-LF, niekoniecznie takie szczegóły
>> implementacyjne są interesujące.
>
> Są interesujące, jeśli nie chce aby użytkownik przy jego programie ćwiczył
> swoją cierpliwość - gdy akurat przywiesiło się połączenie.
No więc z punktu widzenia sensowności organizacji kodu (i co za tym
idzie niezawodności, maintainability itd.) to mieszanie obsługi
przywieszonego połączenia z logiką obsługi tego, o czym program jest
informowany albo o czym informuje za pomocą tego połączenia to tragedia.
> Albo załóżmy, że mamy prosty protokół, gdzie każda ze stron, na przemian
> wysyła po jednej lub więcej linii tekstu. Za pomocą interfejsów istream tego
> się nie odbierze, bo nie wiadomo ile linii zostało przysłanych.
Sensowne protokoły mają zwykle jakiś sposób zaznaczania końca komunikatu.
>> Sensowniejsze o tyle, że masz rodzieloną logikę mówiącą jak na jakieś
>> zdarzenie trzeba reagować z samą obsługą i rozstrzyganiem tego, na co
>> jak trzeba zareagować. W związku z tym komuś dodającemu nowy typ
>> zdarzenia do obsługi trudniej będzie zepsuć jakiś aspekt istniejącej
>> logiki, niż jeśli modyfikuje dużą pętlę z 'jeśli sygnał to tamto,
>> jeśli coś na sockecie to śmamto, jeśli minęło tyle czasu to owamto".
>
> Wszystko zależy od przypadku. Czasem lepiej widać co się dzieje, gdy
> wszystkie te zdarzenia obsłużone są w jednym miejscu.
Być może, ale to "czasami" według mnie w większości odnosi się do
niewielkich programów.
>> W rzeczywistości wątków się używa bo to wydajny i elastyczny sposób na
>> zrównoleglenie aplikacji. W przypadku stosowania oddzielnych procesów
>> samo kszta związane z narzutem na ich odpalanie, IPC itd. często
>> zabijają wszelkie korzyści ze zrównoleglenia.
>
> Pamięci dzielonej da się używać także między procesami. Jedyne ograniczenie:
> nie można między jednym a drugim przekazywać wprost wskaźników. Czy tak
> często jest to problemem... nie wiem.
Bardzo wiele struktur danych zawiera w sobie wskaźniki. Można oczywiście
zrobić ich odpowiedniki bez wskaźników, ale to jest dodatkowa
komplikacja, gorsza wydajność i im więcej tego robisz, tym więcej ci
wraca problemów, które masz z wątkami.
Pracowałem z takimi systemami, gdzie zamiast wątków robiło się wiele
procesów operujących na pamięci dzielonej działającej jako prosta baza
danych, i skalowanie tego było bardzo problematyczne.
> Narzut odpalania występuje także dla wątków.
Znacznie mniejsze.
> Nieprzypadkowo istnieją thread-pool, więc mogą i process-pool.
Można, ale masz dodatkową komplikację opisu każdego zadania i każdego
rodzaju danych który chcesz przekazać. Na wątkach można po prostu
przekazać jakiegoś dowolnego funktora.
>> Owszem, standard się rozwija, ale zachowanie wsteczniej
>> kompatybilności z latami 70-tymi jest ważniejsze niż tworzenie
>> lepszych abstrakcji. Raczej bym powiedział, że rozwój koncentruje się
>> na dostarczaniu nowej funkcjonalności, słusznie zakładając, że
>> potrzeba abstrakcji będzie zaspokojona przez biblioteki opakowujące.
>
> W samym Linuksie dodawane są też wywołania systemowe, które nowej
> funkcjonalności tak na prawdę nie wprowadzają, tylko zapewniają inny
> interfejs do funkcjonalności już istniejących. Np. timerfd_create, signalfd.
> Dla frameworka to bez większej różnicy, natomiast jest różnica dla programów
> operujących bezpośrednio na tym API.
> [Wymienione przeze mnie przykłady są Linux-specific, ale w końcu to też jest
> uniksowego API].
Drugi problem, o którym miałem napisać, ale zapomniałem, to że te
interfejsy systemowe są zazwyczaj w C, a to język wyjątkowo kiepsko
nadający się do wyrażania jakichkolwiek abstrakcji.
Następne wpisy z tego wątku
- 17.10.11 09:45 Wojciech Jaczewski
- 26.10.11 11:40 Sarr.
Najnowsze wątki z tej grupy
- 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
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-12 Warszawa => Administrator Bezpieczeństwa IT <=
- 2024-12-12 Ostrów Wielkopolski => Trener zespołu sprzedaży Call Center <=
- 2024-12-12 Kraków => Key Account Manager <=
- 2024-12-11 SEP 1 kV E
- 2024-12-11 DNS restrictions are on
- 2024-12-11 wielkie bu
- 2024-12-11 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-11 Aku LiPo źródło dostaw - ktoś poleci ?
- 2024-12-11 Warszawa => Specjalista Bezpieczeństwa Informacji <=
- 2024-12-11 Wrocław => Application Security Engineer <=
- 2024-12-11 Warszawa => Analyst in the Trade Development department (experience wi
- 2024-12-11 Lublin => Programista Delphi <=
- 2024-12-11 Motodziennik #305 Nowy ELEKTRYK za 350 złotych miesięcznie? Kreatywne kredytowanie problemów
- 2024-12-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-11 Katowice => Key Account Manager (ERP) <=