Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
8 / 8 / 7
Регистрация: 21.08.2015
Сообщений: 90
1

Чем C++ отличается от C# и других языков семейства C?

05.10.2015, 22:03. Показов 1807. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Чем C++ отличается от C# и других языков семейства C?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2015, 22:03
Ответы с готовыми решениями:

Чем так отличается язык с++ от других языков программирования
Начал недавно изучать с++ и возник вопрос. Чем так отличается язык с++ от других языков...

Чем отличается TurboPascal от других версий?
Здравствуйте, уважаемые форумчане. Я, как новичек, не могу понять, чем отличается TurboPascal от...

Чем отличается правило недопущения провалов от других
Расскажите пожалуста чем правило недопущения "провалов" отличается c# от других языков (от С,С++,...

Чем отличается процессора Intel Xeon X5560 BOX (От других?)
В Частота шины cpu 6400 МГц может? (быть или я чего та не знаю:(?)У него цена под 43тыс. но что в...

17
7796 / 6562 / 2985
Регистрация: 14.04.2014
Сообщений: 28,699
05.10.2015, 22:08 2
Как можно ответить на это кратко? Открой книжку и почитай.
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
05.10.2015, 22:09 3
Sergey84, вопрос конкретнее сформулируйте. А пока можете ознакомится с темой:
C# vs C++
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
06.10.2015, 02:43 4
Это же очевидно - у него 2 плюса есть, по сравнению с другими упомянутыми языками.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28045 / 15778 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
06.10.2015, 02:57 5
а у шарпа есть # ?
тема пересена в войны. воюйте.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
06.10.2015, 08:46 6
Так забавно, когда C# или Java (а в худшем случае ещё и JS с PHP) называют "языком семейства Си".
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
06.10.2015, 08:57 7
korvin_
А разве Java -- это не C++ для JVM? Чем больше вижу исходников на Java, тем больше в этом убеждаюсь.
PHP -- это вообще квинтэссэнция ошибок C++ и Java.
0
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
07.10.2015, 13:13 8
Цитата Сообщение от mporro Посмотреть сообщение
PHP -- это вообще квинтэссэнция ошибок C++
Где больше ошибок дизайна, в C++ или PHP - большой вопрос.
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
07.10.2015, 16:32 9
nullxdth
Если учесть тот факт, что какого-либо "дизайна" у PHP просто нет, то, конечно, и ошибок дизайна у PHP тоже нет.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
07.10.2015, 21:12 10
Цитата Сообщение от mporro Посмотреть сообщение
А разве Java -- это не C++ для JVM?
Нет, от слова совсем. От С++ в Java только некоторые элементы синтаксиса, не более. А по семантике это, в основном, Simula 67 для JVM.

Цитата Сообщение от mporro Посмотреть сообщение
PHP -- это вообще квинтэссэнция ошибок C++ и Java.
См. выше. Только к Simula примешивается ещё и значительная часть Perl'а.
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
07.10.2015, 21:31 11
korvin_
Не соглашусь. Насколько я понимаю: и C++, и Java в одинаковой степени далеки от Simula, но именно методика внедрения абстракций "симульная". Друг на друга, особенно по проектным и конструктивным решениям, они похожи значительно больше.

Цитата Сообщение от korvin_ Посмотреть сообщение
значительная часть Perl'а
Чуть более, чем ничего.
Если до четвёртой версии, там что-то было, сейчас это просто "химера" из C++ и Java.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
07.10.2015, 22:39 12
Цитата Сообщение от mporro Посмотреть сообщение
C++, и Java в одинаковой степени далеки от Simula
Нет. Их объектные модели почти прямо копируют Simula. С++ дальше из-за Сишного наследия.

Цитата Сообщение от mporro Посмотреть сообщение
Друг на друга, особенно по проектным и конструктивным решениям, они похожи значительно больше.
Опять нет. Кроме синтаксиса (и то не везде), у них мало общего.

Цитата Сообщение от mporro Посмотреть сообщение
Чуть более, чем ничего.
Ну допустим. Но где ты там C++ и Java увидел? Только не говори про синтаксис.
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
07.10.2015, 23:19 13
Цитата Сообщение от korvin_ Посмотреть сообщение
почти прямо копируют Simula
Понятно, что C++ и Java заимствовали много из Simula, это их объединяет. Но их объединяет нечто, что они НЕ заимствовали. Конструкторы, уровни доступа и исключения, кажется.
А есть такие моменты, которые в C++ совершенно не воспроизводят Simula. И в Java есть такие же.
Если Java и ближе к Simula, то исключительно сборкой мусора и некоторыми аспектами переопределяемых функций.

Цитата Сообщение от korvin_ Посмотреть сообщение
где ты там C++ и Java увидел
Там столько всего намешано, что я даже затрудняюсь выделить конкретные моменты, про которые можно было бы сказать: "это заимствованно отсюда". Здесь и интерфейсы, и функторы, и анонимные функции. Здесь и C-style библиотеки, которые соседствуют с переписками JDBC.
А как прыгала семантика объектов? В четвёртой версии всё копировалось и были ссылки похожие на С++, а в пятой версии объекты стали указателями.
Тут даже вести разговор не о чем. Здесь нет ни предков, ни дизайна. Просто фарш.

Добавлено через 3 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
у них мало общего
Если бы у них было мало общего, то проектные решения существенно различались бы. Однако это не так. Проектные решения переходят друг в друга с минимальными переделками. Полагаю, что при миграции проекта с Simula на любой из этих двух языков потребовалось бы куда больше усилий.

Добавлено через 9 минут
* * *
Я готов согласиться, что, возможно, мой опыт в этих языках (C++ и Java) был "специфическим".

Но если они столь различны, можно указать хотя бы пару-тройку различий, которые не позволяют бесшовный проект для одного языка реализовать на другом?
Лично я их не вижу. Может быть я ошибаюсь.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
08.10.2015, 00:15 14
Цитата Сообщение от mporro Посмотреть сообщение
Конструкторы
Допустим. Но способы их использования в C++ и Java несколько отличаются из-за разной модели памяти. Тем более в современном C++ с его copy- и move-конструкторами.

Цитата Сообщение от mporro Посмотреть сообщение
уровни доступа
Только в Java нет спецификатора virtual.

Цитата Сообщение от mporro Посмотреть сообщение
исключения
https://en.wikipedia.org/wiki/... ng#History

Цитата Сообщение от mporro Посмотреть сообщение
Но если они столь различны, можно указать хотя бы пару-тройку различий, которые не позволяют бесшовный проект для одного языка реализовать на другом? Лично я их не вижу. Может быть я ошибаюсь.
1) Модель управления памятью, со всеми вытекающими: RAII, ссылки, указатели, создание объектов на стэке отсутствуют в Java (ссылочное устройство объектов в Java --- это не то же самое, что ссылки или указатели в C++).

2) Система типов: однозначно строгая (с некоторыми косяками, правда) в Java и относительно (относительно чистого Си) строгая, но легко поддающаяся грязным хакам --- в С++, возможность легко манипулировать любым значением, как массивом байт.

3) Дженерики Java и шаблоны C++ --- сильно разные вещи. Не всё, что можно делать шаблонами, возможно (или хотя бы достаточно легко) сделать дженериками и наоборот.

4) Пакеты Java vs заголовочные файлы C++. Надеюсь, тут разницу объяснять не нужно?

5) Спецификатор const в C++ имеет некоторые возможности, которых нет у final в Java, например: константные методы, которые не изменяют состояние объекта, и такие же неизменяемые параметры процедур. Более-менее близкий аналог в других языках (Python, Ruby) --- метод freeze.

6) Статически проверяемые исключения в Java отсутствуют в C++ (да и вообще, вроде, нигде их нет).

7) Отсутствие virtual (в Java виртуальность метода определяется автоматически по остальным модификаторам метода) и множественного наследования в Java. Тут нужно подробней смотреть, все эти каши из комбинаций различных модификаторов.

8) Собственно отсутствие свободных функций в Java и модификатора static-переменных для них. В принципе, это ложится на static-члены класса, но тут я с ходу не вспомню, какие могут вылезти подводные камни.

9) Отсутствие synchronized в C++ и, как следствие, необходимость в для каждого варианта использования synchronized в Java подбирать аналог синхронизации в C++.

10) Отсутствие Top-типа объектов в C++. Допустим, для собственного кода его можно создать, но сторонние библиотеки классов могут не иметь аналогов. Опять же классовые типы в C++ находятся на более равных правах с примитивными типами, чем в Java: их можно использовать в параметрах шаблонов, в отличие от. Автоматический боксинг/анбоксинг в Java не всегда правильно разруливается в перегруженных методах.

11) Перегрузка операторов в C++.

12) Модификатор доступа friend в C++.

13) Оператор goto в C++.

14) Динамическая кодогенерация в рантайме в Java.

15) Нестандартизованный name mangling в C++.
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
08.10.2015, 08:05 15
korvin_
3 и 1 действительно могут дать проектные различия.
Тем не менее, мне не приходилось видеть решений, где бы подобные различия существовали. Хотя и видел и настольные Java приложения, и web-интерфесы, и enterprise по.

Добавлено через 20 минут
* * *
По поводу швов.

Мультиметоды, они одинаково невыразимы в Java и C++. Можно говорить о рефлекции, но опора в проекте на мультиметоды даст толстый шов и в Java, и, тем паче, в C++.

Язык, опирающийся на мультиметоды, будет действительно другим языком по отношению к C++ и Java, так как мультиметоды не являются продолжением или антагонистом одиночной диспетчеризации, это что-то существенно иное.
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
09.10.2015, 01:58 16
korvin_, по каким критериям Вы определяете принадлежность языка к "семейству"? Для меня критерий всегда был один -- синтаксис. Так, например, pascal вырос из algol'a, eiffel и oberon из pascal'я, ada -- реализация многих известных методик своего времени с алгол-подобным синтаксисом. Эти языки можно отнести к алгол семейству?

Не по теме:

кастати, java растет из oberon'a, только сишный синтаксис.


А вообще абсолютное большинство методик впервые появилось в lisp и далее заимствовалось дизайнерами новых языков. Можно ли сказать что все современные языки принадлежат семеству lisp?
<trololo>Конечно исключая какацкель.</trololo>

Добавлено через 1 минуту
или "семейство" -- это диалекты одного 'абстрактного языка с минимумом уточнений'?

Добавлено через 1 минуту
как например различные реализации prolog, lisp, forth, которые имеют 'общий стержень', а детали и правила пользования могут варьироваться в зависимости от реализации
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
09.10.2015, 08:29 17
Цитата Сообщение от castorsky Посмотреть сообщение
Для меня критерий всегда был один -- синтаксис.
Синтаксис --- лишь фасад; вычислительная модель, примитивы, средства абстрагирования и комбинирования --- вот что важно, т.к. код пишется на основе этого, а не на основе синтаксиса. Ты же сам заметил про Java/Oberon/C. Другой пример: синтаксис Erlang'а очень похож на Prolog, но на этом сходства заканчиваются, семантика у них разная. Си тоже многое взял от Алгола, а также от Фортрана. Давайте называть Джаву языком семейства Алгол/Фортран (первое ещё достаточно верно, ничем не хуже, а то ещё и корректней, семейства Си, второе явно перебор).
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
09.10.2015, 23:03 18
korvin_, т.е. ваша тэчека: вопрос принадлежности к семейству -- это вопрос семантики. Так? Но я не знаю что такое "семейство".

Добавлено через 42 секунды
точнее знаю. Например семейство lisp. Это никак не относится к тому о чем тут говорится.
0
09.10.2015, 23:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2015, 23:03
Помогаю со студенческими работами здесь

Linux Mint — Чем она отличается от других Linux/Unix-подобных и для чего предназначена в первую очередь,
какие +/- и фичи имеет? так же можно какие то интересные факты...

Чем отличается Cisco Radius Client от других Radius Client?
Собственно весь вопрос в заголовке темы. Чем отличается Radius клиент Cisco от других? К примеру от...

О целях c++ и других языков
Здравствуйте. Подскажите пожалуйста какие цели у c++, т.е что можно на нем написать (интересует...

Поддержка других языков в командной строке
// Перемещено из темы: https://www.cyberforum.ru/cmd-bat/thread1179830.html Добрый вечер!...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru