[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