Для запутаного синтаксиса нужно тратить больше тактов мозга на чтение чужого кода?dotcom wrote:Порог вхождения = сложный язык. Если вошел, то "запутанный" синтаксис не должен быть проблемой.
языки программирования
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: языки программирования
In vino Veritas!
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: языки программирования
Пример - templates, которые фактически кодогенерация.crypto5 wrote:А примеры можно?
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: языки программирования
А какая разница на высоком уровне абстракции что там под капотом?M. Ridcully wrote:Пример - templates, которые фактически кодогенерация.crypto5 wrote:А примеры можно?
In vino Veritas!
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: языки программирования
Это не под капотом, а наоборот.crypto5 wrote:А какая разница на высоком уровне абстракции что там под капотом?
Эта самая кодогенерация позволяет кое что делать. Скажем, можно на Java написать parser generator, чтобы грамматика прямо на Java бы описывалась, без доп. стадии препроцесинга? На С++ можно: http://boost-spirit.com/home/.
Добавлю: фактически темплейты, это compile-time computing.
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: языки программирования
Тот же С - низкоуровневый но не очень сложный язык с невысоким порогом вхождения.
Высокий порог вхождения в С++ безусловно определяется встроенной возможностью метапрограммирования (templates).
Высокий порог вхождения в С++ безусловно определяется встроенной возможностью метапрограммирования (templates).
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: языки программирования
Я не вижу принципиальной проблемы задавать граматики на джаве, просто из-за многословности джавы это легче делать на каком то DSL вроде antlr. В твоем примере думается ключевую роль играет перегрузка операторов а не шаблоны. И какая принципиальная разница происходят ли вычисления в compile time или в run-time?M. Ridcully wrote:Это не под капотом, а наоборот.crypto5 wrote:А какая разница на высоком уровне абстракции что там под капотом?
Эта самая кодогенерация позволяет кое что делать. Скажем, можно на Java написать parser generator, чтобы грамматика прямо на Java бы описывалась, без доп. стадии препроцесинга? На С++ можно: http://boost-spirit.com/home/.
In vino Veritas!
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: языки программирования
Собственно выше речь об описании грамматики DSL средствами С++ и ее обработке компилятором наравне с обычным кодом.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: языки программирования
Кесарю кесарево. Как по мне гораздо удобней использовать тот же ANTLR под нормальным ANTLRWorks IDE (с визуализацией и т.п.), пусть и с препроцессингом.M. Ridcully wrote:Это не под капотом, а наоборот.crypto5 wrote:А какая разница на высоком уровне абстракции что там под капотом?
Эта самая кодогенерация позволяет кое что делать. Скажем, можно на Java написать parser generator, чтобы грамматика прямо на Java бы описывалась, без доп. стадии препроцесинга? На С++ можно: http://boost-spirit.com/home/.
Добавлю: фактически темплейты, это compile-time computing.
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: языки программирования
А как по мне шаблоны удобнее чтобы убрать лишний уровень косвенности, который раньше имплементировался через виртуальные методы
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: языки программирования
Я с этим не спорю. Я даже соглашусь, что иногда they push template metaprogramming to the limit (or even beyond a reasonable limit).Интеррапт wrote: Кесарю кесарево. Как по мне гораздо удобней использовать тот же ANTLR под нормальным ANTLRWorks IDE (с визуализацией и т.п.), пусть и с препроцессингом.
Но факт остаётся фактом - такая возможность есть. Не хочешь - не используй.
Так что по-прежнему считаю, что код на C++ может быть не менее компактным (== не менее высокоуровневым), чем на Java.
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: языки программирования
А можно опять же пример косвенности в которой виртуальные методы заменяются шаблонами?Мальчик-Одуванчик wrote:А как по мне шаблоны удобнее чтобы убрать лишний уровень косвенности, который раньше имплементировался через виртуальные методы
In vino Veritas!
-
- Уже с Приветом
- Posts: 9195
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: языки программирования
Шаблоны вместо виртуальных методов - это нововведение какое-то. Правда, ничего не слышал. Раньше не было. Кучу лекций уже по новому C++ 11 стандарту послушал, но не было такого, даже намёка. Надо будет Хербу Саттеру вопросик намылить... 

... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: языки программирования
Самый простой случай - сравните реализацию паттерна стратегия с помощью наследования и специализации.crypto5 wrote:А можно опять же пример косвенности в которой виртуальные методы заменяются шаблонами?Мальчик-Одуванчик wrote:А как по мне шаблоны удобнее чтобы убрать лишний уровень косвенности, который раньше имплементировался через виртуальные методы
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: языки программирования
Это как минимум десятилетней давности. И речь идет лишь о тех случаях когда это возможно применить на уровне компиляции.Medium-rare wrote:Шаблоны вместо виртуальных методов - это нововведение какое-то. Правда, ничего не слышал. Раньше не было. Кучу лекций уже по новому C++ 11 стандарту послушал, но не было такого, даже намёка. Надо будет Хербу Саттеру вопросик намылить...
Last edited by Мальчик-Одуванчик on 21 Nov 2012 01:30, edited 1 time in total.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: языки программирования
А что такое специализация?Мальчик-Одуванчик wrote:Самый простой случай - сравните реализацию паттерна стратегия с помощью наследования и специализации.crypto5 wrote:А можно опять же пример косвенности в которой виртуальные методы заменяются шаблонами?Мальчик-Одуванчик wrote:А как по мне шаблоны удобнее чтобы убрать лишний уровень косвенности, который раньше имплементировался через виртуальные методы
In vino Veritas!