[devel] [JT] Re: Управление группами пользователя

Mikhail Gusarov =?iso-8859-1?q?dottedmag_=CE=C1_altlinux=2Eorg?=
Чт Ноя 20 16:36:49 MSK 2008


Twas brillig at 16:21:36 20.11.2008 UTC+03 when sin на altlinux.ru did gyre and gimble:

 ES> Я не знаю что такое bullshit... Но а вот обратиться к нужному
 ES> адресу в памяти я на Haskell вряд ли смогу так запросто...

Это дело ядра, вообще-то. Но заворачивание void* тривиально.

 >> Кто будет оборачивать коды ошибки в исключения? Кто будет
 >> реализовывать

 ES> Сишный код не кидает исключений...

Зато кидает C++-ный. Попробуйте осознать, что это означает.

 >> RAII? Вы не понимаете, что C++-ный код враппера тупо будет размазан по

 ES> То что нужно от RAII в С всё равно пишут руками, так что эта часть
 ES> только упрощает использование С библиотек в С++...

C++-ный код кидает исключения. В C++ нет ключевого слова finally в блоке
try/catch. Подумайте, почему из этого автоматически следует
_необходимость_ иметь врапперы для всего нетривиального (управляющего
ресурсами любого рода) C-кода, используемого из C++.

 ES> Не в каждой, а только в тех, которые будут использовать сишные либы
 ES> напрямую, пропустив C++ варианты в целях некой оптимизации или
 ES> отсутствия необходимых C++ вариантов...

Сравните с "не в каждой, а только в тех, которые будут использовать
сишные либы напрямую, пропустив Haskell-варианты в целяз некой
оптимизации или отсутствия необходимых Haskell-вариантов".

 >> А вы подумайте, подумайте. Ключевые слова: разница в семантике
 >> управления памятью и обработке ошибок, RAII.

 ES> Ну, тут пожалуй соглашусь, только в том, что связки могут быть не
 ES> простыми... Но ведь дело в том, что для частных случаев в С++
 ES> связки делаются в самом коде, и при этом не требуется усилий чтобы
 ES> получить доступ к вызовам С-шных библиотек...

Это не аргумент. Врапперы "по ходу дела" в Haskell делаются ровно так
же. Какая разница, что они лежат в отдельном файле?

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

Это вам "прозрачно", потому что вы на C++ пишете. А разработчику на
Haskell "прозрачно" использовать встроенные средства языка, типа FFI,
или обёртки, типа c2hs.

 ES> В C++ не требуется для работы сначала сделать связку в виде
 ES> библиотеки, а потом начать работать...

Если есть желание получить неотлаживаемый memory- или resource-лик, то
да. Это замечательное свойство для языка системного программирования.

 ES> Разница в том, что в С++ GTK можно вызывать и без связки, а в Haskell - нет.

Нельзя. См. выше про RAII, исключения и отсутствие finally.

 ES> Если вы требуете признания того, что Haskell такой же "системный
 ES> язык", что и C++, то я скорее склонен согласиться, чем спорить :)

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

 ES> Но, к сожалению, вести речь о его применимости для многих задач я
 ES> уже не готов... А поскольку я не готов его применить, то
 ES> "системным" считать не могу :) Далее мы, скорее всего, снова
 ES> упрёмся в личные предпочтения...

Т.е. язык системного программирования оказался совершенно субъективным
делом, и ваше высказывание, что C++ - язык системного программирования,
подкреплено лишь вашим авторитетом, ибо существенной разницы между C++ и
Haskell, следуя вашей логике доказательства, мы не нашли, а Haskell вы
таковым не считаете.

-- 
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 196 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20081120/afd1496f/attachment-0001.bin>


Подробная информация о списке рассылки Devel