Re[20]: Насколько важен синтаксис языка?
От: Eugene Beschastnov Россия http://eugenius-nsk.livejournal.com/
Дата: 07.09.06 06:16
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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


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

Интересная особенность реализации. Но ты не находишь, что эта твоя фраза противоречит предыдущему абзацу? Раз return является макросом — значит его можно переписать и изменить ему поведение.

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

Спасибо за краткую лекцию по ФП, но я, в общем-то, в курсе. Или ты хочешь сказать, что Smalltalk плох, потому что не является чистым ФЯ?

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

EB>>Как "так"?

VD>А как это сделал ты. Взять и в выражении (да по сложнее) выйти из него без возврата результата. Разумный программист увидит вычисления и так как они его не интересует предположит, что вычисления закончатся результатом помещенным в переменную и пойдет дальша, а на самом деле нужно быо анализировать весь код выражения так как он мог попросту прервать выражение.

Ты. Не. Понимаешь.
Вообще.

Где он это увидит? Приведи пример (можно на псевдокоде — только, пожалуйста, не Nemerle-вском).


Что касается "выражений посложнее": в Smalltalk средний размер метода — 6-7 строк. Включая определение переменных и прочее. Где тут можно сделать "блок посложнее"?
--
Бесчастнов Евгений
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.