Что такое синтаксический сахар
От: mrozov  
Дата: 26.12.07 17:11
Оценка:
Здравствуйте, ecinunice, Вы писали:

E>Сводится ли частичное применение к синтаксическому сахару или есть другие приемущества? Если другие приемущества есть — можно привести пример?


Может мне кто-нибудь объяснить, что такое "синтаксический сахар"? По-моему, это одно из самых идиотических понятий во всем IT.

Синтаксическим сахаром, строго говоря, является ВСЕ, кроме команд ассемблера. Все конструкции всех языков высокого уровня легко и непринужденно укладываются в машинные коды.

27.12.07 13:33: Ветка выделена из темы Частичное применение
Автор: ecinunice
Дата: 21.12.07
— AndrewVK
Re: Что такое синтаксический сахар
От: deniok Россия  
Дата: 26.12.07 17:19
Оценка: 17 (2) +1 :)
Здравствуйте, mrozov, Вы писали:

M>Синтаксическим сахаром, строго говоря, является ВСЕ, кроме команд ассемблера. Все конструкции всех языков высокого уровня легко и непринужденно укладываются в машинные коды.


Вопрос в уровнях абстракции. Уложи в машинные коды
SELECT * FROM Employee

Re[2]: Что такое синтаксический сахар
От: mrozov  
Дата: 26.12.07 17:27
Оценка:
Здравствуйте, deniok, Вы писали:

D>Здравствуйте, mrozov, Вы писали:


M>>Синтаксическим сахаром, строго говоря, является ВСЕ, кроме команд ассемблера. Все конструкции всех языков высокого уровня легко и непринужденно укладываются в машинные коды.


D>Вопрос в уровнях абстракции.

А определение понятию "уровень абстракции" можно?

D>Уложи в машинные коды

D>
D>SELECT * FROM Employee
D>

D>

В машинные коды влом, а в с# — легко.
Select("Emploee", null);

Фигня это все. Иной "синтаксический сахар" экономит куда больше времени, чем все "уровни абстракции" вместе взятые. Совершенно пустая тема.
Re[3]: Что такое синтаксический сахар
От: deniok Россия  
Дата: 26.12.07 17:37
Оценка:
Здравствуйте, mrozov, Вы писали:

M>В машинные коды влом, а в с# — легко.

M>Select("Emploee", null);

Дело не во влом. В зависимости от техники доступа к данным тут могут быть сильно разные машинные коды. Фактически эта программа никаких конкретных машинных кодов не специфицирует
Re[4]: Что такое синтаксический сахар
От: mrozov  
Дата: 26.12.07 17:57
Оценка:
Здравствуйте, deniok, Вы писали:

D>Здравствуйте, mrozov, Вы писали:


M>>В машинные коды влом, а в с# — легко.

M>>Select("Emploee", null);

D>Дело не во влом. В зависимости от техники доступа к данным тут могут быть сильно разные машинные коды. Фактически эта программа никаких конкретных машинных кодов не специфицирует


А select * from Emploee, значит, сам по себе эдакий удалец, да? Да нифига — к нему интерпритатор нужен. А тут вопрос к имплементации функции Select — которая первым параметром принимает название таблицы и список наименований столбцов. Нету разницы.

Вот возьми язык запросов в c#. Это — синтаксический сахар к просто вызовам методов, принимающих в качестве параметра анонимные функции. А анонимные функции — синтаксический сахар для просто функций. А просто функции — синтаксический сахар к push->call->pop. А call — синаксический сахар к push->jmp, насколько я помню.

Пустая тема.
Re[5]: Что такое синтаксический сахар
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 26.12.07 18:19
Оценка:
Здравствуйте, mrozov, Вы писали:

M>Вот возьми язык запросов в c#. Это — синтаксический сахар к просто вызовам методов, принимающих в качестве параметра анонимные функции.


Это не доказывает, что "SELECT" всегда и везде является синтаксическим сахаром. Вот возьмём реляционную БД — "SELECT" является синтаксическим сахаром к чему?

M>А анонимные функции — синтаксический сахар для просто функций.


Чиво?

M> А просто функции — синтаксический сахар к push->call->pop. А call — синаксический сахар к push->jmp, насколько я помню.


И тут Остапа понесло...

Вызов функции в паскале не может быть синтаксическим сахаром к "push->call->pop" потому что на уровне паскаля никакого push и никакого pop не существует.
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re: Что такое синтаксический сахар
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.12.07 05:14
Оценка: 35 (6) +5
Здравствуйте, mrozov, Вы писали:
M>Может мне кто-нибудь объяснить, что такое "синтаксический сахар"? По-моему, это одно из самых идиотических понятий во всем IT.
Могу. Синтаксический сахар — это возможность выразить в компактном виде то, что и так есть в языке.
Например, using(...) и foreach() являются чистым сахаром, поскольку для них существует полный аналог в развернутом виде.
А генерики сахаром не являются, т.к. их нельзя превратить в аналогичный не-генерик код.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Что такое синтаксический сахар
От: mrozov  
Дата: 27.12.07 10:15
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, mrozov, Вы писали:

M>>Может мне кто-нибудь объяснить, что такое "синтаксический сахар"? По-моему, это одно из самых идиотических понятий во всем IT.
S>Могу. Синтаксический сахар — это возможность выразить в компактном виде то, что и так есть в языке.
Иными словами, в языке, который поддерживает ассемблерные вставки, синтаксическим сахаром является весь язык целиком, правильно?

S>Например, using(...) и foreach() являются чистым сахаром, поскольку для них существует полный аналог в развернутом виде.

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

Разве? Это просто сахар для того, чтобы не написать один код несколько раз. Или сахар для того, чтобы не приводить типы.
Re[3]: Что такое синтаксический сахар
От: nikov США http://www.linkedin.com/in/nikov
Дата: 27.12.07 10:21
Оценка:
Здравствуйте, mrozov, Вы писали:

M>Разве? Это просто сахар для того, чтобы не написать один код несколько раз. Или сахар для того, чтобы не приводить типы.


Нет, это не сахар. Это новый уровень абстракции.
Re[6]: Что такое синтаксический сахар
От: mrozov  
Дата: 27.12.07 10:22
Оценка: -3
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, mrozov, Вы писали:


M>>Вот возьми язык запросов в c#. Это — синтаксический сахар к просто вызовам методов, принимающих в качестве параметра анонимные функции.


ANS>Это не доказывает, что "SELECT" всегда и везде является синтаксическим сахаром. Вот возьмём реляционную БД — "SELECT" является синтаксическим сахаром к чему?

К вызову функции с именем Select и списком параметров. См. DLinq.

M>>А анонимные функции — синтаксический сахар для просто функций.

ANS>Чиво?
Таго. Зачем тебе анонимные функции вообще? Напиши НЕ анонимную и используй ее.

M>> А просто функции — синтаксический сахар к push->call->pop. А call — синаксический сахар к push->jmp, насколько я помню.

ANS>И тут Остапа понесло...
Понесло того, который первым ввел понятие "синтаксический сахар". Ну или того, кто придал этому понятию формальное значение, вместо того, чтобы отнестись к нему как к обычному качественному описанию (типа красиво, стильно и т.п.)

ANS>Вызов функции в паскале не может быть синтаксическим сахаром к "push->call->pop" потому что на уровне паскаля никакого push и никакого pop не существует.

Учи албанский! Есть такое понятие — ассемблерная вставка.


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

Мораль — ничего важнее, чем синтаксический сахар, в программировании нет. А потому и обсуждать эту тему бессмысленно.
Re[4]: Что такое синтаксический сахар
От: mrozov  
Дата: 27.12.07 10:25
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, mrozov, Вы писали:


M>>Разве? Это просто сахар для того, чтобы не написать один код несколько раз. Или сахар для того, чтобы не приводить типы.


N>Нет, это не сахар. Это новый уровень абстракции.


Что такое "уровень абстракции"? Почему ты считаешь, что foreach вместо while или while вместо jmp это не новый уровень абстракции?

Для меня разница тут количественная, но не качественная. И то и другое позволяет мне взглянуть на задачу под другим углом. Что-то дает больше, что-то меньше. Что-то меняет код сильнее, что-то слабее.
Re: Что такое синтаксический сахар
От: nikov США http://www.linkedin.com/in/nikov
Дата: 27.12.07 10:28
Оценка: +9 :)))
Здравствуйте, mrozov, Вы писали:

M>Синтаксическим сахаром, строго говоря, является ВСЕ, кроме команд ассемблера. Все конструкции всех языков высокого уровня легко и непринужденно укладываются в машинные коды.


Ты еще скажи, что машинные коды — это синтаксический сахар для систем уравнений, описывающих напряжения и токи в микропроцессорах, которые в свою очередь являются синтаксическим сахаром для уравнений Максвелла.

Как тогда объяснить тот факт, что человек, не знающий уравнений Максвелла, может писать сложные SQL-запросы?
Re[2]: Частичное применение
От: Курилка Россия http://kirya.narod.ru/
Дата: 27.12.07 10:34
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, mrozov, Вы писали:


M>>Синтаксическим сахаром, строго говоря, является ВСЕ, кроме команд ассемблера. Все конструкции всех языков высокого уровня легко и непринужденно укладываются в машинные коды.


N>Ты еще скажи, что машинные коды — это синтаксический сахар для систем уравнений, описывающих напряжения и токи в микропроцессорах, которые в свою очередь являются синтаксическим сахаром для уравнений Максвелла.


Которые, возможно, являются синтаксическим сахором для Исключительно Простой Теории Всего
Re[3]: Что такое синтаксический сахар
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.12.07 10:56
Оценка:
Здравствуйте, mrozov, Вы писали:

M>Здравствуйте, Sinclair, Вы писали:


S>>Здравствуйте, mrozov, Вы писали:

M>>>Может мне кто-нибудь объяснить, что такое "синтаксический сахар"? По-моему, это одно из самых идиотических понятий во всем IT.
S>>Могу. Синтаксический сахар — это возможность выразить в компактном виде то, что и так есть в языке.
M>Иными словами, в языке, который поддерживает ассемблерные вставки, синтаксическим сахаром является весь язык целиком, правильно?
Как правило, нет. Редкий язык позволяет делать ассемблерные вставки настолько органичным образом, чтобы можно было выражать на них целые конструкции языка. Попробуй, к примеру, выразить try/catch на ассемблерной вставке.
M>Разве? Это просто сахар для того, чтобы не написать один код несколько раз. Или сахар для того, чтобы не приводить типы.
В том-то и дело, что результатом работы генерика является не просто "код, который не надо писать много раз". Чистый синтаксический сахар обычно действует локально, и не затрагивает структуру программы.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Что такое синтаксический сахар
От: Курилка Россия http://kirya.narod.ru/
Дата: 27.12.07 11:00
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, mrozov, Вы писали:


M>>Разве? Это просто сахар для того, чтобы не написать один код несколько раз. Или сахар для того, чтобы не приводить типы.

S>В том-то и дело, что результатом работы генерика является не просто "код, который не надо писать много раз". Чистый синтаксический сахар обычно действует локально, и не затрагивает структуру программы.

По-моему тут как раз имеется разница между тактическим и стратегическим дизайном
Автор: Курилка
Дата: 23.11.07
Re[2]: Что такое синтаксический сахар
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 27.12.07 11:07
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

В принципе, генерики тоже сахар (скажем, на 90%): они могут быть развернуты так, как это сделали в Java — тупая реализация на основе постоянного кастинга, то есть виртуальная машина ничего не знает о генериках, знает только компилятор.
Re[7]: Что такое синтаксический сахар
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 27.12.07 11:10
Оценка:
Здравствуйте, mrozov, Вы писали:

ANS>>Это не доказывает, что "SELECT" всегда и везде является синтаксическим сахаром. Вот возьмём реляционную БД — "SELECT" является синтаксическим сахаром к чему?

M>К вызову функции с именем Select и списком параметров. См. DLinq.

Уууу! Откуда в реляционной алгебре Dlinq?

ANS>>Вызов функции в паскале не может быть синтаксическим сахаром к "push->call->pop" потому что на уровне паскаля никакого push и никакого pop не существует.

M>Учи албанский! Есть такое понятие — ассемблерная вставка.

Есть такое понятие — пифагоровы штаны. Это доказывает, что всё в мире это синтаксический сахар?

M>Я все это говорю к тому, что в программировании все, что стоит уровнем выше машинных кодов, существует только для удобства и не предоставляет никаких дополнительных возможностей. Это легко доказать — самый навороченный ООП-код на самом навороченном языке в конечном итоге превращается в asm.


Я паскаль привёл потому, что в оригинальном паскале нет goto. Это значит, что цикл в паскале не может быть синтаксическим сахаром к if+goto. Потому что goto там нет. А во что оно превращается внизу — это особенности реализации.
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[3]: Что такое синтаксический сахар
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.12.07 11:16
Оценка:
Здравствуйте, rsn81, Вы писали:
R>В принципе, генерики тоже сахар (скажем, на 90%): они могут быть развернуты так, как это сделали в Java — тупая реализация на основе постоянного кастинга, то есть виртуальная машина ничего не знает о генериках, знает только компилятор.
Ну если бы они были сделаны как в жаве, то были бы сахаром. Но они сделаны по-нормальному, потому сахаром не являются.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Что такое синтаксический сахар
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 27.12.07 11:26
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ну если бы они были сделаны как в жаве, то были бы сахаром. Но они сделаны по-нормальному, потому сахаром не являются.

Под "они сделаны", так понимаю, вы подразумеваете "в .NET они сделаны" — тогда и надо так говорить, то есть конкретно ".NET Generics", а не обобщением обо всех генериках.
Re[2]: Что такое синтаксический сахар
От: Кодёнок  
Дата: 27.12.07 12:10
Оценка:
Здравствуйте, Sinclair, Вы писали:

M>>Может мне кто-нибудь объяснить, что такое "синтаксический сахар"? По-моему, это одно из самых идиотических понятий во всем IT.

S>Могу. Синтаксический сахар — это возможность выразить в компактном виде то, что и так есть в языке.
S>Например, using(...) и foreach() являются чистым сахаром, поскольку для них существует полный аналог в развернутом виде.
S>А генерики сахаром не являются, т.к. их нельзя превратить в аналогичный не-генерик код.

Я бы сказал по-другому: синтаксический сахар — это синтаксическая поддержка определенного программного (семантического) решения.

Например,
— int? x вместо Nullable<int> x (подразумевает наличие Nullable, хотя то же самое можно реализовать и собственным классом)
— do a; b; c вместо a >>= \_ -> b >>= \_ -> c (подразумевает использование обозначения >>=)
— foreach, потому что рассчитывает на IEnumerable
— using, это синтаксическая поддержка для IDisposable

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

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