Фон
На сторінці Вікіпедії про синтаксичний цукор зазначено:
В інформатиці синтаксичний цукор - це синтаксис в рамках мови програмування, який призначений для полегшення читання або вираження речей. Це робить мову "солодшою" для використання людьми: речі можна висловити більш чітко, стисло або в альтернативному стилі, який деякі можуть віддати перевагу.
Я не дуже розумію, в чому різниця між синтаксичним цукром і синтаксисом.
Я вдячний за те, що цукриста версія може бути більш чіткою, стислою, можливо, зварити якусь котельну плиту. Але я відчуваю, що на деякому рівні весь синтаксис по суті робить це, щоб сформувати абстракцію над тим, до чого збирається код.
З тієї ж сторінки Вікіпедії:
Мовні процесори, включаючи компілятори, статичні аналізатори тощо, часто розширюють цукрові конструкції на більш фундаментальні конструкції перед обробкою, процес, який іноді називають "знешкодженням".
Як мислительна вправа, якщо я вважаю, що "часто" в цьому висловлюванні означає "завжди": Якщо різниця полягала лише в тому, чи компілятор "знезаражує" синтаксис, перш ніж перейти до наступного етапу, то як може кодер, який не знає внутрішніх компілятора знаєте (або піклуєтеся), що таке синтаксис Sugar'd чи ні?
Дуже споріднене питання на цьому сайті "Суворе визначення синтаксичного цукру?" має відповідь, яка починається:
IMHO Я не думаю, що ви можете визначити синтаксичний цукор, оскільки ця фраза є BS і, ймовірно, буде використана людьми, які говорять про "справжніх програмістів", використовуючи "реальні інструменти" на "реальних операційних системах"
Що може вказувати на мене, що, можливо, немає великої різниці в кодері, що використовує мову? Можливо, різниця відчутна лише для письменника-укладача? Хоча можуть бути випадки, коли кодеру корисно використовувати мову, щоб знати, що знаходиться під кришкою синтаксичного цукру? (Але, можливо, насправді будь-який дискурс на цю тему має тенденцію використовувати цей термін як принаду полум'я?)
Серце питання
Отже ... коротка версія питання:
- Чи є реальна різниця між синтаксисом та синтаксичним цукром?
- Кому це важливо?
Додаткова їжа для думки
Бонус за протиріччя теми:
На сторінці Вікіпедії наведено приклад:
Наприклад, у мові С
a[i]
позначення є синтаксичним цукром для*(a + i)
Тоді як інша відповідь на вищезазначене пов'язане питання говорить про той же приклад:
Тепер розглянемо
a[i] == *(a + i)
. Подумайте про будь-яку програму C, яка використовує масиви будь-яким змістовно.
І підсумовує, що:
[]
Позначення полегшує цю абстракцію. Це не синтаксичний цукор.
Протилежний висновок для того ж прикладу!