С sharp отличие от c

В чем отличие C Sharp, С, и С++?

C — язык, придуманный в начале 70-х, с соответствующими концепциями. С тех пор вносились улучшения, но общая концепция процедурного языка, близкого к технике, осталась.
C++ -надстройка (и немного переработка) языка C для реализации всех концепций, ставших популярными в программировании с тех пор (ООП, обобщенное программирование и многое другое) .

C# — разработка Microsoft-а с C — подобным синтаксисом, но другими принципами языка. Можно считать попыткой сделать свой C++ с блекджеком и выпивкой. Выполняется в виртуальной среде, чем радикально отличается от классических C и C++.

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

Принципиальное различие — в том, что программы на Си и С++:
— компилируются в машинные коды
— выполняются непосредственно процессором
— чаще всего, работают напрямую со стандартными библиотеками ОС (под виндой — WinAPI, под никсами — X Window System)
— а если и посредством каких-то библиотек-оболочек, то в этих оболочках мало фундаментальных изменений по сравнению с нативными библиотеками (под виндой — MFC, под никсами — GTK+).

Программы на C#:
— компилируются в промежуточный код для среды CLR, похожий на тот, в котором записан, скажем, формат ворда или экзела; компилируются в машинные коды при запуске с пошаговым анализом (принцип управляемого кода)
— выполняются виртуальной средой CLR, примерно так же, как файл doc читается вордом
— работают со стандартными библиотеками ОС посредством библиотек-оболочек, также использующих принцип управляемого кода и поэтому во многом отличающихся от стандартных (.NET под виндой, Mono/GTK# под никсами) .

Все остальные различия вытекают из вышеописанных (точнее вышеописанного) .
Прочувствовать их легче всего на практике, пописав разные программы на сях, плюсах, шарпе.

P.S.
Всякие левые реализации С++, например, под тот же .NET, распространены мало и в понятие «С++» обычно не включаются.

Очередная порция бреда от господина В. Змея.

> — чаще всего, работают напрямую со стандартными библиотеками ОС (под виндой — WinAPI, под никсами — X Window System)
Под юниксами стандартными библиотеками являются библиотеки реализующие стандарты POSIX, но ни как не библиотеки X Windows System. Юниксы вообще спокойно могут работать без Иксов, к примеру, в каком-нибудь роутере.

Уже с хрен знает какого времени никто, кроме разработчиков GUI библиотек и оконных менеджеров, не работает с Иксами напрямую а используют библиотеки GTK+, Qt, Fltk, Tk и др. , можно встретить старые программы, которые используют Xaw или Motif. Допустим, господин В. Змей таки умудрился написать программу, со стандартными элементами управления, которые он сам же реализовал и ему понадобилось в своей программе реализовать работу с несколькими окнами, тут его поджидает очередная засада — ему придется заодно реализовать и оконный менеджер для X Window, чтобы уж было все «нативно».

Читайте также:  Get parameter in header php

> нативными библиотеками (под виндой — MFC, под никсами — GTK+).
И когда же GTK+ вдруг стала частью или стандартной библиотекой юниксов? А может она стала компонентом X Window? Может быть господин В. Змей озвучит момент сего исторического события. Всего лишь одна из нескольких библиотек для построения пользовательского интерфейса, ни более.

> похожий на тот, в котором записан, скажем, формат ворда или экзела
Скажем, не очень похожий. А учитывая то, что последние версии форматов ворда и экселя — это просто куча XML файлов, запакованных в архив, скажем, что совсем не похожий.

> — выполняются виртуальной средой CLR, примерно так же, как файл doc читается вордом
Даже не примерно, близко не валялись.
Байт код .NET больше похож на код очень продвинутого несуществующего процессора. Кстати, существовали процессоры, которые напрямую исполняли байт-код Java, и получается, что для таких процессоров компилятор Java выдавал нативный код, но при переносе на другую платформу, тот же самый код становится байт-кодом и требует для исполнения JVM.

> компилируются в машинные коды при запуске с пошаговым анализом (принцип управляемого кода)
Управляемый код (по MicroSoft) — код исполняемый под управлением виртуальной машины и не более.
То, о чем пытался написать господин В. Змей называется JIT (компиляция на лету) . JIT — это часть .NET инфраструктуры, но это ни в коем разе не «принцип управляемого кода».

А может быть господин В. Змей все это специально пишет? Чтобы народ повеселить. Так на IT-Петросяна 88-го уровня никак не тянет, а только дезинформирует новичков.

C — язык, придуманный в начале 70-х, с соответствующими концепциями. С тех пор вносились улучшения, но общая концепция процедурного языка, близкого к технике, осталась.
C++ -надстройка (и немного переработка) языка C для реализации всех концепций, ставших популярными в программировании с тех пор (ООП, обобщенное программирование и многое другое) .

Читайте также:  Язык python 36 оператор вывода ответы

C# — разработка Microsoft-а с C — подобным синтаксисом, но другими принципами языка. Можно считать попыткой сделать свой C++ с блекджеком и выпивкой. Выполняется в виртуальной среде, чем радикально отличается от классических C и C++.

Источник

В чем отличия C++ и C# ?

Доброго времени суток.
Хочу начать программировать, но в самом начале хочу разобраться с языками.
1) Подскажите пожалуйста чем отличаются C++ и C#?
2) Насколько они похожи по синтаксису?
3) Возможно ли изучая например C++ «переключится» на C#, не прибегая к изучению всего языка с 0?
4) Возможна ли разработка под android на этих языках? (Тут, я думаю, следует дать небольшое пояснение. По моей задумке небольшие задачки с программированием под android, для себя, были бы очень полезны. )
5) С какого языка проще начать ?

Тут все пишут про отличия. Рискну написать про сходства.

Во-первых, о чём бы ни писала Елена и Си++ и C# — оба языки общего назначения. Даже больше, оказывается — C# ни разу не заточён под объёмную библиотеку (или фреймворк) .NET, однако с ним намного, много проще. Но если таки учитывать .NET, то для Си++ есть Boost и Qt, так что здесь скорее паритет — библиотек для обоих хватает.
Во-вторых, сложность разработки на Си++ часто преувеличена. Разве только дисциплины надо поболее — выстрелить в ногу здесь попроще. Однако при этом Си++ будет чутка более гибкий и без танцев с бубнами unmanaged код не запустить на C#. Если внезапно потребуется.
В-третьих, оба языка, раз они общего назначения, таки мультипарадигмальные. То есть они реализуют большинство практик. И хотя Си++ развивается довольно медленно, сейчас Си++ резко догнал C# в плане нереализованных фич (здесь как минимум лямбды). Ну и метапрограммирования у Си++ поболее будет (наглая ложь).
В-четвёртых, оба языка кроссплатформеные. Впрочем, C# будет более кроссплатформенный, чем Си++. Разве только тот же Qt резко стёр границы, но это не значит почти ничего — C# компилируется в тот же самый CIL для всех платформ, Си++ — в совершенно разный код для разных платформ (i386, amd64, ARM Cortex-AXX).
Наконец, в пятых, синтаксис у них действительно очень похож. Оба языка принадлежат к семейству Алгол-подобных, так что и брейсы, и остальные скобки здесь имеют примерно одно предназначение.

Различия, которые казалось бы делают языки совершенно разными, таки не столь принципиальны на том уровне абстракции, на котором был задан вопрос. А различия действительно колоссальны: C# — managed код, что означает, что скомпилированный код будет исполнятся не на прямую в CPU, а на специальной виртуальной машине. Это съедает производительность, но сильно облегчает перенос кода. Ну и потом, C# — полупроприетарный ответ Java (что интересно, так как получается, что C# — более свободный, чем Java), которая была создана как замена сложному и небезопасному C++ в том числе.

Читайте также:  Php как долго учить

В общем, как человек, который начал давно с C#, продолжив C++ и по пути изучив Python, Java, D и другую ООП-чушь могу с уверенностью сказать, что разницы в общем-то и нет. То есть придётся немного проникнуться в чуть другую философию и выяснить, какие проблемы более новый язык пытался решить. Но если подходить к этому, как подошёл lookid, то это скорее не как изучать языки одной языковой группы, а как изучать один и тот же язык в разное время или в разных сферах.

Почему так? Потому что ООП. Оно как бы ООП, ничего сверхъестесственного ни один язык не предлагает, это не Haskell, и тем более не Brainfuck. Так что принципиально общие вещи в них будут. То подмножество, что реализует машину Тьюринга — у них общие. Сами посмотрите: циклы, ветвления, передача аргументов, арифметика. С небольшими правками всё совершенно одинаковое. Да, Дмитрий совершенно прав, traits на C# не повторишь, ибо та аналогия будет уже не traits, однако. Это уже [programming_language] related, то есть это попытка совладать с особенностями.

Немного пруфов: лично я ходящий пруф. Зная C++ и C# и немного Java я просто начал программировать на Python. При том, что Python даже алголоподобным не принадлежит. А всё потому, что логика одна и та же, хотя различий между Python и C(++|#) намного, много больше. Но не читая почти никаких туториалов, пройдясь галопом по европам с документацией сейчас я знаю python достаточно для серьёзного проекта.

UPD. По поводу метапрограммирования. Таки рантайм рефлекшн шарпа тащит. И хотя ни макросов, ни шаблонов, ничего. Но изменять код на лету — это уже очень круто. По дефолту плюсы так не умеют, и хотя шаблоны с макросами тащат, сильно, очень сильно тащат и вытаскивают его, Си++, со дна, надо признать — рефлешн у шарпа будет поинтереснее. Извиняюсь за дезу.

Источник

Оцените статью