си от крестов отличается только лишь наличием классов?
и мелкостя всякие типа, объявление переменных где попало?
или в чем еще?
отделил по просьбе ТС
Настоятельно просим вас при общении соблюдать Правила форума и законы РФ. Наша тематика вне политики, поэтому воздержитесь от обсуждения ситуации на Украине и связанных с ней событий, независимо от того, какую сторону вы поддерживаете.
Также напоминаем, что наш форум находится в доменной зоне .ru, физически расположен на российских серверах и мы соблюдаем действующее законодательство России. Любые сообщения о политике будут удаляться.
Linux Forum → Разговоры о Linux и не только → Различия в языках программирования C и C++
Чтобы отправить ответ, вы должны войти или зарегистрироваться
си от крестов отличается только лишь наличием классов?
и мелкостя всякие типа, объявление переменных где попало?
или в чем еще?
отделил по просьбе ТС
си от крестов отличается только лишь наличием классов?
и мелкостя всякие типа, объявление переменных где попало?
или в чем еще?
синтаксически отличий не много(хотя они и базовые): кассы, шаблоны, перегрузка функций и операторов... более жёсткие требования к типизации и вообще к синтаксису... есть ещё другие мелочи...
а вот идейно - это в корне разные языки.
а вот идейно - это в корне разные языки.
вот тут можно в два слова разжевать?
вот тут можно в два слова разжевать?
насчёт "в корне разные" я наверное погорячился... но всё же, как ни крути, С++ предполагает ООП подход, а си - классический императивный/структурный. В любом случае на плюсах можно писать "как на си", хотя это считается плохим стилем. а вот обратное практически не возможно...
ну то, что один ооп а другой структурный эт я знал.
тут пока ждал ответ полазил в гугле, многие (они назыают себя хорошими выдающимися программистами с тысящами проектов за спиной) считают что с++ не нужен..
спорить с ними не могу, нет багажа знаний.
интересно почему с++ называли..
есть ли чего общего в названии и операции ++?
или это совпадение
Гугл выдает: http://otvety.google.ru/otvety/thread?t … &pli=1
c++ это вывернутый наизнанку C.
интересно почему с++ называли..
есть ли чего общего в названии и операции ++?
или это совпадение
"си с блекджеком и шлюхами" звучало как-то длинно...
"си с классами" - не кошерно
так что тов. Страуструп просто дописали инкремент...
Друзья, это называется флуд.
а) это называется оффтоп
б) в "разговорах обо всём" на не большой оффтоп обычно закрывают глаза
в) закругляемся...
К тому же это настолько заезженный вопрос, что одна из первых ссылок Гугла выдает: http://otvety.google.ru/otvety/thread?t … &pli=1
кстати - неправильный ответ. C++ это вовсе не "си с картами и девочками". Это вообще _другой_ язык.
drBatty, формально да. Но по сути это просто дополненный язык С.
Не путайте его с C# wink
Уже за попкорном бежать? 
voral, за пивом и чипсами 
формально да. Но по сути это просто дополненный язык С.
как раз ФОРМАЛЬНО - C++ это C с классами и разными плюшками, вроде комментариев удобных.
но ПО СУТИ - это совершенно иной ЯП, и писать на нём нужно совсем иначе.
Не путайте его с C#
а что это за НЁХ?
на математические курсы надо ходить, а языки самому учить
но ПО СУТИ - это совершенно иной ЯП, и писать на нём нужно совсем иначе.
Бездоказательно как то
drBatty, сами вы нёх-нух. Прежде, чем чушь городить, разобрались бы с фактами:
1. С - язык, создающий простые структурированные программные коды.
2. С++ - тот же язык С, модифицированный возможностями инкапсуляции классов и отслеживанием их перегрузки. Это позволяет избежать огромного кода, неизбежного пр применении С.
3. С# - язык программирования, основанный на С, но ориентирован исключительно на веб-платформы smile
1. С - язык, создающий простые структурированные программные коды.
2. С++ - тот же язык С, модифицированный возможностями инкапсуляции классов и отслеживанием их перегрузки. Это позволяет избежать огромного кода, неизбежного пр применении С.
Чем лучше программист знает С, тем труднее будет для него при программировании на С++ отойти от стиля программирования на С.
Идея С++ в том что он практически полностью совместим с си, однако является совершенно другим (объектно-ориентированным) по сути. Можно писать на нём "как на си" используя плюшки и пряники, но это называется быдлокод, ибо теряет силу половины нововведений.
3. С# - язык программирования, основанный на С, но ориентирован исключительно на веб-платформы
это всё на винфаке обсуждают... а тут лучше про java вспомнить...
Fat-Zer, вы имеете ввиду j#?
Fat-Zer, вы имеете ввиду j#?
нет.... J# это извращённое понимание java от M$ (как мне рассказывали/я читал, сам я его в глаза не видел)
А вот C# и java очень похожи... правда ИМХО это всё равно нечто противоестественное созданное из плюсов...
1. С - язык, создающий простые структурированные программные коды.
2. С++ - тот же язык С, модифицированный возможностями инкапсуляции классов и отслеживанием их перегрузки. Это позволяет избежать огромного кода, неизбежного пр применении С.
facepalm...
3. С# - язык программирования, основанный на С, но ориентирован исключительно на веб-платформы
это php
drBatty, если вы знаете только PHP, то это ваши пробелы.
Web: PHP, HTML, XML, Java Script, VB Script, C#, J#, Rev... smile
Wolfenberg, дело в том, что и C# и J# к веб-платформам отношение имеет весьма отдалённое... всё это языки для M$.Net.
3. С# - язык программирования, основанный на С, но ориентирован исключительно на веб-платформы smile
вот мужики то не знают. Пишут на нем игры 3D под XNA и ПО для офисов -)
основанный на С
на яве он основан
_
mogul82, да ну? А здесь по-другому пишут:
http://ru.wikipedia.org/wiki/C_Sharp wink
Вот автор-то не знает smile
Бездоказательно как то
докажу.
В языке Си имеется две сущности:
1) подчинённая сущность ЧИСЛО,
2) и главная сущность ФУНКЦИЯ.
Программист пишет ФУНКЦИИ, которые обрабатывают ЧИСЛА (сами, или другими ФУНКЦИЯМИ).
В С++ нету этих сущностей. За то есть другие:
1) главная сущность КЛАСС.
2) подчинённая сущность МЕТОД.
Программист пишет КЛАССЫ, которые включают в себя другие КЛАССЫ, а так-же МЕТОДЫ. МЕТОД в С++ не существует сам по себе, а прибит гвоздями к КЛАССУ. В Си напротив - ЧИСЛА не существуют сами по себе, а жёстко прибиты к ФУНКЦИЯМ.
В С++ имеются особые, встроенные классы. Например встроенный класс int, у которого имеется встроенный метод int::operator-(int). С виду, этот оператор работает также, как и в Си, но это только на первый взгляд. Если ситуация чуть сложнее примитивной, всё меняется. Например, я уже писал про код x-- - --x;
В теории, в Си, этот код можно выполнить тремя способами, и получить три разных результата (0, 1, и 2). Но это для классического компьютера. А у нас - НЕ классический. Потому компилятор применяет (не всегда) четвёртый путь - он ОДНОВРЕМЕННО выполняет постфиксный декремент ЧИСЛА, вместе с префиксным декрементом и последующим вычитанием ЧИСЕЛ.
Но в С++ нет ЧИСЕЛ, а есть КЛАССЫ. Именно по этой причине данное выражение в С++ вычисляется однозначно как
1 - x.operator--();
2 - x.operator-(x.operator--(int));
Операции 1 и 2 могут выполнятся в любом порядке или одновременно - результат однозначный x-- - --x == 1 в С++.
Так получается из-за появление точки следования, ибо в С++ нет чисел, а есть только КЛАССЫ и их МЕТОДЫ.
Это позволяет избежать огромного кода, неизбежного пр применении С.
это на каких курсах вам подобную глупость сказали? лишний код появляется тогда, и только тогда, когда вы используете не тот инструмент. Например ООП язык для решения не ООП задачи и наоборот.
drBatty, если вы знаете только PHP, то это ваши пробелы.
Web: PHP, HTML, XML, Java Script, VB Script, C#, J#, Rev...
HTML и XML это вообще не языки программирования. Не дай вам б-г ляпнуть подобную глупость кому-то другому
C# это не web, это маздайное УГ, которое маздайщики применяют для мадайных быдлосайтов за не имением лучшего.
Да и вообще, мы тут не про скрипты...
Идея С++ в том что он практически полностью совместим с си, однако является совершенно другим (объектно-ориентированным) по сути.
да не разу он не совместим. встроенный тип int на самом деле - встроенный тип. Это имитация целого числа. На самом деле, это класс, со своими методами и со своими конструкторами. Многие программы на C работают и на C++, но исключительно только благодаря имитации. Код порождённый компилятором с плюсами в корне отличается от кода без плюсов. И только благодаря оптимизации иногда получается одно и тоже.
mogul82, да ну? А здесь по-другому пишут:
http://ru.wikipedia.org/wiki/C_Sharp
Вот автор-то не знает
мне подправить, а вообще не вижу, где это написано...mogul82 прав: смесь C++, java и больной фантазии мелкомягких. Хотя и не такой $@%$^ой как C++/CLI...
Например, я уже писал про код x-- - --x;
В теории, в Си, этот код можно выполнить тремя способами, и получить три разных результата (0, 1, и 2).
по логике он может вернуть 0 1 и 2, а на практике он может вернуть 100500 и это будет верно.
Операции 1 и 2 могут выполнятся в любом порядке или одновременно - результат однозначный x-- - --x == 1 в С++.
авот мой глупый gcc говорит, что это будет 0... а ещё где-то читал, что это UB. smile
да не разу он не совместим. встроенный тип int на самом деле - встроенный тип. Это имитация целого числа. На самом деле, это класс, со своими методами и со своими конструкторами.
вас опять понесло? это в java так вроде, а с++ такой ерундой не должен занимается... а вообще насчёт этого не уверен...есть какой-то пруфф? или какой код, в котором в ассемблированном виде имеет значительные различия...
по логике он может вернуть 0 1 и 2, а на практике он может вернуть 100500 и это будет верно.
не. для классического компьютера только 0, 1, или 2. Для неклассического действительно 100500 может. А может и диск форматнуть. smile
авот мой глупый gcc говорит, что это будет 0...
1) а что говорит ваш g++?
2) x это у вас константа? Тогда и x-- - --x; тоже константа, и вычисление происходит на этапе компиляции (а не в рантайме). Причём на этапе компиляции константные целые выражения вычисляются в точности как в С, с самой высокой степенью оптимизации. А в этих условиях получается именно 0.
а ещё где-то читал, что это UB.
а вам об этом компилятор ваш разве не сказал? oO
мой меня за такое быдлокодером в открытую обзывает wink
Конечно UB. Но вот только не в С++.
Точнее говоря, я точно не знаю, является-ли этот быдлокод UB с т.з. стандарта C++, или нет. С++ вообще довольно запутанный язык, и написать быдлокод на нём куда как проще. (и часто компилятор молчит в тряпочку).
вас опять понесло? это в java так вроде
про джаву - не в курсе.
а с++ такой ерундой не должен занимается... а вообще насчёт этого не уверен...есть какой-то пруфф? или какой код, в котором в ассемблированном виде имеет значительные различия...
ну под рукой нет конечно. но на самом деле - так и есть. конечно, компилятор может и не так считать. ЧСХ - стандарт это позволяет. С++ специально так построен - там костыль на костыле: например
int x = 17;
это на самом деле
int x(17);
т.е. вызов конструктора по умолчанию. Естественно, на деле вызывается конструктор копирования по умолчанию, и в коде это выглядит точно так-же.
1) а что говорит ваш g++?
2) x это у вас константа? Тогда и x-- - --x; тоже константа, и вычисление происходит на этапе компиляции (а не в рантайме). Причём на этапе компиляции константные целые выражения вычисляются в точности как в С, с самой высокой степенью оптимизации. А в этих условиях получается именно 0.
он это и говорит... пробовал и так, и эдак...
а вам об этом компилятор ваш разве не сказал?
не пишу -Wall по всем мелочам))
С++ вообще довольно запутанный язык, и написать быдлокод на нём куда как проще.
си не такой запутанный, но написать на нём быдлокод ещё проще smile
ЗЫ: ещё один UB:
x = y = x-- - --x;у меня x = -1; y=0; в общем причины понятны, но смотрится забавно smile
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Linux Forum → Разговоры о Linux и не только → Различия в языках программирования C и C++
Форум работает на PunBB, при поддержке Informer Technologies, Inc