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)
next prev parent 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