Best programming language for ai development in 2024

9 лучших языков программирования, используемых в ии

C/C++

Уровень: средний и продвинутый.Необходимые навыки: комплексный подход к решению, базовые знания ПК. Поскольку C и C++ ориентированы на низкоуровневое управление компьютерными ресурсами, полезно знать такие функции компьютера, как управление памятью.Области применения: настольные приложения и ПО, мобильные приложения, игровые движки и игры, VR, робототехника, cloud computing, веб-приложения.

Плюсы:

  • Более быстрое выполнение программ, чем в большинстве других языков программирования [C/C++].
  • Формирует основу для понимания более сложных языков программирования [C/C++].
  • Предпочтительный язык для разработки приложений для нескольких устройств и платформ .
  • Широкий спектр областей применения, таких как игры, приложения с графическим интерфейсом и математическое моделирование в реальном времени .
  • Облегчает доступ к заблокированным или скрытым объектам с помощью других языков программирования .
  • Высокая степень портативности .
  • Процедурно-ориентированный язык с группой функциональных модулей и блоков. Это упрощает отладку, тестирование и обслуживание программ .
  • Богатая библиотека функций .
  • Работает близко к системному оборудованию и предлагает низкий уровень абстракции [C/C++].
  • Поддержка обработки исключений и перегрузки функций .
  • Поставляется со стандартной библиотекой шаблонов (STL) — пулом готовых библиотек для различных структур данных, арифметических операций и алгоритмов .

Минусы:

  • Не подходит для новичков в программировании [C/C++].
  • Сложный синтаксис [C/C++].
  • Не поддерживает пространство имен программ .
  • Менее эффективная объектно-ориентированная система по сравнению с другими языками программирования на основе ООП .
  • Необходимо вручную создавать высокоуровневые конструкции .
  • Нет сборки мусора или динамического выделения памяти [C/C++].
  • Нет проверки во время выполнения [C/C++].
  • Нет строгой проверки типов .
  • Проблемы с переполнением буфера и повреждением памяти [C/C++].
  • Меньшая стандартная библиотека .

Пример синтаксиса (C++):

#include <iostream>




int main()

{

std::cout << "Hello World!" << std::endl;

}

Почему стоит изучать C++

Ни одно настоящее сравнение языков программирования не может обойтись без этой пары. C++ — прямой потомок языка C, который считается настоящим «динозавром» среди языков программирования. C был выпущен аж в 1997 году и продолжает активно использоваться и сегодня. Почти все низкоуровневые системы, такие как ОС и файловые системы, написаны на C/C++.

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

С другой стороны, этот язык чрезвычайно быстр, стабилен, масштабируем и эффективен. Именно поэтому C++ используют многие ресурсоемкие программы. Например, некоторые из самых красивых и популярных 3D-игр: Metro 2033, The Elder Scrolls V: Skyrim, Fallout 4, серии Assassin’s Creed, Battlefield/Battlefront, Medal of Honor, Need For Speed. Изучение C++ будет хорошим выбором для тех разработчиков, кто уже знаком с C и хочет работать над крупными проектами и иметь большой контроль над выполнением программ.

Где изучать

  • Официальная «Документация по языку C++» от Microsoft.
  • Курсы по специализации «Coding for Everyone: C and C++» от Coursera.
  • Курсы «C++ For C Programmers» от Coursera.
  • Курсы «C Programming For Beginners the C Language» от Udemy.
  • Видеокурсы «Основы C++. Программирование для начинающих» от SimpleCode.

Стратегии развертывания ИИ в реальных приложениях

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

Разработка API

 Разработка API (интерфейсов прикладного программирования) — это эффективный способ предоставить функциональные возможности системы искусственного интеллекта другим приложениям или службам. Вот некоторые из преимуществ разработки API для вашей системы ИИ:

  • Совместимость:  API-интерфейсы позволяют интегрировать вашу систему ИИ с другими системами и сервисами, делая ее более функциональной.
  • Масштабируемость:  API упрощают масштабирование вашей системы искусственного интеллекта, позволяя использовать ее нескольким приложениям или службам.
  • Гибкость:  API-интерфейсы обеспечивают гибкий способ взаимодействия с системой ИИ, упрощая настройку взаимодействия с пользователем.

Создание пользовательского интерфейса

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

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

Интеграция с существующими системами

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

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

Статистика AI-помощников

  • 54% опрошенных пользователей согласились, что ИИ-помощники облегчают их жизнь.
  • 31% пользователей заявили, что ИИ-помощники стали частью их повседневной жизни.
  • 55% пользователей заявили, что они стали использовать помощника с искусственным интеллектом, потому что он позволяет им использовать свои устройства без помощи рук, в то время как 23% сказали, что это весело, 22% заявили, что разговорная речь кажется более естественной, чем набор текста, а 14% сказали, что детям легче использовать.
  • Пользователи помощника по написанию текстов с искусственным интеллектом тратят на 80 % меньше времени на составление первых черновиков. – Джаспер ИИ
  • Разработчики, использующие помощника по кодированию, могут выполнять задачи до 55.8% быстрее, чем при работе в одиночку. – Microsoft Research
  • 92% респондентов используют голосовые помощники с искусственным интеллектом для онлайн-поиска, 75% используют их для установки напоминаний, а 73 используют их для отправки текстовых сообщений.
  • Google Assistant имеет точность навигации 98% и точность команд 86%, Siri имеет точность навигации 86% и точность команд 93%, а Alexa — 72% для навигации и 69% для команд.

В обозримом будущем годы рынок ИИ будет ежегодно расти почти на треть

По оценке IDC, глобальные расходы на внедрение технологий искусственного интеллекта в 2023 г. достигнут $154 млрд. В расходах учитываются затраты на программное и аппаратное обеспечение и сопутствующие услуги. Если прогноз сбудется, мировой рынок ИИ вырастет на 26,9% по сравнению с 2022 г. При среднегодовом темпе роста 27% в 2026 г. рынок расходов на ИИ достигнет $300 млрд.

По усредненным оценкам от крупнейших аналитических компаний, мировой рынок технологий «с применением ИИ» составил около $140 млрд и к 2030 г. вырастет до $1,76 трлн.

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

Этот сегмент в 2022 г. составил $30,4 млрд, по оценке Acumen Research and Consulting. Сегмент включает разработку алгоритмов и моделей, которые могут понимать естественный язык, распознавать изображения и речь. По прогнозам Acumen, к 2032 году объем глобального рынка когнитивных вычислений достигнет $239,5 млрд при среднегодовом темпе роста 23,2%.

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

Сегмент генеративного ИИ, решений, которые генерируют контент, будет расти на 34,3% с 2022 по 2030 г., по оценкам Acumen, и на 27% — по оценкам Precedence Research. Глобальный сегмент генеративного ИИ в 2022 г. оценивается в $10,6—10,8 млрд.

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

В 2022 г. наиболее широко использовались возможности ИИ при автоматизации роботизированных процессов (39%), в технологиях компьютерного зрения (34%), понимания текстов NL (33%) и при создании виртуальных агентов (33%), считают аналитики Стэнфорда.

Основными решениями, на которых пойдут 25% инвестиций в ИИ в 2023 г., станут усовершенствование ботов для обслуживания клиентов, а также программные консультанты и системы рекомендаций, считают аналитики IDC На втором месте по объему финансирования идут такие варианты применения ИИ, как ИТ-оптимизация, расширенные системы анализа угроз и предотвращения, анализ и расследование мошенничества.

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

В этом году пальму первенства, по оценке Стэнфорда, перехватят банки, торговые сети, поставщики профессиональных услуг и производство. А самая высокая динамика расходов на решения с применением искусственного интеллекта ожидается в медиаиндустрии — затраты будут увеличиваться более чем на 30,2%, по оценкам IDC.

What Programming Languages Shouldn’t You Use for AI?

Some languages aren’t well-suited for AI development. These are generally niche languages or languages that are too low-level.

  • PHP. PHP is a scripting language that’s popular for web development. However, it’s not flexible or robust enough for AI development.
  • Ruby. Ruby is another scripting language that’s popular for web development. But unlike Python, Ruby isn’t great at rapid prototyping — it will take longer to create a working AI system.
  • C. C is a popular low-level language among system administrators and embedded system developers. However, it’s not well-suited for AI development because it doesn’t have many high-level features.
  • Fortran. Fortran is chiefly popular among scientists and engineers. However, it’s hard to learn and doesn’t provide many quality-of-life features, making development difficult.

A good programmer can write an AI in nearly any programming language. It’s simply a matter of how complicated the process will be.

Разработка ИИ

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

 Вот некоторые из основных шагов, связанных с разработкой ИИ:

  • Выявление проблемы.  Первым шагом в разработке ИИ является определение проблемы, которую можно решить с помощью ИИ.
  • Сбор и подготовка данных.  Следующим шагом является сбор и подготовка данных для разработки ИИ, как мы обсуждали ранее в разделе III.
  • Выбор модели:  после сбора и предварительной обработки данных следующим шагом является выбор подходящей модели, которая может решить поставленную задачу. Это включает в себя выбор подходящего алгоритма, архитектуры и гиперпараметров.
  • Обучение:  после выбора модели следующим шагом будет ее обучение с использованием обучающих данных. Это включает в себя оптимизацию параметров модели для минимизации ошибки между прогнозируемым выходом и фактическим выходом.
  • Оценка:  после обучения модели следующим шагом является оценка ее производительности с использованием тестовых данных. Это включает в себя расчет таких показателей, как точность, воспроизводимость, полнота и оценка F1.
  • Развертывание.  Наконец, обученную модель необходимо развернуть в производственной среде, где ее можно использовать для прогнозирования или принятия решений.

Предварительная обработка данных

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

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

Выбор модели

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

  • Тип проблемы.  Тип проблемы (классификация, регрессия или кластеризация) играет решающую роль в выборе подходящего алгоритма.
  • Размер и сложность данных.  Размер и сложность данных определяют тип архитектуры и количество слоев в нейронной сети.
  • Гиперпараметры:  гиперпараметры, такие как скорость обучения, размер пакета и количество эпох, необходимо настроить для оптимизации производительности модели.

Обучение

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

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

Подготовка к разработке ИИ

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

Определение проблемы, которую нужно решить с помощью ИИ

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

Сбор и подготовка данных для разработки ИИ

 После выявления проблемы следующим шагом будет сбор и подготовка данных для разработки ИИ. Вот некоторые из основных этапов этого процесса:

  • Сбор данных.  Первым шагом является сбор соответствующих данных, которые можно использовать для обучения системы ИИ. Эти данные могут быть в форме структурированных данных (таких как данные в базе данных) или неструктурированных данных (таких как текст, изображения или аудио).
  • Очистка данных:  после того, как данные были собраны, их необходимо очистить, чтобы удалить любой шум, ошибки или несоответствия. Это включает выявление и исправление ошибок, удаление дубликатов и стандартизацию формата данных.
  • Предварительная обработка данных:  после очистки данных следующим шагом является их предварительная обработка, чтобы сделать их пригодными для разработки ИИ. Это может включать такие задачи, как извлечение признаков, нормализация или преобразование.
  • Маркировка данных:  если данные неструктурированы, их необходимо пометить, чтобы обеспечить правильный вывод для алгоритма ИИ. Это может включать такие задачи, как аннотация изображений или классификация текста.
  • Разделение данных:  после очистки и предварительной обработки данных их необходимо разделить на наборы для обучения, проверки и тестирования. Учебный набор используется для обучения алгоритма ИИ, проверочный набор используется для настройки гиперпараметров модели, а тестовый набор используется для оценки производительности модели.

Выбор правильных инструментов и платформ для вашего проекта ИИ

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

Облачные платформы

 Облачные платформы, такие как AWS , Google Cloud и Microsoft Azure, предоставляют ряд услуг и инструментов, упрощающих разработку, развертывание и управление приложениями ИИ. Вот некоторые из преимуществ использования облачных платформ для разработки ИИ:

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

Фреймворки и библиотеки

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

  • TensorFlow:  TensorFlow — это платформа с открытым исходным кодом, разработанная Google, которая предоставляет ряд инструментов для создания и обучения моделей машинного обучения.
  • PyTorch:  PyTorch — это платформа с открытым исходным кодом, разработанная Facebook, которая предоставляет ряд инструментов для создания и обучения моделей машинного обучения.
  • Scikit-learn:  Scikit-learn — это библиотека с открытым исходным кодом, которая предоставляет ряд инструментов для построения и обучения моделей машинного обучения, включая классификацию, регрессию и кластеризацию.

Языки программирования

 Языки программирования играют решающую роль в разработке ИИ, и некоторые из популярных языков, используемых в разработке ИИ:

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

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

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

Google — использует генеративный ИИ для создания новых продуктов и услуг, таких как:

  • Bard — сервис для создания музыки с помощью генеративного ИИ. Он позволяет пользователям выбирать жанр, настроение, инструменты и другие параметры, а затем генерирует оригинальную музыкальную композицию.
  • Maker — сервис для создания логотипов с помощью генеративного ИИ. Он позволяет пользователям вводить название бренда, выбирать цвета, шрифты и стили, а затем генерирует несколько вариантов логотипов.
  • Duplex — сервис для создания разговорных агентов с помощью генеративного ИИ. Он позволяет пользователям делегировать некоторые задачи, такие как бронирование столиков в ресторанах или запись на прием к врачу, агентам, которые могут имитировать естественный человеческий голос и язык.
  • OpenAI — одна из ведущих организаций в области генеративного ИИ. Она использует генеративный ИИ для создания текстов, изображений, музыки и игр, таких как:
  • GPT-4 — модель генеративного ИИ для создания текстов на основе заданного ввода. Она может генерировать различные виды текстов, такие как статьи, эссе, резюме, рецензии, стихи и другие.
  • DALL-E — модель генеративного ИИ для создания изображений на основе заданного текстового описания. Она может генерировать различные виды изображений, такие как портреты, пейзажи, диаграммы, комиксы и другие.
  • Jukebox — модель генеративного ИИ для создания музыки на основе заданного жанра, артиста или текста. Она может генерировать различные виды музыки, такие как поп, рок, джаз, классика и другие.
  • Codex — модель генеративного ИИ для создания кода на основе заданного языка программирования или описания задачи. Она может генерировать различные виды кода, такие как веб-сайты, приложения, игры и другие.

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

  • StyleGAN — модель генеративного ИИ для создания фотореалистичных изображений лиц людей или животных. Она может генерировать различные виды изображений, такие как портреты знаменитостей, карикатуры, маски и другие.
  • Omniverse — платформа для создания и совместной работы над 3D-сценами с помощью генеративного ИИ. Она позволяет пользователям создавать и редактировать 3D-объекты, физику, освещение и звук в реальном времени.
  • Maxine — платформа для создания и улучшения видеоконференций с помощью генеративного ИИ. Она позволяет пользователям применять различные эффекты и функции к своему видео, такие как сжатие, улучшение качества, перевод, анимация и другие.

IBM — использует генеративный ИИ для создания новых решений в области здравоохранения, образования и бизнеса, таких как:

  • Watson — платформа для создания и использования интеллектуальных приложений с помощью генеративного ИИ. Она позволяет пользователям анализировать данные, получать ответы на вопросы, рекомендации и прогнозы в разных областях, таких как здравоохранение, образование, бизнес и другие.
  • Project Debater — модель генеративного ИИ для создания аргументов и дебатов на основе заданной темы. Она может генерировать различные виды аргументов, такие как факты, примеры, цитаты, логика и эмоции.
  • Neuralink — модель генеративного ИИ для создания нейронных сетей на основе заданных параметров. Она может генерировать различные виды нейронных сетей, такие как сверточные, рекуррентные, генеративно-состязательные и другие.

Facebook — использует генеративный ИИ для создания новых способов общения и социального взаимодействия, таких как:

  • Reels — сервис для создания коротких видеороликов с помощью генеративного ИИ. Он позволяет пользователям добавлять различные эффекты и фильтры к своему видео, а также делиться ими с другими пользователями.
  • Horizon — платформа для создания и посещения виртуальных миров с помощью генеративного ИИ. Она позволяет пользователям создавать и редактировать свои собственные виртуальные миры, а также взаимодействовать с другими пользователями в режиме реального времени.
  • Blender — модель генеративного ИИ для создания разговорных агентов с помощью генеративного ИИ. Она может генерировать различные виды диалогов, такие как маленькая беседа, юмор, эмпатия и другие.

Prolog

Prolog is a logic programming language often used in artificial intelligence software and computational linguistics. The language was developed by Alain Colmerauer and Philippe Roussel in 1972. Its creation was inspired by the Horn clause concept, a logical formula implemented in a rule-like form that has useful properties used in logic programming.

Prolog is primarily a declarative programming language meaning that program logic is expressed through relations between facts and rules. A computation in Prolog is carried out by running a query over the implemented relations.

As the most popular logic programming language nowadays, Prolog is used for programming expert systems, proving theorems, automated planning, and natural language processing. In general, Prolog would be suitable for any task that involves the heavy use of rule-based logical queries such as database interfacing and voice control systems.

Prolog is valued in the AI community for its impressive track record of solving tough AI problems. Some developers are fans of its declarative semantics. It is capable of effectively expressing problem relationships in AI through its inherent inference mechanisms. Prolog also has a rich set of extensions that accelerate the development process.

Prolog’s complex logic often leads to errors due to developer mistakes. This imposes a challenge since the language does not offer great tools for debugging. Therefore, quality assurance for Prolog programs is challenging and requires procedural interpretation.

Prolog has been used to create a fair share of AI libraries. For example, Zamia-AI is a framework that provides components and tools to develop open-source speech and natural language processing systems. The Prolog-based mlu, cplint, and cplint_datasets machine learning libraries also prove to be very handy tools for implementing artificial intelligence.

Summary

Pros:

  • Declarative semantics
  • Built-in mechanisms for inference
  • Extensibility

Cons:

  • Complex logic leads to errors
  • Poor testability

Top use cases:

Logic programming

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

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