Re[11]: Мои пять козявок на тему Почему у Nemerle нет будущего
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.08.06 15:31
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Однако не понятно, как такие ошибки влияют на безопасность?


Я свое определение безопасности кода привел. Исходя из него совершенно очевидно, что устранение любых ошибок и темболее их классов повышает надежность программы, а стало быть безопасность кода.

E>Я хочу сказать, что во многих случаях придется писать ignore.


У тебя фобия за фобией. Ты пыташся усмотреть громадную проблему там где ее нет. Я вот поглядел на код интеграции Немерла со Студией над которым я сейчас тружусь и посчитал сколько в нем ignore-ов и "_ =". Оказалось 12 штук на 58 файлов (130 Kb). Не думаю, что кто-то так сильно пострадает от подобного "оверхэда". Зато все игнорирование значений описывается явно и программист читая код не пропустит его. Если это ошибка, то ее будет легко выявить.

E> Например, когда объект возвращает ссылку на самого себя для того, чтобы можно было выстраивать цепочку действий. Вот аналоги из C++:


E>
E>std::cout << "total time: " << (start - finish) << " msec" << std::endl;

E>Md5_Hash hash;
E>hash.put( "Message: " ).put( message_id ).put( ", content length: " ).put( content_length );
E>

E>Программист вынужден будет в этих случаях писать ignore. Геморрой на ровном месте.

Да это ужасный код стант просто в сто раз лучше если в начале строки написать:
hash = hash.put(...

или
_ = hash.put(...

А учитывая, что таких классов прктически нет, это вообще можно счесть огромнейшей проблемой.

В библиотеках дотнета не так много нужных классов чьи методы на право и на лево возвращали бы никчемные значения. Сразу в голову приходит только один StringBuilder. А ублюдочные переоеределения операторов сдвига для вода/вывода вообще не нужны. $"..." и sprintf в сто раз удобнее.

В общем, проблем это не вызвает, а от ошибок по невнимательности спасает.

VD>>Ошибка — эта очень частая.


E>May be. Тем не менее к безопасности это вряд ли имеет отношение.


Ты бы привел что ли свое определение безопасности кода. А то вон человеку минус не за что влепил, а сам о терминах споришь.

E> Катострофических последствий это не вызовет, поскольку это логическая ошибка программиста.


Это не логическая ошибка. Это в большинстве случаев ошибка по невнимательности/незнанию. И данная проверка ее устраняет.

Что за любовь спорить с очевидными вещами и выискивать проблемы там где их никогда не было?

Как говорится в рекламе какой-то колбасной фирмы "Пааапробуй!", а потом будешь рассуждать. А то очередной поток домыслов выслушивать очено не хочется.

E> С таким же успехом программист может поставить ignore там, где ему нужно было сохранить значение. Запись:

E>
E>ignore( str1.Replace( "some", "other" ) );
E>

E>остается синтаксически валидной, но вот смысла в ней совершенно нет.

Нда. Клинический случай. Ты сам то не понимашь, что вписывая ignore или "_ =" человек делает осознанный выбор? Да и читая код этого нельзя не заметить. А вот конструкция:
string str1 = "some";
str1.Replace("... some ...", "other");

выглядит на первый взгляд совершенно нрмально. И написать ее по незнанию или невнимательности совершенно элементарно.

E>Да уж. Потерянные исключения -- это не грабли.


Нет никаких потерянных исключений. У тебя очередные фобии. Иди обсуди этот вопрос в Философию. Мне он не интересен. Я исключения перехватываю 1-2 раза во всей программе и ошибок у меня с ними нет. Явские маньякальные идеи "невыпускать исключения из функции" мне кажутся тупиковым путем. Намного большей проблемой является игнорирование исключений:
try
{
    ...
}
catch { }

вот ее бы победить. Но тут уже надо с ДНК боростья или саму идеологию исключений менять.

E>Итого получается: реально исправленные проблемы с ==/equals, гипотетическое преимущество в switch/case и такое же гипотетическое преимущество (ли?) по поводу возвращаемого значения. И минус спецификация исключений. Не густо для языка, появившегося на 10 лет позже Java.


Я сделал очевиднейшее замечание, что Немерле более безопасен чем Ява и подтвердил свои слова. Проводить анализ и создавать полный список улучшений я и не собирался. Я вобще не понимаю почему я должен доказывать, что не являюсь верблюдом?

Я убил кучу времени на доказательство тривиальных высказываний и споры с тобой по сущим глупостям. Меж тем ты за все время не всказал ни одного доказанного утверждения.

У меня большая к тебе просьба. Отстань. Мне не интересно осбуждать предположения высасанные из пальца и доказыать их надуманность. На это уходит очень много времени. Подними интересующие тебя вопросы в Философии. Уверен, найдется не мало людей которые с удовольтвием обсудят любую пургу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.