Re[19]: Насколько важен синтаксис языка?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.06 00:38
Оценка: +1
Здравствуйте, Eugene Beschastnov, Вы писали:

EB>Да. Если бы это вызывало хоть какую-нибудь проблему (с проектированием, с пониманием, с дебагом или с чем-то другим) — я бы скорее всего об этом услышал.


Ты? Ты упорно не хочешь слышать то, что до тебя пытются донести и еще надменно демонстриуешь неуважительное отношение к оппонентам.

EB>Не соглашусь. Ничего особенно классного в этом примере я не вижу (кстати, по хорошему бы надо бы написать "return" вместо "goto"). Возможно, в Nemerle это и создаёт какие-то проблемы (сам я Nemerle не знаю, поэтому судить не могу), но в Smalltalk — нет.


Ага. Создаются. Открою тебе пару секретов. До одного из них ты мог бы догадаться и сам. Return в Немерле является структрынм оператором и не может врнуть управление вне рамок струтуры кода. Ретурн в фнукции выйдет именно из нее, а не из функции где та была объявлена.

Второе же откровение, которое тебе будет тяжелее понять — это то что в Немерле в общем-то нет return. return в этом языке — это макрос эмулирующий поведение оного в C#. Этот макрос нуно специальным образом импортировать. Сам же Немерле (точнее его авторы) пропагандируют вычисления вместо передачи управления. Функция в Немерле — это выражение! Ты вообще не можешь передать управление. Ты можешь только ветвить вычисления. Таким образом не то что невозможно выйти из выражения не вернув значени, но вообще невозможно передать управление. Это приводит к упрощению читения кода. Ты можешь быть уверен, что выражение вернет результат и что управление не перескачит куда попало.

FDS>>кто даст гарантию, что какой-нибудь "умник" так не сделает

EB>Как "так"?

А как это сделал ты. Взять и в выражении (да по сложнее) выйти из него без возврата результата. Разумный программист увидит вычисления и так как они его не интересует предположит, что вычисления закончатся результатом помещенным в переменную и пойдет дальша, а на самом деле нужно быо анализировать весь код выражения так как он мог попросту прервать выражение.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.