3

И еще, на Microsoft Visual Studio на C# программируют?

0

7 ответов 7

11

Если абстрагироваться от синтаксиса, то у C# и C++ есть несколько кардинальных отличий:

  1. C# (также как и J#, VB# и проч.) работает поверх некой виртуальной машины которая называется dot NET Framework. То есть объектный код C# генерирует коды для виртуальной (а не физической машины). Соответственно, там где есть эта виртуальная машина объектник C# будет работать везде - это свойство называется кроссплатформенностью, частным следствием этого является то что размеры типов C# фиксированы. С++ собирает объектный код для конкретной платформы: Windows x86, Windows x64, Linux, Sparc и т.д. Причем везде размеры типов и endianness - очередность битов разные, так что при переносе кода между платформами постоянно возникают проблемы.
  2. В С# автоматизирована проблема деаллокации объектов (т.н. сборщик мусора). В идеале прогер только создает объекты, а уже сборщик мусора сам разбирается кого и когда уничтожить. В С++ напротив проблема управления памятью вся возложена на прогера. Это в общем то целая наука как правильно управлять памятью, чтобы не было ее утечки.

Конечно, есть и более тонкие отличия - но это уже детали. Основные отличия я указал.

2
  • 1
    Осталось лишь добавить: "C#-один из самых прекрасных языков для сотворения кроссплатформенных приложений под Windows...ах!" =)
    – Salivan
    10 окт 2012 в 13:34
  • ^ да вы, сударь, шутник =) 10 окт 2012 в 18:28
7

Язык C# для разработчиков на языке С++

В следующей таблице содержится сравнение C# и C++ (где не используется /clr) в различных областях ... в этой таблице вы найдете важные различия между этими двумя языками.

В добавок: различия между шаблонами языка C++ и универсальными шаблонами языка C#.

Да, на Microsoft Visual Studio в основном на C# и программируют.

5

C++ и C# — это два разных языка программирования с C-подобным синтаксисом.

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

C++ — кросс-платформенный язык программирования общего назначения, совместимый в большинстве случаев с C.

4
  • подскажи пожалуйста, откуда могу найти полные видеокурсы по C#?
    – navi1893
    28 янв 2012 в 15:38
  • 1
    @navi1893 лучше задайте новый вопрос.
    – andrybak
    28 янв 2012 в 15:39
  • 1
    Wiki уже не та =)
    – Gorets
    28 янв 2012 в 18:45
  • попробуй поискать видеокурсы тут www.fileshouse.com
    – LEroyGGG
    6 мар 2012 в 12:19
5

Язык C++ - 2 плюса, а C# - 4 плюса :)

3

C++ и C# - разные языки. C# более высокоуровневый. На нём удобнее всего программировать графический интерфейс. Но между этими языками большая пропасть: на C# очень сложно использовать библиотеки, предназначенные для C++. Также программы на C# требуют для своей работы установленный .NET Framework, версия которого зависит от используемой версии C#. На Windows Vista предустановлен .NET Framework 3.0, а на Windows 7 - 3.5. На Windows XP .NET Framework нужно устанавливать самому.

На языке C# необязательно писать именно на Visual Studio. Можно использовать любую IDE или даже обычный редактор, например блокнот.

3
  • > на C# очень сложно использовать библиотеки, предназначенные для C [DllImport("foo.dll")] public static extern int Bar(int baz); Примерно настолько очень.
    – drdaeman
    10 окт 2012 в 5:27
  • Я знаю про PInvoke, но когда писал это сообщение ещё не знал. Но всё равно это только для C, а ТС спрашивал про C++. К тому же загружать функции динамически (во время выполнения программы) таким образом не получится.
    – devoln
    10 окт 2012 в 11:03
  • И правда, на даты я не посмотрел. Но не суть, тут, как бы, наполовину вики, уточнения приемлемы, надеюсь, всегда. С C++ все, действительно, сложнее. Собственно, работать с библиотеками на нем сложно даже из C++ — различия в версии компилятора и все. Решают «переходником» на managed c++. С динамической загрузкой библиотек все просто, делегат с UnmanagedFunctionPointer и LoadLibrary/GetProcAddress для, собственно, получения указателя.
    – drdaeman
    10 окт 2012 в 11:57
2

C# - объектно-ориентированный язык программирования с C подобным синтаксисом.

C++ - расширенная версия C. На данный момент есть более расширенная версия, точное название не скажу.

Visual Studio на данный момент поддерживает множество языков программирования, например PHP, Iron Python.

В бесплатном доступе есть редакторы для C# C++ ASP.NET VBasic имеющие префикс Express. Их можно бесплатно скачать с сайта Microsoft, получив учетную запись MSDN.

3
  • 1
    > C++ - расширенная версия C. Не соглашусь. С++ - это ДРУГОЙ язык с Си-подобным синтаксисом. Это раз. Два - существует множество языков, похожих на С. Это и С++, и C#, и Java... Из менее известных есть [D][1], который можно рассматривать как отдельную, улучшенную версию С++. [1]:ru.wikipedia.org/wiki/…
    – gecube
    9 окт 2012 в 21:54
  • Я бы не сказал, что это другой язык. Я бы сказал что Си встроен в C++. Главная задача была в поддержке старого кода на Си, отсюда обязательная поддержка большинства концепций Си. И если можно писать код одного языка в другом без каких либо сложностей, значит это не другой язык.
    – manking
    10 окт 2012 в 18:37
  • @manking, компилятор С++ значительно строже, чем C. Далеко не все Си программы компилируются как C++.
    – avp
    10 окт 2012 в 18:56
1

Давайте-ка и я дополню список.

Странно, что ещё никто не упомянул наибольшее различие: C++ — это небезопасный язык. В том смысле, что конструкции языка могут приводить к undefined behaviour, состоянию, в котором на поведение программы (а также компилятора) не даётся вовсе никаких гарантий. Получить такую ситуацию достаточно легко: доступ к массиву за пределами выделенной памяти, арифметическое переполнение, ошибочный static_cast приводят к ней.

C# же (за исключением кода, помещенного ключевым словом unsafe) — безопасный язык. В нём подобные ситуации исключены — за счёт дополнительных проверок, происходящих во время выполнения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.