|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexey Gradovtsev 2:5030/1247.7 03 Sep 2004 01:00:07 To : Artem Chuprina Subject : Вопросец -------------------------------------------------------------------------------- 02 сентября 2004 г. в 16:37 Artem Chuprina писал(-а/-о) -> Alexey Gradovtsev: AG>> Что имеем в С++? STL, предоставляющий AC> функциональных языках, где eval есть, либо встраивать в собственную AC> программу интерпретатор C++). Hо сделать это со сравнимой AC> эффективностью язык не позволяет. Итак, основное преимущество интерпретируемых языков - это eval? :) AG>> Однако при всем при том в С++ все переопределяемо, а в эхотаге? Таких AG>> возможностей существенно меньше. Или я ошибаюсь? AC> В эхотаге уж чего-чего, а возможностей по переопределению больше. AC> Hапример, можешь ты в C++ переопределить [] так, чтобы он не добавлял AC> элемент к контейнеру, если его там нет? Без специальной обработки этого AC> в типе покладаемого туда элемента? AC> Это грабли, по которым я с полгода назад потоптался - вместо перлового AC> if (defined(my $el = $container{$key})) AC> приходится писать три довольно длинных строки - объявить итератор, AC> вызвать find(), вызвать end(), сравнить. Можно, конечно, написать AC> функцию, которая будет все это дело оборачивать, и даже объявить ее [... Дальше неразборчиво ...] Упс. И где тут переопределение [] ? if (defined (container[key])) - это вовсе не переопределение, а вызов функции, как ты и написал. Вся проблема в том, что сделать эту функцию в С++ нужно самому, ну так и что с того??? А вот переопределить [] в С++ всегда запросто (контейнер ведь всегда можно и самому сконструировать при желании!), и тогда запись: container[key] = "value"; будет иметь разные последствия, определяемые программистом! А в перле? А в перле остается только вызов функции if (defined ($container[$key])). Впрочем, нет смысла сравнивать, что там в С и что в перле. Просто факт есть факт: возможности одного языка ничуть не уступают возможностям другого. AC> Главное же - это уже не STL, причем совсем. Готовое средство не то AC> чтобы совсем непригодно для решения задачи (поддержку структуры AC> контейнера я все-таки ему оставил), но непригодно для написания AC> программы. С чего это? Тебе дают готовые средства. Хочешь - пользуйся, а хочешь - переписывай самостоятельно. В перле второе просто отсутствует. AC> C - язык для решения узкого круга задач закаленными профессионалами, C++ AC> - вредный. Он, увы, не мертвый - писать на нем код сознательно учат. И AC> это - диверсия в масштабах планеты. :)) Ортодоксы были и есть везде и всегда. Интересно, что на эти слова говорят в сишных эхах ;) Это я про С++, про С согласен. Вопрос ведь не в языке, а в том, КОГДА удобнее на нем писать. 03 сентября 2004 г. Digitally yours, *Alexey*. ... Many people live happily without knowing it. Luc de C. de Vauvenargues. --- GoldED+/W32 1.1.5-030227 * Origin: Эквивалентные ошибки коммутативны (2:5030/1247.7) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/396141378dcb.html, оценка из 5, голосов 10
|