Самые популярные направления в программировании: обзор

VN MAKER

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

Фото: gamingtrend.com

Для разработки: Визуальных новелл.

Платформы: Windows, macOS и Linux.

Языки программирования: JavaScript и CoffeeScript.

Стоимость: $69.99.

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

Начало работы:

Bash

Сценарии командной оболочки Unix, созданные Кеном Томпсоном в начале 1970-х годов, тесно связаны с языком программирования C. Bash — обновленная оболочка Unix — была впервые выпущена в конце 80-х годов и до сих пор активно разрабатывается. На Bash обычно пишутся сценарии конфигурации сервера, поэтому это хороший выбор для работы в современных облачных средах с контейнерным хранением и микросервисами. Скрипты командной оболочки используются достаточно часто, так что знание этого языка пригодится.

Также стоит обратить внимание на zsh, который в настоящее время является оболочкой по умолчанию в macOS. Области применения: администрирование сервера, инструменты интерфейса командной строки, DevOps, виртуализация

Области применения: администрирование сервера, инструменты интерфейса командной строки, DevOps, виртуализация.

UNREAL

Кроссплатформенный коммерческий игровой движок, разработанный Epic Games. Он использовался для таких игр, как Fortnite, ремейка Final Fantasy VII и Octopath Traveller.

Фото: playground.ru

Для разработки: 3D-игр.

Платформы: Windows.

Языки программирования: C++ и Blueprints Visual Scripting.

Стоимость: Бесплатно, но с 5-процентным сбором от общего дохода игры, если она принесет более 3000 долларов в квартал.

Обучение: Epic Games предлагает ряд бесплатных онлайн-видео курсов, которые охватывают вводные аспекты использования редактора движка и некоторые более сложные темы, такие как эффекты постобработки и создание ресурсов.

Начало работы: https://docs.unrealengine.com/en-US/GettingStarted/index.html

R

R был выпущен в 1995 году для статистических вычислений и выполнения других сложных математических операций, связанных с анализом данных и графикой. Корпорация Fortune 500 часто использует R для проведения комплексного анализа рисков, тенденций поведения клиентов и других задач, требующих большого количества вычислений. R отличается от многих языков статистики, а его синтаксис на основе s-выражений напоминает Lisp. Несмотря на то, что для других целей R используется редко, он считается стандартом в сфере аналитики данных, особенно для прогнозирования рынков или анализа пользовательских тенденций.

Области применения: интеллектуальная обработка данных, прогнозная аналитика, графика.

Как написать простую программку?

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

  1. Выберите язык программирования. Помните, что сохранять созданный документ нужно именно в таком формате.
  2. Запустите приложение блокнот. Это можно сделать разными способами:
  3. Кликните правой кнопкой мыши, в выпадающем меню выберите последовательно Создать →Текстовый документ.
  4. Через меню Пуск → Программы → Стандартные → Блокнот.
  5. С помощью командной строки.
  6. Введите код программы. После каждой строки кода нажимайте клавишу Enter.Следите, чтобы все простые и фигурные скобки были парными – открывающая и закрывающая. Перед сохранением кода обязательно проверьте его. Иначе могут возникнуть проблемы со стандартным компилятором.
  7. В верхнем меню блокнота выберите Файл → Сохранить как.
  1. Откроется окно сохранения. В нем укажите путь, куда записать документ.
  2. В выпадающем меню Тип файла выберите пункт Все файлы.
  3. Затем придумайте имя для своей программы, обязательно после точки укажите расширение. Например, имя файла может выглядеть так – тест.cpp для языка программирования С++.
  4. Сохраните файл нажатием на кнопку Сохранить.

Запустите созданную программу двойным щелчком левой кнопки мыши.

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

Предлагаем посмотреть видео о том, как самостоятельно создать программу в Блокноте:

СОЗДАНИЕ ПРОСТОЙ ПРОГРАММЫ

Как и следовало ожидать, ваша первая программа на C++ называется FIRST.СРР. При создании программ на C++ используйте расширение СРР, чтобы другие могли понять, что этот файл содержит программу на C++. Когда вы позже запустите эту программу, она выведет на экран дисплея сообщение Учимся программировать на языке C++/Следующий пример вывода показывает подсказку командной строки (в данном примере С:\>), вводимую вами командную строку (имя программы FIRST, за которым следует ENTER) и вывод программы на экран:

Как известно, при программировании вы можете работать в среде, основанной на командной строке, например MS-DOS или UNIX, или в среде типа Windows. Для упрощения вывода в данной книге подразумевается, что вы работаете из командной строки. В этом случае для выполнения программы FIRST.EXE вы должны ввести имя программы FIRST в ответ на системную подсказку и затем нажать ENTER.

Для начала вам следует использовать текстовый редактор, например EDIT (поставляется с MS-DOS), для создания файла, который содержит операторы программы и называется исходным файлом. Не используйте текстовый процессор, такой как Word или WordPerfect, для создания исходного файла программы. Как известно, текстовые процессоры позволяют вам создавать форматированные документы, которые могут содержать полужирный текст, выровненные поля, а также другие особенности. Чтобы отформатировать документы таким образом, текстовый процессор вставляет специальные (скрытые) символы внутрь документа. Такие символы могут включать или выключать курсив или выбирать определенную ширину полей. Несмотря на то что такие специальные символы имеют смысл для текстового процессора, C++ их не поймет и эти символы приведут к ошибкам.

С помощью текстового редактора введите следующие операторы программы C++ (точно так, как они изображены, используя верхний и нижний регистры), как показано ниже:

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

А пока обратите особое внимание на ваш ввод. Удостоверьтесь, например, что вы ввели верное количество кавычек, точек с запятой и скобок

Еще раз более внимательно проверьте операторы своей программы. Если они верны, сохраните операторы в файле FIRST. СРР

Что потребуется для создания мобильного приложения

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

Чтобы сделать приложение, нужно выполнить следующие шаги:

  1. Определиться с целью и функционалом будущей программы, а также вариантом монетизации, если она планируется;
  2. Выбрать конструктор, на котором вы сможете всё это реализовать;
  3. Зарегистрироваться и (при необходимости) оплатить подписку;
  4. Выбрать шаблон и наполнить его контентом;
  5. Персонализировать его, добавив фото, логотип и т.п.

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

Наши продукты помогают вашему бизнесу оптимизировать расходы на маркетинг
Узнать подробнее

REN’PY

Игровой движок для создания визуальных новелл с открытым исходным кодом. Он использовался для таких игр, как Doki Doki Literature Club, Butterfly Soup и One Night, Hot Springs.

Фото: doki-doki-literature-club.fandom.com

Для разработки: Визуальных новелл.

Платформы: Windows, macOS и Linux.

Языки программирования: Язык скриптов Ren’Py и Python.

Стоимость: Бесплатно.

Обучение: Существует бесплатный текстовый гайд, как сделать простую игру в Ren’Py, и дополнительные текстовые руководства для более специфической настройки вашего проекта.

Начало работы: https://www.renpy.org/doc/html/quickstart.html

Об отличии языков простыми словами

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

В императи задача представлена своеобразным «рецептом». Изобразить ее можно следующим образом:

  1. Включи плиту.
  2. Поставь средний огонь.
  3. Поставь сковородку на зажженную конфорку.
  4. Возьми два куриных яйца.
  5. Ударь по каждому ножом.
  6. Вылей содержимой в разогретую сковороду.
  7. Выкинь скорлупу.
  8. Возьми нож.
  9. Возьми батон колбасы.
  10. Порежь ножом колбасу на кружочки.
  11. Положи каждый кусок к яйцам в сковороду.
  12. Жарь.
  13. Сними при образовании золотистой корочки.

Хотя это императивное представление, декларативные нотки в нем есть.

Если же речь идет о «второй» категории языка, задача будет выглядеть так: Приготовь яичницу с колбасой. Каким именно образом действовать, «повар» должен решить самостоятельно. И сколько шагов предпринимать для реализации поставленной задачи – тоже.

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

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

Нужна помощь в создании приложения?

Создать приложение – это нелегкая задача, особенно для новичков в сфере разработки. И в этом случае может понадобиться помощь: можно обратиться к знакомым разработчикам за советом или попытаться найти тусовку разработчиков, которые могут даже помочь делом в реализации проекта.

Кто может помочь?

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

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

Почему бонусные программы самые выгодные

В мире существует много программ лояльности: дисконтные, купонные, балльные и их вариации. Однако самая распространенная из них, особенно в России — простая балльная система, когда покупатели зарабатывают бонусные баллы, которые впоследствии обменивают на какую-то выгоду (скидку).

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

Один из основных влияющих на конечную выручку параметров программы лояльности — это размер начисляемых покупателям бонусов. Зачастую им является какой-то процент от совершенной покупки. Это может быть от 1–3% в food-ритейле до 10–20% в магазинах электроники или одежды.

Для покупателя всегда, чем понятнее схема, тем лучше («1 балл = 1 рубль»), но ритейлеры иногда могут разрабатывать более сложные формулы конвертации («100 потраченных рублей = 10 баллов, 1 балл = 50 копеек»). Это делается для ограничения размера итоговой скидки.

Этой же цели служит и введение лимитов на списание бонусов (максимальный процент покупки, который можно оплатить бонусными баллами). Ограничения могут меняться в зависимости от сегмента и типа магазина. Например, в магазинах детских товаров обычно баллами можно оплатить не более 20% от суммы чека. В продуктовых сетях ситуация иная: они позволяют оплачивать таким образом до 99,9% чека или ограничиваются минимальной суммой в 1 рубль. Полностью бесплатно товар почти никогда не отдают, поскольку в таком случае бизнесу сложно отчитаться о такой продаже перед контролирующими органами, плюс к этому сохраняется необходимость оплаты НДС.

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

  1. активные, которые покупатель может обменять на скидку;
  2. неактивные, которые начислены, но еще не начали действовать (чтобы нельзя было купить дорогой товар, получить бонусы, оформить возврат, и купить со скидкой что-то еще);
  3. «сгоревшие» бонусы, срок жизни которых истек.

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

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

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

ClassMarker

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

В бесплатном варианте ClassMarker позволяет создать не более 100 тестов. 400 тестов в месяц обойдутся в $16.50, а 1000 тестов — уже $33. У сервиса есть ежегодные пакеты для тех, кто редко проводит онлайн-тестирования. Минимальное количество тестов (50 в год) будет стоить $25 в год, а максимум (5000 в год) обойдется в $1000.

Как вы начали преподавать создание игр?

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

Запрос на создание игр пришёл от моих учеников. Когда я вела робототехнику, нам с детьми нужно было изучать программирование. Учиться программированию через создание «серьёзных» приложений не очень интересно, поэтому дети попросили создавать игры. Я их полностью поддержала, ведь разработка и игр, и «серьёзных» приложений развивает одинаковые навыки. При этом учиться на играх гораздо интереснее. Так я придумала программу изучения программирования через создание игр, и мы начали по ней заниматься.

Использование самых старых языков программирования в наше время

Один из самых старых языком программирования Фортран активно используется и в наши дни. Подтверждением тому является его модификация Fortran 2018, которая включает параллельные дополнительные функции, дальнейшую совместимость и поддержку ISO с шестнадцатеричным вводом, выводом числовых значений с плавающими точками. Применение этого языка в наши дни обусловлено большим количеством математических встроенных функций.   Благодаря ему удаётся работать с комплексными, вещественными числами, обладающими повышенной, двойной точностью. Язык характеризуется наличием обширного инструментария, внешних файлов и массивов.

Достаточно активно используется и язык COBOL, который применяют для ряда банковских программ. Характерно, что специалистов, способных модернизировать его для решения новых задач остаётся всё меньше, но финансисты не спешат от него отказываться. Его достоинство заключается в возможности совершать множество транзакций на высоких скоростях.

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

Язык Кобол и его создатель

Активно используется язык LISP, а точнее ярд его диалектов, которые применяют в образовании. Например, Scheme нужен для студентов, чтобы генерировать множество строк или применения в геймдеве. Диалект Clojure до сей поры используют веб-разработчики, занимающиеся созданием современных приложений. Сейчас никто не занимается созданием новых проектов на этом языке, но существует необходимость поддерживать существующий код legacy, присутствующий в разных областях в большом количестве

Почитатели редактора Emacs используют этот язык для расширения настроек, что важно пользователям UNIX и подобных ему систем

Применение языков программирования, разработанных во второй половине XX века, носит системный характер. Это вызвано тем, что на них написаны тонны кода, который невозможно заменить в одночасье, а порой в этом нет никакого смысла, как в случае с COBOL. Разработка новых проектов на них давно прекращена, но пресловутая надёжность и отсутствие багов делает такие продукты востребованными до сих пор.

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

HTML/CSS

HTML — язык гипертекствой разметки. Используется, чтобы создавать сайты такими, какими мы их видим сегодня. Он прошел долгий путь, и у него есть два главных помощника — CSS (каскадная таблица стилей) и JavaScript. 

Где используется

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

Что будет полезно освоить дополнительно:

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

Насколько сложно его освоить:

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

Перспектива языка:

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

Ближайший курс Front-end с нуля

Как появился первый язык программирования

Самый первый язык программирования в мире это Планкалкюль. Немец Конрад Цузе впервые его опубликовал в 1948 году. Высокоуровневый язык разработали специально для работы с машиной Z4, но его можно было использовать и для других аналогичных компьютеров. Цузе после оккупации союзническими войсками Германии потерял доступ к собственной материально-технической базе. Он больше не мог заниматься опытно-конструкторскими мероприятиями, проводимыми им с 1936 года. Союзники не разрешали учёному  заниматься практической научной деятельностью. Поэтому он занялся теоретическими исследованиями и фундаментальной наукой. В результате этого на свет появился язык Планкакюль. Его технические возможности позволяли поддерживать следующие функции:

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

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

Конрад Цузе – разработчик языка программирования

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

Практическое применение Планкакюль началось только в 2000 г, когда после смерти самого Цузе разработали первый компилятор. Сам немецкий учёный, не оставил никакой информации об аппаратных программных средствах для практической реализации языка программирования.

Ruby (Руби)

Кроссплатформенный и по-настоящему универсальный скриптовый язык, относящийся к сфере объектно-ориентированного программирования. Его синтаксис прост и лаконичен, благодаря чему новичкам будет несложно его освоить. Профессионалы любят его за бережливость по отношению к компьютерным ресурсам.

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

Причины популярности Python

Успех Python отражается в тенденциях Stack Overflow, рассчитанных по количеству тегов в постах, что является довольно хорошим показателем популярности языка, учитывая размер платформы.

Количество тегов у различных ЯП на StackOverflow.

В то время как R сохраняет стабильность, а показатели многих других языков снижаются, Python продолжает стремительно расти. Почти 14% всех вопросов на StackOverflow содержат тег «python», и эта тенденция продолжает усиливаться. На это есть несколько причин:

Проверка временем

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

Следовательно, если у вас возникают проблемы при работе с Python, скорее всего, вы сможете решить их с помощью простого поиска Google, поскольку кто-то уже сталкивался с такой проблемой и предложил ее решение.

Простота освоения

Дело не только в том, что за время существования Python программисты успели создать множество руководств. Сам синтаксис языка прост для чтения.

Не нужно указывать тип данных: вы просто объявляете переменную. Из контекста Python понимает, является ли она целым, плавающим или логическим значением, что представляет огромное преимущество для начинающих. Если вы уже работали на C++, то, вероятно, сталкивались с ситуациями, когда программа не компилируется из-за замены плавающего числа на целое.

Если вы когда-либо сравнивали код Python и C++, то знаете, насколько Python прост для понимания, несмотря на то, что C++ был спроектирован с учетом английского языка.

Универсальность

За время существования Python разработчики создали множество пакетов практически для любых целей.

Хотите сократить числа, векторы и матрицы? Вам подойдет NumPy!Необходимо выполнить технические расчеты? Воспользуйтесь SciPy.Хотите освоить манипулирование данными и их анализ? Присмотритесь к Pandas.Хотите начать с искусственного интеллекта? Стоит попробовать Scikit-Learn.

Благодаря большому количеству пакетов для решения различных вычислительных задач Python сохраняет высокие позиции, что заметно по росту его популярности в машинном обучении.

Как создать приложение для Андроид?

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

Желательно создать документ в Word, где следует расписать подробно все этапы и ключевые моменты разработки приложения для Андроид.

С чего начинается разработка приложений для Android?

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

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

Итоги

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

  • У каждого языка есть свои преимущества и недостатки.
  • Один язык не может быть хорош для всего.

Поэтому выбирать исходя из того, чем вы хотите заниматься. Многие языки в первую очередь затачиваются под решение определенных проблем или под определённые сферы:

Быстро создать сайт —  Python.

Создать игру — C++ или C#.

Красивый интерфейс для сайта — HTML, CSS и JavaScript.

Приложение для Android — Java.

Приложение для iOS или Mac OS —  Swift.

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

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: