🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #205311

Re: Co sie tu dzieje?...

#205311
From: Andrzej Jarzabek
Date: Mon, 29 Apr 2013 22:00
87 lines
5340 bytes
On 29/04/2013 17:28, Edek wrote:
> Dnia Mon, 29 Apr 2013 08:32:16 -0700 po głębokim namyśle Andrzej Jarzabek
> rzekł:
>
>> W ramach tego, że w C++ nie masz wbudowanych mechanizmów takich jak
>> channel i goroutine, nie jest to bardziej kłopotliwe niż rozwiązanie bez
>> wyjątków.
>
> Ano jest: w sytuacji błędu z sąsiedniego systemu nie wystarczy tylko
> rzucić wyjątek i wyczyścić stan.

Ale wyjątki oprócz rzucenia wyjątku i wyczyszczenia stanu pozwalają 
jeszcze obsłużyć wyjątek. A razem z tym to wystarczy.

> Para 'wynik, błąd' jest lepsza.

W czym lepsza?

> Ogólnie lepsze moimn zdaniem jest podejście takie, że logger,
> monitoring, komunikacja, i cała reszta infrastruktury są dokładnie
> takimi samymi modułami jak treść - powiedzmy propagowanie dokumentu
> do działów. Na desktopie nie ma znaczenia czy logowanie jest "doklejone",
> w rozproszonych już jest inaczej.

Ale co tu zmieniają wyjątki? Z klauzuli catch można tak samo odwołać się 
do modułu logowania co z klauzuli if err != nil. Wygoda większa, bo nie 
musisz tego err propagować po stosie.

>> No więc otóż również uważam, że C jest kiepskim językiem, w którym brak
>> sensownych rozwiązań jest przyczyną dużej ilości problemów.
>
> No więc ja uważam, że w Javie programują dwie grupy ludzi: dzieci
> Javy lubiące ten język i osoby umiejące używać Javy.

Nie masz racji. Jestem jeszcze ja.

>> Ale twój argument dotyczył tego, że defer jest lepsze od sprzątania
>> zasobów niż finally. Może i jest, ale to nie jest argument za tym, że
>> bez wyjątków lepiej, bo przecież istnieje wiele mechanizmów językowych
>> do sprzątania zasobów lepszych niż finally.
>
> Tak, zastrzegałem: tylko mały przykład, fragment całości. Lista jest
> dużo dłuższa.

No to ten przykład zestrzelony, zapodawaj następny.

>> W Groovy na ten przykład, który ma dokładnie takie same wyjątki jak
>> Java, problem zamykania pliku można załatwić w ten sposób:
>>
>> myFile.withWriter { writer ->
>>      zapisuj_do_pliku_używając writer
>> }
>
> W Javie, C++, C (!), Pythonie też.

Wiem, ale jest to mniej lub bradziej wygodne/czytelne. W Pythonie to 
pewnie nawet się sensownie robi, w C trzeba symulować closure za pomocą 
czego - wskaźnika na funkcję i void pointer? To trochę zabija sens tej 
zabawy, pewnie nawet lepiej zrobić goto.

> Różnica polega na ujęciu tego
> w języku, w rdzeniu języka. W Go w rdzeniu języka są goroutines.
> Nie ma sensu mówić o jednej cesze (?) języka bez uwzględnienia
> pozostałych.

Co w tym momenciee wnoszą goroutines? W innych językach też można 
odpalić asynchronicznie funkcję i przekazywać komunikaty.

> [... oczywista oczywistość ...]
>> Ale dlaczego monolitycznego? Wątki masz takie, jakie sobie napiszesz.
>> Dokładnie tak samo, jak rozumiem, jak goroutines - będzie ich tyle i
>> takie duże, jak sobie programista podzieli program. Mylę się?
>
> Trochę inny jest narzut składni nad treścią,

Jak się używa odpowiednich bibliotek, to różnica akurat w tym względzie 
jest kosmetyczna.

>>> To inna architektura,
>>> trzeba przekazać informację o błędzie przez channele a nie tylko w górę
>>> stosu.
>> I czym to się różni od programu wielowątkowego w C++?
>
> Z A.L. właśnie sobie to wyjaśnialiśmy. Trochę tak jak pomiędzy
> systemem plików a dyskiem 2TB.

Nie rozumiem.
Technical Details
Message-ID: <klmqhv$csm$1@somewhere.invalid>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.chmurka.net!.POSTED!not-for-mail
References: <3rrbn85nv2btd2954n8msmp3ca02fbhljd@4ax.com> <cj6dn8tqjh1b88pb9etke84tilc2qtftbf@4ax.com> <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> <klf36m$6e0$1@somewhere.invalid> <klgghb$79t$3@mx1.internetia.pl> <klhl6o$cnr$1@somewhere.invalid> <klhq1c$ehd$3@mx1.internetia.pl> <kljrr4$fu5$1@somewhere.invalid> <klk9q7$q9d$1@mx1.internetia.pl> <6cde8286-5e8c-4004-9e06-cd0355272efe@a14g2000vbm.googlegroups.com> <kllspv$ooe$2@mx1.internetia.pl> <bd0831b9-2287-4ac7-9b4f-13b1a933741e@o19g2000vbm.googlegroups.com> <klm73b$ooe$6@mx1.internetia.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.chmurka.net!.POSTED!not-for-mail
From: Andrzej Jarzabek <andrzej.jarzabek@gmail.com>
Newsgroups: pl.comp.programming
Subject: Re: Co sie tu dzieje?...
Date: Mon, 29 Apr 2013 23:00:31 +0100
Organization: news.chmurka.net
Lines: 87
Message-ID: <klmqhv$csm$1@somewhere.invalid>
References: <3rrbn85nv2btd2954n8msmp3ca02fbhljd@4ax.com> <cj6dn8tqjh1b88pb9etke84tilc2qtftbf@4ax.com> <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> <klf36m$6e0$1@somewhere.invalid> <klgghb$79t$3@mx1.internetia.pl> <klhl6o$cnr$1@somewhere.invalid> <klhq1c$ehd$3@mx1.internetia.pl> <kljrr4$fu5$1@somewhere.invalid> <klk9q7$q9d$1@mx1.internetia.pl> <6cde8286-5e8c-4004-9e06-cd0355272efe@a14g2000vbm.googlegroups.com> <kllspv$ooe$2@mx1.internetia.pl> <bd0831b9-2287-4ac7-9b4f-13b1a933741e@o19g2000vbm.googlegroups.com> <klm73b$ooe$6@mx1.internetia.pl>
NNTP-Posting-Host: 2.125.232.154
Mime-Version: 1.0
X-Trace: somewhere.invalid 1367272832 13206 2.125.232.154 (29 Apr 2013 22:00:32 GMT)
X-Complaints-To: abuse-news.(at).chmurka.net
NNTP-Posting-Date: Mon, 29 Apr 2013 22:00:32 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130328 Thunderbird/17.0.5
In-Reply-To: <klm73b$ooe$6@mx1.internetia.pl>
X-Authenticated-User: ajarzabek
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit