1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
1

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

12.11.2012, 22:54. Показов 5085. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Занимаюсь переводом книги по плюсам.

"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" - кому интересно, можете глянуть, но флуда там дофига). Честно говоря, не думал, что так зацепятся за "подмножество"

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

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


Благодарю!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2012, 22:54
Ответы с готовыми решениями:

Определить, является ли множество X подмножеством множества Y
Рассматривая массивы X, Y и Z как представление некоторых множеств из объектов типа индекс (X=TRUE,...

Функция проверяющая, является ли массив В подмножеством массива А
#include <iostream> #include <cstdlib> #include <ctime> #include <vector> using namespace std;...

Установить, является ли одно множество подмножеством другого
помогите пожалуста))) 1)Создать множества А,В,С- псевдослучайных чисел из натурального ряда;...

Проверить, является ли один массив подмножеством другого
Здравствуйте! Опять нужна помощь. Задание: Написать функцию, принимающую в качестве аргумента,...

21
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
12.11.2012, 22:58 2
Тоже мне, тема для обсуждения.
Надеюсь, употребляя слово "ЯЗЫК", ты не имел в виду язык с точки зрения лингвистов-языковедов? Мы ж о ЯП говорим!
1
23 / 21 / 4
Регистрация: 03.11.2010
Сообщений: 169
12.11.2012, 22:59 3
язык почти полностью включает в себя структуру/функционал другого языка
Я бы так сказал.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
12.11.2012, 23:00  [ТС] 4
Kuzia domovenok,

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

А если по теме - можно так сказать?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
12.11.2012, 23:04 5
я бы тоже сказал
Цитата Сообщение от The_Immortal Посмотреть сообщение
"язык почти полностью включает в себя структуру/функционал другого языка".
ибо подмножество подразумевает что С полностью вошел в плюсы, без каких либо изменений
1
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
12.11.2012, 23:27 6
Это родственные языки. Но тем не менее, не всякий валидный код на Си является валидным кодом на Си++. И наоборот.
1
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
12.11.2012, 23:38 7
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Это родственные языки. Но тем не менее, не всякий валидный код на Си является валидным кодом на Си++. И наоборот.
Можно пример, пожалуйста? Я верю, что это так. Постоянно кажется, что где-то я уже слышал это, но ни одного примера в голову не лезет. Я знаю что Си более удачен с точки зрения преобразования типов и способен неявно преобразовывать то, на что С++ будет делать замечания и ошибки. Но кроме этого ничего в голову не лезет.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.11.2012, 23:39 8
Даже на этот вопрос можно развернуть холивар.
Мое мнение - true, так как С++ содержит в себе все возможности С, и небольшие различия в синтаксисе этого не отменяют.
Kuzia domovenok, примеров десятки, практически все они есть в книге мертвого страуса. Сходу вспомнился тип символьных литералов, плюсовый дефайн, запрет на
C++
1
T *x = (void *) y
в плюсах, правило неявного int в с, аргументы main(в с main() означает любое количество аргументов, в плюсах - ни одного).
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
12.11.2012, 23:45 9
Kuzia domovenok, в Си можно рекурсивно вызывать main, С++, вроде, такое не проглотит.
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
12.11.2012, 23:47 10
Цитата Сообщение от Toshkarik Посмотреть сообщение
в Си можно рекурсивно вызывать main, С++, вроде, такое не проглотит.
Попробовал ради интереса - глотает и не ругается, до тех пор, пока стек тютю (VS2012)
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
12.11.2012, 23:49 11
Croessmah, Наверно зависит от компилятора. Так как стандартом запрещено вызывать main рекурсивно.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,512
12.11.2012, 23:50 12
Цитата Сообщение от Croessmah Посмотреть сообщение
Попробовал ради интереса - глотает и не ругается, до тех пор, пока стек тютю (VS2012)
а файл расширения c или cpp ?
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
12.11.2012, 23:52 13
Цитата Сообщение от Toshkarik Посмотреть сообщение
Так как стандартом запрещено вызывать main рекурсивно.
g++ тоже глотает...в общем без разницы =)

Добавлено через 30 секунд
Цитата Сообщение от ValeryS Посмотреть сообщение
а файл расширения c или cpp ?
не волнуйтесь, он cpp =)
0
Higher
1953 / 1219 / 120
Регистрация: 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)
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
12.11.2012, 23:55 15
Croessmah, если компилировать с соответствием стандарта, то gcc выдает ошибку:
main.cpp:237:9: error: ISO C++ forbids taking address of function '::main' [-pedantic]
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 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 опционален.
Ну это мелочи. Это ещё в сях вечно тайпдефом обходилось.
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
12.11.2012, 23:59 17
Цитата Сообщение от Toshkarik Посмотреть сообщение
Croessmah, если компилировать с соответствием стандарта, то gcc выдает ошибку:
Тут Вы правы.
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
12.11.2012, 23:59 18
Цитата Сообщение от diagon Посмотреть сообщение
-В С++ main по умолчанию возвращает 0.
то есть для всех моих функций может вылезти ошибка function must return a value, а для main нет?
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
13.11.2012, 00:01 19
Kuzia domovenok, можно присвоить любой адрес или указатель, указателю на void. Указатель на void придется явно приводить, что бы присвоить другому указателю ( не на void ). В Си же не нужно явно приводить. Запретили, наверно, из соображения безопасности.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
то есть для всех моих функций может вылезти ошибка function must return a value, а для main нет?
Да, return в main можно не писать.
0
Higher
1953 / 1219 / 120
Регистрация: 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;
{ ..
И многое другое. Мне уже надоело :)
0
13.11.2012, 00:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2012, 00:09
Помогаю со студенческими работами здесь

Указатели: написать функцию, проверяющую, является ли массив В подмножеством массива А
Задача такая: Написать программу, которая содержит функцию, принимающую в качестве аргумента,...

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

Определить, является ли А подмножеством множества В
Написать программу, в которой для конечных упорядоченных множеств реализовать все основные...

Доказать, что множество A является подмножеством B
Доказать, что множество A является подмножеством множества B тогда и только тогда, когда любой...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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