Article View: pl.comp.programming
Article #205264Re: Co sie tu dzieje?...
From: Edek
Date: Fri, 26 Apr 2013 21:07
Date: Fri, 26 Apr 2013 21:07
92 lines
5639 bytes
5639 bytes
Dnia Fri, 26 Apr 2013 12:08:01 -0500 po głębokim namyśle A.L. rzekł: > On Fri, 26 Apr 2013 17:07:00 +0000 (UTC), Edek > <edek.pienkowski@gmail.com> wrote: >> Miałem na myśli tyle, >>że w takiej architekturze wyjątki są podobnie niepotrzebne co COM i >>takie "generyki" jakie ma Java. > > Jakies argumenty? Po naprawdę ciężkie argumenty musiałbym zejść do piwnicy, więc zaryzykuję tylko teoretyczne [1]. Mogę też nie pamiętać niuansów Go, nawet nie znam wersji 1.0. Pierwszy problem w procesach mających kilka wejsć i kilka wyjść, lub nawet po jednym, jest taki: kto ma złapać wyjątek? Downstream, upstream, rodzic? Jednocześnie mówimy o Failure więc powiem o jakie Failure mi się (nie) rozchodzi. Wyjątki mogą być spowodowane wadą algorytmiczną. Powiedzmy, że w systemie płac Złośliwy Zenek zakodował: if (name == Żółty.Stefan and boss == doopa.noerweskiego.renifera) then die; Wtedy _zawsze_ proces dawania podwyżki dla Stefana Architekta nie przejdzie [2]. Ale takie problemy na bok, Poisonous Messages są znane, tak jak i Tagged Logging, gdzie "zarażane" są wszystkie wyjścia i procesy mające od czynienia ze sktukiem jednej wiadomości. Większość modeli teoretycznych jakie ja znam operuje na kilku prymitywach zakładając, że z wielu procesów zawsze jakiś padnie w przypadkowy sposób, powiedzmy promieniowanie jonizujące uszkodzi ALU procesora. Prymitywy to najczęściej atomiczne rejestry, Procesy realizujące algorytm, message passing, i Wyrocznia, możliwie słaba. Jeżeli znane N procesów ma liczbę mogą one ustalić największą liczbę[3], jeżeli Wyrocznia w dowolnym momencie informuje każdy proces, który z procesów jest Leaderem. Ale to samo jest też możliwe dla Wyroczni informującej czy procesy jeszcze nie padnięte a) to wszystkie b) czy ich liczba jest parzysta (jeżeli czegoś nie pokręciłem). Ta druga jest ściśle słabsza, bo z informacji dawanej przez pierwszą da się wyprowadzić drugą, a na odwrót już nie. To cała dość fajna dziedzina algorytmiki, science of its own. Dość dobrze znana, na pewno znana doskonale od strony praktycznej przez Google i na pewno mają odpowiednią infrastrukturę. Nie znam odpowiednich prac mających za postawę wyjątki, ale jak przekazać wyjątek przez message passing tak, żeby uniknąć samego problemu w message passing lub procesie w momencie wysyłania wyjątku? Tu mógłbym skończyć. Drugi punkt widzenia jest taki, że trzeba napisać oprogramowanie za pomocą pracy Szarych Edziów, którzy mogą nie zrozumieć niuansów zabezpieczeń przed dowolnym Failure, lub Sowich Adamów, ekspertów od ...analizy kryształów, którzy nie chcą być tym obarczani. Podejrzewam, że mając Go można ukryć większość tych włochatych problemów przed Szarymi Edziami, o ile Żółty Stefan Architekt sam nie jest Dooponte tak jak jego szef. Go może wszystkie te powyższe mechanizmy mieć ukryte w implementacji. Z punktu widzenia Szarego Edzia i Sowiego Adama wystarczy wysłać int-a przez channel, żeby dotarł i obsłużyć wynik WynikBrakMuzgu. To jedna linijka w przeciwieństwie do CORBY czy COMa. Za to w implementacji poszczególne algorytmy są Procesami zgodnie z teorią i mają określany stan w każdym punkcie dostępu do channela, więc można je restartować i odtworzyć bez widocznego skutku dla realizowanego algorytmu. Infrastrukturę robi się raz, Edzie mają znać Go i tylko pójść przed rozpoczęciem pracy postemple ppoż i bhp, a nie mieć wtłaczaną tygodniami do głowy teorię systemów rozproszonych i potem jeszcze zgodnie z nią pisać kod. Pewnei coś pokręciłem, mam nadzieję że jutro ędzie nadal wyglądało w miarę... Jest jeszcze punkt widzenia taki, że modna Java ma modne wyjątki więc Go jest niemodne, ale ja zawsze wolę jak coś działa i jest spokój, mam nadzieję że na p.c.p to podejście przejdzie :). A, i Google nigdy nie faworyzowało wyjątków. [1] Uprzedzałem, jakby ktoś coś do mnie miał mieć [2] Bez manualnej ingerencji Doopy Renifera, inni głosu nie mają [3] Z żyjących procesów, i procesy nie odżywają -- Edek
Technical Details
Message-ID:
<kleqb1$iv$3@mx1.internetia.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!not-for-mailReferences:
<9318dafe-e85c-4ebd-905b-2628ad89160f@googlegroups.com> <5oldn8913m5ov0ukr3coij9efbls7r41st@4ax.com> <6944983c-9c87-4618-94ce-30a83e5c12a7@googlegroups.com> <klcnu3$d98$1@somewhere.invalid> <84396146-1604-45f3-8d5a-e61fbdbe827e@googlegroups.com> <77ef23cf-b20c-47fd-ac81-03d5b1558bce@r7g2000vbw.googlegroups.com> <kle28d$iv$1@mx1.internetia.pl> <59792813-18e9-4d7d-b9f5-519786719e48@s4g2000vbr.googlegroups.com> <klec7k$iv$2@mx1.internetia.pl> <s2dln8pbtpemesl77todasdudmn9qbounh@4ax.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.internetia.pl!not-for-mail From: Edek <edek.pienkowski@gmail.com> Newsgroups: pl.comp.programming Subject: Re: Co sie tu dzieje?... Date: Fri, 26 Apr 2013 21:07:45 +0000 (UTC) Organization: Netia S.A. Lines: 92 Message-ID: <kleqb1$iv$3@mx1.internetia.pl> References: <9318dafe-e85c-4ebd-905b-2628ad89160f@googlegroups.com> <5oldn8913m5ov0ukr3coij9efbls7r41st@4ax.com> <6944983c-9c87-4618-94ce-30a83e5c12a7@googlegroups.com> <klcnu3$d98$1@somewhere.invalid> <84396146-1604-45f3-8d5a-e61fbdbe827e@googlegroups.com> <77ef23cf-b20c-47fd-ac81-03d5b1558bce@r7g2000vbw.googlegroups.com> <kle28d$iv$1@mx1.internetia.pl> <59792813-18e9-4d7d-b9f5-519786719e48@s4g2000vbr.googlegroups.com> <klec7k$iv$2@mx1.internetia.pl> <s2dln8pbtpemesl77todasdudmn9qbounh@4ax.com> NNTP-Posting-Host: 159-205-129-97.adsl.inetia.pl Mime-Version: 1.0 X-Trace: mx1.internetia.pl 1367010465 607 159.205.129.97 (26 Apr 2013 21:07:45 GMT) X-Complaints-To: abuse@inetia.pl NNTP-Posting-Date: Fri, 26 Apr 2013 21:07:45 +0000 (UTC) X-Tech-Contact: usenet@internetia.pl User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2) X-Server-Info: http://www.internetia.pl/ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit