языки программирования

На чем работаете и что ОБЪЕКТИВНО вы считаете перспективным

Работаю на C# и считаю этот язык преспективным
9
8%
Работаю на C# и считаю этот язык преспективным
9
8%
Работаю на C#, но не против перейти на Java
2
2%
Работаю на C#, но не против перейти на Java
2
2%
Работаю на С#, но не против перейти на PHP или Ruby
1
1%
Работаю на С#, но не против перейти на PHP или Ruby
1
1%
Работаю на Java и считаю этот язык перспективным
12
11%
Работаю на Java и считаю этот язык перспективным
12
11%
Работаю на Java, но не против перейти на C#
0
No votes
Работаю на Java, но не против перейти на C#
0
No votes
Работаю на Java, но не против перейти на PHP или Ruby
0
No votes
Работаю на Java, но не против перейти на PHP или Ruby
0
No votes
Работаю на PHP или Ruby, и считаю этот язык перспективным
2
2%
Работаю на PHP или Ruby, и считаю этот язык перспективным
2
2%
Работаю на PHP или Ruby, но не против перейти на C#
1
1%
Работаю на PHP или Ruby, но не против перейти на C#
1
1%
Работаю на PHP или Ruby, но не против перейти на Java
3
3%
Работаю на PHP или Ruby, но не против перейти на Java
3
3%
Другое
26
23%
Другое
26
23%
 
Total votes: 112

User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: языки программирования

Post by crypto5 »

dotcom wrote:Порог вхождения = сложный язык. Если вошел, то "запутанный" синтаксис не должен быть проблемой.
Для запутаного синтаксиса нужно тратить больше тактов мозга на чтение чужого кода?
In vino Veritas!
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: языки программирования

Post by M. Ridcully »

crypto5 wrote:А примеры можно?
Пример - templates, которые фактически кодогенерация.
Мир Украине. Свободу России.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: языки программирования

Post by crypto5 »

M. Ridcully wrote:
crypto5 wrote:А примеры можно?
Пример - templates, которые фактически кодогенерация.
А какая разница на высоком уровне абстракции что там под капотом?
In vino Veritas!
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: языки программирования

Post by M. Ridcully »

crypto5 wrote:А какая разница на высоком уровне абстракции что там под капотом?
Это не под капотом, а наоборот.
Эта самая кодогенерация позволяет кое что делать. Скажем, можно на Java написать parser generator, чтобы грамматика прямо на Java бы описывалась, без доп. стадии препроцесинга? На С++ можно: http://boost-spirit.com/home/.

Добавлю: фактически темплейты, это compile-time computing.
Мир Украине. Свободу России.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: языки программирования

Post by Мальчик-Одуванчик »

Тот же С - низкоуровневый но не очень сложный язык с невысоким порогом вхождения.
Высокий порог вхождения в С++ безусловно определяется встроенной возможностью метапрограммирования (templates).
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: языки программирования

Post by crypto5 »

M. Ridcully wrote:
crypto5 wrote:А какая разница на высоком уровне абстракции что там под капотом?
Это не под капотом, а наоборот.
Эта самая кодогенерация позволяет кое что делать. Скажем, можно на Java написать parser generator, чтобы грамматика прямо на Java бы описывалась, без доп. стадии препроцесинга? На С++ можно: http://boost-spirit.com/home/.
Я не вижу принципиальной проблемы задавать граматики на джаве, просто из-за многословности джавы это легче делать на каком то DSL вроде antlr. В твоем примере думается ключевую роль играет перегрузка операторов а не шаблоны. И какая принципиальная разница происходят ли вычисления в compile time или в run-time?
In vino Veritas!
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: языки программирования

Post by Мальчик-Одуванчик »

Собственно выше речь об описании грамматики DSL средствами С++ и ее обработке компилятором наравне с обычным кодом.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: языки программирования

Post by Интеррапт »

M. Ridcully wrote:
crypto5 wrote:А какая разница на высоком уровне абстракции что там под капотом?
Это не под капотом, а наоборот.
Эта самая кодогенерация позволяет кое что делать. Скажем, можно на Java написать parser generator, чтобы грамматика прямо на Java бы описывалась, без доп. стадии препроцесинга? На С++ можно: http://boost-spirit.com/home/.

Добавлю: фактически темплейты, это compile-time computing.
Кесарю кесарево. Как по мне гораздо удобней использовать тот же ANTLR под нормальным ANTLRWorks IDE (с визуализацией и т.п.), пусть и с препроцессингом.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: языки программирования

Post by Мальчик-Одуванчик »

А как по мне шаблоны удобнее чтобы убрать лишний уровень косвенности, который раньше имплементировался через виртуальные методы
User avatar
M. Ridcully
Уже с Приветом
Posts: 12017
Joined: 08 Sep 2006 20:07
Location: Силиконка

Re: языки программирования

Post by M. Ridcully »

Интеррапт wrote: Кесарю кесарево. Как по мне гораздо удобней использовать тот же ANTLR под нормальным ANTLRWorks IDE (с визуализацией и т.п.), пусть и с препроцессингом.
Я с этим не спорю. Я даже соглашусь, что иногда they push template metaprogramming to the limit (or even beyond a reasonable limit).

Но факт остаётся фактом - такая возможность есть. Не хочешь - не используй.

Так что по-прежнему считаю, что код на C++ может быть не менее компактным (== не менее высокоуровневым), чем на Java.
Мир Украине. Свободу России.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: языки программирования

Post by crypto5 »

Мальчик-Одуванчик wrote:А как по мне шаблоны удобнее чтобы убрать лишний уровень косвенности, который раньше имплементировался через виртуальные методы
А можно опять же пример косвенности в которой виртуальные методы заменяются шаблонами?
In vino Veritas!
User avatar
Medium-rare
Уже с Приветом
Posts: 9195
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: языки программирования

Post by Medium-rare »

Шаблоны вместо виртуальных методов - это нововведение какое-то. Правда, ничего не слышал. Раньше не было. Кучу лекций уже по новому C++ 11 стандарту послушал, но не было такого, даже намёка. Надо будет Хербу Саттеру вопросик намылить... :?
... and even then it's rare that you'll be going there...
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: языки программирования

Post by Мальчик-Одуванчик »

crypto5 wrote:
Мальчик-Одуванчик wrote:А как по мне шаблоны удобнее чтобы убрать лишний уровень косвенности, который раньше имплементировался через виртуальные методы
А можно опять же пример косвенности в которой виртуальные методы заменяются шаблонами?
Самый простой случай - сравните реализацию паттерна стратегия с помощью наследования и специализации.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: языки программирования

Post by Мальчик-Одуванчик »

Medium-rare wrote:Шаблоны вместо виртуальных методов - это нововведение какое-то. Правда, ничего не слышал. Раньше не было. Кучу лекций уже по новому C++ 11 стандарту послушал, но не было такого, даже намёка. Надо будет Хербу Саттеру вопросик намылить... :?
Это как минимум десятилетней давности. И речь идет лишь о тех случаях когда это возможно применить на уровне компиляции.
Last edited by Мальчик-Одуванчик on 21 Nov 2012 01:30, edited 1 time in total.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: языки программирования

Post by crypto5 »

Мальчик-Одуванчик wrote:
crypto5 wrote:
Мальчик-Одуванчик wrote:А как по мне шаблоны удобнее чтобы убрать лишний уровень косвенности, который раньше имплементировался через виртуальные методы
А можно опять же пример косвенности в которой виртуальные методы заменяются шаблонами?
Самый простой случай - сравните реализацию паттерна стратегия с помощью наследования и специализации.
А что такое специализация?
In vino Veritas!

Return to “Вопросы и новости IT”