C++ это расширенный язык СИ
C# - брат-близнец языка Java. Микрософту чем-то не понравилась сама Джава и они выдумали Си Шарп
 
C# и C++ - это два разных языка программирования, которые имеют сходства и отличия.

Отличия C# от C++:

1. C# - это язык программирования, разработанный компанией Microsoft, а C++ - это язык программирования, разработанный в Bell Labs.

2. C# - это язык программирования, ориентированный на объекты, который использует сборку мусора для автоматического управления памятью, а C++ - это язык программирования, который позволяет программисту управлять памятью вручную.

3. C# - это язык программирования, который работает на платформе .NET Framework, а C++ может использоваться для разработки приложений для различных платформ.

4. C# имеет более строгую типизацию и проверку ошибок во время компиляции, чем C++.

5. C# имеет более простой синтаксис и более высокий уровень абстракции, чем C++.

6. C# имеет более широкую библиотеку классов, чем C++.

7. C# поддерживает многопоточность и асинхронное программирование из коробки, а в C++ это требует дополнительных усилий.

8. C# обычно используется для разработки приложений для Windows, а C++ может использоваться для разработки приложений для различных платформ, включая Windows, Linux и Mac OS.
 
C# - это "Си-четыре-плюса" - это фактически микрософтовский ответ Java.

Java - это корпоративный язык, исправляющий недостатки C++, как их видят корпорации: по сравнению с C++, программист освобождён от необходимости управлять памятью (в языке есть сборщик мусора), убраны опасные вещи вроде адресной арифметики или бесконтрольного выхода за границу массивов, добавлены потоки и примитивы синхронизации, привязанные к лексическому контексту, все объектные типы имеют общий суперкласс (Object) и т.п. На Java писать безопаснее, поэтому программист, освобождённый от поиска причин бесконечных коредампов и дедлоков, может, наконец, сосредоточиться на реализации бизнес-логики. В принципе, отчасти это получилось.

Кроме того, скомпилированный Java-код исполняется процессором не напрямую (как C++), а посредством виртуальной машины (JVM), что позволяет достичь практически абсолютной переносимости. От целевой платформы требуется только JVM и нативные библиотеки, используемые приложением (если есть). Интерпретатор байт-кода, конечно, работает в разы медленнее, чем исполнение машинного кода, но это - константные расходы, и кроме того, тогда уже были планы на jit (компиляция часто исполняемых участков байт-кода в машинный код). Сегодня jit во многих случаях обгоняет статические компиляторы по производительности сгенерированного машинного кода.

На середину 1990-х это смотрелось продвинуто и перспективно, поэтому Билл решил подмять технологию под себя. Вначале он выпустил пакет "улучшений" к Java, а затем идея была в том, что все на них подсядут, и MS станет законодателем Java. Но Sun пресёк такое развитие событий в зародыше: Билл получил по зубам судебным иском и решил, что у него должна быть своя Java, с блэкджеком и окошками. Так появился C#.

Так что правильнее сравнивать C# не с C++, а с Java. Он менее универсальный, чем Java (работает фактически только в инфраструктуре MS), но лучше интегрируется с продуктами MS, чем Java. По синтаксису все трое, естественно, похоже, т.к. целью разработки и Java, и C# было переманить программистов с C++, доминировавшего на рынке прикладной разработки в 1990-е годы, и для этого - обеспечить им низкий порог входа.
 
Назад
Сверху