Реализация и производительность модификаторов доступа в Ruby

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

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

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


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

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

0 ответов

Другие вопросы по тегам