Реализация и производительность модификаторов доступа в Ruby - PullRequest
0 голосов
/ 29 декабря 2018

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

Кроме того, если верно, что методы private или protected требуютпроверка во время выполнения при вызове метода, чтобы гарантировать, что доступ должен быть разрешен, насколько значительным является влияние на производительность?Я предполагаю, что эта проверка во время выполнения должна происходить для всех вызовов методов, включая публичные, так значит ли это, что все вызовы методов по своей природе медленнее, чем если бы у Ruby не было модификаторов доступа?

Я понимаю, что это довольно технические вопросы о внутренностях интерпретатора Ruby, и что лучший способ понять это подробно - это прочитать исходный код Ruby.Но я не являюсь разработчиком Ruby и меня больше интересует изучение принципов, применимых к динамическим языкам и модификаторам доступа в целом, поэтому я надеюсь, что кто-то здесь сможет поделиться своими знаниями о внутренностях Ruby.


Исследования, которые я провел до сих пор:

  • Некоторые справочные материалы по реализации компиляторов и интерпретаторов и систем статических и динамических типов (у меня также есть понимание того, как модификаторы доступа работают в скомпилированных языках... очевидно, немного более размыто, когда речь заходит о динамических языках)
  • Я наткнулся на книгу ( Расширение языка динамического программирования и среды выполнения с контролем доступа ), который говорит об этой проблеме в целом, а также обсуждает виртуальную машину GemStone Smalltalk для Ruby, но я не знаю, соответствуют ли детали реализации, которые она обсуждает, истинному основному / официальному интерпретатору Ruby.Но, чтобы быть ясным, я не прошу никого здесь читать или смотреть на книгу, просто предоставляя некоторый контекст.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...