571

Оcновные отличия языков С и С++ | itschool.ua

Оcновные отличия языков С и С++ | itschool.ua

17 02
C — это императивный язык структурированного программирования высокого уровня. Он является прототипом языка C++. О том, чем они отличаются, мы расскажем в этой статье. 
 

История языка С


До открытия C люди использовали ПО языка B, разработанного Кеном Томпсоном и Денисом Ричи в Bell Labs в 1969 году. Язык C создал в 1972 году Деннис Ричи. На нем было успешно реализовано ядро ​​операционной системы Unix в 1973 году. Он стал очень популярным после 1980 года. Его начали применять для разработки ОС и различных приложений. 
 

Основные элементы языка C


В языке C есть линейные и блочные комментарии. Комментарии блока появляются между последовательностью символов «/ *» и «* /». Строчный или линейный комментарий начинается с последовательности «//» и заканчивается разрывом строки.
Базовые типы: bool, char, usigned char, signed char и int.
В C байт не может быть меньше 8 бит. Это наименьший объем данных, который можно адресовать.

 


Характеристики языка C++


Это парадигмальный язык, означающий, что одновременно можно использовать несколько различных типов ПО. C ++ создал в 1979 году Бьярн Страуструп как объектно-ориентированное расширение языка C. Он  используется для создания программного обеспечения и компьютерных игр. На этом языке чаще всего пишутся приложения для Windows и Linux. Возможность передавать исходный код между платформами создает множество возможностей для разработчиков.
В соответствии с данными исследования IТ-сообщества 2020 года, для 51% разработчиков встраиваемых систем это основной язык программирования, а 25% профессиональных разработчиков начинали с этого языка. Он остается непревзойденным, когда речь идет о высокобюджетных компьютерных играх, встроенном ПО, системном программировании. Amazon был основан на языке C++, а также на операционных системах Windows. 
 
Доступные типы программного обеспечения C++: 
  • процедурное, 
  • объектно-ориентированное,
  • универсальное.

 


Различия между С и С++


C ++ изначально разрабатывался как «C с классами». Страуструп добавил к нему больше элементов и улучшений. Новые возможности языка C ++ по сравнению с языком ANSI C 1989 года включены в стандарт языка C с 1999 года (так называемый C99). В C ++ появилась объективность, которая является теоретической для C. 
 
Объектно-ориентированное программирование:
  • классы как расширение структуры с функциями компонентов, инкапсуляцией, наследованием и полиморфизмом;
  • объекты, являющиеся экземплярами классов;
  • наследование (включая множественное);
  • виртуальные методы (функции компонентов);
  • конструкторы (добавлена ​​возможность запретить неявное преобразование конструктором с использованием явного);
  • деструкторы — функции, вызываемые неявно перед (строго определенным) удалением объекта;
  • операторы new и delete;
  • проверка динамического типа (RTTI) во время выполнения — преобразование между связанными типами классов и определение типа во время выполнения (операторы dynamic_cast и typeid);
  • ключевое слово this (доступ к объекту, для которого вызывается метод);
  • указатели на компоненты (поля и методы);
  • статические методы и поля.
Механизмы инкапсуляции:
  • функции-члены;
  • частные, защищенные и публичные разделы;
  • дружеские функции и классы.
Общие средства программирования:
  • шаблоны классов и функций;
  • включение стандартной универсальной библиотеки STL в стандартную библиотеку. 
Обработка исключений:
  • объявление перехвата исключения;
  • объявление для вызова исключения: throw;
  • объявление ограничивающих исключений: throw (...) (определение того, какие исключения могут быть переданы из данной функции/метода)
Общие изменения:
  • оператор пространств имен и области действия;
  • определение переменных и объектов как обычных операторов;
  • динамическая инициализация глобальных переменных и локальных статических переменных;
  • возможность доступа к переопределенной глобальной переменной с помощью оператора;
  • ключевые слова const, volatile (также C99) и изменяемые (удаление модификатора const из указанного поля, если он был задан для всего объекта);
  • встроенные функции и операторы перезагрузки;
  • новый логический тип bool и константы true и false.

 


Важные версии C++


  • C++ 11— выпуск через 8 лет после предыдущей версии. Он представил лямбда-выражения, улучшения в реализации умных указателей, возможность автоматического присвоения типа или замены NULLна nullptr. Было действительно много изменений, в том числе и в стандартной библиотеке, где среди прочего были новые структуры данных (например, кортежи), класс std::threadдля упрощения обработки потоков, шаблон функции std::async, позволяющий асинхронные вызовы.
  • C++ 14— расширена возможность вывода типов за счет использования этой языковой функции в лямбда-выражениях или возвращаемых типах.
  • C++ 17— дальнейшее расширение вывода типов, добавляющее возможность использования if и lambd в конструкции constexpr (то есть той, значение которой указывается во время компиляции). В стандартной библиотеке, например std::optional, есть шаблон класса, содержащий необязательное значение, std::filesystem, то есть унифицированный способ работы с файловой системой.
 

Изучение С++: с чего начать


Обучение программированию чаще всего начинается с изучения C/C++ с нуля, а затем переходит к Java и C#. Єто не обучение по памяти. Важно умение искать знания, изучать документацию и пытаться решать проблемы самостоятельно. Именно понимать, а не повторять избитые фразы. 
Распространенная ошибка — учиться только по русскоязычным сайтам и материалам. Ограничиваться только книгами точно не стоит. Печатные материалы быстро теряют актуальность. Самые свежие и самые актуальные знания дают курсы С++ онлайнот преподавателей практиков Main School, форумы коллег и англоязычный интернет. Чем раньше вы привыкнете к этому языку, тем лучше. Без английского невозможно двигаться дальше.
 
Несмотря на ограничения печатных источников, не следует полностью отказываться от них, поскольку они являются хорошей опорой. 
  • C ++ Primer Plus— очень хорошо написанный учебник Стивена Прата по C++ 11);
  • «Эффективный современный C ++» — хорошая поддержка в изучении новейших стандартов языков программирования (C ++ 11 и C ++ 14);
  • C ++ Primer— пятое издание книги Стэнли Липпмана, которую также часто рекомендуют разработчики, чтобы начать изучать Си плюс плюс онлайн;
  • Алгоритмы без секретов — изучая программирование, стоит окунуться в мир алгоритмов;
  • «Чистый код» Роберта С. Мартина — книга, которая рассказывает о том, как писать чистый код с хорошей структурой, и какие стоит усвоить хорошие привычки с самого изучения программирования.
 
Хороший программист никогда не перестает учиться. Если вы собираетесь серьезно относиться к программированию и связать с этим занятием свою жизнь, привыкайте к постоянному развитию своих навыков. Надеемся, что приведенные выше материалы и рекомендации пригодятся вам в этом.

Комментарии ()

    Написать комментарий

    Обратная связь