Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Перевод

Почему Go? Важные преимущества, о которых мало кто знает

Стефан Нильссон преподает информатику в Королевском технологическом институте Стокгольма и очень много пишет о языке Go. Предлагаем вам перевод его статьи Why Go? — Key advantages you may have overlooked, где он рассказывает о главных плюсах языка. Статья ориентирована на читателей, уже знакомых с основами программирования, в том числе на Java и/или Python.

Выбрать язык программирования непросто. Отдельные преимущества могут поначалу очаровывать, а выявление недостатков требует времени и опыта.

Как профессор информатики и разработчик, много лет использующий Go и Java, я хочу поделиться мыслями и объяснить, почему я ставлю Go выше, чем Java или Python. И почему с ним мне гораздо проще писать хороший код.

Go — мой основной язык с 2012 года. До этого, с 1998 года, я использовал Джаву, а еще раньше — Си. Python нужен мне главным образом в преподавательской работе.

Заниматься программированием я начал в далеком 1978 году. Тогда я писал для калькулятора TI-57, с его программной памятью на 50 шагов и 8 регистрами.

Минимализм

Unicorn racing towards the Rainbow

Go — минималистичный язык, и это (по большей части) очень хорошо.

Официальная спецификация Go умещается всего на 50 страницах, легко читается и содержит много примеров. Думаю, опытный программист может освоить язык по одной этой спецификации.

«Ядро» Go составляют простые ортогональные конструкции, которые можно сочетать сравнительно малым числом способов. Это упрощает изучение языка, чтение и написание кода.

Когда вы добавляете в язык новую возможность, он не просто усложняется — его сложность возрастает в разы. Потому что возможности могут пересекаться по самым разным сценариям. И это серьезная проблема, ведь сложность языка касается всех разработчиков, а не только тех, кто пишет спецификацию или делает компилятор.

Некоторые из ключевых особенностей Go:

  • Полноценные встроенные фреймворки для тестирования и профилирования программ компактны и просты в изучении. Скорее всего, вам не понадобится ни один из многочисленных аддонов от сторонних разработчиков.
  • Можно отлаживать и профилировать оптимизированный бинарник, который уже запущен в production на HTTP-сервере.
  • Документация к языку Go генерируется автоматически и содержит примеры, которые можно запускать прямо на странице справки [для этого под каждым листингом есть кнопка Run — прим. пер.]. Опять же, интерфейсы минималистичны и не требуют долгого изучения.
  • Go — язык с сильной статической типизацией и явным приведением типов, но его синтаксис на удивление необременителен. Все благодаря нетипизированным числовым константам и определению типа по присвоенному значению. Как результат, в работе с типами Go безопаснее, чем Java (где есть неявное приведение). При этом его код по легкости чтения ближе к Питону, где есть нетипизированные переменные.
  • Программы на языке Go состоят из пакетов, что позволяет понятно делить код и легко управлять зависимостями. Механизм пакетов — пожалуй, в числе наиболее удачно реализованных в языке. И самых недооцененных.
  • Структурно типизированные интерфейсы обеспечивают динамический полиморфизм за счет динамической диспетчеризации.
  • Конкурентность — неотъемлемая часть Go, для нужд которой в языке есть горутины, каналы и оператор select. Чем конкурентность отличается от параллелизма, можно посмотреть здесь.

Небольшие примеры кода, описание базовых типов данных, методов и управляющих структур вы также найдете в статье «Go vs. Java: 15 главных отличий».

Задел на будущее

Futurist mouse trap

В Go нет ряда возможностей, обычных для других современных языков.

Вот универсальный ответ проектировщиков языка на вопрос «Почему в Go нет такой-то функции?».

Каждый язык предлагает новые возможности и не содержит чьих-то любимых. Go был создан с прицелом на удобство программирования, быструю компиляцию, возможность влиять на одну концепцию, не затрагивая другой, и необходимость поддерживать такие вещи, как параллелизм и сбор мусора. Ваша любимая «фишечка» могла сюда не вписаться, потому что увеличивает время компиляции или снижает ясность синтаксиса. Или потому, что она усложнила бы всю модель языка [принципы построения программ — прим. пер.].

Для добавления любой новой возможности нужны веские основания — острая необходимость, которую обосновали бы разработчики реальных проектов.

Вот наиболее вероятные кандидаты на добавление в Go 2:

  • Управление пакетами с помощью модулей, поддержка которых уже была частично реализована в Go 1.11.
  • Обобщенное программирование — концептуальная схема, реализация которой в Go уже запланирована во второй версии языка. Пока вместо обобщенного кода (дженериков) можно использовать альтернативы и обходные пути, расписанные вот здесь.
  • Новая система обработки ошибок — пока тоже на стадии проекта — может заменить нынешние упрощенные механизмы.

Сейчас на рассмотрении более мелкие усовершенствования, которые помогут организовать и опробовать разработку Go с упором на инициативу сообщества.

Тем не менее вряд ли стоит ждать от Go 2 таких нововведений, как опциональные параметры, значения параметров по умолчанию и перегрузка методов.

Сравнение с Java

Спецификация языка Java® сейчас насчитывает 750 страниц. Сложность изучения связана в первую очередь с перегруженностью «фишками» [явление известно как feature creep — прим.пер.].

Вот вам несколько примеров. Внутренние классы внезапно появились в Java в 1997 году. На обновление спецификации ушло больше года, и она увеличилась в объеме почти вдвое. Это высокая цена для функции, появление которой было не критично.

Дженерики в Java, использующие стирание типов (type erasure), делают код яснее и позволяют выполнять дополнительные тесты во время исполнения программы. Но когда нужно выйти за рамки простейших примеров, работа с дженериками усложняется. Вы не можете создавать массивы дженериков, а шаблоны параметров (type wildcards) с нижней и верхней границей довольно сложны. Слово «дженерик» фигурирует в спецификации 280 раз. Лично я не уверен, стоила ли эта штука усилий, затраченных на ее реализацию.

Перечисления (enum) появились в Java в 2004 году как специальный класс, который работает с группой констант. Это, конечно, неплохо, но практически все возможности перечислений можно реализовать с помощью обычных классов. Термин enum упомянут в спецификации 241 раз.

Прозрачность кода

Tangled cables

Блок обработки данных суперкомпьютера ILLIAC IV

Если вы не можете читать и понимать свой код, ваш проект обречен.

  • Вы должны всегда четко знать, что именно делает ваш код.
  • Иногда нужно оценить количество ресурсов (времени и памяти), необходимых для выполнения вашего кода.

Создатели Go постарались сделать так, чтобы обе эти потребности было легко удовлетворить.

Синтаксис языка создан с расчетом на прозрачность и поддерживает только один стандарт оформления кода, который можно автоматически применить утилитой fmt.

Другой пример: Go не скомпилирует программу, если она требует каких-то пакетов (через import), но в реальности не использует их в коде. Такой подход повышает ясность кода, а в долгосрочной перспективе — его производительность.

Подозреваю, что создатели Go нарочно усложнили некоторые вещи. Например, надо очень постараться, чтобы поймать исключение (панику). Причем, чтобы переступить через типобезопасность, вам придется пометить свой код ключевым словом unsafe.

Сравнение с Python

В Python фрагмент кода del a[i] удаляет элементы с индексом i из списка a. Этот код, конечно, вполне читаем, но не прозрачен: легко упустить из вида, что временная сложность алгоритма представлена как O(n), где n — число элементов списка.

У Go нет такой полезной функции. Это не так удобно, зато более прозрачно. Если вы копируете элемент списка, вам нужно явно указать это в коде. Смотрите пример кода: 2 способа удалить элемент из среза в Go. Но можно и проще — с помощью аppend.

Сравнение с Java

Прозрачность кода — проблема не надуманная. Вот пара примеров того, как правила инициализации пакетов и порядка выполнения кода в Go упрощают поддержку и доработку проекта:

  • Циклические зависимости могут вести к нежелательным последствиям. В отличие от кода на Java, Go-программа с зацикленной инициализацией не скомпилируется.
  • Программа на Go завершает работу только из функции main. Java-приложение закрывается после завершения всех пользовательских потоков, не являющихся демонами.

Это значит, что для понимания особенностей в работе Java-приложения нужно изучить большие фрагменты его кода. Это может быть и вовсе невозможно, если вы используете сторонние библиотеки.

Совместимость

Wrench with perfect fit

Язык, который подвержен внезапным изменениям или утрачивает поддержку, может погубить ваш проект.

Для первой версии Go были кратко и сжато сформулированы гарантии совместимости для языкового «ядра» и стандартных библиотек: программы на Go, которые работают сегодня, должны работать и с будущими версиями Go 1. До сих пор обратная совместимость соблюдается безукоризненно.

Go — это проект с открытым кодом и BSD-подобной лицензией, которая разрешает коммерческое использование, внесение изменений, распространение и личное пользование.

Права интеллектуальной собственности принадлежат авторам Go и тем из нас, кто внес вклад в развитие проекта. Кроме того, Google предоставляет пользователям патент на интеллектуальную собственность, распространяемую корпорацией в рамках проекта Go.

Сравнение с Python

Если вы Python-разработчик, вам приходилось мучаться с различиями между Python 2.7.x and Python 3.x. И хотя есть веские основания выбирать Python 3, если вы используете библиотеки, доступные только для 2.7, у вас может не быть выбора.

Сравнение с Java

Lightning And Dark Clouds

У языка Java очень хороший опыт обратной совместимости и подробное руководство по совместимости для JDK 8. Плюс, Java долгое время был в свободном доступе для разработчиков.

К сожалению, на горизонте сгущаются тучи. Причиной тому — судебное разбирательство между Oracle America и Google о сущности компьютерного кода, авторском праве и новой модели лицензирования Java от Oracle.

Производительность

Lightning And Dark Clouds

Снаружи Go неброский, но под капотом у него — прекрасно отлаженный движок.

Бессмысленно обсуждать производительность вне контекста. Такие параметры программы, как время исполнения и потребление памяти, сильно зависят от алгоритмов, структур данных, входных данных, мастерства программиста, операционной системы и «железа».

Тем не менее заметно влиять на производительность могут язык, среда исполнения и стандартные библиотеки. Все это касается высокоуровневых задач и архитектурных решений. Чтобы глубже вникнуть в реализацию компилятора и его производительность, читайте FAQ по Go.

Прежде всего, Go — компилируемый язык. Готовое к запуску Go-приложение обычно выглядит как один исполняемый файл без отдельных динамических библиотек или виртуальных машин, которые можно было бы напрямую разворачивать.

Объем и скорость генерации машинного кода зависят от целевой архитектуры. Генерация кода Go довольно хорошо проработана и поддерживает все основные ОС (Linux, macOS, Windows) и архитектуры (Intel x86/x86-64, ARM64, WebAssembly, ARM и др.). Поэтому от go-приложений можно ждать производительности на уровне C++ или Java. Выигрыш относительно интерпретируемого кода на Python может быть огромным.

В Go есть сборщик мусора, что предотвращает утечки памяти. Причем задержка в работе сборщика минимальна. На деле вы можете даже не замечать, что «поток-мусорщик» запущен.

Практически все стандартные библиотеки исполнены очень качественно: их код оптимизирован по эффективным алгоритмам. К примеру, регулярные выражения в Go работают настолько хорошо, что время исполнения напрямую зависит от объема ввода. К сожалению, с Java и Python все иначе.

Скорость сборки в абсолютных величинах сейчас достаточно хороша. Что еще важнее, Go спроектирован так, чтобы упрощать компиляцию и анализ зависимостей. Это позволяет создавать легко масштабируемые решения для растущих проектов.

Пройти обучение

28 май 19, 14:54
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

В гейм-дизайнеры с нуля. Часть 2

Это вторая часть перевода статьи From Zero to Game Designer: how to start building video games even if you don’t have any experience. Автор оригинала — Angela He. Первая часть была посвящена разработке концепции игры и работе с графикой.

Программирование

Теория

Debug.Log('О боже! Пришло время кода!! ^_^');

С чего начать? Выберите игровой движок и среду разработки, в которой будете писать код (Integrated Development Environment  —  IDE). Список движков и IDE, которые я рекомендую, вы найдете ниже.

Что дальше? Пишите код. Не умеете? Не волнуйтесь, этому можно научиться.

Мы исключили из перевода главу с объяснениями таких азов программирования, как переменные, функции и исключения. В подразделе одной статьи все равно не расскажешь всего, что нужно знать новичку для создания игры. Но есть вариант лучше. Вы можете пройти бесплатный курс «Основы программирования» на GeekBrains и записаться на бесплатные интенсивы по языку, который выберете для написания игр.

На каком языке вы собираетесь программировать? C++? JavaScript? C#? У каждого свои особенности и назначение.

API (Application Programming Interface — программный интерфейс). Когда разберетесь с основами, вам потребуется изучить конкретный API вашего игрового движка. Программные интерфейсы — это арсенал мощных инструментов, обернутых в простые классы и функции, которыми вы можете пользоваться. API заметно упрощают жизнь.

Посмотрите на примеры проектов, сделанных на выбранном движке. У Unreal и Unity есть множество бесплатных примеров. Это позволит вам понять, как все может выглядеть на практике. К тому же это может натолкнуть на идею собственной игры. Моя первая игра родилась из знакомства с возможностями Corgi Engine.

if (you.getThisFar()==true) {

veryProud=true;

you.didIt(); //НАСТРОЕНИЕ: ОФИГЕННОЕ

}

Короткое воодушевляющее напутствие. Я знаю, что поначалу программирование пугает. Ничего не понятно, в попытке найти выход постоянно налетаешь на «стены», после очередных ошибок и неудач хочется все бросить. Это не значит, что у вас плохо с программированием. Писать код — всегда сложно. Неудивительно, если в начале пути вы теряетесь.

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

Важные принципы разработки игр

Ориентированность на объект. Когда код выстроен вокруг объектов, он легче воспринимается человеком.

Принципы именования. Называйте переменные, классы и все остальное так, чтобы сразу было ясно их назначение. Например, функцию ближнего боя (melee attack) лучше назвать meleeAttack(), а не mA() и не protectbutalsoattac(). Вам и всем, кто будет читать код, должно быть сразу ясно, о чем речь.

Декомпозиция. Повторяющийся код выносите в отдельные функции. Вызывайте их вместо того, чтобы писать один и тот же код несколько раз.

Шаблон проектирования Singleton («Одиночка»). Позволяет хранить все данные класса в одном месте.

Избегать статических переменных. Вне singleton’ов я бы не рекомендовала создавать статические переменные — они существуют на протяжении всей игры, медленно работают и могут вести к непредвиденным событиям.

Шаблон проектирования Observer («Наблюдатель»). Позволяет создать штуки, которые в своей работе зависят от других объектов — чтобы компьютеру не надо было проверять, что там с другим объектом происходит.

Важные особенности Unity

Сопрограммы (Coroutines). Интерфейс IEnumerator и сопрограммы позволяют начать делать что-то и продолжать определенное время, а затем остановиться. Я часто этим пользуюсь, чтобы создать визуальный эффект взрыва, задать движение с помощью функции Lerp или дождаться загрузки сцены, прежде чем работать с ее объектами.

«Скриптуемые объекты» (ScriptableObject). Содержат данные с меньшими накладными расходами, чем при наследовании скриптов от класса MonoBehaviour.

Ресурсы

Игровые движки

Самописные. Надо знать C/C++ и низкоуровневое программирование. Очень-очень низкоуровневое.

Unity (*). 2D/3D. Кроссплатформенный. Требует знания JavaScript/C# на среднем уровне.

Unreal Engine. 2D/3D. Надо знать C++ на среднем уровне. Обратите внимание: поддержка 2D у этого движка так себе.

Pixi.js (*). 2D. Надо знать JavaScript на среднем уровне. Web.

GameMaker Studio. 2D/3D. Кроссплатформенный. Надо знать GML. Подходит для новичков.

Corona. 2D. Кроссплатформенный. Надо знать Lua. Для начинающих.

Среды разработки (IDE)

Visual Studio Code (*). Для MacOS. Не лагает и может похвастаться всякими фишечками  — всплывающими подсказками и быстрой навигацией (⌘T).

Visual Studio (*). Для Windows.

MonoDevelop. Распространяется вместе с Unity. Часто лагает.

Бесплатные ресурсы для Unity

Море бесплатных дополнений и ресурсов для Unity вы найдете в официальном магазине Unity Asset Store, на сайтах GitHub, bitbucket и других. Материалы с GitHub и bitbucket я использую в каждом своем проекте.

Упрощайте себе жизнь с помощью готовых ресурсов, но учтите, что они несовершенны. Если вы нашли ошибки, не стесняйтесь их исправлять и сообщать о них разработчикам.

TextMeshPro (*)

LeanTween (*)

Fungus

Corgi Engine

Dialogue System

Post Processing Stack

Keijiro Takahashi. Работает над Unity. Делает потрясающие свободные (open source) проекты с визуальными эффектами для Unity!

И последнее по порядку, но не по важности — мое средство № 1 для преодоления непоняток с кодом — Google!

Доводим проект до ума: отладка и оптимизация

Теория

О! Дочитали досюда?! Это просто замечательно  — вы молодец. Я серьезно. Если вы проделали такой большой путь, я бы хотела услышать о вашей игре. Напишите мне о ней!

Думаете, теперь все готово? Как вам сказать… С вероятностью 99,99999 % в игре есть баги. Так что самое время заняться тестированием.

Поиск ошибок и отладка (debugging)

Заставьте кого-нибудь (но не себя!) поиграть в вашу игру. Желательно в вашем присутствии: если человек столкнется с ошибкой, он может ее не заметить или затрудниться с описанием.

Попробуйте пройти игру на всех целевых платформах. Бывает, все работает в редакторе, но дает сбои на реальных устройствах. В Linux и особенно разных версиях Android все может пойти не так, как вы задумывали.

Ладно. Нашли баг — что дальше?

Посмотрите в консоль: нет ли там исключений. Уже видите? Отлично! Теперь найдите имя файла и номер строки, где исключение было выброшено. Если вы впервые слышите об исключениях, расспросите Google. А дальше сосредоточьтесь на том, что же пошло не так в уже известной строке.

Все еще не знаете, в чем беда? Расставьте контрольные сообщения на проблемном участке кода и выводите их в консоль. Выводите значения переменных и смотрите, как они меняются по ходу выполнения программы. Соответствует ли это вашим ожиданиям? Если нет, вносите правки.

Если ситуация хуже некуда, проверьте логи своего проекта. Они расскажут гораздо больше, чем консоль. Прочтите последние строки перед той, где было выброшено исключение. Если чего не знаете, спросите у Google.

Ну как, исправили баг? Спите уже — утром все само починится, ведь это лишь дурной сон, правда?

Распространенные ошибки

Исключение NullReferenceException

var.doThing(); //выбрасывает NullReferenceException: Object reference not set to an instance of an object

В чем проблема: Вы пытаетесь что-то сделать с null-значением (несуществующей) переменной.

if(var != null)
{
var.doThing(); // безопасно выполняем необходимое!
}

SyntaxErrorException

Проблема: в коде синтаксические ошибки.

Как быстро исправить: в сообщении об исключении будет написано, какой символ дает ошибку. Исправьте этот символ.

Обратите внимание: если символ — двойная кавычка, убедитесь, что используете прямые кавычки, а не загнутые, которые доставляют много хлопот:

" //прямая
 //загнутая

Розовый или черный экран

Возможная проблема: какой-то шейдер не рендерится.

Возможная причина: вы используете 3D-шейдер в 2D-игре. Или какая-то из функций шейдера не поддерживается в нужной вам операционной системе. Всегда используйте в мобильных играх только мобильные шейдеры.

После отладки вы можете дополнительно улучшить игру, если оптимизируете производительность и использование памяти. Так ваша игра будет быстрее грузиться и меньше раскалять «железо» игроков.

Общие советы по оптимизации

  • Установите желаемую частоту кадров в секунду. Для визуальной новеллы годится FPS на уровне 20, а шутеру от первого лица больше подойдут 60 кадров в секунду. Чем ниже частота кадров по умолчанию, тем меньше времени игра тратит на их отрисовку.
  • Анимация / частицы / отброс загороженной геометрии. Функция Occlusion Culling в Unity отвечает за рендеринг тех объектов, которые заслонены от камеры другими. Чего не видит камера, то не рисуют. Анимация персонажей, обновление частиц, отрисовка 3D-моделей — все это должно выполняться только в поле зрения камеры!

  • Сжимайте текстуры и звук. Для сжатия текстур используйте библиотеку Crunch. Воспроизводите потоковую музыку и декодируйте звук при загрузке. Снижайте качество звука. Обратите внимание, что при сжатии звука потеря качества не всегда заметна человеческому уху.

Объединение объектов. Лучше не создавать и не уничтожать множество объектов одновременно — это ведет к пиковым нагрузкам на систему. Собирайте объекты в списки, очереди или другие структуры данных.

Такие вещи, как пули, обязательно надо собирать в пул, а не обрабатывать по одной.

Не позволяйте рейкасту касаться вещей, которым не нужны вводные данные. Рэйкасты — как маленькие лучи, которые проходят от ваших пальцев или указателя мыши до объекта игрового мира при каждом клике или нажатии. Уберите из рейкастовых вычислений объекты, которым не надо реагировать на такие сигналы.

Если хотите задачу потруднее:

Оптимизируйте шейдеры. Присвойте каждому рендеру по материалу. Это сэкономит ресурсы в начале, ведь игре не нужно будет создавать новые материалы для всего подряд.

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

В Unity используйте наборы контента (Asset Bundles) вместо папок с названием Resources. Наборы сэкономят память за счет подгрузки файлов из онлайн-хранилища (например, Dropbox) или с жесткого диска. Пока я мало этим пользовалась из-за недостаточно подробной документации.

Ресурсы

Все это создавалось для Unity, но можно использовать и с другими движками.

Скрипты

Оптимизация скриптов в Unity-играх (*).

Графика

Руководство по оптимизации UI в Unity (*).

Лучшие практики работы с графикой (*).

Память

Уменьшаем размер файлов для билда (*).

Память.

Оптимизация под платформы

Практическое руководство по мобильной оптимизации (*).

Соображения о производительности WebGL (*).

Размышления о работе с памятью в WebGL (*).

7 этапов оптимизации мобильных VR-игр от Olly.

Продолжение следует.


25 дек 18, 19:22
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

15 вопросов, которые надо задать себе перед запуском лендинг

Это перевод статьи «15 questions to ask yourself before publishing a new landing page».

«Посадочные страницы» (landing pages) — важная часть маркетинговых кампаний в интернете. Страница, которую люди видят, кликнув по вашей рекламе, связывает целевую аудиторию и рекламируемый продукт.

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

  • Ищете решение по наитию?
  • Создаете ленд и надеетесь на лучшее?
  • Делаете ленд, а затем «допиливаете» по мере выяснения результатов?
  • Готовите несколько вариантов страницы и проводите сравнительный тест?

Все эти подходы имеют право на существование, но, пока вы экспериментируете, плохой ленд может лишить вас конверсии и продаж. Поэтому лучше заранее все продумать и запустить годную страницу с первого раза.

Чтобы помочь вам в этом, я составил список из 15 вопросов, которые должен задать себе перед публикацией ленда каждый маркетолог. Если все ответы — «да», ваш лендинг может быть несовершенным, но он будет работать.

1. Контент верхней половины ленда — продолжение рекламы, которая ведет на страницу?

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

Учитывайте, как выглядит и что обещает реклама, на какой платформе она размещена и как все это соотносится с вашей целевой аудиторией. Чем более плавным для посетителей будет переход от рекламной ссылки к содержанию ленда — тем вероятнее, что они задержатся на странице и сделают заказ.

2. Ясно ли заголовок ленда характеризует мое предложение и/или бизнес?

Плавно переключить внимание посетителя с рекламы на ленд проще всего с помощью заголовка. Это первое, на что люди смотрят, когда хотят убедиться, что открыли нужную страницу. Именно заголовок должен доносить суть вашего предложения.

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

3. Заголовок и подзаголовок раскрывают ценность продукта?

Хорошие заголовки и подзаголовки обещают потенциальному клиенту нечто важное для него. В конце концов, если хотите, чтобы люди остались на странице и сделали заказ — дайте им повод принять ваше предложение всерьез.

Лучший способ добиться этого — посвятить заголовок и подзаголовок тому, как именно ваш товар или сервис улучшит жизнь клиента. Вместо общих слов вроде «программный продукт №1 на рынке», напишите что-то в духе:

«Закрывайте вдвое больше сделок с нашим приложением для автоматизации продаж!»

4. Заметен ли призыв к действию с первой секунды?

Задача ленда — направить потенциального покупателя от интереса к действию. Это проще сделать, если следующий шаг, которого вы ждете от пользователя, понятен ему изначально. В одних случаях нужен призыв к немедленному действию, который обеспечит прямую конверсию. В других — лучше стимулировать посетителя к дальнейшему чтению страницы и более подробному знакомству с продуктом или услугой.

В абсолютном большинстве случаев призыв к действию должен выделяться — бросаться в глаза за счет цветового контраста, положения на странице и других факторов. Чем скорее клиент увидит, куда двигаться дальше, тем быстрее он сделает то, чего вы от него хотите.

5. Призыв к действию ясен?

Большинство хороших call to action (CTA) требуют от клиента вложений, а в каждом из них есть доля риска. Если хотите, чтобы люди оставляли вам контактные данные, деньги или еще что-то — объясните, что они получат взамен.

Пояснение можно поместить над формой для заполнения или рядом с кнопкой — лишь бы посетитель понимал, зачем ему иметь с вами дело. Тогда у него будет чувство, что вы предлагаете выгодный обмен и стоит принять ваши условия.

6. На ленде только нужные ссылки?

Лендинг — не домашний сайт со складом полезностей. Здесь вы точно знаете, откуда и зачем приходят посетители. Сразу предлагайте контент, который им нужен — без перенаправлений на другие страницы. Лишние ссылки на группы в соцсетях или внешние сайты только мешают конверсии. А вам нужна именно она!

7. На странице только необходимое?

Вы наверняка хотите рассказать о своей компании и услугах многое, но обилие картинок и информации отвлекает и расхолаживает потенциального клиента. Помните, что цель ленда — превратить посетителя в покупателя. Лучше, если на странице останутся только элементы, которые настраивают людей на следующий шаг к конверсии.

8. В центре внимания именно то, что важно клиенту?

Разовьем идею предыдущих вопросов. Многие компании попадают в ловушку, когда создают ленд с рассказом о преимуществах своего бизнеса, товара или сервиса. Потенциальному клиенту все равно, чем вы гордитесь. Их больше интересует, какие проблемы они смогут решить с вашей помощью.

Вместо рассказа о сильных сторонах компании сосредоточьтесь на том, как ваш продукт или услуга поможет клиентам и изменит их жизнь к лучшему. Что получит человек, если купит ваш продукт? Чем полнее вы ответите на этот вопрос, тем выше вероятность конверсии.

9. Отзывы о моем бизнесе/продукте актуальны и убедительны?

Рекомендации и положительные отзывы — это мощное средство убеждения. Но если их неправильно выбрать, можно подорвать доверие к тому, что вы делаете. Для лендинг-страниц это так же верно, как для рекламы на сторонних сайтах.

Аудитория понимает, что на ленд вы берете лучшие отзывы. Поэтому публиковать нужно только особенно впечатляющие и убедительные. Хороший отзыв исходит от надежного, достоверного источника и рассказывает именно о вашем бизнесе, а в идеале — о конкретном предложении.

10. Я прошу у пользователя только самые необходимые данные?

Как я сказал выше, ваш призыв к действию для потенциального клиента сопряжен с риском. Чем меньше вы спрашиваете, тем ниже риск с точки зрения аудитории. Просите только о том, без чего не будет работать воронка продаж!

11. У страницы есть <title>?

Казалось бы, название веб-страницы — вещь обыденная и незаметная, но наш мозг устроен так, что любую неполную картину ассоциирует с опасностью. У самых авторитетных сайтов и лендов есть названия, и если люди его не видят подобного на вкладке браузера, они могут подсознательно усомниться в надежности и даже законности вашего бизнеса.

12. Ленд вычитан на ошибки?

В идеале посадочная страница должна читаться абсолютно без усилий. Если людям приходится задумываться, что вы хотели сказать, или натыкаться на опечатки и грамматические ошибки — время бить тревогу! Когда потенциальный клиент видит, что со страницей что-то не так, он начинает сомневаться во всем ее содержании. И вот он уже не уверен, нужны ли ему ваши товары и услуги. А это проблема для вас.

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

13. Все ли поля и формы на ленде протестированы?

Самый привлекательный ленд ничего не стоит, если он не конвертирует по техническим причинам. После любых действий с кнопками, полями и другими интерактивными элементами страницы обязательно перепроверяйте всю цепочку шагов, которые должен совершить пользователь для конверсии! Перед запуском ленда убедитесь, что лидер-абзац не съезжает во время прокрутки, кнопки работают, а ссылки ведут куда нужно.

14. Есть ли у страницы мобильная версия?

Сегодня можно не сомневаться, что многие будут просматривать ваш ленд с планшетов и смартфонов. Разрабатывать две версии страницы — для стационарных компьютеров и мобильных устройств — не очень-то удобно, но таковы требования времени (или можете рассмотреть вариант с адаптивным дизайном — прим. пер.).

15. Ленд вызывает у клиента чувство «это для меня»?

Следуя по созданной вами воронке продаж, люди постоянно спрашивают себя: «Это то, что мне нужно?». Потенциальные клиенты ищут компанию или предложение под свои предпочтения и нужды. Если вы сумеете убедить людей, что ваш продукт — это о них и для них, им будет сложно отказаться.

Когда вы делаете свою домашнюю страничку, вы не знаете наверняка, кто и зачем ее посетит. Но с лендингом все иначе — его видят только люди из вашей целевой аудитории: они заинтересовались вашей рекламой и кликнули по ней. Вот под них и нужно подстроить все содержание страницы.

Заключение

После более чем десяти лет в разработке и тестировании посадочных страниц я убедился, что эти 15 вопросов помогают прокачать качество нового ленда. Ответили «да» на все? Значит, у ваших маркетинговых кампаний отличная база и они начнут приносить пользу с первого дня! Со временем вы можете что-то доработать, но надежная основа у вас уже есть.


4 сен 18, 18:27
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 3

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru