Стоимость внедрения локальной области по умолчанию - PullRequest
0 голосов
/ 01 августа 2011

Как мы все знаем, в некоторых языках (наиболее известным примером является javascript) переменные имеют глобальную область видимости по умолчанию. Это означает, что если кто-то хочет объявить локальную переменную, он должен написать var, local, my или что-то еще.

Я никогда не задумывался о затратах на реализацию этого, но оказывается, что это может быть не просто вопросом традиций. Например, проверьте эту ссылку. Мой вопрос - локальная архитектура scope-by-default заранее дороже, чем global-scope-by-default. Просто вроде, не знаю, предварительная сортировка требует меньше перестановок, чем пузырьковая сортировка, таким образом, «заранее».

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

Ответы [ 2 ]

3 голосов
/ 01 августа 2011

Сводка некоторых моментов, которые лучше (локальные по умолчанию или глобальные по умолчанию) для языка Lua, можно найти на этой вики-странице .Может быть, ни один из них по умолчанию не является лучшим ответом, но мы, программисты, хотим сохранить некоторые данные;)

Некоторые цитаты со страницы вики:

  • "Локальный по умолчанию неверен.Возможно, глобальный по умолчанию тоже неверен, [но] решение не локально по умолчанию ».(Роберто Иерусалимский, архитектор Lua)
  • "[Текущее правило области видимости локальной переменной] является самым большим недостатком дизайна в Ruby".(Юкихиро Мацумото, дизайнер Ruby)
  • "Мне не нравится неявное объявление лексических символов, потому что оно побеждает их первичное использование, а именно, обнаружение опечаток ... Объявления должны выглядеть как объявления ... Я считаю, чтообъявления с my должным образом закодированы Хаффманом. "(Ларри Уолл, Perl Designer)
2 голосов
/ 01 августа 2011

Во время компиляции затраты на локальные по умолчанию и глобальные по умолчанию одинаковы. Вам все равно придется полностью просмотреть список всех активных локальных переменных, когда вы найдете имя, которое еще не видели. Во время выполнения локальные переменные обычно быстрее доступны.

...