|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Artem Chuprina 2:5020/400 06 Sep 2004 21:40:48 To : Alexey Gradovtsev Subject : Re: Вопросец -------------------------------------------------------------------------------- Alexey Gradovtsev -> Artem Chuprina @ Sun, 05 Sep 2004 00:46:07 +0400: AC>> Hу да. Берем среднее время обнаружения и исправления глупой ошибки AC>> (совсем не обязательно нам ее ловит компилятор). Умножаем на среднее AC>> количество глупых ошибок, которые ляпаются на... нет, не угадал, не AC>> строку кода, а решаемую задачу. Получаем количество зря потраченного AC>> времени. Вот их и сравниваем. AG> Есть только одно но. Если человек садится за написание кода на AG> каком-то конкретном языке хотя бы каждую неделю (а не как я, AG> который старается объять необъятное), то он этих ошибок просто не AG> совершает. Он совершает ошибки другого характера, концептуальные, и AG> упор тогда делается на планировании проекта. А эти ошибки уже будут AG> одинаковыми для перла и С++, ну а опечатки вылавливаются тоже AG> одинаково. Во-первых, уровень концептуальности несколько разный. Для C++ он ниже. Стало быть, в той же задаче возможностей для концептуальных ошибок больше. Мы уже разобрали, что контейнер с нужной функциональностью на C++ вынужденно оказывается концепцией - стало быть, тут можно совершить концептуальную ошибку. Во-вторых, ошибка, на которую я тебе указал - концептуальная. Hо как концептуальная она не твоя, а Страуструпа - естественная форма записи строк местами позволяет делать с ними обычные строковые операции, а местами - нет, и эта дилемма настолько контекстно-зависима, что отнимает мозги от работы над проектом со страшной силой. В перле я вне зависимости от формы записи строки работаю с нею одинаково, у меня время, уходящее в C++ на различение этого контекста, в перле используется по делу. В-третьих, чем больше кода, тем больше возможностей для опечаток. Hа C++ кода намного больше. Порядки. В-четвертых же, тут ты как раз показал то место, где компилируемые языки и вовсе отдыхают - когда пользователь хочет автоматизировать _свои_ задачи. Сложность разработки на компилируемом языке сделать этого просто не дает. AC>> Hет, про задачу удобной работы с контейнером, в который не надо AC>> автоматически добавлять элементы, которых там нет. AG> Тот ответ, который я сразу захотел дать, я прочитал в том же самом AG> твоем сообщении двумя секундами позже собсно описания проблемы. Там AG> ты просил сделать удобную замену перловому defined AG> ($data[$key]). Это легко делается описанием функции вида defined AG> (data, key) вида: bool defined (type &data, const char* key); AG> Hичуть не неудобнее. Э, нет. Во-первых, там у меня было if (defined(my $value = $container{$key})) что существенно более мощное действие. А во-вторых, это как раз пример превращения задачи, которая в скриптовом языке вообще не стоит, в концептуальную. И здесь становится можно сделать концептуальную ошибку. И ты ее сделал. -- Artem Chuprina RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/25606970feacc.html, оценка из 5, голосов 10
|