Программное обеспечение

Программное обеспечение - читайте бесплатно в онлайн энциклопедии «знание.вики»

Зачем нужно программное обеспечение

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

Работоспособность устройств

Программное обеспечение дает необходимые инструкции для работы аппаратного обеспечения — процессоров, памяти, устройств ввода/вывода.

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

Управление ресурсами

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

Разработка и тестирование программ

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

Сохранение безопасности

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

Каким бывает ПО по назначению

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

Системное. Это программное обеспечение, которое нужно для работы компьютерной системы. Как пример такого софта – операционная система Windows или macOS, ее службы и процессы. Без нее обычный пользователь просто не сможет пользоваться компьютером, да и профессионал вряд ли обойдется вообще без софта. Еще к системному ПО относят прошивки смартфонов и других умных устройств, управляющие инструкции в домашней технике и промышленной электронике. Системное ПО есть практически в любой системе – от принтера до космической ракеты.

Инструментальное. Так называют софт, который нужен для создания других программ. Это профессиональные инструменты айтишников. Компиляторы и интерпретаторы языков программирования, разные библиотеки и фреймворки, среды программирования и редакторы кода – все это инструментальное ПО. Часть таких программ есть на вашем компьютере, даже если вы не занимаетесь IT. Ведь даже некоторое прикладное ПО не запускается, если на компьютере не установлен инструментальный софт для его языка.

Прикладное. Это самая знакомая обычному пользователю группа – программы, которыми мы пользуемся в повседневной жизни, от «Блокнота» до 1С. Сюда же относятся приложения на телефон, разные плагины и надстройки для программ, браузеры и многое другое. Онлайн-сервисы – по сути тоже прикладное ПО. Это такие же программы, только установлены они не на компьютере пользователя, а на удаленных серверах.

Краткое знакомство – основные прикладные продукты

 

Текстовые редакторы типа Блокнот (Notepad), WordPad имеют небольшую функциональность, тогда как Microsoft Word, OpenOffice.org Writer, WordPerfect, AbiWord уже обладают большим количеством шаблонов, типов форматирования, дополнительных инструментов и функций.

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

Редакторы таблиц представляют собой табличную форму работы с текстом или другими типами данных (Microsoft Excel, Lotus Symphony Spreadsheets, OpenOffice.org Calc).С их помощью информацию можно систематизировать в таблицы, списки, блоки. А уже в табличной форме данные сортируются, систематизируются и на их основе строятся графики, диаграммы различных форм и уровней сложности. Без электронных таблиц невозможно представить бухгалтерскую работу (1С: Бухгалтерия), математический анализ данных, проведение сложных вычислений.

Графические редакторы (Paint, Adobe Photoshop, CorelDraw) открывают широкие возможности при работе с различными типами графических файлов. Подходят для работы с фото, картинками, чертежами, иллюстрациями, диаграммами и графиками. Их можно преобразовывать в различные форматы, менять масштаб, цвета, делать коллажи. Плюс графические процессоры позволяют работать и с текстом (вводить его на изображение, редактировать и т.п.).

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

Системы управления базами данных (СУБД) дают возможность работать с большими объемами информации. Это массивы с однотипными характеристиками. Позволяют легко формировать отчеты, сортировать записи и следить за актуальность записей. Популярные СУБД Microsoft Access, Oracle, Microsoft SQL Server, Interbase, MySQL, Sybase, Firebird.

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

Средства коммуникации позволяют работать в сети интернет, смотреть веб-страницы, пользоваться электронной почтой. Это Internet Explorer, Opera, Outlook Express, The Bat!.

Есть даже онлайн-офисы, которые сами могут полностью обеспечить удобными и современными компьютерными инструментами. И все это с использованием возможностей всемирной сети интернет. Самый популярный – Google Docs.

Приложения для проектирования разнообразных механизмов это AutoCad, КОМПАС 3D.

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

 

Различные игры позволяют проводить досуг весело, а иногда даже с пользой. Есть игровые обучающие приложения, а есть игры, которые используют различные исторические данные и можно узнать много нового (Assassin’s Creed).

Инструментальное программное обеспечение

Системы программирования данных используются для написания новых приложений. Их делят по языкам, на которых они будут писаться (Pascal, C++, Ассамблер, Фортран, Basic, Алгол, др.).

В последнее время продукты для ПК пишут при помощи специализированного текстового редактора, то есть на языке программирования высокого уровня, используя трансляторы.

Трансляторы (компиляторы) – спецпрограммы, переводящие команды с языка программирования высокого уровня в двоичные коды.

Лицензирование

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

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

Основные функции

Системные программы (СПО) имеют несколько ключевых функций:

  1. Поддержка эффективной работы имеющейся вычислительной системы.
  2. Предоставление компьютеру или сетевому окружению среды для функционирования прикладных программ в системе.
  3. Выполнение фоновых процессов с файловой системой, защиты данных от утраты/кражи, проверка на вирусы и вредоносные скрипты.
  4. Диагностика и предотвращение выхода из строя аппаратной части компьютерах, ноутбука или любого иного цифрового устройства.
  5. Взаимосвязь физического оборудования. Сюда же относят их дальнейшее преобразование в логический тип.

В первом случае применяются специальные программы. Они иногда входят в состав операционных систем. Чаще инициализируются из других источников. Во втором случае развертывание производится через ОС. А именно – путем программы-оболочки. В ней сможет функционировать любое иное программное обеспечение.

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

  • перемещать;
  • удалять;
  • копировать;
  • изменять и так далее.

Существует здесь и отдельная группа – архиваторы. Они позволяют сжать файлы и подготовить любые другие электронные материалы (картинки, документы, музыку и так далее) к последующей интернет-рассылке.

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

Любая операционная система будет непосредственно работать не с устройством, а с его логической формой представления. Для этого используется система ввода-вывода (BIOS). Она обеспечивает взаимосвязь между элементами устройства.

Инструментальное

Инструментальное ПО (системы программирования) предназначено для использования разработчиками в процессе проектирования и создания программ. 

Элементами системы программирования являются:

  1. Текстовые редакторы помогают создавать, редактировать и объединять тексты. 
  2. Транслятор преобразовывает алгоритмический язык программы в машинный (двоичные коды), создавая при этом объектный модуль. Интерпретатор осуществляет перевод построчно, не создавая объектный модуль. 
  3. Средства отладки (отладчик) обеспечивают пошаговое выполнение программ с предоставлением данных о результатах исполнения. 
  4. Библиотеки подпрограмм.

Функции ПО на компьютере

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

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

Что такое жизненный цикл программного обеспечения

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

Планирование и анализ

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

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

Проектирование

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

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

Например, для фронтенда — того, что видит пользователь, — разработчики могут остановить выбор на языке JavaScript и библиотеке React.js. А для бэкенда — серверной части сервиса — язык Node.js с использованием JavaScript или TypeScript.

Реализация

По-другому этот этап называется кодированием. Во время этой фазы разработчики ПО пишут программный код на основе разработанных на предыдущих этапах проектных решений.

Тестирование

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

Развертывание

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

Завершение

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

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

Другие классификации программного обеспечения

Классификаций программ очень много. Вот только несколько видов.

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

По стабильности. Стабильные программы – те, которые редко сбоят. Они предсказуемы и удобны. Еще есть ПО средней стабильности и нестабильное – оно чаще «падает» и ведет себя некорректно. Обычно это софт, который вышел недавно.

По масштабу. Бывает малое, среднее и большое ПО. Масштаб измеряется в том, сколько ресурсов потребляет программа и сколько функций реализует. «Блокнот» – малое ПО, ERP-система – большое.

По языку и среде. Программы различаются еще и тем, на каком языке программирования они написаны и для какой среды предназначены. Например, приложение для Android не запустится в Windows. А программа на языке C++ будет отличаться от программы на Python и логикой, и быстродействием.

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

Программное обеспечение по типу доступа

Как мы и говорили – есть разные классификации софта. Еще одна популярная – по типу доступа. Она описывает, какие части программы могут быть доступны пользователю и на каких условиях. Тут обычно выделяют три типа ПО.

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

Свободное. Такое ПО дает пользователю больше свободы. Он может запускать, изучать, улучшать и распространять программу – в отличие от проприетарного софта, который можно только запускать. У создателя свободного ПО остаются авторские права, его разработка выпускается под одной из специальных «свободных» лицензий. Исходный код в таких программах обычно открыт, его можно посмотреть и отредактировать. Пользователи могут дорабатывать свободный софт, выпускать свои «версии» и «сборки» – но на развитие основного продукта не влияют.

Открытое. Свободное и открытое ПО иногда путают. На самом деле эти понятия различаются, хоть и похожи. Открытым, или open-source, называют софт с открытым исходным кодом – любой может просмотреть этот код и внести в него свои правки. Хотя у свободного софта исходный код чаще всего тоже открыт, есть разница: классический open-source полностью общедоступен. Это значит, что даже владелец не имеет исключительных прав на такую программу, а помогать в ее разработке могут и сами пользователи.

Программное обеспечение — основное понятие

Программное обеспечение (ПО) — составляющая часть компьютера, комплекс программ, необходимых для работы с информацией. Самое распространенное ПО — операционная система Windows.  

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

Любая программа проходит 3 этапа: создание, применение и сопровождение. В процессе разработки ПО насчитывается 6 стадий:

Осторожно! Если преподаватель обнаружит плагиат в работе, не избежать крупных проблем (вплоть до отчисления). Если нет возможности написать самому, закажите тут

  • определение требований;
  • создание проекта;
  • разработка команд;
  • группировка всех компонентов;
  • проверка работоспособности (тестирование);
  • оформление сопроводительной документации.

Основные характеристики ПО:

  1. Любой процесс может быть выражен при помощи верной последовательности команд.
  2. Сложность разработки заключается в его абстрактности.
  3. Для создания нового ПО необходим компьютер с установленным программным обеспечением.
  4. Проектирование набора команд менее сложная работа, чем адаптация системы к пользователю и настройка управления.
  5. ПО — это средство для достижения цели.

Служебные программы

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

Сервисные программы

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

К группе утилит относятся:

  • диспетчер задач – это инструмент операционной системы, который имеет доступ к запущенным процессам и используемым ресурсам. Он позволяет снять задачу, процесс или программу, если они «зависли», либо запустить новый процесс;
  • архиваторы — программы, используемые для сжатия файлов;
  • дисковые утилиты — используются для работы с дисковым пространством: дефрагментации, проверки, очистки, разметки дисков;
  • средства мониторинга и тестирования оборудования — отслеживают конфигурацию и работоспособность устройств ЭВМ;
  • коммуникационные программы — организуют доступ к сети Интернет, и сопровождают информационный обмен между компьютерами.

Антивирусные программы

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

Рис. 3. Логотипы популярных антивирусных программ.

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

Что мы узнали?

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

  1. /10

    Вопрос 1 из 10

Системное программное обеспечение (ПО): что это

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

Состав

  • Операционные системы (ОС) – сложный программный комплекс для организации доступа пользователя к аппаратуре, управления железом. Выступает посредником между устройствами, микроархитектурой ПК и прикладным ПО.
  • Драйверы оборудования – библиотеки, организовывающие доступ к устройствам, управление ими, взаимодействие оборудования с приложениями и операционной системой.
  • Загрузчики – микропрограмма, загружающая исполняемый код в оперативную память.
  • Трансляторы – превращают исходный код в исполняемый. Иногда относятся к инструментальному ПО.
  • Сервисные утилиты, командные оболочки – служебное ПО, рассчитанное на обслуживание компьютера, оптимизацию, повышение безопасности и надёжности его работы.
  • Системные службы (сервисы) – автоматически выполняемые ОС приложения со специализированными функциями.
  • Операционные оболочки (shell) – среда для взаимодействия пользователя с ОС, упрощения отправки ей управляющих команд посредством командной строки (CLI) либо графического интернета (GUI).

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

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

Функции СПО

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

Каждую функцию можно разделить на множество мелких. 

Примеры программного обеспечения

Приведем несколько примеров разнообразного софта – так будет легче увидеть, насколько широкое это понятие.

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

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

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

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

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

Корпоративные системы. Программами пользуются компании и производства – не только обычные люди. CRM, CMS, ERP – все эти сложные аббревиатуры означают разные виды профессионального софта. Он предназначен для работы с бизнес-процессами:

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

Например, всем известная 1С относится как раз к категории корпоративных систем. Зарубежные системы вроде SAP – тоже.

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

Профессиональные программы. Еще есть специализированный софт для разных профессиональных задач. Например, AutoCAD для инженера или Blender для 3D-моделлера. Математики и аналитики могут работать в MATLAB или похожем ПО. А про инструментальный софт, нужный любому программисту, мы уже говорили.

Как создать программу самостоятельно

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

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

Другие термины на «П»

ПингПарсерПроксиПрефабПентестПротоколПайплайнПриложениеПеременнаяПолиморфизмПаттерн (шаблон)Программный кодПрограммированиеПоведенческие факторы
Все термины

Классификация ПО компьютера

ПО делятся главным образом на следующие виды.

По виду устройства и операционной системе (ОС)

Каждое ПО разрабатывается под конкретное устройство и его ОС. То есть одно и то же приложение на разных устройствах будет иметь абсолютно разный код.
Деление по ОС – Windows, Mac, Android.
Деление по виду устройства – ноутбук, компьютер, планшет, телевизор, телефон.

По пользовательскому режиму

Делят, основываясь на то, кто будет использовать ПК:

  • один пользователь;
  • группа пользователей (семья, офис.);
  • сетевое использование (доступен всем, у кого есть пароль и ключ).

По выполняемым функциям

Разделяются на:

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

По уровню устойчивости и работоспособности

По такому принципу выделяют:

  • стабильное ПО (готовая версия) – полностью готовая к использованию программа;
  • средне стабильное ПО (бета версия) – для стабильной работы нужны правки и улучшения;
  • нестабильное ПО (демо версия) – требуются регулярные обновления, причем изменения могут быть существенными.

По способу распространения

В данной классификации выделяют:

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

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