2014-02-02 2 views
2

Я программист на C# в течение нескольких месяцев, и в последнее время я рассматриваю возможность изучения C++.Может ли C# делать все, что C++ может сделать?

Так что мой вопрос: есть ли что-нибудь, что C++ может сделать, что C# не может сделать?

Я знаю об управлении ручной памятью на C++, но пока я не программирую операционные системы или приложения с очень большой памятью, я не должен беспокоиться об этом слишком много (потому что я слышал, что .NET обрабатывает автоматическое управление памятью очень хорошо).

Но могу ли я программировать на C# все, что могу, на C#? Я также имею в виду такие вещи, как DLL-инъекция, редактирование реестра, драйверы и тому подобное.

Является ли C# столь же мощным, как C++? Если нет, что не может C# сделать, что C++ может?

+1

Шаблон метапрограммирования. –

+0

Программирование встроенных устройств (нет времени выполнения C#). –

+1

С теоретической точки зрения, класс алгоритмов, которые вы можете определить, одинаковый. – Marian

ответ

5

C# и C++ - это языки. Определить, что язык «может» и «не может» делать, несколько неуловимо. Одним из примеров того, что C++ может сделать, а C# не может, бесплатно освобождает память выделенного кучи объекта, не освобождая другие неиспользуемые объекты. Но это то, что не имеет большого значения в большинстве случаев. (Вы можете использовать Marshal.AllocHGlobal и Marshal.FreeHGlobal выделять и освобождать память, как и в С)

Основная причина, почему C++ может быть использован для записи вещи, как драйверы для Windows, потому что это то, что поддерживает и облегчает для Windows. Если в один прекрасный день Microsoft решила поддержать только C# и канаву C++, мы будем здесь говорить, что C# может делать то, что C++ не может (даже если языки магически остались такими, какие они есть сейчас, к тому времени). Скорее всего, это не так, и это правильно, потому что C++ лучше подходит для системного программирования, чем C#. Но, надеюсь, вы понимаете.

По существу, речь идет не о самих языках, а о их реализациях, их инструментах и ​​окружающем их мире. Например, you can easily write an operating system in C#. Зачем? Потому что для этого есть подходящий инструмент. You can also write for embedded systems с требованиями, не относящимися к реальному времени. Это не имеет никакого отношения к языку, опять же, это потому, что для него есть инструмент.

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

5

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

Однако в настоящее время в исследовательском проекте Microsoft разрабатывается версия системной программы C#. Он возглавляет Джо Даффи, гуру Windows-потолок, и, если верить слухам в Интернете, это будет называться M #. Джо опубликовал некоторую информацию о своем прогрессе на своем blog.

+0

См. [Управляемая операционная система с открытым исходным кодом на C#] (http://cosmos.codeplex.com/) –

+0

ОК, И если мы игнорируем операционные системы и драйверы , может ли C++ делать то, что C# не может (игнорируя операционные системы)? Я имею в виду, например, в категории 3D-игр. Может ли каждая 3D-игра, написанная на C++, записываться на C# и запускаться с одинаковой скоростью, например? – BlueRay101

+1

@ BlueRay010 - уверен, вы можете написать много 3D-игр на C#. Я подозреваю, что большая часть игр в магазине Window 8 написана таким образом, и они, вероятно, сопоставимы с эквивалентом C++. вещь, вы будете видеть порт Crysis на C# в спешке! – Sean

2

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

Смежные вопросы