Все мы привыкли к персональному ПК и его быстроты работы и не все из нас понимают как устроена его работа и в особенности работы его сердца – Центрального процессора (ЦП или CPU).
Вся работа ПК запускается с помощью программ, а они в свою очередь пишутся на разных языках программирования. Но сами языки сложны для работы самого железа ПК, ведь ЦП понимает только ограниченный набор команд, и ему необходимо точно указывать, что делать. Наш процессор понимает очень простой бинарный код 001100111.
Поэтому ИТ индустрии возникла потребность в универсальном и эффективном языке программирования, который можно было бы использовать для разработки системного программного обеспечения. И поэтому был изобретен язык ассемблера. В языке ассемблера каждая команда обозначается короткой аббревиатурой (а не набором битов), и могут использоваться имена и другие цифры. Вот та же инструкция, что и выше, на языке ассемблера: mov al, 061h
Это значительно упрощает чтение и запись на ассемблере по сравнению с машинным языком. Однако у ассемблера все еще есть некоторые недостатки. Во-первых, языки ассемблера по-прежнему требуют большого количества инструкций для выполнения даже простых задач. Поэтому языки программирования продолжили свою эволюцию и появились языки высоко уровня.
Например, привела к появлению языка программирования Си. Си был создан Деннисом Ритчи в Bell Labs в начале 1970-х годов. Он был разработан как портативный язык низкого уровня, который можно было бы использовать для написания операционных систем и другого системного программного обеспечения для различных компьютерных архитектур. На этом эволюция продолжилась, чтобы решить проблемы удобочитаемости и переносимости, были разработаны новые языки программирования, такие как C++, Pascal (а позже и такие языки, как Java, Javascript и Perl). Эти языки называются языками высокого уровня, поскольку они предназначены для того, чтобы позволить программисту писать программы, не беспокоясь о том, на каком компьютере эта программа будет запущена.
C++ — это язык программирования, который развился из языка программирования Си. Он был разработан Бьярне Страуструпом в Bell Labs в начале 1980-х годов. C++ был создан для устранения некоторых ограничений C, сохраняя при этом его мощь и эффективность.
Одним из важных дополнений в C++ является поддержка объектно-ориентированного программирования (ООП).
C++ добавляет много новых функций в язык C, и, возможно, его лучше всего рассматривать как надмножество C, хотя это не совсем так (поскольку C99 представил несколько функций, которых нет в C++).
C++ был стандартизирован в 1998 году комитетом ISO (это означает, что комитет по стандартам ISO одобрил документ, описывающий язык C++, чтобы гарантировать, что все компиляторы придерживаются одного и того же набора стандартов). В 2003 году было выпущено небольшое обновление для этого языка (под названием C++03).
С тех пор было выпущено пять основных обновлений языка C++ (C++11, C++14, C++17, C++20 и C++23), каждое из которых добавляло дополнительные функциональные возможности. C++11, в частности, добавил огромное количество новых возможностей и считается новой базовой версией языка.
Философия языка Си и C++
Философию, лежащую в основе C и C++, можно кратко сформулировать как “доверяй программисту”, что одновременно прекрасно и опасно. C++ разработан таким образом, чтобы предоставлять программисту высокую степень свободы в том, что он хочет делать. Однако это также означает, что язык часто не мешает вам делать то, что не имеет смысла, потому что он будет предполагать, что вы делаете это по какой-то непонятной ему причине. Существует довольно много ловушек, в которые могут попасть начинающие программисты, если их застать врасплох. Это одна из основных причин, по которой знание того, чего вам не следует делать в C/C++, почти так же важно, как и знание того, что вам следует делать.
В каких сферах программирования хорош C++?
C++ превосходен в ситуациях, когда требуется высокая производительность и точный контроль над памятью и другими ресурсами. Вот несколько распространенных типов приложений, которые, скорее всего, были бы написаны на C++:
- Видеоигры
- Системы реального времени (например, для транспорта, производства и т.д.)
- Высокопроизводительные финансовые приложения (например, высокочастотная торговля)
- Графические приложения и моделирование
- Приложения для повышения производительности / офисные приложения
- Встроенное программное обеспечение
- Обработка аудио и видео
- Искусственный интеллект и нейронные сети