[devel] [JT] Re: Управление группами пользователя
Evgeny Sinelnikov
=?iso-8859-1?q?sin_=CE=C1_altlinux=2Eru?=
Чт Ноя 20 16:21:36 MSK 2008
20 ноября 2008 г. 12:31 пользователь Mikhail Gusarov
<dottedmag at altlinux.org> написал:
> Twas brillig at 11:53:05 20.11.2008 UTC+03 when sin at altlinux.ru did gyre and gimble:
>
> ES> Но я полагаю, что Haskell запускает для своих приложений внутренюю
> ES> среду, позволяющую реализовать его функциональность на компьютерах,
> ES> аппаратно её не поддерживающих. С++ же настолько же близок к
> ES> железу, что и C... В этом они с Haskel не сравнимы..
>
> Как это отражается на функционировании? Всё остальное - среда, не среда
> - полнейший bullshit.
Я не знаю что такое bullshit... Но а вот обратиться к нужному адресу в
памяти я на Haskell вряд ли смогу так запросто... Я уже сказал, что
"не знаком с Haskell настолько, чтобы дать вам развёрнутый ответ"... А
соответственно допускаю, что в нём можно многое, но в нём, в отличии
от С++, вряд ли можно всё что, что можно в C...
>
> >> Не совместим. extern "C", #define class class_, и т.д.
>
> ES> Да, есть такой набор ограничений, за их исключением совместимость
> ES> практически полная... Я бы сказал, что на практике эти ограничения
> ES> встречаются тогда когда, ими пренебрегают. Думаю, что в ряде
> ES> случаев, даже намеренно...
>
> Кто будет оборачивать коды ошибки в исключения? Кто будет реализовывать
Сишный код не кидает исключений...
> RAII? Вы не понимаете, что C++-ный код враппера тупо будет размазан по
То что нужно от RAII в С всё равно пишут руками, так что эта часть
только упрощает использование С библиотек в С++...
> всей программе тонким слоем? Причём в каждой программе - свой код.
>
Не в каждой, а только в тех, которые будут использовать сишные либы
напрямую, пропустив C++ варианты в целях некой оптимизации или
отсутствия необходимых C++ вариантов...
> >> Связки для Haskell занимаются ровно тем, что в C++ делается либо
> >> неявно и несепарабельно (превед!), либо отдельной связкой,
> >> называемой обёрткой: преодолением разницы в подоходах языков к
> >> управлению памятью и ресурсами и обработке ошибок.
>
> ES> Я не совсем понял, о чём здесь идёт речь,
>
> А вы подумайте, подумайте. Ключевые слова: разница в семантике
> управления памятью и обработке ошибок, RAII.
>
Ну, тут пожалуй соглашусь, только в том, что связки могут быть не
простыми... Но ведь дело в том, что для частных случаев в С++ связки
делаются в самом коде, и при этом не требуется усилий чтобы получить
доступ к вызовам С-шных библиотек...
> ES> но вот это, например, явная связка:
> ES> http://www.cse.unsw.edu/~chak/haskell/gtk/
> ES> http://haskell.org/gtk2hs/
>
> gtkmm.
>
Для С++ есть QT, а так... да верно, если всё писать на С, то со
связками те же проблемы... Но писать их проще, и пишутся они
прозрачно, через встроенные средства языка... В C++ не требуется для
работы сначала сделать связку в виде библиотеки, а потом начать
работать...
> ES> Кстати, GTK как раз и содержит в заголовочных файлах ряд
> ES> вышеозначенных несовместимостей, которые, как я полагаю, сделаны по
> ES> причине явных предпочтений авторов в пользу С, по сравнению с C++.
>
> О да. А также он содержит ряд вышенеозначенных несовместимостей,
> мешающих без ручного кода сделать Haskell-биндинг. Как я полагаю,
> сделаны они по причине явных предпочтений авторов в пользу C по
> сравнению с Haskell. Могли бы потрудиться и написать попроще, чтобы
> биндинги генерить можно было. Впрочем, для C++ всё равно биндинг нужен.
>
согласен, GTK - ужасен... :)
> ES> По моему вы недооцениваете порядок сложности того, что
> ES> предлагаете... Иначе почему концепция, которую взяла за основу в
> ES> c2hs близка к мёртвому проекту "A GTK+ Binding for Haskell",
> ES> который был сменён gtk2hs?
>
> Потому, что GTK+ Binding for Haskell забросили авторы? Это не имеет ни
> малейшего отношения к делу.
>
Я только спросил... раз не имеет - значит так уж сложилось... но
причины-то были...
> ES> А ведь в gtk2hs я вижу кучу ручного кода....
>
> В gtkmm я тоже вижу кучу ручного кода.
>
> gtk2hs - 1.1M
> gtkmm-1.2.10 - 704k
>
> Где разница?
>
Разница в том, что в С++ GTK можно вызывать и без связки, а в Haskell - нет.
> >> Здесь наши очевидности расходятся.
>
> ES> С некоторого момента очевидности уже недоказуемы - эта граница
> ES> называется мировоззренческой позицией.
>
> Нет уж, извините. Я требую вполне конкретных вещей, а вы не можете их
> предоставить.
>
Если вы требуете признания того, что Haskell такой же "системный
язык", что и C++, то я скорее склонен согласиться, чем спорить :)
Но, к сожалению, вести речь о его применимости для многих задач я уже
не готов... А поскольку я не готов его применить, то "системным"
считать не могу :) Далее мы, скорее всего, снова упрёмся в личные
предпочтения...
> Пока что вы
>
> a) сказали, что "Haskell, очевидно, не язык системного
> программирования". Я утверждаю с той же степенью авторитетности, что
> "C++, очевидно, не язык системного программирования"
>
Я сказал ранее, что не вижу ограничений для C++ кроме тех, что на его
применение не рассчитаны модули ядра и NSS модули... Таких ограничений
для Haskell я вижу гораздо больше...
> b) Предоставили некий набор правил, по которым определяется
> "системность" языка, и не смогли опровергнуть, что Haskell под них не
> попадает.
>
Хм.. набор, определяющий "системность языка"? Я его и не пытался
предоставить...
> >> Покажите несуразное сравнение. Я пока вижу только суразные.
>
> ES> "Тогда Haskell - это тоже язык системного программирования"
>
> Тогда опровергните! Не "мне кажется" или "я считаю", а фактами. Раз уж
> вы выдвинули свою теорию о классификации языков - она должна выдержать
> первое же испытание.
>
Я уже сказал, что мне трудно дать компетентный ответ по поводу
Haskell, ибо я с ним мало знаком.... Могу только включить этот
досадный факт в копилку отсутствия не то, чтобы наличия критического
числа разработчиков, а вообще необходимого числа разработчиков,
использующих этот язык...
Вы что-то путаете по поводу "моей теории" классификации языков - я её
не выдвигал. Я высказал мнение о том, что сравнимать С++ и Haskell,
против C и C++, несуразно...
--
Sin (Sinelnikov Evgeny)
Подробная информация о списке рассылки Devel