Форум программистов, компьютерный форум CyberForum.ru

Си является подмножеством С++? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
The_Immortal
1548 / 484 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
12.11.2012, 22:54     Си является подмножеством С++? #1
Занимаюсь переводом книги по плюсам.

"Created by Bjarne Stroustrup, C++ is a direct descendant of the C language. In fact, C++ retains almost all of C as a subset. However, C++ offers better ways to do things and some brand-new capabilities, too."

"Язык программирования С++, созданный Бьерном Страуструпом, является прямым потомком языка Си. Фактически С++ включает в себя практически весь Си как подмножество, но вместе с тем предоставляет более эффективные средства для решения задач, а также обладает некоторыми принципиально новыми возможностями."

На самом деле этот кусок до сих пор обсуждается на Мультитране (кейворд "to do things" - кому интересно, можете глянуть, но флуда там дофига). Честно говоря, не думал, что так зацепятся за "подмножество"

Основной аргумент:
Как можно назвать язык программирования "подмножеством" другого языка?! Можно сказать, что "практически язык является расширенным вариантом другого языка", "язык почти полностью включает в себя структуру/функционал другого языка". Ну или в крайнем случае - так, как предложила Игишева. Ибо подмножеством может быть только алфавит языка.
И я что-то задумался, насчет своего варианта...

Хотелось бы услышать Вашего мнения, специалисты


Благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 22:54     Си является подмножеством С++?
Посмотрите здесь:

Напишите программу, которая определяет, является ли данная строка является действительным IP-адресом C++
C++ Проверить, является ли один массив подмножеством другого
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени C++
C++ Определите, является ли число степенью числа 2, и если является, то выведите значение этой степени
C++ Если число является простым, то функция возвращает true, если не является false
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.11.2012, 22:58     Си является подмножеством С++? #2
Тоже мне, тема для обсуждения.
Надеюсь, употребляя слово "ЯЗЫК", ты не имел в виду язык с точки зрения лингвистов-языковедов? Мы ж о ЯП говорим!
AlexSun
16 / 14 / 1
Регистрация: 03.11.2010
Сообщений: 169
12.11.2012, 22:59     Си является подмножеством С++? #3
язык почти полностью включает в себя структуру/функционал другого языка
Я бы так сказал.
The_Immortal
1548 / 484 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
12.11.2012, 23:00  [ТС]     Си является подмножеством С++? #4
Kuzia domovenok,

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ты не имел в виду язык с точки зрения лингвистов-языковедов
Нет, не имел :-)

А если по теме - можно так сказать?
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,043
12.11.2012, 23:04     Си является подмножеством С++? #5
я бы тоже сказал
Цитата Сообщение от The_Immortal Посмотреть сообщение
"язык почти полностью включает в себя структуру/функционал другого языка".
ибо подмножество подразумевает что С полностью вошел в плюсы, без каких либо изменений
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
12.11.2012, 23:27     Си является подмножеством С++? #6
Это родственные языки. Но тем не менее, не всякий валидный код на Си является валидным кодом на Си++. И наоборот.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.11.2012, 23:38     Си является подмножеством С++? #7
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Это родственные языки. Но тем не менее, не всякий валидный код на Си является валидным кодом на Си++. И наоборот.
Можно пример, пожалуйста? Я верю, что это так. Постоянно кажется, что где-то я уже слышал это, но ни одного примера в голову не лезет. Я знаю что Си более удачен с точки зрения преобразования типов и способен неявно преобразовывать то, на что С++ будет делать замечания и ошибки. Но кроме этого ничего в голову не лезет.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.11.2012, 23:39     Си является подмножеством С++? #8
Даже на этот вопрос можно развернуть холивар.
Мое мнение - true, так как С++ содержит в себе все возможности С, и небольшие различия в синтаксисе этого не отменяют.
Kuzia domovenok, примеров десятки, практически все они есть в книге мертвого страуса. Сходу вспомнился тип символьных литералов, плюсовый дефайн, запрет на
C++
1
T *x = (void *) y
в плюсах, правило неявного int в с, аргументы main(в с main() означает любое количество аргументов, в плюсах - ни одного).
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
12.11.2012, 23:45     Си является подмножеством С++? #9
Kuzia domovenok, в Си можно рекурсивно вызывать main, С++, вроде, такое не проглотит.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,876
Записей в блоге: 2
Завершенные тесты: 1
12.11.2012, 23:47     Си является подмножеством С++? #10
Цитата Сообщение от Toshkarik Посмотреть сообщение
в Си можно рекурсивно вызывать main, С++, вроде, такое не проглотит.
Попробовал ради интереса - глотает и не ругается, до тех пор, пока стек тютю (VS2012)
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
12.11.2012, 23:49     Си является подмножеством С++? #11
Croessmah, Наверно зависит от компилятора. Так как стандартом запрещено вызывать main рекурсивно.
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,043
12.11.2012, 23:50     Си является подмножеством С++? #12
Цитата Сообщение от Croessmah Посмотреть сообщение
Попробовал ради интереса - глотает и не ругается, до тех пор, пока стек тютю (VS2012)
а файл расширения c или cpp ?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,876
Записей в блоге: 2
Завершенные тесты: 1
12.11.2012, 23:52     Си является подмножеством С++? #13
Цитата Сообщение от Toshkarik Посмотреть сообщение
Так как стандартом запрещено вызывать main рекурсивно.
g++ тоже глотает...в общем без разницы =)

Добавлено через 30 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
а файл расширения c или cpp ?
не волнуйтесь, он cpp =)
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.11.2012, 23:53     Си является подмножеством С++? #14
Цитата Сообщение от Croessmah Посмотреть сообщение
Попробовал ради интереса - глотает и не ругается, до тех пор, пока стек тютю (VS2012)
студия не соблюдает стандарт.
Еще парочка различий вспомнилась
-В С struct является именем типа, поэтому ее обязательно писать всегда. В плюсах struct опционален.
-В С++ main по умолчанию возвращает 0.
-В С можно написать
C
1
(0 ? sin : cos)(1.0)
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
12.11.2012, 23:55     Си является подмножеством С++? #15
Croessmah, если компилировать с соответствием стандарта, то gcc выдает ошибку:
main.cpp:237:9: error: ISO C++ forbids taking address of function '::main' [-pedantic]
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.11.2012, 23:58     Си является подмножеством С++? #16
Цитата Сообщение от diagon Посмотреть сообщение
T *x = (void *) y
а почему это запретили? Зря. Это именно к (void*) относится или так можно в С++?:
C++
1
2
T *x=(T*)y;
void* z=(void*)x;
Добавлено через 1 минуту
Цитата Сообщение от diagon Посмотреть сообщение
-В С struct является именем типа, поэтому ее обязательно писать всегда. В плюсах struct опционален.
Ну это мелочи. Это ещё в сях вечно тайпдефом обходилось.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,876
Записей в блоге: 2
Завершенные тесты: 1
12.11.2012, 23:59     Си является подмножеством С++? #17
Цитата Сообщение от Toshkarik Посмотреть сообщение
Croessmah, если компилировать с соответствием стандарта, то gcc выдает ошибку:
Тут Вы правы.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.11.2012, 23:59     Си является подмножеством С++? #18
Цитата Сообщение от diagon Посмотреть сообщение
-В С++ main по умолчанию возвращает 0.
то есть для всех моих функций может вылезти ошибка function must return a value, а для main нет?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
13.11.2012, 00:01     Си является подмножеством С++? #19
Kuzia domovenok, можно присвоить любой адрес или указатель, указателю на void. Указатель на void придется явно приводить, что бы присвоить другому указателю ( не на void ). В Си же не нужно явно приводить. Запретили, наверно, из соображения безопасности.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
то есть для всех моих функций может вылезти ошибка function must return a value, а для main нет?
Да, return в main можно не писать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2012, 00:09     Си является подмножеством С++?
Еще ссылки по теме:

Определить, является ли текст является записью четного числа в семеричной системе C++
C++ Определить, является ли множество X подмножеством множества Y
Проверить, является ли целое число трёхзначным, является ли оно квадратом C++

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.11.2012, 00:09     Си является подмножеством С++? #20
И еще немного:
-В С можно на месте возвращаемого типа или аргумента функции объявить структуру
-В С можно использовать необъявленные функции
-В С можно использовать goto в обход инициализации переменных
-В С перечислениям можно присваивать целочисленные значения
-В С можно писать типы аргументов функции после объявления, собсно, функции
Т.е. такой код валиден
C
1
2
3
4
void f(a, b, c)
char *a;
double *c;
{ ..
И многое другое. Мне уже надоело :)
Yandex
Объявления
13.11.2012, 00:09     Си является подмножеством С++?
Ответ Создать тему
Опции темы

Текущее время: 19:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru