ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Evgeny Sinelnikov" <sin@altlinux.ru>
To: "ALT Linux Team development discussions" <devel@lists.altlinux.org>
Subject: Re: [devel] [JT] Re: Управление группами пользователя
Date: Thu, 20 Nov 2008 18:48:05 +0300
Message-ID: <921f6bb40811200748s617f4f27r923d72fed9c82075@mail.gmail.com> (raw)
In-Reply-To: <8763mifrim.fsf@frontier.dottedmag.net>

20 ноября 2008 г. 16:36 пользователь Mikhail Gusarov
<dottedmag@altlinux.org> написал:
> Twas brillig at 16:21:36 20.11.2008 UTC+03 when sin@altlinux.ru did gyre and gimble:
>
>  ES> Я не знаю что такое bullshit... Но а вот обратиться к нужному
>  ES> адресу в памяти я на Haskell вряд ли смогу так запросто...
>
> Это дело ядра, вообще-то. Но заворачивание void* тривиально.
>

В Haskell это доступно на уровне языка? Или опять тривиальное
заворачивание через связку?

>  >> Кто будет оборачивать коды ошибки в исключения? Кто будет
>  >> реализовывать
>
>  ES> Сишный код не кидает исключений...
>
> Зато кидает C++-ный. Попробуйте осознать, что это означает.
>
>  >> RAII? Вы не понимаете, что C++-ный код враппера тупо будет размазан по
>
>  ES> То что нужно от RAII в С всё равно пишут руками, так что эта часть
>  ES> только упрощает использование С библиотек в С++...
>
> C++-ный код кидает исключения. В C++ нет ключевого слова finally в блоке
> try/catch. Подумайте, почему из этого автоматически следует
> _необходимость_ иметь врапперы для всего нетривиального (управляющего
> ресурсами любого рода) C-кода, используемого из C++.
>

finally обходится через RAII. Кроме того, side-эффекты сишных
библиотек, в ряде случаев, не способны отслеживать даже сами сишные
приложения. Так что не стоит столь педантично подходить к этому
вопросу... Заворачивать нужно равно то, что требуется... А если
уходить в глубокую рекурсию с перебором всех возможных вариантов, то
враппер получится невразумительный... Любые задачи в общем случае
решаются сложнее, чем в частных.

>  ES> Не в каждой, а только в тех, которые будут использовать сишные либы
>  ES> напрямую, пропустив C++ варианты в целях некой оптимизации или
>  ES> отсутствия необходимых C++ вариантов...
>
> Сравните с "не в каждой, а только в тех, которые будут использовать
> сишные либы напрямую, пропустив Haskell-варианты в целяз некой
> оптимизации или отсутствия необходимых Haskell-вариантов".
>
>  >> А вы подумайте, подумайте. Ключевые слова: разница в семантике
>  >> управления памятью и обработке ошибок, RAII.
>
>  ES> Ну, тут пожалуй соглашусь, только в том, что связки могут быть не
>  ES> простыми... Но ведь дело в том, что для частных случаев в С++
>  ES> связки делаются в самом коде, и при этом не требуется усилий чтобы
>  ES> получить доступ к вызовам С-шных библиотек...
>
> Это не аргумент. Врапперы "по ходу дела" в Haskell делаются ровно так
> же. Какая разница, что они лежат в отдельном файле?
>

При увеличении сущностей увеличивается сложность... Но может быть всё
не так и плохо...

>  ES> Для С++ есть QT, а так... да верно, если всё писать на С, то со
>  ES> связками те же проблемы... Но писать их проще, и пишутся они
>  ES> прозрачно, через встроенные средства языка...
>
> Это вам "прозрачно", потому что вы на C++ пишете. А разработчику на
> Haskell "прозрачно" использовать встроенные средства языка, типа FFI,
> или обёртки, типа c2hs.
>

Ну, я не знаю... может это и "прозрачно"... Но вы скажем так не будете
писать в каждом приложении каждый раз обвязки... Скорее всего вы
просто вообще ничего не будет писать... Что на практике и видно,
относительно применения языка... Я могу, конечно, ошибаться, но
Haskell, как и многие другие языки, используется редко, в частности
именно по причине необходимости писать связки...

>  ES> В C++ не требуется для работы сначала сделать связку в виде
>  ES> библиотеки, а потом начать работать...
>
> Если есть желание получить неотлаживаемый memory- или resource-лик, то
> да. Это замечательное свойство для языка системного программирования.
>
>  ES> Разница в том, что в С++ GTK можно вызывать и без связки, а в Haskell - нет.
>
> Нельзя. См. выше про RAII, исключения и отсутствие finally.

Можно-можно... Работать будет криво, но это вопрос второй... У C++
есть более удобные альтернативы, так что вопрос о связках во многих
случаях просто не стоит... Для Haskel же вопрос связок вещь
необходимая ибо библиотек не так много, что и сужает сферу его
применимости.

>
>  ES> Если вы требуете признания того, что Haskell такой же "системный
>  ES> язык", что и C++, то я скорее склонен согласиться, чем спорить :)
>
> Вот! Да, ровно этого я и добивался. А теперь вопрос, на который вы
> отвечаете ниже: а с вашей точки зрения Haskell и правда язык системного
> программирования?
>

Я думаю, что ваша попытка доказательства от обратного, в данном
случае, не корректна... Я уже сказал, что мне просто некогда
разбираться в Haskell, чтобы как-то конструктивно вам возразить...

>  ES> Но, к сожалению, вести речь о его применимости для многих задач я
>  ES> уже не готов... А поскольку я не готов его применить, то
>  ES> "системным" считать не могу :) Далее мы, скорее всего, снова
>  ES> упрёмся в личные предпочтения...
>
> Т.е. язык системного программирования оказался совершенно субъективным
> делом, и ваше высказывание, что C++ - язык системного программирования,
> подкреплено лишь вашим авторитетом, ибо существенной разницы между C++ и
> Haskell, следуя вашей логике доказательства, мы не нашли, а Haskell вы
> таковым не считаете.
>

Вопрос выбора языка - вещь действительно субъективная... А вот вопрос
его применимости для той или иной задачи по различным, как
техническим, так и не техническим аспектам, вещь уже более
объективная... Системным языком я называю тот, который применим для
решения низкоуровневых системных задач...

Я вряд ли выберу Haskell для какой-нибудь системной задачи... И, я
думаю, вряд ли найдётся много добровольцев использовать его в
системных задачах. А вот C++ может использоваться (без RTTI и STDLIB)
даже во встроенных системах...

-- 
Sin (Sinelnikov Evgeny)

  reply	other threads:[~2008-11-20 15:48 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-14 16:53 [devel] " Dmitriy M. Maslennikov
2008-11-14 18:01 ` Alexander Bokovoy
2008-11-14 18:35   ` Dmitriy M. Maslennikov
2008-11-14 18:49     ` Alexander Bokovoy
2008-11-14 19:11       ` Dmitriy M. Maslennikov
2008-11-14 19:28         ` Evgeny Sinelnikov
2008-11-14 19:45         ` Alexander Bokovoy
2008-11-14 19:51           ` Dmitriy M. Maslennikov
2008-11-14 19:55         ` Led
2008-11-14 19:56           ` Dmitriy M. Maslennikov
2008-11-14 20:01             ` Led
2008-11-14 20:07               ` Stanislav Ievlev
2008-11-14 20:10                 ` Pavlov Konstantin
2008-11-14 20:20                   ` Stanislav Ievlev
2008-11-14 20:24                   ` Led
2008-11-14 20:28                     ` Stanislav Ievlev
2008-11-14 20:29                     ` Dmitriy M. Maslennikov
2008-11-14 22:00                       ` Денис Смирнов
2008-11-15  6:29                         ` Dmitriy M. Maslennikov
2008-11-16 14:40                           ` Stanislav Ievlev
2008-11-16 15:15                             ` Evgeny Sinelnikov
2008-11-16 15:54                               ` Alexander Bokovoy
2008-11-16 16:39                                 ` Dmitriy M. Maslennikov
2008-11-16 16:50                                   ` Andrey Rahmatullin
2008-11-16 16:52                                     ` Mikhail Gusarov
2008-11-16 17:46                                     ` Dmitriy M. Maslennikov
2008-11-16 17:54                                       ` Andrey Rahmatullin
2008-11-16 18:39                                       ` Evgeny Sinelnikov
2008-11-16 18:45                                         ` Led
2008-11-16 18:56                                           ` Evgeny Sinelnikov
2008-11-16 19:02                                             ` Dmitry V. Levin
2008-11-16 19:35                                               ` Dmitriy M. Maslennikov
2008-11-16 19:42                                                 ` Alexander Bokovoy
2008-11-16 19:49                                                   ` Evgeny Sinelnikov
2008-11-16 19:57                                                     ` Alexander Bokovoy
2008-11-16 20:04                                                       ` Dmitriy M. Maslennikov
2008-11-16 19:50                                                   ` Dmitriy M. Maslennikov
2008-11-16 19:56                                                     ` Alexander Bokovoy
2008-11-16 17:14                                   ` Alexander Bokovoy
2008-11-19 12:25                                   ` [devel] [JT] " Michael Shigorin
2008-11-19 12:38                                     ` Dmitriy M. Maslennikov
2008-11-19 13:35                                       ` Денис Смирнов
2008-11-19 13:44                                         ` Evgeny Sinelnikov
2008-11-19 13:44                                           ` Mikhail Gusarov
2008-11-19 13:54                                             ` Dmitriy M. Maslennikov
2008-11-19 14:12                                               ` Michael Shigorin
2008-11-19 14:15                                                 ` Mikhail Gusarov
2008-11-19 14:17                                                   ` Andrey Rahmatullin
2008-11-19 14:46                                                   ` [devel] [JT] " Michael Shigorin
2008-11-19 14:05                                           ` Michael Shigorin
2008-11-19 14:22                                           ` [devel] [JT] " Alexey I. Froloff
2008-11-19 14:25                                             ` Evgeny Sinelnikov
2008-11-19 14:28                                               ` Mikhail Gusarov
2008-11-19 15:27                                               ` Alexey I. Froloff
2008-11-19 16:33                                                 ` Evgeny Sinelnikov
2008-11-19 17:57                                           ` Денис Смирнов
2008-11-19 21:21                                             ` Evgeny Sinelnikov
2008-11-19 21:24                                               ` Денис Смирнов
2008-11-19 21:38                                                 ` Evgeny Sinelnikov
2008-11-19 21:26                                               ` Mikhail Gusarov
2008-11-19 21:39                                                 ` Evgeny Sinelnikov
2008-11-19 21:49                                                   ` Mikhail Gusarov
2008-11-20  8:53                                                     ` Evgeny Sinelnikov
2008-11-20  9:31                                                       ` Mikhail Gusarov
2008-11-20 13:21                                                         ` Evgeny Sinelnikov
2008-11-20 13:36                                                           ` Mikhail Gusarov
2008-11-20 15:48                                                             ` Evgeny Sinelnikov [this message]
2008-11-20 15:50                                                               ` Mikhail Gusarov
2008-11-20 15:44                                                           ` Alexey I. Froloff
2008-11-20 15:54                                                             ` Evgeny Sinelnikov
2008-11-20 15:57                                                               ` Damir Shayhutdinov
2008-11-20  7:33                                                   ` Andrey Rahmatullin
2008-11-19 21:52                                                 ` Mikhail Gusarov
2008-11-19 12:46                                     ` Alexey I. Froloff
2008-11-16 15:38                             ` [devel] " Dmitriy M. Maslennikov
2008-11-16 15:54                               ` Led
2008-11-16 18:08                           ` Dmitry V. Levin
2008-11-14 20:13                 ` Led
2008-11-19 12:20                 ` [devel] [JT] alterator (was: Управление группами пользователя) Michael Shigorin
2008-11-14 19:54       ` [devel] Управление группами пользователя Led
2008-11-14 19:10     ` Stanislav Ievlev
2008-11-14 19:52     ` Led
2008-11-14 19:54       ` Dmitriy M. Maslennikov
2008-11-14 19:59         ` Led
2008-11-14 20:03           ` Dmitriy M. Maslennikov
2008-11-14 20:09             ` Led
2008-11-14 20:11               ` Dmitriy M. Maslennikov
2008-11-14 20:06           ` Dmitriy M. Maslennikov
2008-11-14 20:14             ` Led
2008-11-14 20:24               ` Dmitriy M. Maslennikov
2008-11-14 20:58         ` Sergey Bolshakov
2008-11-14 22:25           ` Evgeny Sinelnikov
2008-11-16 20:07   ` Dmitry V. Levin
2008-11-16 20:17     ` Evgeny Sinelnikov
2008-11-16 23:44       ` Vitaly Lipatov
2008-11-17  0:29         ` Evgeny Sinelnikov
2008-11-14 20:16 ` Alexey I. Froloff
2008-11-14 20:23   ` Stanislav Ievlev
2008-11-14 20:37     ` Alexey I. Froloff
2008-11-16 14:44       ` Stanislav Ievlev
2008-11-14 20:26   ` Dmitriy M. Maslennikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=921f6bb40811200748s617f4f27r923d72fed9c82075@mail.gmail.com \
    --to=sin@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git