Хотите прямо сейчас получить бесплатный видеокурс по программированию для начинающих?

В чем разница между С++ и С# ?

Март 19, 2013

Untitled-1Всем большой приветище!

Вконтакте со мной связался один из моих подписчиков попросил меня осветить эту тему в одном из своих уроков. Но для разнообразия я решил сделать урок в формате статьи. А то запарился уже микрофон тягать из комнаты в комнату ;-)

Тээкссс… Приступим…
Кто-то думает что эти языки близки и похожи но это не так. Изначально С# задумывался microsoft как сильно усовершенствованный язык C++. В результате язык С++ под руководством Microsoft был настолько переосмыслен и поставлен под их цели, что общего у них осталось очень немного. Получившуюся поделку они назвали C#.

Давайте разберемся — в чем же разница между C++ и C#?

Первый вопрос который так и напрашивается:
Какой язык легче? Повседневное использование С# кажется более удобным и простым для новичка.

Вот банальный пример. Обычная заготовка консольной программы на C++:

Показать »


#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}

И тоже самое на С#:

Показать »


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace test1
{
  class Program
  {
   static void Main(string[] args)
   {
   }
  }
}

Что может дать С# обыкновенному программисту?
С# был насквозь заточен под продукты Microsoft. И это его основной минус. Однако по удобности работы он на голову превосходит С++. Программы на C# пишутся достаточно просто, быстро и удобно. Работают также быстро. Но есть одна деталь — всё это ТОЛЬКО для операционных систем и других продуктов от Microsoft.

Что же может дать С++ обыкновенному программисту?
Во-первых это универсальность, гибкость. Возможно сравнимая только с языками очень низкого уровня вроде Ассмблера. На С++ можно писать код который будет возможно перенести на другие операционные системы и платформы. Он однозначно менее удобен для новичка, но более глубок и имеет больше возможностей чем С#.

На самом деле тяжело сравнивать два этих языка. Так как они задумывались для несколько разных целей. Оба языка хороши, но для совершенно разных областей практического применения, именно потому что их сильные стороны существенно отличаются.

Давайте копнем глубже и разберемся как они работают:
На C# пишутся программы исключительно для Microsoft .NET Framework, и уже этот фреймворк генерирует исполняемый код. Тем самым упрощая некоторые вещи для программиста, но от этого ограничивающие его возможности.

На С++ сразу пишется код который после компиляции становится исполняемым кодом программы. И по идее накосячить в нем гораздо легче чем с C#. Но и есть доступ к многим вещам к которым нет доступа через .NET Framework.

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

А на С++ можно написать драйвер. Но если программист накосячит, то можно вылететь и в синий «экран смерти» потому что действия этого кода никем кроме самого программиста не контролируются.

Как видите общий у них только синтаксис.

Эти языки высокоуровневые или низкоуровневые?
Вы наверняка слышали о том что языки программирования бывают разных уровней абстракции. Есть низкоуровневые языки программирования, например Assambler. Есть повыше это pascal, C, C++. А есть еще более высокоуровневые. Это С#, Java.

Чем ниже уровень языка тем больше возможностей у него, но написать на нем что-нибудь большое может быть просто нереально. И наоборот чем выше уровень языка — тем проще пишутся программы, но их возможности и гибкость уменьшается по сравнению с низкоуровневыми языками. Высокоуровневые языки затачиваются под конкретные цели.

Как вы заметили С# и C++ находятся на разных уровнях и нужны для разных целей.

Какой вывод?
Изучайте С# если хотите программировать только для Windows и других платформ от Microsoft, причем программировать быстро легко и удобно, создавая ОЧЕНЬ большие и мощные проекты максимально просто.

Или изучайте С++ если хотите получить полную власть над компьютером, если хотите создавать программы для любой операционной системы и платформы, если хотите разобраться в самых мелких деталях того как функционирует компьютер, если хотите иметь доступ ко всему компьютеру, а не только к той его части и под руководством Microsoft.

Вот мой Вам совет:
Ближайшие 10 лет(а скорее всего дольше) программисты на C# будут более востребованы чем программисты на С++. Это значит больше рабочих мест и выше заработная плата для тех кто изучит C#. В тоже время С++ интереснее и гораздо ближе к настоящему программированию.

Если вы хотите стать настоящим программистом вы обязаны знать один из этих языков, если хотите стать профи, то нужно знать оба. Вот самый простой способ их изучить:

Для тех, кто хочет писать серьезные программы, и заниматься программированием на одном из самых могущественных языков программирования. Этот видеокурс подходит, как начинающим программистам, так и профессионалам.

Для тех, кто хочет идти в ногу со временем, зарабатывать большие деньги в будущем и создавать действительно масштабные проекты. Этот видеокурс подходит, как начинающим программистам, так и профессионалам.



6 Комментариев к записи В чем разница между С++ и С# ?

  1. Alex on 20.03.2013 at 13:24

    Позволю уточнить под первым катом вовсе не «Обычная заготовка консольной программы на C++». Это Visual C++.

    stdafx.h — не стандартный заголовок языка C++ и, даже, не обязательный в Visual. Так же и _TCHAR
    Таким образом приведенный вами код на С++ тоже: «Но есть одна деталь — всё это ТОЛЬКО для операционных систем и других продуктов от Microsoft.»

    Заготовка программы на стандартном C++. Выглядит так:

    int main(int argc, char** argv)
    {
    return 0;
    }

    Кроме того для С++ есть также хорошие фреймоврки, включая кроссплатформенные.

    К минусам шарпа я бы отнес такой пример: есть у меня комп с ХР. Установлено на нем все по минимуму (комп для тестов, там ни чего сложного не нужно). Понадобилось установить некую систмную программу (вообще без GUI). Интсалятор был написан на C#. Только из-за этого инсталятора мне портребовалось установить NET Framework (~40мб) + профиль к нему (160Мб)….. Мне как потребителю это не нравится :).

    Что до необходимости профессионалам знать шарп….. Под вопросом. Если вы собираетесь 90% писать программы под винду для пользователей. Есть смысл. Если значительная часть проектов: системные, кроссплатформенные с минимумом GUI — не стоит. Не распыляйте сове время. Лучше изучите еще одну библиотеку к c++, например….

    А кроссплатформенных задач сейчас будет только нарастать. Благодаря Андроиду, ди и не удачной политике МС последнее время. (Посмотрите уже крупные геймдевелоперские компании типа valve обратили свой взор на Linux).

    Хотите простоты, удобства: начните с изучения C++ и Qt. Qt в этом году планируют выпустить релиз для iOS и Android. Уже сейчас спокойно компилируются приложения из родних и тех же исходников для ОС: Windows, Linux, MacOS, Symbian…..

    • Ксения on 23.03.2013 at 15:53

      > есть у меня комп с ХР.
      > комп для тестов
      > мне портребовалось установить NET Framework (~40мб) + профиль к нему (160Мб)

      Если говорить про Microsoft, то это, скорее, минус XP, а не шарпа. У меня сейчас стоит Windows 8, и .NET Framework уже входит в состав этой платформы.

      Если говорить про Linux, Mac OS, iPhone и Android, то, насколько я знаю, .NET там либо вшивается в сборку, либо тоже подтягивается.

      • voral on 25.03.2013 at 19:19

        Программисту не стоит принимать решения основываясь на том, что стоит у него. Надо ориентироваться на то, что стоит у потенциальных клиентов. Уверяю, мне на машине с виндой NET вообще не нужен (равзве что вот для создателей инсталятора использующего черезмерный инструмент)…. Если бы его винда поставила без моего спроса — это так же был бы минус.

        Просто надо осознать, что клиенты могут быть (особено в корпоративном секторе) даже под Windows 2000. Легко.

  2. Ксения on 23.03.2013 at 15:47

    > Но есть одна деталь — всё это ТОЛЬКО для операционных систем и других продуктов от Microsoft.
    Неправда. Сборки .NET могут разрабатываться и выполняться в средах ОС производства не Microsoft, в частности — в Mac OS, различных дистрибутивах Linux, Solaris, а также на устройствах типа iPhone и Android (через API-интерфейс MonoTouch).

    • voral on 25.03.2013 at 19:15

      Да есть mono.
      — Он уже стал полным аналогом?
      — Он широко используем?

      Угу знаю….. Много софта в стане линукс его использует?
      Вы уже пробовали использовать исходники созданные в Visual Studio использовать под Linux? Или вы Mono и под Windows используете?

      А вас не пугает, что ваша успешная (вы ж не собираетесь ненужными поделками заниматься) программа подвергнется нападкам МС. (На сколько я в курсе, от них защищен только Novell и их клиенты). А если вообще MC поссориться с Novell?

      В прочем можно и рискнуть. Главное помнить, что mono это использование анаога NET на птичьих правах….

  3. voral on 25.03.2013 at 19:23

    Ксения, согласитесь языки С/С++ это сами по себе кросплатформенные ЯП. Их использеут и МС. C# и NET это детище МС. mono — лишь аналог от сторонней организации. mono не может быть 1 в 1 аналогом МС. Потому как NET штука закрытая. Максимум «интерфейс» похож… Внутри все разное….

Добавить комментарий для voral Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Поддержите проект

Хит продаж:

Случайный анекдот

Моя вторая книга

Что это???

Программирование для Android:

Мы вконтакте

Помощь сайту

Понравился сайт? Он сильно нуждается в раскрутке.

Чтобы помочь в раскрутке - опубликуйте ссылку на сайт (или любую его страницу) на любом другом сайте в интернете. Тогда сайт станет чуточку популярнее.

Или просто нажмите на кнопки социальных сетей которые стоят в конце каждой статьи

Вместе мы сможем сделать программирование более популярным и более понятным для всех!

Заранее спасибо!
Артём Кашеваров.