Чем отличается си от си плюс

В чем отличие 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, чтобы уж было все «нативно».

Читайте также:  Java foreach on set

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

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

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

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

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

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

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

Источник

Читайте также:  Python multiprocessing shared memory

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

Практически все знают о C и C++, и сейчас пойдет речь о разнице между ними. Главное различие между этих языков, в том, что C — процедурный язык программирования, а C++ является объекто-ориентированным языком. Различий имеется безусловно довольно много, но вы узнаете о главных из них:.

Основные различия будут приведены в таблице:

Поскольку C не поддерживает концепцию ООП, то он не поддерживает полиморфизм, инкапсуляцию и наследование.

C++ поддерживает полиморфизм, инкапсуляцию и наследование, т. к. является объектно-ориентированным языком.

Поскольку C не поддерживает инкапсуляцию, то данные могут редактироваться внешним кодом.

В случае с C++ инкапсуляция скрывает данные, чтобы гарантировать, что структуры данных и операторы используются по назначению.

Не поддерживает перегрузку функций и операторов.

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

Не поддерживаются в структуре, не могут быть «друзьями» и виртуальными

Поддерживаются в структуре, могут быть «друзьями» и виртуальными

Функции malloc() и calloc() для динамического выделения памяти, а также free() для освобождения.

Для этих же операций используются операторы new и delete .

Используются scanf() и printf() .

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

О песочнице

Это «Песочница» — раздел, в который попадают дебютные публикации пользователей, желающих стать полноправными участниками сообщества.

Если у вас есть приглашение, отправьте его автору понравившейся публикации — тогда её смогут прочитать и обсудить все остальные пользователи Хабра.

Чтобы исключить предвзятость при оценке, все публикации анонимны, псевдонимы показываются случайным образом.

О модерации

  • рекламные и PR-публикации
  • вопросы и просьбы (для них есть Хабр Q&A);
  • вакансии (используйте Хабр Карьеру)
  • статьи, ранее опубликованные на других сайтах;
  • статьи без правильно расставленных знаков препинания, со смайликами, с обилием восклицательных знаков, неоправданным выделением слов и предложений и другим неуместным форматированием текста;
  • жалобы на компании и предоставляемые услуги;
  • низкокачественные переводы;
  • куски программного кода без пояснений;
  • односложные статьи;
  • статьи, слабо относящиеся к или не относящиеся к ней вовсе.

Источник

Чем отличается C от C++

Короткий ответ: C++ — это улучшенный C. У этих языков одинаковый на 99% синтаксис и команды, но C — это больше про структурное и процедурное программирование, а C++ — про объектно ориентированное.

C — язык, который сделал в 1973 году Деннис Ритчи. Главная цель языка — скорость, быстродействие и универсальность. Язык изначально проектировался как системный, чтобы на нём можно было писать код для процессоров, драйверов и создавать на нём операционные системы. В то время большинство этих вещей делали на ассемблере, и Ритчи хотел это упростить.

Читайте также:  Отличие final от const java

C++ придумал Бьёрн Страуструп в начале восьмидесятых, когда ему не хватало возможностей стандартного C. Он сделал язык более строгим, добавил в него классы, ООП-подход и перегрузку операторов, сохранив скорость оригинального С. В 1983 году Бьёрн переименовал язык из «C с классами» в C++.

👉 О перегрузке операторов как-нибудь в другой раз 🙂

Проще портировать код на другие платформы

Есть структуры и переменные типа «структура»

Наследование — это структура внутри структуры

Можно объявлять глобальную переменную несколько раз

Исключения нужно конструировать самому

Нет перегрузки операторов

Почти всё стандартно и предсказуемо

Для чего изучать

C — классический язык разработки системного ПО и любого софта для микропроцессоров. На нём написаны Linux, большая часть Windows и MacOS. Если взять любой современный носимый гаджет или электронное устройство, в большинстве случаев они работают тоже под управлением программы на C. В мире огромное количество кода, который написан на C (и ещё столько же будет написано), поэтому проблем с работой у C-программистов не предвидится.

C++ — выбор тех, кому одновременно нужна вся мощь C и гибкость объектно ориентированного программирования. Counter-Strike, StarCraft и World of Warcraft написаны на C++, а это значит, что можно сочетать производительность C и современные технологии. Часть движка Unity тоже написана на C++, чтобы получить прямой доступ к памяти и ресурсам системы.

На самом деле нет такой уж большой разницы между C и C++. Это одинаково мощные и быстрые языки, просто у них разная область применения и стиль программирования.

Если вам важна скорость, производительность и относительная простота языка — смотрите на C, там это всё есть. С другой стороны, из-за простоты в нём многие вещи придётся делать вручную — обрабатывать исключения, следить за сроком жизни переменных и структур или писать дополнительный код.

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

Чтобы было понятнее, скоро напишем подробно про оба языка. А вы не болейте и берегите себя.

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Источник

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