Jump to content

Стажировка (информатика)

В информатике интернирование — это повторное использование объектов равной ценности по требованию вместо создания новых объектов. Этот образец творения [1] часто используется для чисел и строк в разных языках программирования. Во многих объектно-ориентированных языках, таких как Python , даже примитивные типы , такие как целые числа, являются объектами. Чтобы избежать накладных расходов на создание большого количества целочисленных объектов, эти объекты повторно используются посредством интернирования. [2]

Чтобы интернирование работало, интернированные объекты должны быть неизменяемыми, поскольку состояние распределяется между несколькими переменными. Интернирование строк — это распространенное применение интернирования, когда в одной программе требуется множество строк с одинаковыми значениями.

Лисп ввел понятие интернированных строк для своих символов . Руководство программиста LISP 1.5 [3] описывает функцию под названием intern который либо оценивается как существующий символ с указанным именем, либо, если таковой не существует, создает новый символ с этим именем. Эта идея интернированных символов сохраняется в более поздних диалектах Лиспа, таких как Clojure, в особых формах, таких как (def symbol) которые выполняют создание и интернирование символов. [4]

В парадигме объектно-ориентированного программирования интернирование является важным механизмом в шаблоне-приспособленце , где метод интернирования вызывается для хранения внутреннего состояния объекта, чтобы его можно было использовать совместно с различными объектами, которые имеют разные внешние состояния, избегая ненужного дублирования. [5]

Интернирование продолжает оставаться важным методом управления использованием памяти в реализациях языков программирования; например, Спецификация языка Java требует, чтобы идентичные строковые литералы (то есть литералы, содержащие одну и ту же последовательность кодовых точек) ссылались на один и тот же экземпляр класса String, поскольку строковые литералы «внутрены», чтобы иметь общие уникальные экземпляры. [6] В языке программирования Python интернируются небольшие целые числа, [7] хотя подробности зависят от языковой версии.

Мотивация

[ редактировать ]

Интернирование экономит память и, таким образом, может улучшить производительность и объем памяти программы. [8] Обратной стороной является время, необходимое для поиска существующих значений объектов, которые необходимо интернировать.

См. также

[ редактировать ]
  1. ^ «Шаблоны проектирования» (PDF) . Университет Вашингтона .
  2. ^ Яворский, Михал (2019). Эксперт по программированию на Python: станьте мастером Python, изучив лучшие практики кодирования и передовые концепции программирования на Python 3.7 . Тарек Зиаде (Третье изд.). Бирмингем, ISBN Великобритании  978-1-78980-677-9 . OCLC   1125343555 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  3. ^ Левин, Майкл И. (1965). Руководство программиста LISP 1.5: Вычислительный центр и исследовательская лаборатория электроники Массачусетского технологического института . Джон Маккарти, Массачусетский технологический институт. Вычислительный центр Массачусетского технологического института. Научно-исследовательская лаборатория электроники (2-е изд.). Кембридж: MIT Press. ISBN  0-262-13011-4 . OCLC   1841373 .
  4. ^ «Clojure — специальные формы» . Clojure.org . Проверено 4 ноября 2021 г.
  5. ^ Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения . Эрих Гамма, Ричард Хелм, Ральф Э. Джонсон, Джон Влиссидес. Ридинг, Массачусетс: Аддисон-Уэсли. 1995. ISBN  0-201-63361-2 . ОСЛК   31171684 . {{cite book}}: CS1 maint: другие ( ссылка )
  6. ^ «Спецификация языка Java. Глава 3. Лексическая структура» . docs.oracle.com . Проверено 4 ноября 2021 г.
  7. ^ «PEP 237 — Объединение длинных и целых чисел» . Python.org . Проверено 4 ноября 2021 г.
  8. ^ Оукс, Скотт (2014). Производительность Java: полное руководство . Севастополь, Калифорния: O'Reilly Media. ISBN  978-1-4493-6354-3 . OCLC   878059649 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bc769090de6e635baa9452e863cd0c3c__1697630460
URL1:https://arc.ask3.ru/arc/aa/bc/3c/bc769090de6e635baa9452e863cd0c3c.html
Заголовок, (Title) документа по адресу, URL1:
Interning (computer science) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)