Thunderbolt — это универсальное решение, позволяющее одновременно подключать до 6 мультимедийных устройств. Что можно подключить, какие есть типы и версии интерфейса? Кстати об адаптерах и переходниках Thunderbolt. Thunderbolt версии 5 и разрешение 16K: это реально? Перспективы и методы развития молнии.
Thunderbolt — что это за разъем, плюсы и минусы интерфейса. Версии Тандерболт 1,2,3,4,5
В связи с растущим спросом на все более компактные ноутбуки появление универсального аппаратного интерфейса оставалось вопросом времени, пока в 2009 году инженеры Intel в сотрудничестве с ИТ-гигантом Apple не представили революционную новую технологию. Light Peak, о которой вскоре стало известно как Thunderbolt.
Новейший высокоскоростной интерфейс сочетает в себе дополнительные стандарты PCI-E и DP в едином последовательном сигнале в своей архитектуре, что позволяет подключать до шести устройств одновременно или параллельно через концентраторы со скоростью до 40 Гбит / с.
Привет! Меня зовут Сергей Константинов, в Яндексе я веду разработку API Карт.
Обратная совместимость: правильная архитектура
Что можно сделать на этапе проектирования, чтобы потом не было мучительно больно? Здесь необходимо сделать три предварительных замечания. Во-первых, обратная совместимость никогда не бывает бесплатной. Создание правильной архитектуры связано с накладными расходами. Вам придется больше думать, вводить больше сущностей, писать избыточный код.
Во-вторых, перед тем, как приступить к разработке, необходимо обозначить зону ответственности, четко уточнить, что именно будет поддерживаться. Сведите к минимуму ситуацию, когда некоторые общедоступные API не описаны в документации. Никогда не давайте на чтение (и тем более на запись) сущности, формат которых не описан.
В-третьих, предполагается, что ваш API хорошо спроектирован и структурирован для уровней абстракции.
Предположим, мы все это поняли и осознали. Пришло время перейти к правилам, которые мы узнали из нашего почти пятилетнего опыта.
Правило №1: больше интерфейсов
По крайней мере, ваша общедоступная документация не должна иметь единой подписи, которая принимает определенные типы, а не интерфейсы. Исключение может быть сделано для глобальных базовых классов и явно подчиненных компонентов.
Почему это помогает избежать потери обратной совместимости? Если интерфейс объявлен в подписи, у вас не будет проблем, если у вас будет вторая (третья, четвертая) реализация интерфейса. Ответственность объектов атомизирована. Интерфейс не накладывает условий на то, каким должен быть переданный объект: он может быть наследником стандартного объекта или независимой реализацией.
Почему это полезно при разработке API? Выбор интерфейса в основном нужен разработчику для наведения порядка в голове. Если ваш метод принимает в качестве параметра объект с 20 полями и 30 методами, настоятельно рекомендуется подумать о том, что именно требуется от этих полей и методов.
В результате применения этого правила вы должны получить много дробных интерфейсов. Ваши подписи не должны требовать более 5 ± 2 свойств или методов от входного параметра. Вы поймете, какие свойства ваших объектов важны в контексте общей архитектуры системы, а какие нет. В результате сокращается избыточность интерфейсов
Правило №2: иерархия
Ваши объекты должны быть организованы в иерархию: кто с кем взаимодействует. Когда интерфейсы, которые вы предоставили своим объектам, накладываются на эту иерархию, вы получаете своего рода иерархию интерфейсов. Теперь самое главное: объект имеет право знать только объекты соседних уровней.
Почему это помогает избежать потери обратной совместимости? Общая сплоченность архитектуры снижается, меньшая сплоченность означает меньше побочных эффектов. А когда вы меняете объект, вы можете касаться только его соседей по дереву.
Не всегда удается добиться этого очевидными способами. Необходимые методы и свойства нужно передавать по цепочке через промежуточные звенья (конечно, с учетом уровня абстракции!). Это автоматически даст вам ряд точек расширения, которые могут пригодиться позже.
Правило №3: контексты
Рассматривайте любой средний уровень иерархии как информационный контекст для нижнего уровня.
Пример:
Карта = картографический контекст (наблюдаемая площадь карты + масштаб).
IPane = контекст позиционирования в координатах клиента.
ITileContainer = контекст позиционирования в координатах кадра.
Вы можете думать о своем дереве объектов как об иерархии контекстов. Каждому уровню иерархии должен соответствовать определенный уровень абстракции.
Почему это помогает избежать потери обратной совместимости? Правильно построенное контекстное дерево почти никогда не изменится во время рефакторинга — потоки информации могут появиться, но вряд ли исчезнут. Правило контекста позволяет эффективно изолировать уровни иерархии друг от друга.
Это полезно при разработке API-интерфейсов, поскольку гораздо проще помнить о схеме информации о проекте, чем о полном дереве. А описание объектов в контексте предоставляемого ими контекста позволяет правильно выделить уровни абстракции.
Правило №4: consistency
В этом случае я использую термин согласованность в парадигме ACID для баз данных. Это означает, что между транзакциями состояние объектов всегда должно быть действительным. Любой объект должен постоянно предоставлять полное описание своего состояния и полный набор событий для отслеживания всех изменений его состояния.
Подобные схемы нарушают последовательность:
В частности, отсюда следует правило: избегать обновлений, строить, применять методы.
Это помогает избежать потери обратной совместимости: внешний наблюдатель всегда может полностью восстановить состояние и историю объекта через его общедоступный интерфейс. Более того, такой объект всегда можно заменить или клонировать, не зная его внутренней структуры.
Когда у вас есть такое взаимодействие, что есть состояние объекта и событие об его изменении, номенклатура методов и событий ваших объектов становится менее разнообразной и более согласованной. Вам станет проще выделять интерфейсы и держать все в голове.
Правило №5: события
Организуйте взаимодействие между объектами по событиям и в обоих направлениях.
Давайте рассмотрим два примера того, как вы можете организовать взаимодействие между кнопкой и макетом:
Вторая схема взаимодействия получается изначально, если выполняется требование согласованности:
- каждый из объектов знает, когда состояние другого объекта изменилось;
- каждый из объектов может полностью понимать состояние другого.
В первом случае кнопке и раскладке известны детали внутренней структуры другого, во втором — нет.
Это помогает избежать потери обратной совместимости, поскольку события являются необязательными для обоих объектов — вы можете легко поддерживать реализации обоих объектов, которые реагируют только на подмножество событий и отображают только часть состояния второго объекта. Если у вас есть третий объект, который должен реагировать на то же действие, у вас не будет проблем.
Если вы выполнили предыдущие четыре шага правильно, вы получите стандартную схему: у вас есть, состояние, события о его изменении, базовый объект, который слушает это событие и каким-то образом реагирует. Ваша организация взаимодействия между объектами будет существенно унифицирована. Таким образом, взаимодействие между объектами основано на общих, не частных методах и событиях, то есть оно будет содержать гораздо меньше специфики, чем конкретные объекты
Правило №6: делегирование
Шестое правило логически следует из первых пяти. Вы построили всю систему, у вас есть интерфейсы и события, уровни абстракции. Теперь нам нужно переместить всю логику на минимально возможный уровень абстракции. Поскольку реализация и функциональность нижнего уровня абстракции очень часто меняются (макет, протоколы взаимодействия и т.д.), Интерфейс нижнего уровня абстракции должен быть как можно более общим.
При таком подходе отношения между объектами становятся максимально абстрактными. При необходимости можно легко переписать объекты нижнего уровня абстракции
Правило №7: тесты
Напишите тесты для интерфейса.
Правило №8: внешние источники
В подавляющем большинстве случаев самые большие проблемы с поддержанием обратной совместимости возникают из-за несоблюдения обратной совместимости с другими сервисами. Если вы не контролируете соседнюю службу (источник данных), добавьте на свою сторону оболочку с поддержкой версий.
Обратная совместимость Обратная совместимость (иногда известная как обратная совместимость) — это свойство системы, продукта или технологии, которое позволяет
Компромиссы
Преимущества
У компании есть несколько стимулов для реализации обратной совместимости. Обратная совместимость может использоваться для сохранения устаревшего программного обеспечения, которое в противном случае было бы потеряно, когда производитель решит прекратить поддержку устаревшего оборудования. Классические видеоигры — типичный пример, используемый при обсуждении ценности поддержки устаревшего программного обеспечения. Культурное влияние видеоигр является важной частью их постоянного успеха, и некоторые считают, что игнорирование обратной совместимости приведет к исчезновению этих игр. [25] Обратная совместимость также служит дополнительным аргументом в пользу нового оборудования, поскольку существующая база игроков может быть более доступной. Обновление для будущих поколений консолей. Это также помогает заполнить пробелы в контенте на раннем этапе запуска новых систем, поскольку пользователи могут подключаться к обширной библиотеке игр устаревшей консоли по мере постепенного перехода разработчиков на новое оборудование. [26]
Одним из примеров является Sony PlayStation 2 (PS2), которая была обратно совместима с играми своего предшественника, PlayStation 2 (PS1). Хотя выбор игр для PS2, доступных при запуске, был ограничен, продажи консолей в 2000–2001 годах оставались высокими благодаря обширной библиотеке игр для предыдущей PS1. Это дало PS2 время для увеличения установленной базы, а разработчикам — выпустить больше качественных игр для PS2 к решающим праздникам 2001 года. [27]
Вдобавок, хотя он не был включен при запуске, Microsoft через несколько лет постепенно включила обратную совместимость для некоторых своих игр для Xbox One в жизненный цикл своего продукта. [28] Геймеры потратили более миллиарда часов, играя в обратно совместимые игры на Xbox, и ожидается, что консоли следующего поколения, такие как PlayStation 5 [29] и Xbox X Series, также будут поддерживать эту функцию. Большая часть успеха и реализации этой функции заключается в том, что оборудование в консолях следующего поколения является одновременно мощным и достаточно похожим на устаревшие системы, так что старые игры можно разбить и перенастроить для работы на Xbox One. [30] Программа обратной совместимости поддерживает не только Xbox 360 предыдущего поколения, но и игры из исходной системы Xbox. [30] Некоторые игры также получают незначительные визуальные улучшения и дополнительные уровни бесплатно для пользователя. Программа оказалась невероятно популярной среди геймеров Xbox и идет вразрез с недавней тенденцией студийных ремастеров классических игр, что, по мнению некоторых, является серьезным сдвигом в стратегии производителей консолей. [28]
Расходы
Буквальная стоимость поддержки устаревшего программного обеспечения считается основным недостатком использования обратной совместимости. [26] Затраты, связанные с обратной совместимостью, являются более высокими, если для поддержки устаревших систем требуется оборудование; повышенная сложность продукта, которая может привести к увеличению времени выполнения заказа, технологическим барьерам и замедлению инноваций; и более высокие ожидания пользователей с точки зрения совместимости. [2] По этой причине несколько игровых консолей решили постепенно отказаться от обратной совместимости к концу поколения консолей, чтобы снизить затраты и оживить продажи на короткое время до появления нового оборудования. [31]
Прекрасным примером является Sony PlayStation 3 [32], поскольку производство первой итерации PS3 было дорогостоящим, отчасти из-за включения Emotion Engine предыдущей PS2 для запуска игр для PS2 [33], поскольку архитектура PS3 была совершенно другой из PS2. Последующие версии оборудования PS3 отказались от Emotion Engine, поскольку это снизило производственные затраты, исключив возможность запуска игр для PS2 [33], поскольку Sony обнаружила, что обратная совместимость не является большим преимуществом для PS3 по сравнению с PS2. [33] Главный конкурент PS3, Microsoft Xbox 360, применил другой подход к обратной совместимости, используя программную эмуляцию для запуска игр с первого Xbox. [34]
Однако в связи с текущим снижением продаж физических игр и увеличением количества демонстраций и цифровых загрузок некоторые полагают, что обратная совместимость скоро устареет так же, как и поддерживаемые ею консоли. [31] Многие игровые студии обновляют и переиздают свои самые популярные игры с улучшенной графикой и новым контентом. Эти ремастеры добились успеха, привлекая как ностальгирующих игроков, которые помнят, как наслаждались оригинальными релизами, когда они были моложе, так и новичков, у которых, возможно, не было оригинальной системы, на которой они были выпущены. Для большинства потребителей цифровые ремастеры более привлекательны, чем громоздкие картриджи и устаревшее оборудование. Для производителей консолей цифровые переиздания классических игр — большой плюс. Это не только устраняет финансовые трудности, связанные с обслуживанием старого оборудования, но и перекладывает все затраты на обновление программного обеспечения на разработчиков. Производитель получает новое дополнение к своей системе с сильным узнаваемым названием, и студии не нужно полностью разрабатывать игру с нуля. Официально лицензированные «plug and play mini» версии классических консолей со встроенными классическими играми также стали более распространенными в последние годы от таких компаний, как Sony, Sega и Nintendo.
Источники
- https://monitor4ik.com/stati/thunderbolt/
- https://www.pvsm.ru/api/69971
- https://wikiuke.ru/wiki/Backward_compatibility