Обзор различий между C, C++ и C#
https://link.zhihu.com/?target=https%3A//csharp-station.com/understanding-the-differences-between-cc-and-c/Перевод статьи взят по этой ссылке
01. Язык Си
Деннис Ритчи создал язык C в 1972 году и опубликовал его в 1978 году. Ритчи разработал C с первоначальным намерением разрабатывать новые версии Unix . До этого в Unix использовался язык ассемблера , который представляет собой самый низкий . Рождение языка C произвело революцию в программировании и операционных системах . Остальное, как говорится, уже история.
- C также является языком программирования низкого уровня, и его эффективность близка к эффективности ассемблера .
- Он обеспечивает базовый способ доступа к памяти и требует очень незначительной поддержки во время выполнения.
- Из-за возраста C использование C может привести к некоторым улучшениям безопасности (меньше пользователей, меньше вероятность хакерских атак).
Разработчики до сих пор используют его для операционных систем, разработки программного обеспечения на уровне ядра, драйверов оборудования и приложений, которым необходимо работать со старым кодом. (Достаточно взглянуть на TIOBE, который в декабре 2019 года занял второе место, уступая только Java)
02、С++
C ++ можно назвать расширенной версией C. Он был разработан Бьярном Страуструпом, датским доктором философии (Ph.D.). Его целью было усовершенствовать язык C и добавить к нему объектно-ориентированные возможности, не жертвуя при этом скоростью и эффективностью .
- C++ считается языком среднего уровня , поскольку он основан на языке C низкого уровня и обладает некоторыми расширенными возможностями.
- В то же время C++ стал еще одним высокопроизводительным языком программирования. Он будет работать с C при разработке операционных систем , а также используется в некоторых высокопроизводительных серверах и программном обеспечении для ПК.
- C++ позволяет писать кроссплатформенные программы и широко используется во многих областях, таких как разработка игр, системное программирование и т. д. (Например, известный King of Glory использует C++).
03、С#
C# — объектно -ориентированный язык программирования высокого уровня , также созданный как расширение C. Он был разработан в 2002 году Андерсом Хейлсбергом, руководителем команды Microsoft. Он основан на **.NET Framework**, но его ядром по-прежнему является язык C.
- C# компилирует код в байтовый код вместо машинного кода (двоичный код 0101).
- Он работает на виртуальной машине , которая на лету преобразует байт-код в машинный код .
- На основе языка C добавлены такие функции, как сборка мусора , проверка неинициализированных переменных , проверка привязки и проверка типов.
Говоря об этом, C# имеет некоторые функции, похожие на Java, а также принципы JVM и т. д.
C# чаще используется для внутренних или корпоративных приложений, а не для коммерческого программного обеспечения. Его можно найти в разделах «Разработка на стороне клиента и сервера в .NET Framework».
Краткое описание различий
C, C++ и C# — это три разных языка программирования, которые сильно различаются по целям разработки , функциям и областям применения . Вот как они сравниваются:
- Парадигма программирования:
- C: C — процедурный язык программирования , ориентированный на написание процедур и функций .
- C++: C++ — это многопарадигмальный язык программирования, поддерживающий как процедурное , так и объектно-ориентированное программирование . Он знакомит с понятиями классов и объектов, позволяя использовать объектно-ориентированные функции, такие как инкапсуляция, наследование и полиморфизм.
- C#: C# — это многопарадигмальный язык программирования, который в первую очередь объектно-ориентирован , а также поддерживает процедурное и универсальное программирование. Он предназначен для взаимодействия с платформой .NET и поддерживает компонентно-ориентированное программирование .
- Управление памятью:
- C: В C разработчикам необходимо вручную управлять памятью , включая выделение и освобождение памяти.
- C++: C++ обеспечивает автоматическое управление памятью , но по-прежнему позволяет управлять памятью вручную. Он вводит конструкторы и деструкторы для управления жизненным циклом объектов.
- C#: C# работает на платформе .NET, имеет механизм сборки мусора и автоматически управляет памятью . Разработчикам не нужно вручную выделять или освобождать память.
- Совместимость платформы:
- C: Код C обычно имеет хорошую совместимость с платформами и может быть скомпилирован и запущен в нескольких операционных системах .
- C++: код на C++ также имеет определенную совместимость с платформами, но может потребовать определенных корректировок, когда речь идет о таких аспектах, как графический интерфейс пользователя (GUI).
- C#: C# в основном тесно связан с платформой .NET и поэтому более распространен в средах Windows. Хотя он может работать на других платформах через Mono и .NET Core, в основном он основан на Windows .
- Метод компиляции и исполнения:
- C: Код C обычно компилируется в машинный код и выполняется непосредственно на оборудовании .
- C++: код C++ также компилируется в машинный код , но вводятся объектно-ориентированные концепции, позволяющие создавать классы и объектно-ориентированные структуры.
- C#: код C# компилируется в промежуточный язык (IL), а затем выполняется в среде выполнения .NET. Этот подход позволяет обеспечить кросс-платформенную работу и некоторую оптимизацию во время выполнения.
- Области применения:
- C: C обычно используется для программирования на уровне системы, встроенных систем и приложений, критичных к производительности.
- C++: C++ широко используется при разработке игр, приложений с графическим интерфейсом, разработке систем и приложений, требующих высокой производительности.
- C#: C# обычно используется в настольных приложениях Windows, веб-приложениях, мобильных приложениях и приложениях корпоративного уровня, интегрированных с платформой .NET.
В целом выбор используемого языка зависит от потребностей проекта, опыта разработчика и характеристик приложения. C подходит для низкоуровневой разработки, C++ предоставляет более абстрактные и объектно-ориентированные функции, а C# подходит для расширенной разработки приложений на платформе .NET.