Для чего хорош C++?
С++ — это как Си, только с ООП[1. Строго говоря, это не совсем верно. Хотя C++ произошёл от Си, с тех пор оба языка изменились и стали совершенно разными. Вы можете писать на C++ без ООП и использовать ООП в Си. ООП — это скорее подход или методология, а не конкретная функциональность. Но в C++ однозначно больше возможностей для реализации принципов ООП.].
- можно работать с памятью на низком уровне;
- нет «виртуальных машин» или фреймворков, которые занимаются, например, сборкой мусора или выделением памяти;
- быстрое (иногда очень быстрое) выполнение кода по сравнению с более высокоуровневыми языками (Python, C#, Java и другими);
- полный доступ к API операционной системы без обёрток (в которых может быть реализовано не всё).
Но чем больше силы, тем больше ответственности. По сравнению с языками более высокого уровня, на С++ проще ошибиться. Причём так, что компилятор не подскажет и вы сразу не поймёте, в чём дело.
C++ хорош для проектов, в которых важна производительность кода.
Где применяется С++?
В недавнем интервью по ссылке ниже создатель языка рассказал, что C++ используют практически во всех областях. Мы выделим три направления, в которых лучше всего раскрываются преимущества языка.
Оптимизация
Перепишите любой код с языка более высокого уровня на C++, чтобы программа работала быстрее. Так часто делают в сфере глубокого обучения и других алгоритмических областях, где важна скорость. Подход может выглядеть так:
- пишу код на Python;
- заставляю работать нейросеть, которая решит мою проблему;
- переношу код на C++.
Но это не всегда приносит пользу: иногда быстрая разработка важнее производительности, или выгода от переноса кода на C++ совсем незначительна.
В инди-играх обычно используются высокоуровневые языки и игровые движки (C# и Unity, Java и jMonkeyEngine), но на том же Unreal Engine можно создавать игры и на C++. Множество игр AAA-класса пишутся на C++ по нескольким причинам:
- топовые игры надо хорошо оптимизировать, а С++ достаточно гибкий для этого. Но вместе с тем на нём удобно писать в ООП-стиле, не спускаясь до очень низкого уровня;
- использование собственного движка для полного контроля любых игровых механик. Да, так делают не всегда, но часто — в основном из-за проблем с лицензиями и необходимостью делить прибыль с продаж;
- кроссплатформенность: игра должна хорошо работать на всех поддерживаемых устройствах. Хотя многие движки по умолчанию предоставляют эту особенность, она не всегда эффективна: у кого-то игра может работать быстрее, а у кого-то медленнее. Код пишется так, чтобы оптимизировать компиляцию в бинарные файлы на разных платформах.
GPU-вычисления
Nvidia CUDA и OpenCL — две платформы, позволяющие запускать код C++ на графическом процессоре. GPU содержат сотни небольших вычислительных ядер, которые могут одновременно выполнять простые математические операции. Написав код для GPU, распараллеливающий сложные вычисления, можно добиться очень высокой производительности и скорости. C++ отлично подходит для этого.
Среди возможных применений:
- майнинг биткоинов: код на C++ помогает майнить быстрее;
- обучение нейросетей: большинство библиотек Deep Learning используют C/C++ код на CUDA или OpenCL, чтобы нейросети обучались и работали быстрее. Однако многие функции доступны как на C++, так и на более высокоуровневых языках;
- шейдеры для игр и графического ПО. Шейдеры — небольшие участки кода, параллельно запускающиеся на GPU и выполняющие сложные графические задачи (например, трассировку лучей).
Чтобы работать с языком было комфортно, нужно выбрать хорошую среду разработки. Это поможет сделать наша подборка с популярными IDE для программирования на C++.
Что это такое, и для чего используется? (14 фото)
Порой производители различных товаров удивляют нас своими новинками, о которых мы ранее не слышали. Но, как говорится, почему бы и нет, если на такие товары всегда находятся свои покупатели. Как вы думаете, что это такое, и для чего этот предмет может вообще использоваться?
В преддверии зимы британская компания Nosewarmer представила свой новый товар: шапки для носа. Да, вы всё правильно поняли, именно шапки для тех, у кого постоянно мерзнет нос. Эта идея пришла в голову основателю компании, который ранее был вынужден носить вязанную насадку для носа.
А вы бы купили такую «шапку»?
Что такое RFID и для чего она используется?
Если вы купили визитницу, бумажник или кошелек, на бирке которого (или на нем самом) сказано, что здесь есть функция блокировки RFID, вы, вероятно, зададитесь вопросом, а что это, вообще, за RFID такой и будут ли ваши кредитные и дебетовые карты в безопасности рядом с этой штуковиной. На вопрос о том, что такое RFID, а также о том, как он работает, мы решили дать ответ в этом материале, и если после его прочтения у вас останутся еще какие-то вопросы, обязательно задавайте их в комментариях.
Что такое RFID?
Давайте сначала разберемся с самым простым вопросом. RFID – это довольно неуклюжее сокращение от Radio Frequency Identification, что переводится на великий и могучий как радиочастотная идентификация. Полное название – это ключ к пониманию того, как эта технология работает. RFID использует радиоволны для отправки информации на очень маленькие и простые устройства. В то время как статьи и теории о системах, подобных RFID, были впервые опубликованы в 1940-х годах, первые реальные практические применения и устройства с функцией RFID появились в середине 1970-х годов. В некотором смысле, RFID является более простой версией технологии NFC (Near Field Communication), которую многие смартфоны Android используют для цифровых платежных систем, таких как Samsung Pay и Android Pay.
Для чего используется RFID?
Устройства с RFID используются повсеместно. Чипы RFID находятся внутри идентификационных бэйджей для дополнительной безопасности и для обеспечения доступа в ограниченные зоны. RFID-метки размещаются на таких предметах, как одежда и другие товары, предназначенные для розничной продажи, не только для обеспечения большей безопасности, но и для более эффективного отслеживания их доставки до магазина. Все больше и больше кредитных и дебетовых карт имеют встроенные RFID-чипы, чтобы предложить лучшую и более безопасную систему бесконтактной оплаты с использованием специальных считывающих устройств. Метками снабжается багаж в аэропорту, чтобы его было проще отслеживать. И даже домашние животные теперь чипируются метками RFID, чтобы их можно было идентифицировать, если они потеряются, а также в метках содержится информация о ветеринарном осмотре.
Как работают устройства RFID?
На самом деле есть два разных типа RFID-устройств или меток. Более распространенным чипом, используемым в кредитных и дебетовых картах, является «Пассивный RFID». Тег, использующий эту технологию, не имеет внутреннего источника питания. Вместо этого он получает питание, когда соприкасается с другим устройством, таким как считыватель RFID-чипов. Считыватель отправляет радиоволны на пассивную метку RFID, активируя ее, а также считывает информацию с метки в виде идентификационного номера.
Другой тип метки RFID использует технологию «Активный RFID». Эти метки имеют маленькую встроенную батарею, которая служит их собственным источником питания. Поэтому они могут отправлять свои собственные радиоволны для передачи любой информации, закодированной в теге, соответствующему считывателю. Опять же, это очень похоже на то, как работает NFC.
Пассивные метки RFID имеют ограниченный диапазон; теоретически их можно использовать на расстоянии около 6 метров от считывателя. Активные RFID-метки имеют гораздо большую дальность, до 30 метров и более.
Является ли использование меток RFID безопасным и надежным?
Радиоволны, которые исходят от метки RFID или считывателя RFID, находятся в низкочастотном диапазоне. Другими словами, нет абсолютно никакого риска для здоровья при использовании или хранении устройств с чипами RFID. Тем не менее, кто-то может создать устройство, которое могло бы считывать информацию, встроенную в метку RFID, такую как та, что находится на кредитных и дебетовых картах, с небольшого расстояния. Зарегистрированные случаи этого на самом деле происходят довольно редко, но предосторожность никогда не помешает и именно поэтому визитницы с RFID-защитой в наши дни стали довольно распространенным явлением.
Делитесь своим мнением в комментариях под этим материалом и в нашем Telegram-чате.
Язык программирования C#: краткая история, возможности и перспективы
Обзорная статья на тему С#. Кратко рассказываем о том, зачем этот язык нужен, где его учить и как им пользоваться.
С# («Си Шарп») – один из наиболее быстро растущих, востребованных и при этом «удобных» языков программирования. Это модификация фундаментального языка С от компании Microsoft, призванная создать наиболее универсальное средство для разработки программного обеспечения для большого количества устройств и операционных систем.
Краткая история C# и его характеристики
С# – это объектно-ориентированный язык программирования. Он был создан в период с 1998 по 2002 год командой инженеров Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота.
Язык входит в семью С-подобных языков. Синтаксис приближен к Java и C++. Его особенности:
поддерживается перегрузка операторов,
доступна делегация, атрибуты, события, обобщенные типы и анонимные функции.
Разработка Microsoft много особенностей унаследовала у Delphi, Smalltalk и Java. При этом создатели нового языка исключили из своего детища многие практики и спецификации, считающиеся «проблемными».
Основные преимущества языка
С# популярен за счет своей «простоты». Простоты для современных программистов и больших команд разработчиков, чтобы те могли в сжатые сроки создавать функциональные и производительные приложения. Этому способствуют нетипичные конструкции языка и специфичный синтаксис, помогающий максимально органично реализовать намеченные функции.
Популярность языка – еще одно значимое преимущество. Большое количество поклонников C# способствуют его развитию. Также это благоприятно влияет на рост числа вакансий, связанных с разработкой на языке Microsoft. Программисты, хорошо знакомые с С#, востребованы в индустрии, несмотря на их большое и постоянно увеличивающееся количество.
Понятный синтаксис C# заметно упрощает не только разработку как таковую, но и другие важные аспекты совместной работы, например, чтение чужого кода. Это упрощает процесс рефакторинга и исправления ошибок при работе над приложениями в больших командах.
Также нельзя не упомянуть низкий порог вхождения. С# – популярная и достаточно простая в освоении технология. Уже через полгода можно поднатореть в разработке и начать делать полноценные программы.
Что разрабатывают с помощью С#
Язык C# практически универсален. Можно использовать его для создания любого ПО: продвинутых бизнес-приложений, видеоигр, функциональных веб-приложений, приложений для Windows, macOS, мобильных программ для iOS и Android.
Видеоигры
C# без преувеличения крайне популярен среди создателей видеоигр. Язык используется для разработки игр под Windows, macOS, Android и iOS. Все дело в Unity – платформе для работы с 3D-графикой. С# лучше остальных языков адаптирован под работу с этим движком. Поэтому программисты обычно не выбирают, а сразу используют связку Unity + C#.
Из популярных проектов стоит выделить такие хиты игровой индустрии, как Bastion (кросплатформенная РПГ-адвенчура с изометрическим видом), Wasteland (популярный шутер в пост-апокалиптической вселенной), знаменитый Doom 3 и Hearthstone (карточная игра во вселенной World of Warcraft, созданная силами Blizzard).
ПО для защиты систем
Безопасность ваших программ и операционных систем обеспечивается благодаря мощным утилитам на базе C#. Колоссальное количество вирусов, на ежедневной основе атакующих компьютеры пользователей, блокируется инструментами, созданными с помощью языка Microsoft. Аналогичная ситуация наблюдается в крупном бизнесе – мировые корпорации защищаются от хакерских атак с помощью ПО, написанного на С#.
Приложения для Windows
Практически вся операционная система Microsoft существует благодаря С#. Привычные вам утилиты и приложения созданы с использованием этого языка и фреймворков, разработанных для него.
В эту категорию попадает мессенджер Skype, браузер Internet Explorer, среда для разработки Visual Studio 2012, Microsoft Office (все его составляющие, включая Word, PowerPoint, Excel, Outlook и так далее).
Сюда же можно отнести продукты компании Adobe (Photoshop, Lightroom), браузер Mozilla Firefox и Winamp.
Мобильные приложения
В некоторых кругах программистов С# считается чуть ли не лучшим языком для проектирования мобильных приложений. Все благодаря возможности создавать с помощью этого языка нативные программы для любых платформ (iOS, Android). Для создания приложений, которые идеально работают на Айфоне и на Андроид-смартфонах, используется IDE Xamarin.
Из известных программ, написанных на С#, стоит отметить Slack, Pinterest, Tableau, The World Bank и другие. «Плиточные» программы, появившиеся в Windows 8, практически все построены на базе C# и XAML.
Как стать C#-разработчиком?
Перед началом необходимо ознакомиться с основами языка, синтаксисом и т.п. Для этого стоит прочитать один из актуальных учебников по разработке на С#. Опытные программисты рекомендуют руководство по созданию программ с использованием платформы .net, размещенное на сайте metanit.com.
Тем, кто вообще не разбирается в программировании и только начинает его изучать, следует разыскать книгу Чарльза Петцольда «Код» и запастись всеми любимыми руководствами в духе «Грокаем алгоритмы». Этого должно быть достаточно на ранних этапах знакомства с языком.
Какие программы и технологии изучать?
Есть шесть ключевых программных продуктов, на изучении которых стоит сосредоточиться в первую очередь:
Windows Presentation Foundation – фреймворк для быстрого создания интерфейсов.
Xamarin – фреймворк, добавляющий C# функции компилирования кода с адаптацией под различные платформы, включая Windows, Android и iOS. Проще говоря, он делает ПО универсальным.
ASP.NET – технология для создания «мостов» между серверным кодом и клиентской частью программ.
Entity – фреймворк для взаимодействия с базами данных как с объектами.
Language Integrated Query – технология с собственным синтаксисом для фильтрации данных. Под данными подразумевается любой тип, включая массивы, структуры, отдельные файлы и целые БД.
Visual Studio – основная среда для разработки программ на языке С#.
По ходу изучения и с появлением опыта этот список увеличится. Появятся новые фреймворки, возможно, изменится IDE, появятся дополнительные технологии, необходимые для реализации некоторых функций и т.п.
Где можно научиться программированию на С#?
В сети хватает школ, где учат разработке приложений на различных языках. Например, Яндекс.Практикум. Там есть довольные дорогие, но эффективные курсы по созданию программ на базе C#.
Есть Coursera, где учат вообще всему на этой планете, в том числе и программированию. Стоимость курсов на этой площадке варьируется, но при желании всегда можно выбить хорошую скидку, если сослаться на плохое финансовое положение.
Есть школы в духе Skillbox и GeekBrains. На них тоже есть соответствующие курсы, причем со льготной оплатой (сначала вас учат и стажируют, а потом просят оплатить обучение) и изначально невысокими ценами.
Вместо заключения делаем простейшую программу на С#
Итак, быстро приступаем к разработке своей первой программы на языке C#. Будем делать простейший калькулятор.
Загружаем программу Visual Studio.
В окне приветствия выбираем пункт Create a new project.
Указываем язык C#, систему – Windows, а тип – Console.
Потом даем имя созданной программе и выбираем место на диске, куда она будет сохранена.
Перед вами появится код базовой программы, выводящий в консоль фразу «Hello World». Стираем его.
Затем добавляем переменные с помощью встроенного типа int. Например, int a = 10, int b = 20.
Создаем переменную resultSum для сложения, введя код int result = a + b.
А затем вписываем Console.WriteLine(resultSum) и Console.ReadKey().
Ваша программа выведет в консоль результат вычисления (в нашем случае 30). Можно заменить переменные, добавить результат деления, умножения и т.п. В общем, усложнить код как вздумается.
На этом все. Базовое знакомство с C# завершено. Теперь вы знаете, где учить язык, для чего он нужен и как сделать хотя бы маленькую, но рабочую программу. Дальше дело за опытом и упорным обучением.