Программирование на основе прототипов — Prototype-based programming
Программирование на основе прототипов — это стиль объектно-ориентированного программирования, в котором повторное использование поведения (известное как наследование ) выполняется посредством процесса повторного использования существующих объектов, которые служат прототипами. Эта модель также может быть известна как прототипное, прототипно-ориентированное, бесклассовое или основанное на экземплярах программирование.
В программировании на основе прототипов используются обобщенные объекты, которые затем можно клонировать и расширять. Используя фрукт в качестве примера, объект «фрукт» будет представлять свойства и функциональность фруктов в целом. Объект «банан» будет клонирован из объекта «фрукт», и к нему будут добавлены общие свойства, характерные для бананов. Каждый отдельный объект «банан» будет клонирован из универсального объекта «банан». Сравните с парадигмой на основе классов, где класс «фрукты» будет расширен классом «банан».
Первым языком программирования , ориентированным на прототипы, был Self, разработанный Дэвидом Ангаром и Рэндаллом Смитом в середине -1980-е годы для исследования тем в объектно-ориентированном языковом дизайне. С конца 1990-х годов бесклассовая парадигма становится все более популярной. Некоторые текущие языки, ориентированные на прототипы, — это JavaScript (и другие реализации ECMAScript, такие как JScript и Flash ActionScript 1.0), Lua, Cecil, NewtonScript, Io, Ioke, MOO, REBOL и AHK.
- 1 Дизайн и реализация
- 2 Создание объекта
- 3 Делегирование
- 4 Конкатенация
- 5 Критика
- 6 Языки, поддерживающие программирование на основе прототипов
- 7 См. Также
- 8 Ссылки
- 9 Дополнительная литература
Дизайн и реализация
Прототипное наследование в JavaScript описано Дугласом Крокфордом как:
Вы создаете объекты-прототип, а затем … Создавать новые экземпляры. Объекты изменяемы в JavaScript, поэтому мы можем дополнять новые экземпляры, давая им новые поля и методы. Затем они могут выступать в качестве прототипов даже для более новых объектов. Нам не нужны классы, чтобы создавать множество похожих объектов… Объекты наследуются от объектов. Что может быть более объектно-ориентированным, чем это?
Сторонники программирования на основе прототипов утверждают, что оно побуждает программиста сосредоточиться на поведении некоторого набора примеров и только позже беспокоиться о классификации этих объектов на архетипические объекты, которые позже используются в мода, аналогичная классам. Многие системы на основе прототипов поощряют изменение прототипов во время времени выполнения, в то время как только очень немногие объектно-ориентированные системы на основе классов (например, динамические объектно-ориентированные системы, Common Lisp, Дилан, Objective-C, Perl, Python, Ruby или Smalltalk ) позволяют изменять классы во время выполнения программы.
Практически все системы на основе прототипов основаны на интерпретируемых и динамически типизированных языках. Однако системы, основанные на статически типизированных языках, технически возможны. Язык Omega, обсуждаемый в разделе «Программирование на основе прототипов», является примером такой системы, хотя, согласно веб-сайту Omega, даже Omega не является исключительно статическим, а его «компилятор может использовать статическое связывание там, где это возможно, и может повысить эффективность программа.»
Конструирование объекта
В языках, основанных на прототипах, нет явных классов. Объекты наследуются напрямую от других объектов через свойство прототипа. Свойство прототипа называется prototypeв Self и JavaScript или protoв Io. Есть два метода создания новых объектов: ex nihilo («из ничего») создание объекта или путем клонирования существующего объекта. Первый поддерживается посредством некоторой формы объекта literal, объявлений, в которых объекты могут быть определены во время выполнения с помощью специального синтаксиса, такого как , и переданы непосредственно в переменную. Хотя большинство систем поддерживают различные варианты клонирования, создание объекта ex nihilo не так заметно.
В языках на основе классов новый экземпляр создается с помощью функции конструктора класса , специальной функции который резервирует блок памяти для членов объекта (свойств и методов) и возвращает ссылку на этот блок. Необязательный набор аргументов конструктора может быть передан функции и обычно хранится в свойствах. Результирующий экземпляр унаследует все методы и свойства, определенные в классе, который действует как своего рода шаблон, из которого могут быть созданы похожие типизированные объекты.
Системы, поддерживающие создание объектов ex nihilo, позволяют создавать новые объекты с нуля без клонирования существующего прототипа. Такие системы предоставляют специальный синтаксис для определения свойств и поведения новых объектов без ссылки на существующие объекты. Во многих языках прототипов существует корневой объект, часто называемый Object, который устанавливается в качестве прототипа по умолчанию для всех других объектов, созданных во время выполнения, и который переносит обычно необходимые методы, такие как функция toString ()для вернуть описание объекта в виде строки. Одним из полезных аспектов создания объекта ex nihilo является обеспечение того, чтобы имена слотов (свойств и методов) нового объекта не конфликтовали с пространством имен с объектом верхнего уровня. (На языке JavaScript это можно сделать, используя нулевой прототип, то есть Object.create (null).)
Клонирование относится к процессу, посредством которого новый объект создается путем копирования поведения существующего объекта (его прототипа). Таким образом, новый объект несет в себе все качества оригинала. С этого момента новый объект может быть изменен. В некоторых системах результирующий дочерний объект поддерживает явную ссылку (через делегирование или) на свой прототип, и изменения в прототипе вызывают соответствующие изменения в его клоне. Другие системы, такие как Forth -подобный язык программирования, не распространяют изменения из прототипа таким образом, а вместо этого следуют более конкатенативной модели, в которой изменения в клонированных объектах не распространяются автоматически между потомками.
// Пример истинного прототипного стиля наследования // в JavaScript. // создание объекта с использованием буквальной // записи объекта <>. var foo = ; // Другой объект. var bar = ; // Object.setPrototypeOf () - это метод, представленный в ECMAScript 2015. // Для простоты представим, // что следующая строка работает независимо от // используемого движка: Object.setPrototypeOf (bar, foo); // foo теперь является прототипом bar. // Если с этого момента мы попытаемся получить доступ к свойствам foo из bar //, у нас все получится. bar.one // Преобразуется в 1. // Свойства дочернего объекта также доступны. bar.three // Разрешается к 3. // Собственные свойства shadow prototype properties bar.two; // Преобразуется в «два» bar.name; // не затрагивается, разрешается в "foo" foo.name; // Преобразуется в "foo"
var foo = ; // bar. [[prototype]] = foo var bar = Object.create (foo); bar.three = 3; bar.one; // 1 bar.two; // 2 bar.three; // 3
Делегирование
В языках на основе прототипов, которые используют делегирование, языковая среда выполнения способна отправлять правильный метод или находить нужный фрагмент данных, просто следуя последовательности указателей делегирования (от объекта к его прототипу) до тех пор, пока не будет найдено совпадение. Все, что требуется для установления этого разделения поведения между объектами, - это указатель делегирования. В отличие от отношений между классом и экземпляром в объектно-ориентированных языках, основанных на классах, связь между прототипом и его ответвлениями не требует, чтобы дочерний объект имел память или структурное сходство с прототипом за пределами этой ссылки. Таким образом, дочерний объект может продолжать изменяться и исправляться с течением времени без перегруппировки g структура связанного с ним прототипа, как в системах на основе классов. Также важно отметить, что не только данные, но и методы могут быть добавлены или изменены. По этой причине в некоторых языках, основанных на прототипах, данные и методы называются «слотами» или «членами».
Конкатенация
В конкатенативном прототипировании - подход, реализованный в языке программирования Kevo - нет видимых указателей или ссылок на исходный прототип, из которого клонирован объект. Объект-прототип (родительский) копируется, а не связывается, и делегирования нет. В результате изменения в прототипе не будут отражены в клонированных объектах.
Основное концептуальное отличие этой схемы состоит в том, что изменения, внесенные в объект-прототип, не распространяются автоматически на клоны. Это можно рассматривать как преимущество или недостаток. (Тем не менее, Kevo предоставляет дополнительные примитивы для публикации изменений в наборах объектов на основе их сходства - так называемого семейного сходства или механизма семейства клонов - а не через таксономическое происхождение, как это типично для модели делегирования.) Это также иногда утверждается. это прототипирование на основе делегирования имеет дополнительный недостаток, заключающийся в том, что изменения дочернего объекта могут повлиять на последующую работу родительского объекта. Однако эта проблема не присуща модели, основанной на делегировании, и не существует в языках, основанных на делегировании, таких как JavaScript, которые гарантируют, что изменения дочернего объекта всегда записываются в самом дочернем объекте, а не в родительских (т.е. value затеняет родительское значение, а не изменяет родительское значение).
В упрощенных реализациях конкатенативное прототипирование будет иметь более быстрый поиск членов, чем прототипирование на основе делегирования (потому что нет необходимости следовать цепочке родительских объектов), но, наоборот, будет использовать больше памяти (поскольку все слоты копируются, вместо того, чтобы быть единственным слотом, указывающим на родительский объект). Однако более сложные реализации могут избежать этой проблемы, хотя требуется компромисс между скоростью и памятью. Например, системы с конкатенативным прототипированием могут использовать реализацию copy-on-write, чтобы обеспечить скрытый обмен данными - и такой подход действительно следует Kevo. И наоборот, системы с прототипированием на основе делегирования могут использовать кэширование для ускорения поиска данных.
Критика
Сторонники объектных моделей на основе классов, которые критикуют системы на основе прототипов, часто имеют проблемы, аналогичные опасениям, которые сторонники систем статических типов для языков программирования имеют в отношении систем динамических типов (см. тип данных ). Обычно такие проблемы включают: правильность, безопасность, предсказуемость, эффективность и незнание программиста.
По первым трем пунктам классы часто рассматриваются как аналогичные типам (в большинстве статически типизированных объектно-ориентированных языков они выполняют эту роль), и предлагается предоставить договорные гарантии своим экземплярам и пользователям их примеры, что они будут вести себя определенным образом.
Что касается эффективности, объявление классов упрощает многие оптимизации компилятора, которые позволяют разработать эффективный метод и поиск переменных экземпляра. Для языка Self большая часть времени разработки была потрачена на разработку, компиляцию и интерпретацию методов для повышения производительности систем на основе прототипов по сравнению с системами на основе классов.
Общая критика языков, основанных на прототипах, заключается в том, что сообщество разработчиков программного обеспечения не знакомо с ними, несмотря на популярность и проникновение на рынок JavaScript. Этот уровень знаний о системах на основе прототипов, кажется, растет с распространением фреймворков JavaScript и комплексным использованием JavaScript по мере развития Web. ECMAScript 6 представил классы как синтаксический сахар по сравнению с существующим наследованием на основе прототипов JavaScript, предоставляя альтернативный способ создания объектов и работы с наследованием.
Языки, поддерживающие программирование на основе прототипов
См. также
- Программирование на основе классов (con trast)
- Дифференциальное наследование
- Парадигма программирования
Ссылки
Дополнительная литература
| В Викиучебниках есть книга по темам: Объектно-ориентированное программирование |
- Абади, Мартин ; Лука Карделли (1996). Теория объектов. Springer-Verlag. ISBN 978-1-4612-6445-3 .
- Классовая война: классы против прототипов, Брайан Фут.
- Ноубл, Джеймс; Тайвалсаари, Антеро; Мур, Иван, ред. (1999). Программирование на основе прототипов: концепции, языки и приложения. Springer-Verlag. ISBN 981-4021-25-3 .
- Использование прототипов объектов для реализации общего поведения в объектно-ориентированных системах, Генри Либерман, 1986.
Что такое прототипирование и паттерны проектирования в программировании, есть ли оно в вебе?
Прототип это то что уже было сделано на основе чего делается новое, но с схожими чертами прототипа. В JS например через прототип можно расширять объект, очень удобно, часто использую.
Паттерны это логические структуры с помощью которых достигается нужный алгоритм выполнения программы. На вскидку: фабрика, адаптер, компоновщик, прокси, тот же прототип для расширения свойств объектов и др.
есть ли оно в вебе?
Конечно есть 🙂
Обсуждение разработки на моём фреймворке https://discord.gg/23N4s9x2kp
На сайте с 02.02.2011
2 февраля 2023, 21:03
Dmitriy_2014 :
Это разве не одно и тоже что я использую найденные готовые примеры кода, переделываю их под себя и использую у себя
Неа, это называется говнокодинг )) А паттерны - это паттерны.
На сайте с 01.07.2014
2 февраля 2023, 21:52
Snake800 #:
Неа, это называется говнокодинг )) А паттерны - это паттерны.
Всегда хотел узнать, а чем плох говнокодинг если он работает и не вызывает ошибок?
На сайте с 02.02.2011
2 февраля 2023, 22:16
Dmitriy_2014 #:
Всегда хотел узнать, а чем плох говнокодинг если он работает и не вызывает ошибок?
Основные проблемы - может оказаться сложным или невозможным реинжениринг, сложности при командной разработке, масштабировании, трансформации. А так, если делать "для себя", в-одиночку, "одноразово" и не допускать системных, фундаментальных ошибок, которые потом хрен исправишь то говнокод вполне нормальная вещь. Just it work, как говорится. Ну и на самом деле у т.н. "кода с запашком" тоже есть какие-то преимущества. Нужен баланс вобщем. Как при нормализации БД не обязательно, а часто и не желательно загонять её в шестую нормальную форму. Так же и с кодом, не везде стоит использовать кошерные паттерны, а всем классам назначать интерфейсы и базовые классы.
На сайте с 12.04.2015
2 февраля 2023, 22:30
Нет, не одно и тоже.

Прототипирование, если мы говорим про сайтостроение это некий макет сайта без дизайна, то есть понимание где что должно находится на сайте, обычно выглядит как то так
Паттерны проектирования - это некие архитектурные приемы, чтобы сделать программу более предсказуемой и поддерживаемой, самый знаменитый в мире вэба это MVC, наверняка слышали. Служит исключительно чтобы строить адекватную архитектуру.
ArbNet #:
В JS например через прототип можно расширять объект, очень удобно, часто использую.
Это когда каша в голове видимо, прототип в JS это примерный аналог класса в PHP. А да еще это компьютерная игра и тестовый робот и что там у нас еще прототипом называют.
Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
На сайте с 01.10.2017
3 февраля 2023, 05:52
Такое ощущение, что автора "забанили в Яндексе".
В программировании прототипирование - это создание прототипа программного продукта (предварительной технической версии). Не путать с MVP. Прототип предназначен для самих разработчиков, он может только демонстрироваться пользователям "на картинке". MVP - готовый программный продукт для пользователей. Это как пилотная серия сериала.
Домены на продажу: https://p20.ru/collection/domains-for-sale
На сайте с 01.10.2017
3 февраля 2023, 06:08
Dmitriy_2014 #:
Всегда хотел узнать, а чем плох говнокодинг если он работает и не вызывает ошибок?
Уверены, что "не вызывает ошибок"? Обычно г/кодеры пренебрегают полноценным тестированием.
А с определенного момента вовсе все начнет разваливаться. Такой подход можно использовать для создания прототипа. Развивать практически невозможно, если продолжать использовать те же методы.
На сайте с 27.10.2019
3 февраля 2023, 06:58
Aisamiery #:
Это когда каша в голове видимо, прототип в JS это примерный аналог класса в PHP. А да еще это компьютерная игра и тестовый робот и что там у нас еще прототипом называют.
Это когда такие как вы без знаний и опыта, научившись гуглить не понимая сути вещей пытаются где то что то написанное плюс свои маразматические фантазии выдавать за действительность
ЗЫ. Сначала поизучайте, что такое прототипы в JS, а потом уже говорите.
На сайте с 29.03.2012
3 февраля 2023, 07:14
ArbNet #:
ЗЫ. Сначала поизучайте, что такое прототипы в JS, а потом уже говорите.
А теперь перечитай стартпост и найди там вопрос про прототипы в Js. Или все-таки разговор про прототип проектирования. Если бы ты понимал разницу - может годами и не писал не пойим что.
Вот 2 года назад при прототипировании мы не настояли в использовании Mongo instead Postgres. Теперь расплачиваемся производительностью.
Aisamiery #:
самый знаменитый в мире вэба это MVC, наверняка слышали.
Ну вряд ли ТС так высоко дочитал про паттерны - скорее всего дальше синглтона или декоратора не посмотрел. Ровно как и фремфоркостроитель
На сайте с 29.03.2012
3 февраля 2023, 07:19
estic #:
Уверены, что "не вызывает ошибок"? Обычно г/кодеры пренебрегают полноценным тестированием.
Ты счас выпустишь джина))) Какие тесты? Тут о них и на знают. Не знаю как в PHP но в "простом" Питоне есть понятие - "code smell" и линтер при сборке обычно его проверяет и не пропустит в случае слишком большого количества, например, ветвлений.
В ПХП вообще есть линтеры и тайпхинты? Лень гуглить)
Прототипирование
В Unisender есть все для рассылок: можно создавать и отправлять клиентам письма и SMS, настроить чат-бота и делать рассылки в Telegram и даже собрать простой лендинг для пополнения базы контактов.
Прототипирование — это один из начальных этапов разработки, в ходе которого создается предварительный дизайн сайта , лендинга, приложения или другого проекта (его структура со схематичным изображением основных элементов).
В ходе прототипирования создается макет, который имитирует взаимодействие пользователя с интерфейсом проекта. Нередко прототипы делают интерактивными (кликабельными).
Прототип нужен для презентации проекта заказчику и оценки его юзабилити. Тестирование прототипа позволяет заранее выявить и устранить ошибки, прежде чем вкладывать деньги в разработку конечного дизайнерского решения и кода.
Прототип может быть нарисован на бумаге или создан в графическом редакторе. Основное отличие этих способов — в уровне детализации и кликабельности элементов.

Прототип, нарисованный в графическом редакторе, хорошо проработан и отлично подходит для проверки юзабилити. Источник
Зачем делают прототипы
Главная цель прототипирования — сэкономить деньги и время. С первого раза сложно создать идеальный продукт, который понравится заказчику, а главное — будет удобен для пользователей.
Ценность прототипов в том, что они помогают верхнеуровнево взглянуть на продукт, его структуру и идею, а также быстро и схематично показать концепт. Если собранный в прототипе продукт выглядит юзабельным без итогового дизайна, анимации и маркетинговых фич — он жизнеспособный.
Проверять, так ли это, лучше всего с помощью кликабельных прототипов, которые достаточно быстро можно собрать с помощью Фигмы. Как их делать, можно посмотреть в уроке от Алексея Бычкова.
Дизайн-директор Mailfit
Прототип позволяет протестировать выбранный вариант решения без больших вложений, при необходимости внести правки и только потом приступать к разработке дизайна и программированию.
Прототипирование решает несколько важных задач:
- Поиск лучших идей. Прототип делается быстро, поэтому можно сразу подготовить несколько вариантов для тестирования гипотез, чтобы потом выбрать наиболее удачный. Это особенно актуально для стартапов.
- Выявление ошибок. На этапе создания макета можно отследить ключевые недочёты будущего сайта или приложения. На их исправление вы затратите меньше времени, денег и усилий, чем если бы пришлось вносить корректировки в конечный продукт.
- Оценка юзабилити. Разработка прототипов и тестирование на них пользовательских сценариев — отличная возможность как можно раньше проверить, насколько решение удобно для пользователей.

Прототипы помогают последовательно вносить правки в проект и согласовывать каждый этап с заказчиком. Источник
Типы прототипов
По глубине проработки прототипы бывают с высокой и низкой детализацией. Все зависит от количества элементов в итоговом варианте.
По возможности взаимодействия с макетом прототипы делятся на статичные и интерактивные. Статичные можно изобразить на бумаге схематично, а для интерактивных стоит использовать графические редакторы, например, Figma.
Этапы прототипирования
- Постановка цели. Происходит на встрече всех участников, среди которых клиент, дизайнер, маркетолог, копирайтер, программист, то есть все те, кто заинтересован в успешности проекта. Чем четче и точнее сформулированы цели, тем легче выдвигать и проверять гипотезы для детализации прототипа.
Цели нужно ставить максимально конкретные: например, разработать продающий лендинг для презентации новой услуги, продумать корпоративный сайт для повышения охвата и узнаваемости бренда. - Проведение исследования. Чтобы создать качественный прототип, важно изучить бизнес клиента, особенности его продукта и целевой аудитории.
- Формулирование гипотез. Важно понять, что именно вы хотите проверить с помощью прототипов. Не «посмотреть, получится ли разместить все блоки на сайте», а «оценить, насколько пользователю удобно будет выбрать товар и сделать заказ таким способом». Это поможет сделать прототипирование максимально эффективным.
- Создание прототипа. С учетом результатов исследования и сформулированных гипотез создается макет будущего сайта или приложения.
Проектирование прототипа сайта состоит из нескольких основных шагов:
- построение сетки сайта;
- разработка главной страницы и размещение на ней всех запланированных блоков контента, в том числе интерактивных: кликабельных ссылок, слайдеров, всплывающих форм, выпадающих списков;
- создание остальных страниц сайта.

Прототипирование помогает разработать структуру сайта и наметить блоки контента
- Тестирование на фокус-группе. Позволяет проверить, как будет работать пользовательский интерфейс, есть ли пробелы в логике; понять, какие нужно внести правки до передачи проекта разработчикам, верстальщикам и дизайнерам. Прежде чем переходить к тестированию, важно не забыть согласовать прототип с заказчиком.
- Доработка. Добавление новых деталей, внесение правок по результатам тестирования.
Инструменты для разработки макетов
Главная особенность прототипирования заключается в том, что проектировать сайты и приложения можно без привлечения программистов и при этом добиваться высокой детализации.
Проекты удобно создавать при помощи различных инструментов прототипирования, которые не требуют значительных финансовых вложений. Axure и Sketch можно использовать бесплатно 30 дней. У Figma есть стартовый тариф с достаточным набором функций, которым можно пользоваться без ограничений по времени.
Figma — графический редактор для командной работы над прототипами сайтов и приложений. Подходит для обсуждения правок в режиме реального времени.
В Figma можно создавать связи между элементами прототипа, чтобы сделать его максимально похожим на готовый продукт
Axure — программа по созданию прототипов приложений и сайтов, позволяет делать даже сложные элементы, а также запрограммировать виджеты, кнопки, то есть получить прототип, максимально похожий по функционалу на полноценное приложение или сайт.

С программой Axure легко разобраться самостоятельно, даже если вы не дизайнер. При необходимости можно посмотреть руководство от разработчика
Sketch — инструмент для быстрого прототипирования дизайна приложений. С его помощью можно рисовать фигуры, выравнивать и распределять объекты, выстраивать композицию, добиваясь необходимого уровня детализации.
Таким образом, прототипирование позволяет имитировать функционал готового проекта, сайта или приложения. Это необходимо для тестирования гипотез и выявления проблемных участков еще до передачи проекта в дизайн и разработку.
Для оценки юзабилити и минимизации рисков лучше делать интерактивные прототипы высокой детализации.
Что такое прототип: определение, функции, тонкости разработки
Что такое прототип? На этапе разработки приложения/сайта/цифрового продукта можно потерять кучу денег, если сразу нет понимания, что и для кого именно вы создаёте. Избежать этого и сэкономить финансы позволит прототипирование. Это прекрасный способ апробирования бизнес-идей до их реализации.
В чём польза? При помощи него вы узнаете, как будет восприниматься ваш продукт, ещё до его запуска. А значит, сможете многое добавить и изменить, а не приниматься за корректировки, когда проект уже создан и выпущен на рынок. Это сбережёт вам массу сил, нервов и бюджет.
- Описание прототипа
- Функции прототипа
- 5 причин использовать прототипы
- Тонкости разработки и виды прототипа
- Этапы создания прототипа
- Признаки хорошего прототипа
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.
Бесплатно от Geekbrains
Описание прототипа
Что такое прототип? Это предварительно созданный макет дизайна, дающий пользователям представление о продукте и возможность взаимодействовать с ним (пока разработка еще не завершена окончательно). Во всём процессе дизайн-мышления прототипирование является четвертым по счету этапом, когда происходит тестирование юзабилити.
Тестирование прототипа продукта необходимо для того, чтобы в случае возникновения проблем (при взаимодействии пользователей и всех заинтересованных сторон с этим продуктом) можно было исправить ошибки и недостатки. Тогда ни деньги, ни время, ни усилия, вложенные в дизайнерскую разработку, не будут потрачены зря.
Функции прототипа
При проектировании веб-сайтов, интерфейсов приложений и иных IT-разработок огромное значение имеет именно пользовательский опыт взаимодействия с продуктом (UserExperience, UX). Тут очень важно, чтобы навигация, формат страниц, подача контента были максимально удобны.
Прототип интерфейса позволяет оценить, насколько эффективным получается дизайн, плюс дает возможность понять:
- насколько хорошо выстроены взаимодействия в продукте;
- как пользователь воспринимает продукт;
- как максимально экономично подойти к пониманию и развитию продукта.
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!
Скачивайте и используйте уже сегодня:

Павел Симонов
Исполнительный директор Geekbrains
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Получить подборку бесплатно
Уже скачали 23681
Нередко бывает, что пользователи либо заказчики имеют неверное представление о том, что такое прототип, и по итогу им кажется, что разработчики «подсовывают» что-то не то.
Прототип не имеет вида конечного продукта, потому что, собственно, и не является им.
5 причин использовать прототипы
Причин для создания прототипа можно выделить несколько:
- Создание и тестирование новых идей.
С прототипом у дизайнера есть возможность придумывать и проверять в работе разные решения, сценарии, вносить в них исправления и делать юзабилити конечного продукта максимально удобным.
Анализ прототипов позволяет максимально подробно изучить возникшую у пользователя проблему. Дизайнер сразу получает возможность проверять работу продукта либо системы, отмечать, в каких местах есть сбои, и устранять их.
- Обнаруживать «слабые места» в использовании.
Юзабилити продукта отлично проверяется именно путем создания прототипов для взаимодействия с пользователем. Это позволяет дизайнеру, еще не приступив к разработке, внести все необходимые коррективы, чтобы потом создать именно такой продукт, которого ожидает заказчик.
- Привлечение к процессу проектирования всех заинтересованных сторон, тех, кто в итоге будет пользоваться готовой разработкой.
Именно через прототип интерфейса дизайнеры получают обратную связь от заинтересованных сторон и конечных пользователей, которые в итоге принимают непосредственное участие в процессе, став, по сути, членами команды. В целом, это потенциальная возможность для сокращения времени работы над концепцией и более быстрого одобрения её начальством.
- Генерация и продажа новых идей.
На примере прототипов дизайнеры получают возможность максимально выгодно представить, а затем и «продать» некие свои идеи заинтересованным лицам (как внутри организации, так и вне неё). Кроме того, прототипы – отличный стимул для развития рынков и появления на них совершенно новых процессов и решений, благодаря тому, что очень дорогой продукт можно продемонстрировать потенциальным покупателям без особых усилий.
Тонкости разработки и виды прототипа
Прототипы существуют двух видов, а именно: кликабельные и представленные на бумажном носителе. Оба варианта обладают своими сильными и слабыми сторонами.
Прототипы, сделанные на бумаге
Главный их плюс (имеется в виду, для разработчиков) – это то, что здесь можно задействовать даже самые первые, сделанные карандашом наброски. К примеру, изображения разных состояний экрана, картинки вариантов выпадающего меню, модальные окна (нарисованные на стикерах). У проектировщика есть возможность стереть лишние или неподходящие детали, корректировать наброски с учетом запросов и комментариев пользователей.
Что касается недостатков прототипа на бумаге, то основной – это отсутствие интерактивности, присущей кликабельному прототипу.
Прототип кликабельного типа
Процесс его создания довольно сложен, но существуют специальные программы, позволяющие проектировать разные виды экранов. Времени это занимает больше (в сравнении с предыдущим вариантом), но здесь налицо преимущества, которые дает интерактивность.
Детализация и степень точности у разных прототипов может быть неодинакова, и это зависит от того, для чего именно создается прототип продукта:
- Lo-Fi (низкая точность). Чаще это касается бумажных прототипов, прекрасно подходящих на самых начальных стадиях проектирования. Корректировать данный тип можно легко и быстро, конечный вид продукта тут не важен, главное – отработать структуру и функционал. Lo-Fi дает и команде, и пользователям лучшее понимание продукта. Конечно, постепенно он усложняется, и сохранять в цикле разработки точность уровня lo-fi становится уже трудно. Поэтому когда речь идет уже об углубленном проектировании, бумажные прототипы теряют свою эффективность.
- Medium Fidelity. В прототипах данного уровня точности есть уже практический функционал (пусть и ограниченный), представленный в виде раскадровки и пользовательских сценариев. Это отличный вариант именно на промежуточных этапах работы, при переходе от lo-fi к hi-fi.
- High Fidelity. Прототип уровня hi-fiпо виду максимально близок к конечному продукту, поэтому часто его (прототип) и рассматривают, как готовый продукт, хотя таковым он не является. Именно по hi-fi прототипам можно максимально точно понять, насколько функционален продукт, и получить реалистичный практический опыт взаимодействия с ним.
Для вас подарок! В свободном доступе до 05.11 -->
Скачайте ТОП-10
бесплатных нейросетей
для программирования
Помогут писать код быстрее на 25%
Чтобы получить подарок, заполните информацию в открывшемся окне
Когда требуется улучшить внешнее оформление, разрабатывается прототип высокой точности. А если необходимо понять, насколько удобен для использования интерфейс и отвечает ли в целом продукт интересам заказчика, вполне достаточно малодетализованного прототипа, который делается и быстрее, и проще.
Вообще прототип сайта, приложения, либо иного продукта — очень важный элемент, позволяющий пользователю с этим продуктом взаимодействовать.
Современное UX-проектирование не обходится без создания прототипов. Чаще всего конечная цель разработчиков — подготовка продукта, удобного в использовании, и тут непременно потребуется прототип той или иной степени точности.
Благодаря наличию прототипа, становится понятно, как именно будет использоваться продукт. Кроме того, можно специально адаптировать прототип для проведения юзабилити-тестирования.
Еще на примере прототипа вы можете яснее донести до клиента вид и содержание будущего продукта, согласовать детали UX и UI-дизайна.
Этапы создания прототипа
Создание качественного, отвечающего интересам пользователей интерфейса (который будет эффективен в выполнении конкретных бизнес-задач) предполагает выполнение ряда определенных шагов:
Проведение исследований
Исследования – это основа, с которой начинается вся работа. И, тем не менее, зачастую «исследования» представляют собой два варианта запроса от разработчиков: «ждём от вас ТЗ» и «вышлите заполненный бриф из 150 вопросов».
А между тем, никакой бриф или ТЗ не дадут глубины погружения, которая позволит создать по-настоящему качественный продукт. В техническом задании клиент изложит свою субъективную точку зрения, основанную, нередко, на неких конкурентских решениях. А брифы (которые, кстати, пользуются немалой популярностью) уравнивают между собой совершенно отличающиеся бизнесы и часто содержат не очень-то понятные для клиентов вопросы. Да и на заполнение уходит много времени.
Лучший вариант проведения исследования – это личное общение с заказчиком. Так вы получите максимально глубокое погружение в процесс с учетом того, под какой конкретно бизнес готовится проект, проработаете всё до мельчайших деталей, на которых нередко в итоге «держится» весь окончательный вариант продукта.
По мнению многих UI/UX-дизайнеров общение с пользователями не является такой уж важной необходимостью. Однако исследование пользователей дает возможность лучше понять их мотивацию, опасения, сомнения, причинно-следственные связи, оценить задачу со всех сторон, сгенерировать новые идеи.
Подготовка дизайна
Это этап преобразования результатов исследования в набор конкретных требований к продукту касательно навигации, количества и вида экранов, выполняемых ими функций и т. д.
Дарим скидку от 60%
на курсы от GeekBrains до 05 ноября
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Инструментов, позволяющих представить исследования в виде требований, существует много: User-Centered-Design, Value Proposition Canvas, Jobs-To-Be-Done и им подобные. Результат от их применения всегда один – проектирование интерфейса с учетом всех пожеланий клиента.
Подготовка контента
Созданию прототипов высокой детализации должна предшествовать подготовка контента. Не поддавайтесь искушению использовать текстовую «рыбу», потому что подобный прототип не поддается реальной оценке. В итоге может оказаться, что реальный контент не вписывается в рамки готовой разработки, и его придется переделывать, корректировать.
Поэтому сначала подготовьте сам контент, а затем занимайтесь его размещением (то есть, дизайном).
Создание прототипа
На момент, когда исследование проведено, контент написан, дизайн-решения подготовлены, команда разработчиков уже максимально погружена в процесс и способна представить порученную задачу в виде интересных, эффективных решений, с учетом требований заказчика и интересов конкретного бизнеса. Созданные в итоге прототипы легко поддаются тестированию (на пользователях) и/либо являются отличным инструментом донесения идеи до лица, принимающего решения.
Признаки хорошего прототипа
Как человеку, не сведущему в проектировании взаимодействия, понять, что перед ним качественный, тщательно проработанный продукт, а не «заливная рыба»? Для этого можно пройтись по совершенно простому чек-листу, состоящему буквально из нескольких пунктов:
- Прототип содержит в себе реальный контент, полностью отвечающий тематике продукта.
- Вы без подсказок дизайнера-разработчика сможете полностью разобраться в содержании прототипа.
- Каждое интерфейсное решение дизайнер поясняет и прикрепляет к нему ссылку, пройдя по которой, можно ознакомиться с результатами бизнес-исследований и существующим пользовательским опытом.
Только до 2.11
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:

ТОП-100 площадок для поиска работы от GeekBrains

20 профессий 2023 года, с доходом от 150 000 рублей

Чек-лист «Как успешно пройти собеседование»
Чтобы зарегистрироваться на бесплатный интенсив и получить в подарок подборку файлов от GeekBrains, заполните информацию в открывшемся окне
Таким образом, прототип представляет собой интерактивную модель (большего либо меньшего уровня точности) будущего конечного продукта. Прототип необходим для того, чтобы проследить, как именно пользователь взаимодействует с этим продуктом, по какому пути следует, какие может встретить препятствия.
Создание прототипа дает возможность изучить юзабилити еще до того, как будет написан код. Кроме того, в ходе работы над созданием прототипа могут родиться новые интересные идеи, которые позволят в итоге спроектировать продукт гораздо более высокого уровня (но не факт, что это обязательно случится).
В любом случае, если хотите получить хороший результат с наименьшим количеством усилий и проблем – создавайте прототипы и тестируйте их на пользователях. Работу над проектом начинайте с создания прототипов. Пусть реальные пользователи опробуют их, покажите, как это сделать, и в итоге получите качественный, отвечающий заявленным требованиям продукт.
Откройте для себя захватывающий мир моушн-дизайна! Присоединяйтесь к нашему курсу и овладейте искусством создания динамичных и привлекательных анимаций. Узнайте о последних тенденциях и инструментах в индустрии, изучите принципы анимации и научитесь применять их в своих проектах. Получите опыт работы с профессиональными программами и расширьте свои возможности в карьере дизайнера. Регистрируйтесь сейчас и проложите себе путь к успешной карьере!