Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Хотелось бы понять логику синтаксиса C++. ?


Автор: denes 25.8.2011, 11:32
Синтаксис С++

За годы преподавания C++ я узнал, что подавляющее большинство программистов C++ (включая самых опытных) редко пользуется некоторыми возможностями языка. Конечно, дело это сугубо индивидуальное, но при всей сложности и глубине C++ небольшой обзор не повредит никому. В этой и двух следующих главах я постараюсь выровнять уровень подготовки читателей перед тем, как переходить к действительно интересным темам. Эта глава не заменит Annotated Reference Manual или другое справочное руководство - вы не найдете в ней полной спецификации языка. Я лишь рассмотрю некоторые языковые средства, которые часто понимаются неверно или не понимаются вовсе. Придержите шляпу и приготовьтесь к стремительному облету синтаксиса C++!

этот Синтаксис он как типа философии или реально приминяеца  ? понятнее ответе ?

Автор: azesmcar 25.8.2011, 11:37
Я нихрена не понял, этот вопрос, статья или ответ?

Цитата(denes @  25.8.2011,  11:32 Найти цитируемый пост)
этот Синтаксис он как типа философии или реально приминяеца  ? понятнее ответе ? 

какой синтаксис?

Цитата(denes @  25.8.2011,  11:32 Найти цитируемый пост)
Придержите шляпу и приготовьтесь к стремительному облету синтаксиса C++!

Приготовился, где обещанный облет?

Автор: denes 25.8.2011, 12:44
Если не понял за каким хреном сюда влез ??? 

Автор: azesmcar 25.8.2011, 13:08
Цитата(denes @  25.8.2011,  12:44 Найти цитируемый пост)
Если не понял за каким хреном сюда влез ???  

У тебя все в порядке с головой? Ты вроде как создал тему и в конце что-то спрашиваешь, я тебе внятно объяснил, что твой вопрос непонятен, и судя по тому, что я вроде как русским языком владею неплохо и судя по количеству ответов в твоей теме непонятен он не мне одному. Если у тебя нет желания получить ответы на свой вопрос, то какого черта ты тогда тему создал?
Ты годами преподаешь C++ и не знаешь что такое синтаксис? О чем вообще твой вопрос?

Автор: azesmcar 25.8.2011, 13:27
Эврика! smile 

Цитата(denes @  25.8.2011,  11:32 Найти цитируемый пост)
За годы преподавания C++ я узнал, что подавляющее большинство программистов C++ (включая самых опытных) редко пользуется некоторыми возможностями языка. Конечно, дело это сугубо индивидуальное, но при всей сложности и глубине C++ небольшой обзор не повредит никому. В этой и двух следующих главах я постараюсь выровнять уровень подготовки читателей перед тем, как переходить к действительно интересным темам. Эта глава не заменит Annotated Reference Manual или другое справочное руководство - вы не найдете в ней полной спецификации языка. Я лишь рассмотрю некоторые языковые средства, которые часто понимаются неверно или не понимаются вовсе. Придержите шляпу и приготовьтесь к стремительному облету синтаксиса C++!

Это же цитата из книги smile 
Цитаты надо как-то выделять, чтобы они не путались с собственным сообщением, а желание отвечать все равно пропало.

Автор: Artemon 25.8.2011, 13:28
Попробую внести ясность smile

В середине первого топика идет вырезка из статьи.
В конце топика идет примерно такой вопрос: "Неужели какие-то заковыристые конструкции применяются в реальных программах ?"

Автор: azesmcar 25.8.2011, 13:32
Цитата(Artemon @  25.8.2011,  13:28 Найти цитируемый пост)
В конце топика идет примерно такой вопрос: "Неужели какие-то заковыристые конструкции применяются в реальных программах ?" 

Вот я и спросил
Цитата(azesmcar @  25.8.2011,  11:37 Найти цитируемый пост)
какой синтаксис?

Какие именно заковыристые конструкции? Одни могут применяться, другие нет. Кто-то может и switch сочтет заковыристой конструкцией.

Автор: Artemon 25.8.2011, 14:43
Цитата(azesmcar @  25.8.2011,  13:32 Найти цитируемый пост)
Кто-то может и switch сочтет заковыристой конструкцией

Я думаю каразтаки сейчас именно этот случай  smile 

Автор: volatile 25.8.2011, 23:54
Цитата(denes @  25.8.2011,  11:32 Найти цитируемый пост)
Синтаксис он как типа философии или реально приминяеца  ? понятнее ответе ? 

Приблизительный перевод:
Применяется ли знание синтаксиса в реальном программировании, или это абстракция не имеющая практического применения ?

Вобщем чел, хочет знать, нужно ли изучать ему синтаксис, или лучше не забивать голову всякой хренью,...   smile 

denes, короче, эту хрень, к сожалению, придется изучать, если хочешь кодить...

Автор: Earnest 26.8.2011, 07:29
Синтаксис и грамматику русского языка тоже неплохо бы изучить...

Автор: denes 26.8.2011, 10:19
Применяется ли знание синтаксиса в реальном программировании, или это абстракция не имеющая практического применения ?

ты прав volatile

только где о ней подробно написано ?

Автор: newbee 26.8.2011, 10:39
denes, Капитан Очевидность заявляет: знание синтаксиса применяется в реальном программировании, так как языков программирования без синтаксиса  исчезающе мало, а у С++ сложный синтаксис, не зная который не получится писать программы.

Автор: azesmcar 26.8.2011, 10:45
Под синтаксисом языка программирования понимают набор правил для построения корректных конструкций на данном языке.
Не зная синтаксис языка на нем вообще нельзя написать ни строчки кода.

Автор: kemiisto 26.8.2011, 11:10
Что-то я не могу отыскать, но... С++ - это не один язык программирования, а несколько. Это есть в Effective C++.

Я бы слегка иначе сформулировал, чем там. 

С++ можно использовать как:
  • Улучшенный C.
  • C с классами.
  • Собственно С++.

На первом уровне при сохранении процедурного подхода вы получаете аргументы по-умолчанию, ссылки, перегруженные функции, константы, ...

На втором вы используете ООП. class и понеслась душа в рай. + Шаблоны, но по большей части, только как средство обобщённого программирования. Немного трогаете STL.

На третьем шаблоны уже для метапрограммирования, исключения и прочие "прелести". Используете STL "на всю катушку".

При этом некоторые синтаксические возможности трудно однозначно отнести к какому-либо уровню. Например, исключения. Кто-то считает, что ООП без исключение - это и не ООП. Поэтому включает исключения уже на уровень 2.

Автор: denes 26.8.2011, 14:26
а где есть эти определения ?

где эти правила ?

Автор: azesmcar 26.8.2011, 14:29
Цитата(denes @  26.8.2011,  14:26 Найти цитируемый пост)
а где есть эти определения ?

где эти правила ? 

В стандарте языка и в любой книге по C++.

Добавлено через 1 минуту и 51 секунду
Видимо нужен пример.
Описание того, как пишется тот или иной оператор и есть описание синтаксиса языка. Книга, описывающая как писать оператор if по сути описывает синтаксис.

Автор: denes 26.8.2011, 14:56
у меня две книги по языку правил не видел ! только изучение написания и значения !

может это :Критика синтаксиса

    Операция присваивания обозначается как =, а операция сравнения как ==. Их легко спутать, при этом операция присваивания возвращает значение, поэтому присваивание на месте выражения является синтаксически корректным, а в конструкциях цикла и ветвления появление числа на месте логического значения также допустимо, так что ошибочная конструкция оказывается синтаксически правильной. Типичный пример подобной ошибки:

    if (x=0) { операторы }

    Здесь в условном операторе по ошибке написано присваивание вместо сравнения. В результате, вместо того, чтобы сравнить текущее значение x с нулём, программа присвоит x нулевое значение, а потом интерпретирует его как значение условия в операторе if. Так как нуль соответствует логическому значению «ложь», блок операторов в условной конструкции не выполнится никогда. Ошибки такого рода трудно выявлять, но во многих современных компиляторах предлагается диагностика некоторых подобных конструкций.
    Операции присваивания (=), инкрементации (++), декрементации (--) и другие возвращают значение. В сочетании с обилием операций это позволяет, хотя и не обязывает, создавать трудночитаемые выражения. Наличие этих операций в C было вызвано желанием получить инструмент ручной оптимизации кода[источник не указан 339 дней], но в настоящее время оптимизирующие компиляторы обычно генерируют оптимальный код и на традиционных выражениях. С другой стороны, один из основных принципов языков C и C++ — позволять программисту писать в любом стиле, а не навязывать «хороший» стиль.
    Некоторые преобразования типов неинтуитивны[источник не указан 339 дней]. В частности, операция над беззнаковым и знаковым числами выдаёт беззнаковый результат.
    Многие конструкции С++ позволяют делать то же самое, что и конструкции C, также присутствующие в С++. Это иногда сбивает с толку новичков. Например, приведение типов при помощи dynamic_cast позволяет привести указатель или ссылку строго в пределах иерархии классов. Это делает код более надёжным, декларативным и позволяет находить приведения в пределах иерархии при помощи инструментов типа grep. Однако вследствие требования высокой степени совместимости с C старое приведение типов всё ещё поддерживается.

Автор: newbee 26.8.2011, 15:04
Дайте же успокоительного этому поциенту!

denes, излагай ясно, чего ты хочешь понять. И помни, что правильно составленный вопрос - это половина ответа. А теперь попробуй перечитать, что ты нам сюда пишешь.

Автор: denes 26.8.2011, 15:26
а ну тибя нафиг

Автор: azesmcar 26.8.2011, 15:29
denes

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

Цитата(denes @  26.8.2011,  14:56 Найти цитируемый пост)
у меня две книги по языку правил не видел ! только изучение написания и значения !

этого не может быть, ты хочешь сказать, что твоя книга по C++ не описывает то, как составлять программу на языке C++?

Автор: denes 26.8.2011, 17:46
да причом тут мысль ! мне ответ нужен на вапрос темы а ты не отвичаеш !

Автор: azesmcar 26.8.2011, 18:08
Цитата(denes @  26.8.2011,  17:46 Найти цитируемый пост)
да причом тут мысль ! мне ответ нужен на вапрос темы а ты не отвичаеш ! 

http://lurkmore.ru/%D0%9D%D0%B8_%D0%B5%D0%B4%D0%B8%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D0%B7%D1%80%D1%8B%D0%B2%D0%B0 smile 
Тебе на вопрос уже раз 8 ответили в теме. Синтаксис языка - это правила построения корректных конструкций на этом языке, учить его естественно надо, так-как без знаний синтаксиса языка на нем ничего не напишешь. Описан синтаксис C++ в любой книге по C++, что из этого тебе непонятно? Если твой вопрос в другом, то сформулируй его как следует.

Автор: denes 26.8.2011, 20:29
а ясно но как тогда понять это :Конструкторы и деструктор

В классах всегда есть специальные функции — конструкторы и деструкторы, которые могут быть объявлены явно или неявно. ?

и как узнать когда их надо объявлять ?

Добавлено через 34 секунды
коль это правила разъясните его !

Автор: denes 26.8.2011, 21:09
а ты на мой

Автор: mes 26.8.2011, 21:15
Цитата(denes @  26.8.2011,  19:29 Найти цитируемый пост)
а ясно но как тогда понять это :Конструкторы и деструктор

В классах всегда есть специальные функции — конструкторы и деструкторы, которые могут быть объявлены явно или неявно. ?

и как узнать когда их надо объявлять ?

внимательно читать книжки и въедчиво разбирать примеры.. другого пути нет.. форум преднозначен для иного, и поэтому тут ответа на подобные вопросы не получите.. 

Автор: kuzulis 26.8.2011, 23:26
Люди, ну хватит кормить тролля. Пусть пациент уже сам найдет ответ в книжках. 
ЗЫ: Учицца, учицца и еще раз учицца!   smile 
ЗЫЗЫ: Я б не хотел иметь такого преподавателя.  smile 

Автор: denes 27.8.2011, 18:26
да я и так пытаюсь одно дело прочитать а другое дело прочитать и понять как работает там примеров маловать !

а некоторые пробуеш они не работают ! некоторые компиляторы не совпадают а я не магу минять их как перчатки !!! если у вас скажим не получилось вы же не бижите покупать друой компилятор так ?

и для чего по ващему нужен этот форум ?

я думал для решения сложных или не понятных вопросов ! скажим можно до фига прочесть теории но в практики быть полным нулём вот ваши книги ! без практики они мусор !!!

вот и думайте после этого нужно оно или нет ?












а читал я много просто не всё получаеца и об ошибках не в одной книги нету !!!  вот и лезу на форумы но каждому выскочки типа kuzulis мне это писать не ахото !

просто прошу помогите плиз !!!

Автор: mes 27.8.2011, 18:42
Цитата(denes @  27.8.2011,  17:26 Найти цитируемый пост)
для чего по ващему нужен этот форум ?

специализированные разделы, в том числе этот, нужны для вопросов, ответов на которые нет в книге, и при условии, что проявили желание сами с этим разобраться.. 
так если на вопрос уже сто раз отвечали и можно легко найти в гугле, вряд ли кому то захочется писать то же самое в 101й раз..

Добавлено @ 18:46
увидел kemiisto и подумал что тут как раз он был бы по теме.. 

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

Автор: denes 27.8.2011, 18:49
ну сам я не смог разобраца и в книгах не нашол !

искал нормально !

ответили нет нету ответа пока что ! ответ те чётко !

Автор: mes 27.8.2011, 18:51
Цитата(denes @  27.8.2011,  17:49 Найти цитируемый пост)
ответили нет нету ответа пока что ! ответ те чётко ! 


Цитата(mes @  27.8.2011,  17:42 Найти цитируемый пост)
не стоит увлекаться C++, зря потратите время..


Автор: denes 27.8.2011, 18:59
так ответ те чотко ! 

C++ или другой язык один хрен просто он более востребован ! хотя смотря где !

Автор: mes 27.8.2011, 19:33
Цитата(denes @  27.8.2011,  17:59 Найти цитируемый пост)
так ответ те чотко ! 

Чотко отвечать не каждому дано, обратитесь к нашему специалисту по подобной практике : http://forum.vingrad.ru/users/%D0%94%D0%BE%D0%BA%D1%82%D0%BE%D1%80%D0%A2%D1%83%D0%B0%D0%BC%D0%9E%D1%81%D0%B5%D1%81

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)