Обсуждение:Синтаксический сахар

Последнее сообщение: 3 года назад от Fobemipa в теме ««Then» и «do» в C»

Untitled править

Cубъективное утверждение:

Наверное, одной из главных областей применения «синтаксического сахара» являются собеседования, где знание хитростей языковых конструкций будет на пользу кандидату.

77.47.128.172 16:08, 10 июня 2009 (UTC)Ответить

Составные операторы править

Не являются синтаксическим сахаром. Операция вида x+=y не эквивалентна x=x+y; если x имеет побочные эффекты.Mathaddict 14:04, 12 сентября 2010 (UTC)Ответить

Что значит "x имеет побочные эффекты"? x - переменная, а не выражение, что явно указано. В любом случае, удалять огромные куски без обсуждения не стоит. Возвращаю на место. --dm обсужд. 09:33, 13 сентября 2010 (UTC)Ответить
Изменения состояния. Это в частном случае эффекты совпадают, а в общем нет: x[foo()]+=1; не то же самое, что и x[foo()]=x[foo()]+1; Чего не следует, так это писать ориссы. Mathaddict 09:46, 13 сентября 2010 (UTC)Ответить
Ещё раз повторяю: и описание, и пример вполне корректны. x явно объявлена как переменная. В Вашем примере побочным эффектом обладает foo(), а никак не x. То, что в случае применения в составе выражений (любых) функций с побочным эффектом результат может непредскауемо меняться - это общее место, и к теме обсуждения не имеет ровным счётом никакого отношения. --dm обсужд. 19:01, 13 сентября 2010 (UTC)Ответить
Таким манером можно конкретно объявить int x=2,y=2 и на основании этого доказывать, что операция сложения и умножения - одно и то же. Я не в первый раз замечаю, что вы упорствуете в том, чтобы в статьях имелась информация без источников. Которой, кстати в ен-вики нет. Mathaddict 11:33, 14 сентября 2010 (UTC)Ответить
  • Удаление, имхо, обосновано. Из приведённой информации неясно, почему пост- и префиксные инкременты и декременты относятся к синтаксическому сахару, тем более действительно, на асме есть выражение типа dec ax и inc cx. Вообще стоит добавляемую информацию подкреплять авторитетными источниками. Какое авторитетное лицо в программировании относит ++/-- к синтаксическому сахару?--FIL 13:53, 14 сентября 2010 (UTC)Ответить

В истории статьи видно, что пользователь dm удалил [[1]] то есть как раз единственный пример, указанный в единственном источнике, на который ссылается статья.


Об элементах массива. " Массивы в Си

Массивы в Си представляют собой блоки в памяти...(a — указатель на начало массива, i — индекс необходимого элемента, size — размер элемента данного типа в памяти): *(a + i * size),... "

Здесь не правильно. Адресная арифметика предполагает операции сложения адреса с учетом размера типа. Тоесть: int *a = new int[100500]; // в "a" адрес 0x100000 a++; // в "a" адрес 0x100004 a = a + 2; // в "a" адрес 0x10000c 91.200.156.30 12:40, 9 ноября 2012 (UTC) MaxОтветить

Общие рассуждения о сахаре править

Во-первых, увеличение объема кода тоже уменьшает его читабельность, поэтому нужно искать золотую середину и многие сахарные конструкции помогают ее найти - это и тенарный оператор ?:, и перегрузка операторов, и даже goto (только не надо ужасаться, break/continue/return не намного лучше goto и иногда даже хуже из-за усложнения и увеличения алгоритма - просто пользоваться инструментом надо правильно и умело); во-вторых, если рассуждать так, то и объекты являются синтаксическим сахаром, и возможно функции тоже (при наличии в языке goto), то есть понятие сахара очень размыто, - я считаю, что если что-то создается по необходимости (для упрощения работы), а не просто копированием "как в других языках", то оно нужно и название сахар к нему можно применять только в сравнении с аскетичным (и устаревшим?) способом программирования. В-третьих: я не хочу сказать, что статья про сахар ненужная, наоборот - она очень полезна для понимания теории программирования, просто хочу обратить внимание на относительность этого понятия, чтобы его фанатично не абсолютизировали и копья из-за этого не ломали. Ведь на каком-то уровне аскетизации почти любая конструкция языка может рассматриваться как синтаксический сахар, стоит ли тогда копья ломать? Лучше просто объяснить это в самой статье. 94.179.216.154 12:53, 27 июля 2011 (UTC)Ответить

Рассуждения о соли править

Мне кажется, что override в Delphi - не очень удачный пример соли, а вот обязательность определения переменных в начале модуля или функции/процедуры - это именно оно. Это сознательно сделано как профилактика уменьшения ошибок в коде. Так же как и строгая типизация. Конечно удобно объявлять переменные где хочешь и менять тип переменной по ходу, но это приводит к ошибкам. Благодаря таким ограничениям Delphi намного более ошибкоустойчивая, чем её конкуренты C/C++. 94.179.216.154 12:58, 27 июля 2011 (UTC)Ответить

Возможно, раздел "Синтаксическая соль" следует вынести в отдельную статью. Так, по крайней мере, сделано в украинской википедии Швецов Юрий 08:59, 21 апреля 2013 (UTC)Ответить

Не только альтернативный способ, но иногда единственный править

«который даёт программисту альтернативный способ записи другой, уже имеющейся в языке синтаксической конструкции» — похоже, что это не совсем так. Глубинные конструкции — ядро языка (internal language) — может и не быть представлено поверхностным синтаксисом, который программист использует, вообще, а только через производные формы (derived forms). Тем самым типобезопасность сохраняется без компромиссов, но программисту низкоуровневые конструкции вообще не даются. (об этом у Пирса, см. ссылку). РоманСузи 07:51, 14 февраля 2015 (UTC)Ответить

Баг в движке? править

Я не могу добавить альтернативный термин "syntax sugar" (к "syntactic sugar"). В WYSIWYG режиме выделяется жирным лишнее, при правке кода теряется курсив. 93.185.27.27 22:50, 21 ноября 2016 (UTC)Ответить

«Then» и «do» в C править

В качестве примера такого синтаксического сахара приводится «then» в операторе «if» или «do» в операторе «while», а также точка с запятой: компилятор и без них однозначно определяет конец условия и место завершения оператора, но наличие этих конструкций делает программу более удобочитаемой. Очевидно, узкая трактовка понятия «синтаксический сахар» несовместима с широкой: в Си или Паскале невозможно записать операторы иным способом, без «then», «do» и точки с запятой.

Знатоки, проверьте, пожалуйста, нет ли в этом высказывании ошибки. В примерах здесь и здесь слова «then» и «do» отсутствуют. — Fobemipa (обс.) 14:45, 28 октября 2020 (UTC)Ответить