AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.01.17 12:14
Оценка: 76 (8)
AMMY — XAML с человеческим лицом созданный с использованием Nitra и Nemerle.

Автор: ionoy.
Сайт языка: http://www.ammyui.com Там много примеров, доки, видео.
Видео с демонстрацией процесса разработки: https://vimeo.com/198873582

Особенности языка:
1. Вместо XML, на котором основан XAML, в AMMY используется синтаксис базирующийся на JSON.
2. Язык строготипизированный.
3. Для AMMY имеется поддержка IDE (подсветка, автодополение, навигация по коду и т.п.).
4. Поддерживает миксины (аналог макросов для XAML). Повышает производительность руда и повторного использования кода.
5. Возможность менять GUI прямо во время исполнения.

Остальные особенности AMMY на сайте продукта.

http://www.ammyui.com/wp-content/uploads/2013/05/lightweight-syntax.png
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: AMMY - XAML с человеческим лицом
От: Ziaw Россия  
Дата: 18.01.17 12:46
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Автор: ionoy.


ionoy молоток, выглядит все очень и очень круто.
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 18.01.17 13:19
Оценка: 249 (6)
Здравствуйте, Ziaw, Вы писали:

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


VD>>Автор: ionoy.


Z>ionoy молоток, выглядит все очень и очень круто.


Спасибо!
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 18.01.17 14:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>2. Язык строготипизированный.


Что имеется в виду? xaml тоже не позволяет написать

<Button BlaBla="10" />
Re: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 18.01.17 14:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>AMMY — XAML с человеческим лицом созданный с использованием Nitra и Nemerle.


Как насчёт циклов?
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 18.01.17 14:52
Оценка:
Здравствуйте, Jack128, Вы писали:

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


VD>>2. Язык строготипизированный.


J>Что имеется в виду? xaml тоже не позволяет написать

J><Button BlaBla="10" />

Всё верно. Никакой дополнительной строгой типизации на данный момент Ammy не предоставляет. Разве что более вменяемый intellisense чем у ванильной студии.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[2]: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 18.01.17 14:53
Оценка:
Здравствуйте, IT, Вы писали:

IT>Как насчёт циклов?


Он же компилируется в xaml. Как цикл в xaml можно преобразовать?
Отредактировано 19.01.2017 5:15 VladD2 . Предыдущая версия . Еще …
Отредактировано 19.01.2017 5:14 VladD2 . Предыдущая версия .
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 18.01.17 14:55
Оценка:
Здравствуйте, IT, Вы писали:

IT>Как насчёт циклов?


Циклы в XAML реализуются через ItemsControl и ItemTemplate, так что циклы не нужны.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Отредактировано 19.01.2017 5:15 VladD2 . Предыдущая версия .
Re[3]: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 18.01.17 15:05
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Всё верно. Никакой дополнительной строгой типизации на данный момент Ammy не предоставляет. Разве что более вменяемый intellisense чем у ванильной студии.


Хотелось бы того, что есть — не потерять. в частности поддержку d:DataContext (это конечно не совсем стат типизация, но где то рядом)
Отредактировано 19.01.2017 5:16 VladD2 . Предыдущая версия .
Re[3]: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 18.01.17 15:05
Оценка: +2 :))) :)
Здравствуйте, ionoy, Вы писали:

I>Циклы в XAML реализуются через ItemsControl и ItemTemplate, так что циклы не нужны.


Сразу чувствуется школа Влада в общении с потенциальными пользователями

Как мне без копипасты определить десять однотипных кнопок?
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 18.01.17 15:09
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Хотелось бы того, что есть — не потерять. в частности поддержку d:DataContext (это конечно не совсем стат типизация, но где то рядом)

Есть ключевое слово viewmodel, которое работает примерно так:

TextBlock {
  viewmodel MyApp.SomeType

  Text: bind PropertyFromViewModel
}


Но на данный момент оно не работает, пришлось урезать функциональность перед релизом. Если будет спрос, то обязательно добавлю обратно.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Отредактировано 18.01.2017 15:17 ionoy . Предыдущая версия .
Re[4]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 18.01.17 15:17
Оценка:
Здравствуйте, IT, Вы писали:

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


I>>Циклы в XAML реализуются через ItemsControl и ItemTemplate, так что циклы не нужны.


IT>Сразу чувствуется школа Влада в общении с потенциальными пользователями

Сорри, если ответ выглядел снисходительно, этого не было в моих целях.

IT>Как мне без копипасты определить десять однотипных кнопок?

Почему именно 10? Если у тебя 10 моделей, то код будет примерно таким:

ItemsControl { 
  ItemsSource: bind Items
  ItemTemplate: DataTemplate {
      
  }
}


Если просто так 10 кнопок, то придётся копипастить. Но зачем?
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[5]: AMMY - XAML с человеческим лицом
От: Ziaw Россия  
Дата: 18.01.17 15:24
Оценка:
Здравствуйте, ionoy, Вы писали

I>Если просто так 10 кнопок, то придётся копипастить. Но зачем?


А их набор формируется в рантайме?
Re[6]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 18.01.17 15:30
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, ionoy, Вы писали


I>>Если просто так 10 кнопок, то придётся копипастить. Но зачем?


Z>А их набор формируется в рантайме?


А можно пример, чтобы было от чего отталкиваться?
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[5]: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 18.01.17 15:44
Оценка: :)))
Здравствуйте, ionoy, Вы писали:

I>Если просто так 10 кнопок, то придётся копипастить.


Да. Нужно просто так 10 кнопок. Или не кнопок, но 10. Или 15.

I>Но зачем?


Человек, создающий инструменты для программистов не должен задавать таких вопросов
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.01.17 16:54
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>ionoy молоток, выглядит все очень и очень круто.


Да, пахал аки пчёлка! Я за процессом наблюдал, так что могу подтвердить лично.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.01.17 16:56
Оценка:
Здравствуйте, Jack128, Вы писали:


VD>>2. Язык строготипизированный.

J>Что имеется в виду? xaml тоже не позволяет написать
J><Button BlaBla="10" />

Где-то не позволяет, а где-то позволяет. В XAML динамической типизации выше крыши, к сожалению. А это приплызд для инлеллисенса.

Многое, в этом плане, выпрямляет РеШарпер. Но не все. Плюс он ведь денег стоит.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 18.01.17 17:16
Оценка: 74 (2)
Здравствуйте, IT, Вы писали:

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


I>>Если просто так 10 кнопок, то придётся копипастить.

IT>Да. Нужно просто так 10 кнопок. Или не кнопок, но 10. Или 15.

Всегда легче отталкиваться от конкретной задачи. Если задачи нет, то предложу несколько решений.

Первое, если есть данные, уже описано парой сообщений выше.
1. Добавляем коллекцию в модель представления
class ViewModel 
{
  public ObservableCollection<Item> Items { get; }    
}


2. Биндимся к ней из вьюшки
ItemsControl { 
  ItemsSource: bind Items
  ItemTemplate: DataTemplate {
    // здесь описываем произвольный шаблон
  }
}


Второе решение — это если данных нет и хочется добавить 10 произвольных кусков шаблона.
Выглядит примерно так:

mixin Block() for StackPanel {
  TextBlock { "Привет" }
  Button { "Нажми сюда!" }
}

StackPanel {
  #Block
  #Block  
  #Block
  #Block
  #Block
  #Block
  #Block
  #Block
  #Block
  #Block
}

можно укоротить

mixin FiveBlocks() : StackPanel {
  #Block
  #Block
  #Block
  #Block
  #Block
  #Block
}

StackPanel {
  #FiveBlocks
  #FiveBlocks
}



Конечно, с циклами получилось бы короче, но мне правда сложно придумать ситуацию где это могло бы быть нужно. Если сможешь привести конкретный пример, то можно будет подумать над реализацией.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Отредактировано 18.01.2017 17:17 ionoy . Предыдущая версия .
Re: AMMY - XAML с человеческим лицом
От: WolfHound  
Дата: 18.01.17 20:06
Оценка: 69 (3)
Здравствуйте, VladD2, Вы писали:

1)Нужен конвертер из XAML в AMMY. У людей уже есть горы кода на XAML и переписывать его руками в AMMY они не станут.
А если у них будет такой конвертер, то очень многие попробуют перевести свой ГУИ на AMMY и поиграться.
Это сильно снизит порог вхождения.

2)Большое количество значений в строках. Нитра позволяет делать подсветку и автокомплит в строках.

3)Так как алиас всегда возвращает строго один узел скобки лишние.
alias Header(text) {
  TextBlock {
    FontSize: 18
    Text: $text
  }
}

Вот так лучше.
alias Header(text) TextBlock {
    FontSize: 18
    Text: $text
}


Ну и для однообразия с миксинами
alias Header(text) for TextBlock {
    FontSize: 18
    Text: $text
}


4)Что мешает сделать типизированные переменные?

5)Все миксины в видео не имеют параметров. И при их вызове скобки не используются. Возможно стоит сделать скобки при описании миксина опциональными?
Те вместо
mixin RedWhenDisabled () for Style {
}

Писать так
mixin RedWhenDisabled for Style {
}


6)Где можно скачать проект, созданный в видео? Да и вообще несколько примеров было бы неплохо.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Косяки с точки зрения бизнеса (+)
От: bazis1 Канада  
Дата: 19.01.17 03:47
Оценка: +3 -1
Здравствуйте, VladD2, Вы писали:

1. XAML и WPF — умирающие тренды. В таком рынке люди обычно сидят на поддержке легаси и "взять и переписать лучше" нафиг никому не надо, ибо риск.
2. Вообще, новый closed-source язык с точки зрения рисков — бяка. Допустим, я сделал проект с бюджетом в $100K с помощью нового суперязыка, сэкономив $20K. А что если завтра автору проект надоест и он прекратит развитие? Прекратит интеграцию с новыми версиями студии, рантайма и т.п. Я попал на еще $100K, чтобы в спешке все переделывать на старом языке. Бесплатный язык и платные usability-расширения с точки зрения продаж куда интересней.
3. В чем фишка продукта? JSON вместо XML? Ну да, красиво. Но это из серии "изумрудная тема для VS, радующая глаз". Красота, красотой, но $200 в месяц за это никто платить не будет, особенно учитывая риски.
4. Возможность менять GUI прямо во время исполнения? А смысл? Если это суперкритично, то это можно прикрутить за полдня к обычному XAML-у, перезагружая его по таймеру в debug-сборке.

В общем, за технологию 5, а за продукт двойка.

P.S. Лучше бы кто-нибудь запилил XAML для сайтостроения. С нормальным визуальным редактором, strong typed binding-ами безо всяких angular-извращений, интеграцией в IDE и нормальной библиотекой контролов типа всяких TreeView. Вот это взлетит в отличие от.
Re[4]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 05:16
Оценка: -1 :)
Здравствуйте, IT, Вы писали:

IT>Сразу чувствуется школа Влада в общении с потенциальными пользователями


Взял и обидел сразу двух людей. Зачем?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 05:40
Оценка:
Здравствуйте, IT, Вы писали:

IT>Как мне без копипасты определить десять однотипных кнопок?


Как я понимаю, можно сделать миксин описывающий кнопку (все ее оформление) и капипастить уже обращение к этому миксину указывая уникальные данные. При таком решении копипаста будет очень условной. Что-то вроде:
#MyButton("Button 1")
#MyButton("Button 2")
#MyButton("Button 3")
#MyButton("Button 4")
#MyButton("Button 5")
#MyButton("Button 6")
#MyButton("Button 7")
#MyButton("Button 8")
#MyButton("Button 9")
#MyButton("Button 10")


Или эти кнопки не однотипные, а одинаковые? Вряд ли нужны совсем уж одинаковые кнопки. Если же они чем-то отличаются, то это уже не совсем копипаст.

В XAML, как я понимаю, никаких циклов нет. И никто даже не стремится добавить. Почему?

Как и в случае с XAML в случае с AMMY всегда можно перейти в императивный язык (C# или Nemerle) и закодировать что хочешь. Но в и AMMY, и XAML рассчитаны на MVVM. Так что логичнее было был решать проблемы GUI-я именно в этом стиле.

Ну, еще можно создать свой WPF-контрол и использовать его из AMMY.

В общем, обоснуй необходимость этих самых циклов. Покажи примеры. Может уговорим ionoy добавить их поддержку. На Nitra это не сложно будет сделать. Пока что я не вижу в этом никакой необходимости.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 05:54
Оценка:
Здравствуйте, IT, Вы писали:

I>>Но зачем?


IT>Человек, создающий инструменты для программистов не должен задавать таких вопросов


Любой разумный человек должен задавать такие вопросы. Если бездумно пихать фичи в язык, то получится жутик.

Я вот тоже не пойму зачем в языке разметки рассчитанном на парадигму MVVM какие-то циклы.

Ты где-нибудь к XAML-у такие претензии предъявлял?

В общем, привел бы пример задачи, которую это решает.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 19.01.2017 15:43 VladD2 . Предыдущая версия .
Re[2]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 06:17
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>1)Нужен конвертер из XAML в AMMY.


Полностью согласен! Надеюсь, автор сделает его в ближайшее время.

WH>2)Большое количество значений в строках. Нитра позволяет делать подсветку и автокомплит в строках.


Ага. Я не однократно говорил об этом автору. Но он меня не послушал. Думаю, что в процессе эволюции это уйдет.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 19.01.2017 15:43 VladD2 . Предыдущая версия .
Re[2]: Косяки с точки зрения бизнеса (+)
От: Jack128  
Дата: 19.01.17 06:56
Оценка: +1 :)
Здравствуйте, bazis1, Вы писали:

B>P.S. Лучше бы кто-нибудь запилил XAML для сайтостроения. С нормальным визуальным редактором, strong typed binding-ами безо всяких angular-извращений, интеграцией в IDE и нормальной библиотекой контролов типа всяких TreeView. Вот это взлетит в отличие от.


Был силверлайт. Только это умирающий тренд
Re[2]: Косяки с точки зрения бизнеса (+)
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 07:37
Оценка: +1 -1 :)
Здравствуйте, bazis1, Вы писали:

Сразу оговорюсь, я не автор языка. Просто язык создан на базе Nitra, а я один из авторов Nitra.

B>1. XAML и WPF — умирающие тренды. В таком рынке люди обычно сидят на поддержке легаси и "взять и переписать лучше" нафиг никому не надо, ибо риск.


Вот здесь полностью не согласен. Для создания GUI в Windows вменяемых альтернатив нет. А программировать в xml-е крайне неприятно.

Сылка на гугльтренд опять таки говорит только о том, что WPF стали меньше пиарить, только и всего. Если попытаться забить там C# или Java вместо XAML получишь примерно такую же картину. Что же теперь C# и Java отмирающие технологии?

Конечно, сейчас в тренде JavaScript. Но и у него тренд не рвется в высь, а всего лишь идет по прямой.

В общем, тезис об вымирании явно высосан из пальца. Если надо делать гуй для виндовс — альтернативы особо и нет.

Кстати, если посмотреть на Xamarin, то его тренд действительно рвется в высь. А это по сути разновидость XAML-а. Почему это так? Все очень просто — Microsoft вкладывает мегабаксы в его раскрутку. Вот сейчас рекламная компания кончится и тренд пойдет на спад. Так что если автор окучит Xamarin, то будет в тренде . А планы такие, вроде бы, есть.

B>2. Вообще, новый closed-source язык с точки зрения рисков — бяка. Допустим, я сделал проект с бюджетом в $100K с помощью нового суперязыка, сэкономив $20K. А что если завтра автору проект надоест и он прекратит развитие? Прекратит интеграцию с новыми версиями студии, рантайма и т.п. Я попал на еще $100K, чтобы в спешке все переделывать на старом языке. Бесплатный язык и платные usability-расширения с точки зрения продаж куда интересней.


Это тоже какая-то надуманная причина. Если вдруг у него бизнес не удастся, то ежу понятно, что он выложит исходники в опенсорс. Исходники и так лежат на https://github.com. Просто в приватном репо. Я к ним доступ имею (просто потому что косултировал автора по Nitre, а код проще было через репо смотреть). Так что в случае "эффекта кирпича" даже я смогу эти исходники выложить. Но, надеюсь, этого не понадобится делать.

Да и твои аргументы совсем уж надуманны. Допустим сделал ты этот проект на C#, а МС решил закрыть тему C#-а. Ты, что переключишься на разработку C#-а? Да не в жизнь! Будешь использовать старые его версии только и всего. Да и как-то писал ты на C# когда он был закрытым.

Ну, и AMMY в итоге генерирует XAML. Так что в крайнем случае можно тупо взять полученный XAML и продолжить пилить его руками (без блэкджека и шлюх).

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

Так что я бы выложил исходники, но ограничил бы их использование лицензией.

Что касается цены — . Наверно можно было бы и подешевле сделать. Я как-то опенсорсом больше занимаюсь, так что для меня это все бесплатно.

B>3. В чем фишка продукта? JSON вместо XML? Ну да, красиво. Но это из серии "изумрудная тема для VS, радующая глаз". Красота, красотой, но $200 в месяц за это никто платить не будет, особенно учитывая риски.


Вообще-то фишки я описал в тематическом сообщении. Это и более читабельный синтаксис, и миксины, и изменение GUI во время работы приложения (без перекомпиляции в реалтайме) и много чего еще. Но, да — синтаксис первое что раздражает в XAML-е. Я лично ненавижу программировать в XML-е! По сему языки типа XAML-а или WiX меня просто раздражают.

B>4. Возможность менять GUI прямо во время исполнения? А смысл? Если это суперкритично, то


Смысл огромный. Интерактивность разработки очень повышает ее скорость и качество! В студии для XAML есть превью и даже визуальный редактор. Но он постоянно падает и очень сильно тормозит. Плюс отображает не все и данных нормальных нет. А делать GUI в рантайме, да еще и на настоящих данных — это сплошное удовольствие!

B>это можно прикрутить за полдня к обычному XAML-у, перезагружая его по таймеру в debug-сборке.


Так прикрути! Люди тебе спасибо скажут. Только при этом обеспечь интеллисенс. А то в студии в рантайме XAML изменять нельзя вроде.

В AMMY — это одна из фич доступная "изкаропки".

B>В общем, за технологию 5, а за продукт двойка.


То-то я смотрю у автора на Редите такая толпа откликов? Раже авторы Xamarin-а и Avalon заинтересовались. Они просто твоего мнения наверно не успели прочитать.

В общем, не гони напраслину на парня. Получился очень приличный язык, нужный людям. А так можно все что угодно заклевать. Ему сейчас поддержка нужна, а не наезды беспочвенные.

B>P.S. Лучше бы кто-нибудь запилил XAML для сайтостроения.


А зачем шило то на мыло менять?

Конечно, иметь типизированный MVVM-язык для создания WUI было бы не плохо. Но зачем тут XAML? Опять программирование в XML? Ну, его на фиг!

А решение для WUI автор делал несколько лет назад. NemerleWeb называется. На старых технологиях, правда. И вот такие же критики как ты его заклевали, даже не поняв смысла и крутости продукта.

На сегодня есть только аналоги на JavaScript. А жаль.

B>С нормальным визуальным редактором,


Не нужен никому этот редактор. Нельзя в нем полноценно отобразить MVVM-ые фичи вроде биндинга. Вот превью нужно. Но быстрое, а не те тормоза, что в Студии есть. И качественное. А то у меня редактор XAML постоянно падает.

Единственное зачем я использовал редактор XAML — это найти нужный участок XAML-а. Если сделать так, чтобы в рантайме можно было найти соответствующий контролу кусок кода на AMMY было бы просто идеально. Такую подержку сделать можно. Разны XAML-spy-е хватает. Прикрутить к такому навигацию и будет супер.

B>strong typed binding-ами безо всяких angular-извращений, интеграцией в IDE и нормальной библиотекой контролов типа всяких TreeView. Вот это взлетит в отличие от.


Вот все это было в NemerleWeb. Но заклевали. Такие как ты заклевали. Потом автор ушел из веб-разработки и занялся GUI-ём под Windows. Вот и зародилась у него идея сделать решение заменяющее убогий XAML, на котором приходилось не мало работать.

Собственно на Nitra то что ты хочется делается. Хочешь — займись. Может даже денег поднимешь. Мы тебе поможем, как помогли автору AMMY.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 19.01.2017 15:44 VladD2 . Предыдущая версия .
Re[3]: Косяки с точки зрения бизнеса (+)
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 08:59
Оценка:
Здравствуйте, VladD2, Вы писали:

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


B>>2. Вообще, новый closed-source язык с точки зрения рисков — бяка. Допустим, я сделал проект с бюджетом в $100K с помощью нового суперязыка, сэкономив $20K. А что если завтра автору проект надоест и он прекратит развитие? Прекратит интеграцию с новыми версиями студии, рантайма и т.п. Я попал на еще $100K, чтобы в спешке все переделывать на старом языке. Бесплатный язык и платные usability-расширения с точки зрения продаж куда интересней.

VD>Ну, и AMMY в итоге генерирует XAML. Так что в крайнем случае можно тупо взять полученный XAML и продолжить пилить его руками (без блэкджека и шлюх).
Да, всё что нужно, это убрать из из референсов Ammy и добавить сгенерированные XAML файлы. Они, кстати, получаются не сильно хуже рукописных.

B>>P.S. Лучше бы кто-нибудь запилил XAML для сайтостроения.


VD>А решение для WUI автор делал несколько лет назад. NemerleWeb называется. На старых технологиях, правда. И вот такие же критики как ты его заклевали, даже не поняв смысла и крутости продукта.


Надо отметить, что делал я его не один, а вместе с _NN_.

VD>Вот все это было в NemerleWeb. Но заклевали. Такие как ты заклевали.


Проблема была не в критике, (хотя по-моему её было неоправданно много), а в том что не нашлось сторонников. К тому же у меня родился ребёнок, а у NN так вообще двойня. Заниматься проектом параллельно с основной работой и ребёнком стало просто нереально.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re: Code behind поддерживается ?
От: Jack128  
Дата: 19.01.17 09:11
Оценка:
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 09:12
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


WH>1)Нужен конвертер из XAML в AMMY. У людей уже есть горы кода на XAML и переписывать его руками в AMMY они не станут.


Он есть, но в очень зачаточном состоянии. Фактически он просто читает XML и переводит в Ammy с небольшими правками. Там пока нет поддержки x:Name, x:Key и прочего.
В любом случае я в ближайшие пару дней залью его на http://www.github.com/ammyui/ammyui

WH>2)Большое количество значений в строках. Нитра позволяет делать подсветку и автокомплит в строках.

Такова природа XAML'а. В некоторых местах можно будет убрать необходимость строк, но пока это не приоритет.

WH>3)Так как алиас всегда возвращает строго один узел скобки лишние.


WH>Ну и для однообразия с миксинами

WH>
WH>alias Header(text) for TextBlock {
WH>    FontSize: 18
WH>    Text: $text
WH>}
WH>


Ага, я точно про такой синтаксис думал. Но поразмыслив решил остановится на текущем — он по моему легче читается. "Есть функция, которая вставляет такую-то ноду". Короче говоря, это спорный момент.

WH>4)Что мешает сделать типизированные переменные?

Нет смысла. Типизация помогает с интеллисенсом и проверкой во времени компиляции.
Проверка работает и так, потому что при компиляции Ammy запускается парсер XAML ошибки которого потом мапятся обратно на Ammy.
С интеллисенсом хуже, но для того чтобы его получить пришлось бы усложнять синтаксис. Например, чтобы получить подсказку по enum'у пришлось бы писать:

Visibility $visibility = Hidden


Со свойствами ещё хуже:
from Control $triggerProperty = Background


И всё это только для интеллисенса. Повторюсь, ошибки и так показываются интерактивно.

WH>5)Все миксины в видео не имеют параметров. И при их вызове скобки не используются. Возможно стоит сделать скобки при описании миксина опциональными?

Согласен, надо над этим подумать. Если не сложно, можешь на гитхаб сделать Issue?

WH>6)Где можно скачать проект, созданный в видео? Да и вообще несколько примеров было бы неплохо.

В ближайшее время всё выложу на http://www.github.com/ammyui/ammyui.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[2]: Code behind поддерживается ?
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 09:14
Оценка:
Здравствуйте, Jack128, Вы писали:

В этом плане Ammy ничем не отличается от XAML. Когда добавляешь Ammy контрол, добавляется точно такой же code behind как и раньше.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[3]: Code behind поддерживается ?
От: Jack128  
Дата: 19.01.17 09:25
Оценка:
Здравствуйте, ionoy, Вы писали:

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


I>В этом плане Ammy ничем не отличается от XAML. Когда добавляешь Ammy контрол, добавляется точно такой же code behind как и раньше.

Да, не обратил внимание, сорри.
Re[4]: Code behind поддерживается ?
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 09:27
Оценка:
Здравствуйте, Jack128, Вы писали:

I>>В этом плане Ammy ничем не отличается от XAML. Когда добавляешь Ammy контрол, добавляется точно такой же code behind как и раньше.

J>Да, не обратил внимание, сорри.
А чего сорри, мне наоборот хорошо когда много вопросов. Становится понятно какие моменты неочевидны, что нужно подробнее описать на сайте. Так что спасибо за вопрос
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Отредактировано 19.01.2017 9:41 VladD2 . Предыдущая версия . Еще …
Отредактировано 19.01.2017 9:27 ionoy . Предыдущая версия .
Re[2]: Code behind поддерживается ?
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 09:41
Оценка:
Здравствуйте, Jack128, Вы писали:

Просьба не задавать вопросов в заголовке.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Code behind поддерживается ?
От: Jack128  
Дата: 19.01.17 09:46
Оценка: 16 (1)
Здравствуйте, ionoy, Вы писали:

Опечатка в самом низу http://www.ammyui.com/documentation/syntax/

This insert ы a cached image into parent control. Meaning that if your image source is network/web based you won’t have to load it every time.

Re: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 19.01.17 10:13
Оценка: 24 (1)
Здравствуйте, VladD2, Вы писали:

Баг или у меня косяки ??

1) Есть два солюшена, один с ammy-юзер контролом, другой — просто новое wpf приложение.
2) Ставим ammy-экстеншн.
3) Открываем ammy-солюшн, подсветка есть, авторелоад есть.
4) открываем обычный wpf солюшн, тут же закрываем его
5) открываем ammy-солюшн, авторелоад работает, а подсветка синтаксиса — пропала.

Сами солюшены https://lm.grandsmeta.ru/licmanager/download/Temp/Ammy-Test.zip

update:
хотя второй солюшн не нужен. Достаточно закрыть/открыть ammy-solution
Отредактировано 19.01.2017 10:15 Jack128 . Предыдущая версия .
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 10:17
Оценка:
Здравствуйте, Jack128, Вы писали:

J>update:

J>хотя второй солюшн не нужен. Достаточно закрыть/открыть ammy-solution

Очевидно баг. Спасибо за репорт!
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 10:39
Оценка:
Здравствуйте, Jack128, Вы писали:

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


J>Баг или у меня косяки ??


Починил. Если есть желание, обновится можно с тестового сервера MyGet.
Nuget V2: https://www.myget.org/F/ammy/api/v2
Nuget V3: https://www.myget.org/F/ammy/api/v3/index.json

Добавляется в Options -> Nuget Package Manager -> Package Sources

При обновлении попросит перезапустить студию, надо перезапустить.

Ещё раз, спасибо
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[3]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 10:40
Оценка: 15 (1)
Здравствуйте, ionoy, Вы писали:

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


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


J>>Баг или у меня косяки ??


I>Починил. Если есть желание, обновится можно с тестового сервера MyGet.

I>Nuget V2: https://www.myget.org/F/ammy/api/v2
I>Nuget V3: https://www.myget.org/F/ammy/api/v3/index.json

I>Добавляется в Options -> Nuget Package Manager -> Package Sources


I>При обновлении попросит перезапустить студию, надо перезапустить.


I>Ещё раз спасибо
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[4]: Косяки с точки зрения бизнеса (+)
От: ifle  
Дата: 19.01.17 10:56
Оценка: 24 (1)
Добавьте киллер фичу — поддержку ограниченного css, как в nativescript и react-native. Будет очень полезно и для xamarin
Re[5]: Косяки с точки зрения бизнеса (+)
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 10:58
Оценка:
Здравствуйте, ifle, Вы писали:

I>Добавьте киллер фичу — поддержку ограниченного css, как в nativescript и react-native. Будет очень полезно и для xamarin


А можно пример как это должно выглядеть?
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 19.01.17 11:22
Оценка:
Здравствуйте, VladD2, Вы писали:

А события нормально работают ??
http://files.rsdn.org/19362/AmmyTest2.zip
По клику кнопки мессадж бокс не показывается.
Re[6]: Косяки с точки зрения бизнеса (+)
От: ifle  
Дата: 19.01.17 11:36
Оценка:
Здравствуйте, ionoy, Вы писали:

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


I>>Добавьте киллер фичу — поддержку ограниченного css, как в nativescript и react-native. Будет очень полезно и для xamarin


I>А можно пример как это должно выглядеть?

Вот как это выглядит в NativeScript.
https://docs.nativescript.org/ui/styling
Понятно, что это потом трансфрормируется в стили под android и ios

Android styles
https://developer.android.com/guide/topics/ui/themes.html
Отредактировано 19.01.2017 11:37 ifle . Предыдущая версия .
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 11:50
Оценка:
Здравствуйте, Jack128, Вы писали:

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


J>А события нормально работают ??

J>http://files.rsdn.org/19362/AmmyTest2.zip
J>По клику кнопки мессадж бокс не показывается.

Видимо что-то сломалось. Разбираюсь.

Если не сложно, можешь в гиттер зайти? Там было бы удобнее проблемы решать.
https://gitter.im/AmmyUI/Ammy
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[3]: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 19.01.17 14:03
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Если не сложно, можешь в гиттер зайти? Там было бы удобнее проблемы решать.

I>https://gitter.im/AmmyUI/Ammy

done
Re[7]: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 19.01.17 14:51
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Второе решение — это если данных нет и хочется добавить 10 произвольных кусков шаблона.


В принципе, если через параметры можно задать в том числе и события, то это решение годное.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 14:52
Оценка:
Здравствуйте, IT, Вы писали:

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


I>>Второе решение — это если данных нет и хочется добавить 10 произвольных кусков шаблона.


IT>В принципе, если через параметры можно задать в том числе и события, то это решение годное.


Можно, да.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[7]: Косяки с точки зрения бизнеса (+)
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 14:55
Оценка:
Здравствуйте, ifle, Вы писали:

I>Вот как это выглядит в NativeScript.

I>https://docs.nativescript.org/ui/styling
I>Понятно, что это потом трансфрормируется в стили под android и ios

Ну тобишь автоматическое присвоение стилей, как в CSS? Я думал добавить для этого специальный синтаксис, но пока не дошёл.
Скорее всего будет нечто вроде:

apply #SomeMixin to Button
apply #SomeMixin to StackPanel > Button
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Отредактировано 19.01.2017 15:51 VladD2 . Предыдущая версия .
Re[3]: AMMY - XAML с человеческим лицом
От: WolfHound  
Дата: 19.01.17 15:00
Оценка: +3 :)
Здравствуйте, ionoy, Вы писали:

I>Он есть, но в очень зачаточном состоянии. Фактически он просто читает XML и переводит в Ammy с небольшими правками. Там пока нет поддержки x:Name, x:Key и прочего.

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

I>Такова природа XAML'а. В некоторых местах можно будет убрать необходимость строк, но пока это не приоритет.

Я понимаю, что в хамле (я фигею от того как XAML склоняется) всё в строках.
Но ты же делаешь отдельный статически типизированный язык.

I>Ага, я точно про такой синтаксис думал. Но поразмыслив решил остановится на текущем — он по моему легче читается. "Есть функция, которая вставляет такую-то ноду". Короче говоря, это спорный момент.

ИМХО лучше однообразие.

I>С интеллисенсом хуже, но для того чтобы его получить пришлось бы усложнять синтаксис. Например, чтобы получить подсказку по enum'у пришлось бы писать:

Или так:
$visibility = Visibility.Hidden

$triggerProperty = Control.Background

причём всё с интеллисенсом.

I>И всё это только для интеллисенса. Повторюсь, ошибки и так показываются интерактивно.

Интеллисенс критически важен.

Кстати рефакторинг переименования переменных/алиасов/миксинов уже сделал?
Это должно быть довольно просто.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[4]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 19.01.17 15:44
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


I>>С интеллисенсом хуже, но для того чтобы его получить пришлось бы усложнять синтаксис. Например, чтобы получить подсказку по enum'у пришлось бы писать:

WH>Или так:
WH>
WH>$visibility = Visibility.Hidden

WH>$triggerProperty = Control.Background
WH>

WH>причём всё с интеллисенсом.

Да, ты прав. Надо будет подумать над этим.

WH>Кстати рефакторинг переименования переменных/алиасов/миксинов уже сделал?

WH>Это должно быть довольно просто.

Пока нет, просто руки не дошли. Там и правда должно быть всё просто.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Отредактировано 19.01.2017 15:48 ionoy . Предыдущая версия .
Re[7]: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 19.01.17 15:48
Оценка: 7 (2) -3
Здравствуйте, VladD2, Вы писали:

IT>>Человек, создающий инструменты для программистов не должен задавать таких вопросов


VD>Любой разумный человек должен задавать такие вопросы.


Я могу сам себе задать вопрос — зачем нужна Нитра? И ответить на него для себя вполне однозначно — Нитра не нужна. Чувствуешь разницу? Она не нужна лично мне. Я не вижу в этом инструменте большой необходимости. Я не вижу. Лично для себя. Она не нужна МНЕ. Но это не значит, что она не нужна вообще.

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

Тем более что за этой отмазкой чаще всего скрывается совсем другая причина, которую и стоит честно озвучивать. Например, эта задача не является приоритетной, сейчас нет времени, мы соберём статистику запросов этой фиче и рещим и т.п. Это честные и правильные ответы. А ответ, который ты сам больше всего любишь — это нафиг никтому не надо и вы ничего не понимаете, вызывает лишь недоумение.

VD>Если бездумно пихать фичи в язык, то получится жутик.


Пихать никто ничего не предлагает. Был задан вопрос: "Как насчёт циклов?". И вместо ответа: "Никак", опять началось "Зачем это надо".

VD>Я вот тоже не пойму зачем в языке разметки рассчитанным на парадигму MVVM какие-то циклы.


Я тоже не понимю зачем нужна Нитра

VD>Ты где-нибудь к XAML-у такие претензии предъявлял?


Было дело. Я вообще считаю XAML ошибкой мироздания. Правильный подход был сделан в ASP с Razor, т.е. был создан свой DSL, в котором, кстати, есть циклы и вообще всё, что угодно. Что-то подобное хотелось бы и для XAML.

VD>В общем, привел бы пример задачи, которую это решает.


Да любая форма ввода, на которой присутсвует десяток кастомных полей с лейблами и ещё чем-нибудь. Каждая такая группа контролов занимает в XAML десяток строк и при этом отличается лишь парой аттрибутов, типа название и баиндинг.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 15:57
Оценка:
Здравствуйте, ionoy, Вы писали:

WH>>Кстати рефакторинг переименования переменных/алиасов/миксинов уже сделал?

WH>>Это должно быть довольно просто.

I>Пока нет, просто руки не дошли. Там и правда должно быть всё просто.


Зависит от качества реализации. Если просто переименовывать и плевать на появляющиеся ошибки связывания, то очень просто. Достаточно просто найти все референсы (код в Нитре есть) и тупо сделать замену. А вот если проверять все места на конфликты, это уже будет не столь просто.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Косяки с точки зрения бизнеса (+)
От: bazis1 Канада  
Дата: 19.01.17 16:17
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Был силверлайт. Только это умирающий тренд

Потому что работал на ограниченных браузерах/системах и не вписывался органично в HTML, работая по сути в отдельном iframe.
Re[8]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 16:23
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Я могу сам себе задать вопрос — зачем нужна Нитра? И ответить на него для себя вполне однозначно — Нитра не нужна. Чувствуешь разницу? Она не нужна лично мне. Я не вижу в этом инструменте большой необходимости. Я не вижу. Лично для себя. Она не нужна МНЕ. Но это не значит, что она не нужна вообще.


Ну, не нужна, так не нужна.

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


Вообще не вижу связи предыдущим абзацем. Из того, что кому-то не нужен отбойный молоток не следует, что к топору нужно прикрутить крылья. Точно так же из того, что тебе не нужна Нитра никак не следует, что в AMMY нужны какие-то циклы.

И любой автор языка просто обязан думать о том нужны ли некие фичи в его языке или нет.

Если ты пытаешься убедить автора в том, что фича реально нужна, ты хотя бы потрудись привести пример ее необходимости.

Для меня вот твои претензии выглядят примерно так же как если бы кто-то сказал, что в linq2db срочно нужны, ну, скажем, те же циклы. А на вопрос зачем они нужны тебе бы втирали вот это вот "Человек, создающий инструменты для программистов не должен задавать таких вопросов.".

Как минимум чтобы добавить фичу в язык нужно понимать, что она будет делать.

IT>Тем более что за этой отмазкой чаще всего скрывается совсем другая причина, которую и стоит честно озвучивать. Например, эта задача не является приоритетной, сейчас нет времени, мы соберём статистику запросов этой фиче и рещим и т.п. Это честные и правильные ответы. А ответ, который ты сам больше всего любишь — это нафиг никтому не надо и вы ничего не понимаете, вызывает лишь недоумение.


IT не занимайся фигней. Или объясни что ты понимаешь под этими "циклами" и продемонстрируй для чего они тебе нужны, или не насилуй мозг. Я не автор языка и мне в общем-то по фигу будут там циклы или нет. Но хотелось бы понять на фиг они вообще нужны. Может мой опыт возни с WPF мал и я что-то не знаю. А вместо объяснения я вижу нравоучения.

IT>Пихать никто ничего не предлагает. Был задан вопрос: "Как насчёт циклов?". И вместо ответа: "Никак", опять началось "Зачем это надо".


Как в linq2db насчёт циклов? И не надо этих отмазок, что они там не нужны (ц).

VD>>Я вот тоже не пойму зачем в языке разметки рассчитанным на парадигму MVVM какие-то циклы.


IT>Я тоже не понимю зачем нужна Нитра


Ну, это твои проблемы. Я же не прихожу к тебе в форум по linq2db и не начинаю выяснять почему в нем нет циклов?

IT>Было дело. Я вообще считаю XAML ошибкой мироздания. Правильный подход был сделан в ASP с Razor, т.е. был создан свой DSL, в котором, кстати, есть циклы и вообще всё, что угодно. Что-то подобное хотелось бы и для XAML.


Ну, вот уже ближе к делу. Вот только лично я с тобой не согласен и считаю с точностью до наоборот. Ошибка мироздания — это серверные генераторы хтмл-я. А MVVM, к которым относится XAML, Ангуля и прочие НокаутЖС-ы — правильный путь.

Сдается мне ionoy думает так же, таз уже второй MVVM-язык поднимает.

IT>Да любая форма ввода, на которой присутсвует десяток кастомных полей с лейблами и ещё чем-нибудь. Каждая такая группа контролов занимает в XAML десяток строк и при этом отличается лишь парой аттрибутов, типа название и баиндинг.


Ты мне напоминаешь человека знакомого с молотком и во всем остальном видящем его же. В данном случае у тебя вместо молотка это недоразумение — Разор. Но как бы есть и другие пути.

У ionoy в AMMY есть миксины и алиасы. Их вполне достаточно, чтобы не копипастить бессмысленный код. Запихни все описание поля и лэйбла в минксин. Сделай там те параметры, что тебе нужны и используй в форме эти миксины. Миксин — это по сути тот же макрос. Просто ionoy очень боится, что людей это слово страшное испугают.

Ну, а то что в XAML-е приходится копипастить все атрибуты — это проблемы XAML-а. Хотя вроде и это не так, так, так-как в XAML-е есть стили которыми это решается. Хотя наверно они не так мощны как миксины. Да и использовать их не очень удобно.

В общем, покажи пример (юзкейс) на псевдокоде. Может я недогоняю гениальности придложенной идеи. Но пока что ты меня не убедил. И я считаю, что никакие циклы в AMMY не нужны. Точнее даже вредны.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 19.01.17 16:47
Оценка: +1 -3
Здравствуйте, VladD2, Вы писали:

VD>Может я недогоняю гениальности придложенной идеи. Но пока что ты меня не убедил. И я считаю, что никакие циклы в AMMY не нужны. Точнее даже вредны.


Вообще-то никаких предложений не поступало. Был вопрос: "Как насчёт циклов?". Ответа "Никак" было бы вполне достаточно. Вместо этого ты развёл свой обычный "Это никому не нужно и вы ничего не понимаете". Ну-ну.

В общем, ничего в этом форуме за пять лет не изменилось. Пичалька.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 17:09
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Вообще-то никаких предложений не поступало. Был вопрос: "Как насчёт циклов?".


Тебе на это отвели — отлично. Не нужны.

IT>Ответа "Никак" было бы вполне достаточно. Вместо этого ты развёл свой обычный "Это никому не нужно и вы ничего не понимаете". Ну-ну.


Ну, это ты пошел нравоучения раздавать, вместо того, чтобы просто показать, что ты хочешь на каком-нибудь примере.

IT>В общем, ничего в этом форуме за пять лет не изменилось. Пичалька.


Конечно не изменилось. Ты приходишь и начинаешь нравоучения. Я вообще в тихом охренении от русских программистов. Сравниваю вот реакцию на Редите с местной и берет меня печать.

Там почему-то поддержка и восхищение, а тут наезды и неадеват.

ЗЫ

И ты не ответил на мой вопрос. Как там с циклами в linq2db?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: AMMY - XAML с человеческим лицом
От: fddima  
Дата: 19.01.17 17:22
Оценка: +3
Здравствуйте, VladD2, Вы писали:

VD>Конечно не изменилось. Ты приходишь и начинаешь нравоучения. Я вообще в тихом охренении от русских программистов. Сравниваю вот реакцию на Редите с местной и берет меня печать.

VD>Там почему-то поддержка и восхищение, а...
Это ни о чем не говорит. Твои же личные реакции тоже бывают весьма резкими. Насчет восхищений конкретно — то тут помоему все выразили его, и многие оценками. На слова — остались вопросы. Восхищения же заканчиваются когда упираешься рогом в очередную ахрененную вещь и потом сыпешь голову пеплом, а разработчиков — проклинаешь. Я господам из дотнеткоры тоже писал что они делают ахинею, вместо технологической платформы — какой-то сплошной задрыпанный лок-ин на хэллоуворлды. И... мы задающие вопросы — внезапно узнаем что msbuild вернётся и т.п. Sinix называет это требованиями ужасного энтерпрайза, а я — голосом разума.
Технологии — не должны решать конкретных задач — технологии — позволяют решать любые задачи в своей нише.
Извините, что влез. Спокойнее — вопросы и нравоучения от IT — это уже признание того, что тут есть, что комментировать. Тоже самое и про тебя, хотя ты ИМХО можешь отстаивать точку зрения просто потому опыт флеймов обязывает.

PS: Меня вдохновляли всегда вещи вокруг Нитры. Но МНЕ лично хочется абсолютно нативного тулчейна.
Re[11]: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 19.01.17 17:38
Оценка: +1 -2
Здравствуйте, VladD2, Вы писали:

IT>>Вообще-то никаких предложений не поступало. Был вопрос: "Как насчёт циклов?".

VD>Тебе на это отвели — отлично. Не нужны.

Нет, Мне начали задавать вопросы "Зачем это надо".

IT>>Ответа "Никак" было бы вполне достаточно. Вместо этого ты развёл свой обычный "Это никому не нужно и вы ничего не понимаете". Ну-ну.

VD>Ну, это ты пошел нравоучения раздавать, вместо того, чтобы просто показать, что ты хочешь на каком-нибудь примере.

Влад, чтобы привести тебе реальный пример мне нужно на github закинуть рабочий проект, чего мне никто не разрешит сделать. На маленьких примерчиках ты всё равно будешь говорить, что это всё фигня и я ничего не понимю. А писать специально проект на 1000 строк у меня нет времени.

IT>>В общем, ничего в этом форуме за пять лет не изменилось. Пичалька.


VD>Конечно не изменилось. Ты приходишь и начинаешь нравоучения. Я вообще в тихом охренении от русских программистов. Сравниваю вот реакцию на Редите с местной и берет меня печать.


Нравоучения здесь вообще-то начинаются всегда от тебя. От других это уже обратная реакция.

VD>Там почему-то поддержка и восхищение, а тут наезды и неадеват.


А ты скажи им, что они ничего не понимают и зачем это нужно. Тогда посмотрим.

VD>И ты не ответил на мой вопрос. Как там с циклами в linq2db?


Отвечаю честно и без ваших беспонтовых понтов: НИКАК!
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Косяки с точки зрения бизнеса (+)
От: bazis1 Канада  
Дата: 19.01.17 17:44
Оценка: 6 (1)
Здравствуйте, VladD2, Вы писали:

VD>Вот здесь полностью не согласен. Для создания GUI в Windows вменяемых альтернатив нет. А программировать в xml-е крайне неприятно.

Неприятно первый месяц. Потом делаются Snippet-ы для повторяющихся вещей и готово. IntelliSense для XAML очень разумный.

VD>Сылка на гугльтренд опять таки говорит только о том, что WPF стали меньше пиарить, только и всего. Если попытаться забить там C# или Java вместо XAML получишь примерно такую же картину. Что же теперь C# и Java отмирающие технологии?

С точки зрения бизнеса — да. Раскрутить приблуду для C# или Java, не привязанную к взлетающей предметной области, сейчас будет крайне сложно.
С трендами все очень просто. Чем больше оно растет, тем больше людей, не знакомых с областью, что-то ищут. Соответственно, больше шансов, что они найдут подобный продукт по ключевикам и захотят им пользоваться. Как только все стабилизируется, рынок становится консервативным, начинает работать сарафанное радио и все, приплыли. Новый продукт — фиг вам.

VD>В общем, тезис об вымирании явно высосан из пальца. Если надо делать гуй для виндовс — альтернативы особо и нет.

Ага, вот только кто в 2017 году делает GUI для Windows? CAD? Ну-ну, good luck убеждать людей в 1B$+ компании со всякими compliance-отделами и т.п. взять риск перехода на новый язык. Дело не в том, что вместо WPF есть что-то другое. Дело в том, что тема десктопа как такового немного сдохла.

VD>Кстати, если посмотреть на Xamarin, то его тренд действительно рвется в высь. А это по сути разновидость XAML-а. Почему это так? Все очень просто — Microsoft вкладывает мегабаксы в его раскрутку. Вот сейчас рекламная компания кончится и тренд пойдет на спад. Так что если автор окучит Xamarin, то будет в тренде . А планы такие, вроде бы, есть.

Если нет патентов, то автор может продать свою наработку Xamarin за деньги, сравнимые с sign-on бонусом и получить там работу software developer-а. Точка.

VD>Это тоже какая-то надуманная причина. Если вдруг у него бизнес не удастся, то ежу понятно, что он выложит исходники в опенсорс. Исходники и так лежат на https://github.com. Просто в приватном репо. Я к ним доступ имею (просто потому что косултировал автора по Nitre, а код проще было через репо смотреть). Так что в случае "эффекта кирпича" даже я смогу эти исходники выложить. Но, надеюсь, этого не понадобится делать.

Или его новый работодатель даст подписать стандартный бланк "all your code belongs to us" и положит проект в ящик. Стандартная практика во многих mid-size компаниях.

VD>Да и твои аргументы совсем уж надуманны. Допустим сделал ты этот проект на C#, а МС решил закрыть тему C#-а. Ты, что переключишься на разработку C#-а? Да не в жизнь! Будешь использовать старые его версии только и всего. Да и как-то писал ты на C# когда он был закрытым.

У C# есть устоявшаяся экосистема и шансов на "мы закрылись" мало. У нового неопробованного продукта такой риск всегда гораздо выше и он должен компенсироваться фичами.

VD>Хотя лично я тоже за опенсорс. Но опенсорс под очень свободной лицензией убьет автору бизнес на прочь. Любой дурак сможет скачать продукт и сделать его клон распространяемый на его условиях.

Ну можно посмотреть в сторону open-source компилятора и платной интеграции в VS. Ну и лицензией кислород конкурентам перекрыть.

VD>Смысл огромный. Интерактивность разработки очень повышает ее скорость и качество! В студии для XAML есть превью и даже визуальный редактор. Но он постоянно падает и очень сильно тормозит. Плюс отображает не все и данных нормальных нет. А делать GUI в рантайме, да еще и на настоящих данных — это сплошное удовольствие!

Есть design-time data context, чтобы были нормальные данные.

VD>Так прикрути! Люди тебе спасибо скажут. Только при этом обеспечь интеллисенс. А то в студии в рантайме XAML изменять нельзя вроде.

У меня банально нет времени и я недостаточно изучал рынок WPF. Но интуиция подсказывает, что продукт "edit-and-continue для XAML в WPF" будет продаваться лучше, чем "новый язык для разработки в XAML". Причем, надо делать 2 редакции — за $20 и за $50 (ну и можно какой-нибудь супер-premium за $200 для людей на бюджете) с разным набором фич. И это реально будет приносить больше денег в месяц, чем текущий расклад.
Но если задача — не заработать денег на продажах, а поиграться с языком, или устроиться на работу в Xamarin, то советы выше, естественно, неприменимы.

VD>То-то я смотрю у автора на Редите такая толпа откликов? Раже авторы Xamarin-а и Avalon . Они просто твоего мнения наверно не успели прочитать.

Ретвиты != продажи. У текущего продукта будет высокий social engagement потому что json сейчас в тренде, а у WPF и XAML хороший исторический капитал (trends). Но при этом будет низкая конверсия из-за проблем, описанных выше.

VD>В общем, не гони напраслину на парня. Получился очень приличный язык, нужный людям. А так можно все что угодно заклевать. Ему сейчас поддержка нужна, а не наезды беспочвенные.

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

VD>Конечно, иметь типизированный MVVM-язык для создания WUI было бы не плохо. Но зачем тут XAML? Опять программирование в XML? Ну, его на фиг!

При том, что это притянет кучу юзеров, знакомых с XAML.

VD>Не нужен никому этот редактор. Нельзя в нем полноценно отобразить MVVM-ые фичи вроде биндинга. Вот превью нужно. Но быстрое, а не те тормоза, что в Студии есть. И качественное. А то у меня редактор XAML постоянно падает.

Как минимум, быстро добавлять контролы в нужное место таблицы и удобно их перемещать между рядами.

VD>Вот все это было в NemerleWeb. Но заклевали. Такие как ты заклевали. Потом автор ушел из веб-разработки и занялся GUI-ём под Windows. Вот и зародилась у него идея сделать решение заменяющее убогий XAML, на котором приходилось не мало работать.

Извини, но это отдает "вы все козлы, а я — непризнанный гений". На рынке нет понятия "заклевали". Есть понятия "взлетел" или "не взлетел". И зависят они от простой формулы "если показать продукт тысяче человек из заданной целевой группы, то сколько из них купят продукт". Я могу сколько угодно клевать на RSDN, но если у человека будет конверсия, то появятся продажи независимо от моей критики. И я могу сколько угодно хвалить, но если конверсия при текущем рынке будет низкая, то продаж это не принесет.

VD>Собственно на Nitra то что ты хочется делается. Хочешь — займись. Может даже денег поднимешь. Мы тебе поможем, как помогли автору AMMY.

Я тоже пытаюсь помочь, предлагая свое видение рынка. Говорю, edit-and-continue для XAML/WPF за $20-50 взлетит куда быстрее, чем новый крутой язык за $299 в месяц. И денег больше принесет.
Re[12]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 17:55
Оценка: +1
Здравствуйте, fddima, Вы писали:

F>Восхищения же заканчиваются когда упираешься рогом в очередную ахрененную вещь и потом сыпешь голову пеплом, а разработчиков — проклинаешь.


С этим никто не спорить. Но когда приходит вполне авторитетный малый и словно ПМС-ная баба тупо устраивает скандал на ровном месте, как-то понимаешь, что не все ладно в королевстве датском (ц).

С какого бодуна вместо объяснения своих слов следует переход на личности и нравоучения?

Я между прочим к языку отношения не имею и всего лишь пытаюсь понять с чего ему в друг пришло в голову спросить про какие-то циклы в языке разметки.

Дальше какой-то полнейший неадекват в стиле назиданий воспитательницы детсада:

Тем более что за этой отмазкой чаще всего скрывается совсем другая причина, которую и стоит честно озвучивать. Например, эта задача не является приоритетной, сейчас нет времени, мы соберём статистику запросов этой фиче и рещим и т.п. Это честные и правильные ответы. А ответ, который ты сам больше всего любишь — это нафиг никтому не надо и вы ничего не понимаете, вызывает лишь недоумение.


Ощущение, что говоришь с сумасшедшим профессором. Ты ему "я не ваш студент", а он тебе в ответ "вы мне это на зачете расскажите". Зачем мне втирать про какие-то там отмзки? Это не мой язык.

Почему он хочет от меня услышать какие-то там "задача не является приоритетной, сейчас нет времени, мы соберём статистику"? Кто "мы" то?

Он высказал претензию, я высказал свое мнение о ней. Я точно так же скажу, что в C# на фиг стили не упали и мне тоже выскажут похожие нравоучения?

F>Я господам из дотнеткоры тоже писал что они делают ахинею, вместо технологической платформы — какой-то сплошной задрыпанный лок-ин на хэллоуворлды. И... мы задающие вопросы — внезапно узнаем что msbuild вернётся и т.п. Sinix называет это требованиями ужасного энтерпрайза, а я — голосом разума.


И причем тут это все?

F> Технологии — не должны решать конкретных задач — технологии — позволяют решать любые задачи в своей нише.


Крестиком вышивать и на машинке шить тоже должны?

У всего есть свои рамки. Не нужны циклы в разметке. Не нужны стили в пимперативном языке. Не должен тракторист уметь крестиком вышивать.

А если у тебя мнение, что-то нужно, ну, дык покажи это на примере. Объясни по человечески, а не переходи на личности.

F> Извините, что влез. Спокойнее — вопросы и нравоучения от IT — это уже признание того, что тут есть, что комментировать. Тоже самое и про тебя, хотя ты ИМХО можешь отстаивать точку зрения просто потому опыт флеймов обязывает.


Я просто попросил объяснит зачем. Попросил пример привести. Но вместо этого увидел еще пол кило неадеквата в свою сторону.

Вот я и говорю. Почему-то на Редите конструктивное обсуждение, а здесь каждый норовит срачь устроить с переходом на личности. Причем на пустом месте. Ах, видете ли, в интернете кто-то не понимает или несогласен с его мнением!

F> PS: Меня вдохновляли всегда вещи вокруг Нитры. Но МНЕ лично хочется абсолютно нативного тулчейна.


Ну, так присоединяйся и помоги его сделать. В проект мы это заложили. Но нужно много и долго работать, чтобы все получилось как в проекте. Все делается через бэкэнды. Можно написать бэкэнд для LLVM, например. Когда будет Немерл на Нитре, можно будет бутстрапнуться на LLVM.

Но лично у меня до этого вряд ли дойдут руки в ближайшее время.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 18:11
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Нет, Мне начали задавать вопросы "Зачем это надо".


Естественно! Ты же ведь не объяснил как следует что и как. Может я не так тебя понял. Вот ты покажешь какой-то удивительный юзкейс и пример его реализации на этих загадочных циклах и я поменяю мнение.

А что я в ответ получил?

IT>Влад, чтобы привести тебе реальный пример мне нужно на github закинуть рабочий проект, чего мне никто не разрешит сделать. На маленьких примерчиках ты всё равно будешь говорить, что это всё фигня и я ничего не понимю. А писать специально проект на 1000 строк у меня нет времени.


Ну, объясни на словах. Я же не требую от тебя модели Нью-Йорка в масштабе 1 к 3. Пример + объяснение вполне достаточно.

IT>Нравоучения здесь вообще-то начинаются всегда от тебя. От других это уже обратная реакция.


Серьезно? Может перечитаешь тему? Вот этот бред кто мне писал:

Тем более что за этой отмазкой чаще всего скрывается совсем другая причина, которую и стоит честно озвучивать. Например, эта задача не является приоритетной, сейчас нет времени, мы соберём статистику запросов этой фиче и рещим и т.п. Это честные и правильные ответы. А ответ, который ты сам больше всего любишь — это нафиг никтому не надо и вы ничего не понимаете, вызывает лишь недоумение.

?

Я ведь и в теме написал, что автор нее я. И так ни один раз сказал, что к авторству отношения не имею.

Я сказал свое мнение. Ты пошел раздавать оскорбления и нравоучения. Уж извини, что я имею отличное от твоего мнения и имею наглость не менять его под нажимом, а прошу аргументации и примеров.

IT>А ты скажи им, что они ничего не понимают и зачем это нужно. Тогда посмотрим.


Я им ничего не буду говорить. Я лучше тебе скажу, что это хамство.

VD>>И ты не ответил на мой вопрос. Как там с циклами в linq2db?


IT>Отвечаю честно и без ваших беспонтовых понтов: НИКАК!


Я могу сам себе задать вопрос — зачем нужна linq2db? И ответить на него для себя вполне однозначно — linq2db не нужна. Чувствуешь разницу? Она не нужна лично мне. Я не вижу в этом инструменте большой необходимости. Я не вижу. Лично для себя. Она не нужна МНЕ. Но это не значит, что она не нужна вообще.

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

Тем более что за этой отмазкой чаще всего скрывается совсем другая причина, которую и стоит честно озвучивать. Например, эта задача не является приоритетной, сейчас нет времени, мы соберём статистику запросов этой фиче и рещим и т.п. Это честные и правильные ответы. А ответ, который ты сам больше всего любишь — это нафиг никтому не надо и вы ничего не понимаете, вызывает лишь недоумение.


Смотри как твоя терада отлично пододит? Просто универсальная демогогия.

Что же ты сам то не ответил, например, эта задача не является приоритетной, сейчас нет времени, мы соберём статистику запросов этой фиче и рещим и т.п.?

Не уж то может быть, что предложение бредовое и предлагаемое просто не нужно?

В общем, завязывай с демогогией и оскорблениями. До тебя здесь была нормальная здоровая атмосфера. Если у тебя плохое настроение, выпей пива, а не вымещай его на окружающим.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: AMMY - XAML с человеческим лицом
От: IT Россия blogs.rsdn.ru
Дата: 19.01.17 19:01
Оценка: +4 -3
Здравствуйте, VladD2, Вы писали:

VD>Смотри как твоя терада отлично пододит? Просто универсальная демогогия.

VD>Что же ты сам то не ответил, например, эта задача не является приоритетной, сейчас нет времени, мы соберём статистику запросов этой фиче и рещим и т.п.?

Я тебе ответил более конкретно — никак. Какая из букв в этом слове тебе непонятна?

VD>Не уж то может быть, что предложение бредовое и предлагаемое просто не нужно?

VD>В общем, завязывай с демогогией и оскорблениями. До тебя здесь была нормальная здоровая атмосфера. Если у тебя плохое настроение, выпей пива, а не вымещай его на окружающим.

Самое интересное, что с автором мы уже давно разобрались. Даже на твой неуместный вопрос есть ли циклы в linq2db я дал однозначный ответ — нет. Про примеры на 1000 строк я тоже уже сказал, что заниматься этим не буду, у меня нет времени. Про копипастинг при создании групп контролов тоже упомянул. Но ты всё никак не успокоишся И при этом я же у тебя ещё и демагог и оскорбитель. Пипец

Впрочем, я знаю как в будущем решить эту проблемы. Нужно по-лучше настроить фильтр форумов и исключить оттуда Nemerle.
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[13]: AMMY - XAML с человеческим лицом
От: fddima  
Дата: 19.01.17 19:08
Оценка: 3 (1) +1
VD>Ну, так присоединяйся и помоги его сделать. В проект мы это заложили. Но нужно много и долго работать, чтобы все получилось как в проекте. Все делается через бэкэнды. Можно написать бэкэнд для LLVM, например. Когда будет Немерл на Нитре, можно будет бутстрапнуться на LLVM.
Это интересно, хотя я слышал об этом изначально. Я щас выпадаю в идл. Если вдруг забуду — просьба пнуть меня. Вообще думаю собрать свои хотелки/мыслишки и от этого отталкиваться. Короче это в отдельном топике/может лично. Короче не тут точно, тут пока это никому не интересно будет.

VD>Но лично у меня до этого вряд ли дойдут руки в ближайшее время.

Это всегда было понятно. Проделанная работа вашей команды ещё несколько лет назад была выше всяких похвал. Ammy же только подтверждает — что твои обзоры — не рекламная чепушень! Имхо — конкурентов у Нитры вообще нет как и не было. Я вижу проблему тока в привязке к дотнету. И мало материалов. Но это решится. Я люблю дотнет всей душой, но самые интересные программы на нём не сделать. Короче — я рад что не смотря на все невзгоды — ты остаешься верен своему делу.
Re: AMMY - XAML с человеческим лицом
От: WolfHound  
Дата: 19.01.17 22:02
Оценка: 30 (1)
Здравствуйте, VladD2, Вы писали:

Нужен специальный синтаксис для стилей.
Думаю, что-то вроде такого
ColumnHeaderStyle: style for DataGridColumnHeader {
  Padding    = "30, 10"
  Background = $accentColor1
  Foreground = While
  FontSize   = 18
  FontWeight = Bold
}

= вместо : по тому что сеттер.
Код получается короче.
Плюс везде работает интеллисенс.
Имена свойств получаем из типа для которого делаем стиль.
А значения енумов из типа свойства.

Тоже самое с триггерами
trigger IsSelected == true {
  Foreground = Green
}

trigger Button.Click == "AddGuestButton" {
  ...
}

Выбор между Trigger и EventTrigger делаем на основе типа того на что вешаем триггер.
Все триггеры объединяем в коллекцию Triggers.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: AMMY - XAML с человеческим лицом
От: Evgeny.Panasyuk Россия  
Дата: 19.01.17 23:14
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>В общем, обоснуй необходимость этих самых циклов. Покажи примеры. Может уговорим ionoy добавить их поддержку. На Nitra это не сложно будет сделать. Пока что я не вижу в этом никакой необходимости.

VD>...
VD>В XAML, как я понимаю, никаких циклов нет. И никто даже не стремится добавить. Почему?

Например в QML есть Repeater — наверное кому-то было необходимо
Row {
    Rectangle { width: 10; height: 20; color: "red" }
    Repeater {
        model: 10
        Rectangle { width: 20; height: 20; radius: 10; color: "green" }
    }
    Rectangle { width: 10; height: 20; color: "blue" }
}

http://doc.qt.io/qt-5/images/repeater.png
Column {
    Repeater {
        model: ["apples", "oranges", "pears"]
        Text { text: "Data: " + modelData }
    }
}
Re[3]: AMMY - XAML с человеческим лицом
От: seregaa Ниоткуда http://blogtani.ru
Дата: 19.01.17 23:44
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Он же компилируется в xaml. Как цикл в xaml можно преобразовать?


В некоторых случаях можно развернуть цикл в compile-time. Для задач типа "добавить 10 кнопок" будет вполне достаточно.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[3]: Косяки с точки зрения бизнеса (+)
От: Evgeny.Panasyuk Россия  
Дата: 19.01.17 23:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это тоже какая-то надуманная причина. Если вдруг у него бизнес не удастся, то ежу понятно, что он выложит исходники в опенсорс.


Ежам обычно непонятно, поэтому и существует такая практика как source code escrow.
Re[4]: Косяки с точки зрения бизнеса (+)
От: fddima  
Дата: 20.01.17 00:08
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Ежам обычно непонятно, поэтому и существует такая практика как source code escrow.

Считай меня ежом — никогда с таким сочетанием букв не сталкивался. Хотя в целом смысл пожалуй что ясен.
Re[5]: Косяки с точки зрения бизнеса (+)
От: Evgeny.Panasyuk Россия  
Дата: 20.01.17 00:20
Оценка:
Здравствуйте, fddima, Вы писали:

F>никогда с таким сочетанием букв не сталкивался.


Встречается при разработке закрытых библиотек. Думаю используется и для других трудно-замещаемых инструментов для разработчиков (как у ТС).

F>Хотя в целом смысл пожалуй что ясен.


https://en.wikipedia.org/wiki/Source_code_escrow
Source code escrow is the deposit of the source code of software with a third party escrow agent. Escrow is typically requested by a party licensing software (the licensee), to ensure maintenance of the software. The software source code is released to the licensee if the licensor files for bankruptcy or otherwise fails to maintain and update the software as promised in the software license agreement.
...
The Blender graphics suite was released in this way following the bankruptcy of Not a Number Technologies
...

Re[6]: Косяки с точки зрения бизнеса (+)
От: fddima  
Дата: 20.01.17 00:25
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

F>>никогда с таким сочетанием букв не сталкивался.

EP>Встречается при разработке закрытых библиотек. Думаю используется и для других трудно-замещаемых инструментов для разработчиков (как у ТС).
Погуглить и я могу. Но за старания — всё равно спасибо. Не, вправду не сталкивался хотя по долгу службы моя работа просто попадает под nda/rca и всё. Поэтому до таких нюансов *пока* не докатились. Хотя нсверное докатимся — в этом году чот у всех голову унесло. Увы.
Re[7]: AMMY - XAML с человеческим лицом
От: Ziaw Россия  
Дата: 20.01.17 05:05
Оценка:
Здравствуйте, ionoy, Вы писали:

I>А можно пример, чтобы было от чего отталкиваться?


Например есть у нас массив доступных экшенов, который надо превратить в кнопки. Ты уже показал байндинг через ItemsControl, его вполне достаточно.
Re[14]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 07:21
Оценка:
Здравствуйте, IT, Вы писали:

IT>Я тебе ответил более конкретно — никак. Какая из букв в этом слове тебе непонятна?


Так сделай. Или объясни почему не будешь делать.

IT>Самое интересное, что с автором мы уже давно разобрались.


Автор просто боится быть заклеванным такими как ты. По сему пытается обходить все острые углы.

IT>Даже на твой неуместный вопрос есть ли циклы в linq2db я дал однозначный ответ — нет.


А чем этот вопрос более не уместен чем твой?

Вопрос, конечно, риторический. Не нужны они там, вот и кажется тебе вопрос неуместным. Но ты же ведь окружающих учишь, что говорить "не нужны" нельзя. Так что вангую, что внятного ответа я так и не услышу. Сейчас начнется демагогия и продолжение врачевания мозга оппонентов.

Тебе ведь тоже ответили, что нет. Но с дури объяснили почему:

Циклы в XAML реализуются через ItemsControl и ItemTemplate, так что они не нужны.

И дальше вместо конструктивного возражения или просто закрытия темы пошло хамство. Причем хамство в мою сторону, хотя я еще слова не прознес, т.е. на основе телепатии.

IT>Про примеры на 1000 строк я тоже уже сказал, что заниматься этим не буду, у меня нет времени.


Не нужно на 1000 строк. Просто пары строк и объяснение было бы достаточно. Ты в этой теме уже 100500 букв намолотил на наезды. Если ты их на дело потратил, то вопрос давно был бы решен, а тебе в ответ показали бы как тоже самое можно достичь на AMMY или признали бы, что ты прав.

Но никаких примеров не будет, так как просто нет задачи. Прсто есть кто-то для кого вокруг все молоток Разор. По этому не найдя гвоздей циклов в продукте находится фатальный недостаток.

Отсюда и наезды с переходами на личности.

IT>Про копипастинг при создании групп контролов тоже упомянул.


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

IT>Но ты всё никак не успокоишся И при этом я же у тебя ещё и демагог и оскорбитель. Пипец


Может быть это я бегаю за тобой по форумам и пытаюсь объяснить как ты мне безразличен?

Ты приперся на этот форум. Во втором сообщении обосрал меня. А успокоиться не могу я?

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

IT>Впрочем, я знаю как в будущем решить эту проблемы. Нужно по-лучше настроить фильтр форумов и исключить оттуда Nemerle.


Вот давно бы этим занялся, если не можешь конструктивно общаться. Еще я это AlexRK посоветовал бы. Я к тебе в форум linq2db не хожу чтобы тебя по унижать. Ну, и ты сюда дорогу забудь, раз не хочешь помочь или, хотя бы, общаться без наездов.

А раз пришел оставь тон нравоучений за дверью. Это технический форум. Вот тут рядом есть критика от bazis1
Автор: bazis1
Дата: 19.01.17
. Я с нем во многом не согласен, но это все же критика. Человек обосновывает свои мысли. И при этом, заметь, на личности не переходит.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 07:56
Оценка:
Здравствуйте, fddima, Вы писали:

F> Это интересно, хотя я слышал об этом изначально. Я щас выпадаю в идл. Если вдруг забуду — просьба пнуть меня. Вообще думаю собрать свои хотелки/мыслишки и от этого отталкиваться. Короче это в отдельном топике/может лично. Короче не тут точно, тут пока это никому не интересно будет.


Отлично. С удовольствием почитаю предложения. Вот тут вот еще много чего напредлагали. А основное обсуждение Немерла и т.п. здесь
Автор: VladD2
Дата: 12.01.17
.

Собственно сам я хочу сосредоточиться на ядре языка и бэкэнде для дотнета. Бдут стараться выбирать такие решения, которые потом будет легче воспроизвести для нэйтива.

VD>>Но лично у меня до этого вряд ли дойдут руки в ближайшее время.

F> Это всегда было понятно. Проделанная работа вашей команды ещё несколько лет назад была выше всяких похвал. Ammy же только подтверждает — что твои обзоры — не рекламная чепушень! Имхо — конкурентов у Нитры вообще нет как и не было.

Конкуренты есть, но мы их сильно опережаем. Тут не буду скромничать. Хотя дорабатывать много чего есть. Тут тоже не буду лукавить.

F>Я вижу проблему тока в привязке к дотнету. И мало материалов. Но это решится. Я люблю дотнет всей душой, но самые интересные программы на нём не сделать. Короче — я рад что не смотря на все невзгоды — ты остаешься верен своему делу.


Откровенно говоря не вижу почему бы на дотнете не делать самые интересные программы, но согласен, что привязка только к дотнету вредит распространению проекта.

Так что с удовольствием помогу тем кто захочет отвязать Нитру и Немерл от дотнета.

Что касатеся материала, то на русском его уже не так много, хотя конечно не все описано пока и на русском. А вот английском все хуже. Мой английский недостаточен для корректных переводов, к сожалению. Тут тоже нужна внешняя помощью.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: AMMY - XAML с человеческим лицом
От: Mr.Delphist  
Дата: 20.01.17 08:09
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ты где-нибудь к XAML-у такие претензии предъявлял?


Хотя вопрос был не мне, но кину в XAML камень: почему нельзя биндиться к параметру конвертера? Периодически возникает такой кейс, что позволило бы написать более general конвертер. Так нет же — пиши явно значение или не пользуйся вообще. В итоге имеем связку конвертеров там, где мог бы быть один.
Re[6]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 08:23
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Например в QML есть Repeater — наверное кому-то было необходимо


Это не более чем контрол. А речь то идет о фичи языка. Думаю, что такие контролы для WPF уже имеются.

Куда чаще используются повторители на биндинге. Этого добра хватает и из коробки. На их базе можно и такой тупо повторитель сделать. Делаешь вырожденную коллекцию на нужное число элементов и вуаял! Даже можно за счет этого какие-то параметры менять. Сделать, например, четные Rectangle-ы красными, а не четными зелеными.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Косяки с точки зрения бизнеса (+)
От: Mr.Delphist  
Дата: 20.01.17 08:27
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А то в студии в рантайме XAML изменять нельзя вроде.


В последней Студии добавили (пока в ограниченном виде) такую возможность. На Channel9 есть ролик на эту тему.

VD>Конечно, иметь типизированный MVVM-язык для создания WUI было бы не плохо. Но зачем тут XAML? Опять программирование в XML? Ну, его на фиг!


А что не так с XML? Ну, кроме религиозных предпочтений.

VD>Не нужен никому этот редактор. Нельзя в нем полноценно отобразить MVVM-ые фичи вроде биндинга. Вот превью нужно. Но быстрое, а не те тормоза, что в Студии есть. И качественное. А то у меня редактор XAML постоянно падает.


Т.е. предлагается unix-way — всё печатаем с клавы, чего забыли — курим маны? Ну и зачем тогда Студия — давайте сразу в vim

Лично я часть работы делаю руками в XML, часть в редакторе пропертей — они отлично дополняют друг друга. Так что, редактор нужен — без него я в этот Ammy ни ногой.
Re[4]: Косяки с точки зрения бизнеса (+)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 08:47
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Ежам обычно непонятно, поэтому и существует такая практика как source code escrow.


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

А есть у кого-то такие лецензии на практике?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 08:52
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>Хотя вопрос был не мне, но кину в XAML камень: почему нельзя биндиться к параметру конвертера? Периодически возникает такой кейс, что позволило бы написать более general конвертер. Так нет же — пиши явно значение или не пользуйся вообще. В итоге имеем связку конвертеров там, где мог бы быть один.


Согласен. Не все совершенно. Откровенно говоря я в XAML могу много камне накидать. Есть в нем и овердизайн, и динамика там где могла бы быть статика без потери можности, и по мелочи много разной фигни.

Хорошо бы, конечно, чтобы AMMY по бльше таких недоработок скрывал от пользователя.

Кстати, в AMMY можно инлайн-конвертеры будет писать. Авот мне эту фичу недавно показывал. Она наверно еще не опубликована, но скоро будет. Это реально упростит вопрос с конвертерами. Пишешь прямо по месту постенький конвертер в стиле:
Text: bind ActualWidth
        convert(double width) => "Width is " + width + " pixels"

и радуешься жизни.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Косяки с точки зрения бизнеса (+)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 09:13
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

MD>В последней Студии добавили (пока в ограниченном виде) такую возможность. На Channel9 есть ролик на эту тему.


Посмотрим. Спасибо за информацию!

VD>>Конечно, иметь типизированный MVVM-язык для создания WUI было бы не плохо. Но зачем тут XAML? Опять программирование в XML? Ну, его на фиг!

MD>А что не так с XML? Ну, кроме религиозных предпочтений.

Тем что его читать нельзя сложно. Много мусора и неудобств. Плюс конкретно XAML слишком много динамики и прочих проблем имеет. Ты, вот, рядом на одну из них жаловался .

Уж если делать язык для WUI то надо сразу учесть ошибки прошлых решений.

Из XAML я бы позаимствовал только MVVM-модель.

Чистя генерация веба по XAML, конечно тоже имеет право на судествование. Но не факт, что в браузерах удастся воспроизвести фичи XAML-а на приемлемом уровне.

MD>Т.е. предлагается unix-way — всё печатаем с клавы, чего забыли — курим маны? Ну и зачем тогда Студия — давайте сразу в vim


vim не предоставляет того уровня интеллисенса, что нужен для быстрой разработки.

И в принципе я был бы не против визуального дизайнера, если бы он работал без проблем. Но редактор в Студии перестает работать на форматх чуть больше среднего. Это и дикие тормоза, и просто слеты от непонятных причин, когда редактор говорит "Не шмагла жагруззить файл" и ты ломаешь голову, что на этот раз пошло не так.

Плюс визуальный дизайнер зачастую вбивает константы, вместо того, чтобы использовать всю мощь XAML-а. Потом смотришь в код, чертыхаешься и идешь править вручную.

Что нам нужно от визуального редактора? Нам нужна интерактивность! Правда? Мы хотим поправить стиль (или что-то еще) и сразу увидеть результат.

Лив-превью и позволяет это сделать. Не плохой идеей является позволить настраивать свойства контрола (прямо в коде) с помощью проперти-грида. Какая разница тыкать в изображение контрола в визуальном редакторе или в текст контрола?

Можно даже сделать навигацию от контрола в работающем приложении в код. Скажем зажал ты Alt+Ctrl и кликнул в текстбокс прямо на форм. При этом откроется редактор кода и курсор спозиционируется в нужное место. Останется только поменять значение, записаться и оценить результат.

MD>Лично я часть работы делаю руками в XML, часть в редакторе пропертей — они отлично дополняют друг друга. Так что, редактор нужен — без него я в этот Ammy ни ногой.


А если появились бы фичи которые я описал выше (проперти-грид для текста и возможность навигации в код прямо из работающей формы) ты смог бы обойтись без дизайнера?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 20.01.17 09:15
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

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


VD>>Ты где-нибудь к XAML-у такие претензии предъявлял?


MD>Хотя вопрос был не мне, но кину в XAML камень: почему нельзя биндиться к параметру конвертера? Периодически возникает такой кейс, что позволило бы написать более general конвертер. Так нет же — пиши явно значение или не пользуйся вообще. В итоге имеем связку конвертеров там, где мог бы быть один.


Костыль на этот случай имеется:
/*
     * 
     Источник http://www.wpfmentor.com/2008/11/adding-bindings-to-clr-properties-in.html

     Всё это счастье нужно, чтобы иметь возможность биндить зачения к НЕ DependencyProperty.
     Пример использования

    <Window.Resources>
        <!-- IsGuidRequired это свойство DataContext -->
        <wpf:DataResource BindingTarget="{Binding IsGuidRequired}" x:Key="IsGuidRequired" />
    </Window.Resources>
    ...
    <TextBox.Text>
        <Binding Path="Reason.Guid" ValidatesOnDataErrors="True">
            <Binding.ValidationRules>
                <!--  Вот оно!! ValidationRule - не DepepedencyObject, но смогли к нему забиндить свойство контекста! -->
                <wpf:RequiredValidationRule IsRequired="{wpf:DataResourceBinding DataResource={StaticResource IsGuidRequired}}" />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>

         */
    public class DataResource : Freezable
    {
        public static readonly DependencyProperty BindingTargetProperty = DependencyProperty.Register(nameof(BindingTarget), typeof(object), typeof(DataResource), new UIPropertyMetadata(null));

        public object BindingTarget
        {
            get { return GetValue(BindingTargetProperty); }
            set { SetValue(BindingTargetProperty, value); }
        }

        protected override Freezable CreateInstanceCore() => (Freezable)Activator.CreateInstance(GetType());
        protected sealed override void CloneCore(Freezable sourceFreezable) => base.CloneCore(sourceFreezable);
    }

    public class DataResourceBindingExtension : MarkupExtension
    {
        private object _targetObject;
        private object _targetProperty;
        private DataResource _dataResouce;

        public DataResource DataResource
        {
            get { return _dataResouce; }
            set
            {
                if (ReferenceEquals(_dataResouce, value)) return;
                
                if (_dataResouce != null)
                {
                    _dataResouce.Changed -= DataResource_Changed;
                }
                _dataResouce = value;
                if (_dataResouce != null)
                {
                    _dataResouce.Changed += DataResource_Changed;
                }
            }
        }

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            var target = serviceProvider.GetRequiredService<IProvideValueTarget>();

            _targetObject = target.TargetObject;
            _targetProperty = target.TargetProperty;

            // _targetProperty can be null when this is called in the Designer.
            Debug.Assert(_targetProperty != null || DesignerProperties.GetIsInDesignMode(new DependencyObject()));

            if (DataResource.BindingTarget == null && _targetProperty != null)
            {
                var propInfo = _targetProperty as PropertyInfo;
                if (propInfo != null)
                {
                    try
                    {
                        return Activator.CreateInstance(propInfo.PropertyType);
                    }
                    catch (MissingMethodException)
                    {
                        // there isn't a default constructor
                    }
                }

                var depProp = _targetProperty as DependencyProperty;
                if (depProp != null)
                {
                    var depObj = (DependencyObject)_targetObject;
                    return depObj.GetValue(depProp);
                }
            }

            return DataResource.BindingTarget;
        }

        private void DataResource_Changed(object sender, EventArgs e)
        {
            // Ensure that the bound object is updated when DataResource changes.
            var dataResource = (DataResource)sender;
            var depProp = _targetProperty as DependencyProperty;

            if (depProp != null)
            {
                var depObj = (DependencyObject)_targetObject;
                var value = Convert(dataResource.BindingTarget, depProp.PropertyType);
                depObj.SetValue(depProp, value);
            }
            else
            {
                var propInfo = _targetProperty as PropertyInfo;
                if (propInfo != null)
                {
                    var value = Convert(dataResource.BindingTarget, propInfo.PropertyType);
                    propInfo.SetValue(_targetObject, value);
                }
            }
        }

        private object Convert(object obj, Type toType)
        {
            try
            {
                return System.Convert.ChangeType(obj, toType);
            }
            catch (InvalidCastException)
            {
                return obj;
            }
        }
    }
Re[3]: AMMY - XAML с человеческим лицом
От: Somescout  
Дата: 20.01.17 11:41
Оценка:
Здравствуйте, ionoy, Вы писали:

WH>>3)Так как алиас всегда возвращает строго один узел скобки лишние.


WH>>Ну и для однообразия с миксинами

WH>>
WH>>alias Header(text) for TextBlock {
WH>>    FontSize: 18
WH>>    Text: $text
WH>>}
WH>>


I>Ага, я точно про такой синтаксис думал. Но поразмыслив решил остановится на текущем — он по моему легче читается. "Есть функция, которая вставляет такую-то ноду". Короче говоря, это спорный момент.


Замечание со стороны, если можно: читается оно действительно лучше, но вводит в заблуждение что можно указать несколько узлов. Если подобной функциональности не планируется, то лучше бы без скобок.
ARI ARI ARI... Arrivederci!
Re: AMMY - XAML с человеческим лицом
От: s22  
Дата: 20.01.17 14:04
Оценка:
Возможно тупая идея (я не пишу на C# годы), но мне бы хотелось иметь абсолютные ссылки

TextBlock {
  viewmodel MyApp.SomeType

  Text Absolute {TextBlockText}: bind PropertyFromViewModel
}


при этом в коде вне зависимости от того куда я перенесу данный фрагмент (в том числе и рантайм, в том числе и пользователь) ссылка на элемент всегда будет TextBlockText
Re[3]: Косяки с точки зрения бизнеса (+)
От: alex_public  
Дата: 20.01.17 14:59
Оценка:
Здравствуйте, VladD2, Вы писали:

B>>С нормальным визуальным редактором,

VD>Не нужен никому этот редактор. Нельзя в нем полноценно отобразить MVVM-ые фичи вроде биндинга. Вот превью нужно. Но быстрое, а не те тормоза, что в Студии есть. И качественное. А то у меня редактор XAML постоянно падает.

Помнится когда-то давно мы с тобой спорили на эту тему. Так вот я сейчас посмотрел видео (из первого сообщения) и только ещё больше убедился в своей правоте. Результат, достигаемый этим инструментом в результате активной 25 минутной работы, я легко повторю другим инструментом (с продвинутым визуальным редактором) где-то за минуту ленивого шевеления мышкой.

P.S. Если что, это не претензия к обсуждаемому продукту. Продукт выглядит отлично, насколько это возможно при построение его вокруг такой сомнительной базы (WPF).
Re[4]: Косяки с точки зрения бизнеса (+)
От: Evgeny.Panasyuk Россия  
Дата: 20.01.17 15:09
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Так вот я сейчас посмотрел видео (из первого сообщения) и только ещё больше убедился в своей правоте. Результат, достигаемый этим инструментом в результате активной 25 минутной работы, я легко повторю другим инструментом (с продвинутым визуальным редактором) где-то за минуту ленивого шевеления мышкой.


О, у меня подобное ощущение возникло — как минимум начальный макет в нормальном визуальном редакторе получился бы быстрее, и из
этого макета можно было бы сгенерировать ту же самую human-friendly декларативную разметку для дальнейших модификаций, а то и вовсе двустороннюю связь.
Отредактировано 20.01.2017 15:13 Evgeny.Panasyuk . Предыдущая версия .
Re[2]: Косяки с точки зрения бизнеса (+)
От: licedey  
Дата: 20.01.17 20:01
Оценка:
Здравствуйте, bazis1, Вы писали:

B>P.S. Лучше бы кто-нибудь запилил XAML для сайтостроения. С нормальным визуальным редактором, strong typed binding-ами безо всяких angular-извращений, интеграцией в IDE и нормальной библиотекой контролов типа всяких TreeView. Вот это взлетит в отличие от.


C# for HTML5
Re[4]: AMMY - XAML с человеческим лицом
От: okon  
Дата: 21.01.17 05:06
Оценка:
Здравствуйте, IT, Вы писали:

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


I>>Циклы в XAML реализуются через ItemsControl и ItemTemplate, так что циклы не нужны.


IT>Сразу чувствуется школа Влада в общении с потенциальными пользователями


IT>Как мне без копипасты определить десять однотипных кнопок?


Написать руками если не хочется Ctrl-C, Ctrl-V использовать

Батон { "Рас"   }
Батон { "Два"   }
Батон { "Три"    }
Батон { "Читыре" }
Батон { "Пять"   }
Батон { "Шесть"  }
Батон { "Семь"   }
Батон { "Восемь" }
Батон { "Девять" }
Батон { "Десять" }



А как предполагалось бы сделать иначе ?
если вам кажется что я зарегистрировался ради именно этого поста то вам надо обратиться сюда http://podskazki.info/mnitelnost/
Re[5]: AMMY - XAML с человеческим лицом
От: _ABC_  
Дата: 21.01.17 06:21
Оценка:
Здравствуйте, okon, Вы писали:

O>Написать руками если не хочется Ctrl-C, Ctrl-V использовать

O>А как предполагалось бы сделать иначе ?

Наверное (чисто догадка), что-то типа такого.
лист = ["Рас", "Два", "Три", "Читыре", "Пять", "Шесть", "Семь", "Восемь", "Девять", "Десять"]
форич айтем ин лист:
    Батон { айтем }
Re[6]: AMMY - XAML с человеческим лицом
От: okon  
Дата: 21.01.17 13:12
Оценка:
Здравствуйте, _ABC_, Вы писали:

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


O>>Написать руками если не хочется Ctrl-C, Ctrl-V использовать

O>>А как предполагалось бы сделать иначе ?

_AB>Наверное (чисто догадка), что-то типа такого.

_AB>
_AB>лист = ["Рас", "Два", "Три", "Читыре", "Пять", "Шесть", "Семь", "Восемь", "Девять", "Десять"]
_AB>форич айтем ин лист:
_AB>    Батон { айтем }
_AB>


Про это вроде написали что есть такое и в хамле и соотвественно в аммле


лист = ["Рас", "Два", "Три", "Читыре", "Пять", "Шесть", "Семь", "Восемь", "Девять", "Десять"]

ИтемзЛист{ Соурс=лист, ИтемШоблон=Батон{ Капшен=датакантекст  } }
если вам кажется что я зарегистрировался ради именно этого поста то вам надо обратиться сюда http://podskazki.info/mnitelnost/
Re[7]: AMMY - XAML с человеческим лицом
От: WolfHound  
Дата: 21.01.17 13:59
Оценка:
Здравствуйте, ionoy, Вы писали:

I>
I>ItemsControl { 
I>  ItemsSource: bind Items
I>  ItemTemplate: DataTemplate {
I>    // здесь описываем произвольный шаблон
I>  }
I>}
I>

Вот эта конструкция тоже часто встречается.
ИМХО кандидат на сокращение
repeater Items { 
    // здесь описываем произвольный шаблон
}
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 23.01.17 09:42
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


WH>Нужен специальный синтаксис для стилей.


Для стилей сейчас есть миксин #Setter:

Style {
  #Setter("Width", 100, "TargetName")
}


Плюс есть ключевое слово set, которое превращает все присвоения свойств внутри себя в сеттеры:

Style {
  set [
    Width: 100
    Height: 100
  ]
}


Правда set был убран, чтобы быстрее зарелизиться. Надо будет добавить его обратно.

WH>Тоже самое с триггерами


Триггеры решаются через алиасы:

@Trigger("IsSelected", true) {
  #Setter("Foreground", Green)
}


Ключевое слово set можно будет использовать и здесь.

Я когда начинал делать Ammy тоже везде искал места, где можно заменить кучку кода на микро-DSL. Тоже думал про стили, триггеры, ресурсы, анимации. Но чем дальше, тем больше я верю в то, что если есть возможность решить что-то базовыми средствами языка, то новый синтаксис добавлять не стоит. Да, сейчас миксины и алиасы пока не на том уровне, чтобы быть абсолютно на равне со специализированым синтаксисом, но им ничего не мешает стать таковыми.

Уже сейчас я вижу, что XAML платформ значительно больше, чем я предполагал. Большинство из них следуют основным принципам заложенным ещё при WPF: стили, триггеры, targettype и прочее. Но постепенно появляются отклонения, которые ломают back compatibility. Для того чтобы иметь возможность поддерживать любую XAML платформу надо быть гибким, а это значит по минимум хардкодить разметку с помощью ключевых слов. Те же миксины абсолютно ничего не знают о WPF, UWP и других вещах. Я уверен, что будь желание и можно было бы Ammy прикрутить хоть к HTML. Хочется двигаться в направлении, которое даст наибольшую гибкость, а значит возможность поддерживать любые бэкенды хоть отдалённо напоминающие XAML.

Кстати, одну такую "ошибку" я уже совершил с `bind`, который превращается в `<Binding />`. У UWP, например появился новый механизм биндинга, так что мне придётся выдумывать как их различать. Другое дело что именно биндинг практически нереально упростить используя миксины.

В любом случае, спасибо за предложения. Видно что ты их продумывал, а не просто с бухты барахты фичи реквестируешь.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 23.01.17 09:48
Оценка:
Здравствуйте, s22, Вы писали:

s22>Возможно тупая идея (я не пишу на C# годы), но мне бы хотелось иметь абсолютные ссылки


То есть создать ссылку на проперти у определённого контрола? А зачем это может быть нужно?
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[6]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 23.01.17 09:52
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Например в QML есть Repeater — наверное кому-то было необходимо

EP>
EP>Row {
EP>    Rectangle { width: 10; height: 20; color: "red" }
EP>    Repeater {
EP>        model: 10
EP>        Rectangle { width: 20; height: 20; radius: 10; color: "green" }
EP>    }
EP>    Rectangle { width: 10; height: 20; color: "blue" }
EP>}
EP>


Собственно ItemsControl это почти то же самое, только нельзя биндить число как количество повторений. Можно от него отнаследоваться и завернуть в alias:

alias repeat(times) {
  RepeatItemsControl {
    Times: $times
  }
}

Window "MainWindow" {
  @repeat(4) {
    TextBlock { "Привет." } 
    TextBlock { "Как дела?" } 
  }
}
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[3]: AMMY - XAML с человеческим лицом
От: WolfHound  
Дата: 23.01.17 15:16
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Для стилей сейчас есть миксин #Setter:

Да я как раз после того как на эти миксыны посмотрел и написал это сообщение.
1)Куча визуального шума.
2)Нет интеллисенса.

I>Правда set был убран, чтобы быстрее зарелизиться. Надо будет добавить его обратно.

Значительно лучше миксинов. Но немного хуже моего варианта.
Ибо очень часто нужно будет присвоить одно или два свойства.

I>Триггеры решаются через алиасы:

Те же проблемы что с миксинами стеттеров.

I>Я когда начинал делать Ammy тоже везде искал места, где можно заменить кучку кода на микро-DSL. Тоже думал про стили, триггеры, ресурсы, анимации. Но чем дальше, тем больше я верю в то, что если есть возможность решить что-то базовыми средствами языка, то новый синтаксис добавлять не стоит. Да, сейчас миксины и алиасы пока не на том уровне, чтобы быть абсолютно на равне со специализированым синтаксисом, но им ничего не мешает стать таковыми.

Мы говорим про язык на основе нитры.
Нитра способна создавать модульные языки.
Что тебе мешает сделать базовый язык и сахар, который можно включать/выключать?
Собственно, это и есть одна из главных причин создания нитры.

I>Для того чтобы иметь возможность поддерживать любую XAML платформу надо быть гибким, а это значит по минимум хардкодить разметку с помощью ключевых слов.

А вот тут у меня прямо противоположное мнение.
Именно наличие специального синтаксиса позволяет произвольно изменять генерируемый код.
Это позволит использовать один код на разных WPF платформах.

Ну а если не получится, то как я уже говорил языки, созданные на нитре модульные.
И ничто не мешает сделать разный сахар для разных платформ.

I>Кстати, одну такую "ошибку" я уже совершил с `bind`, который превращается в `<Binding />`. У UWP, например появился новый механизм биндинга, так что мне придётся выдумывать как их различать. Другое дело что именно биндинг практически нереально упростить используя миксины.

Ключом компилятора.

I>В любом случае, спасибо за предложения. Видно что ты их продумывал, а не просто с бухты барахты фичи реквестируешь.

Я просто изучил столько языков что мне достаточно прочитать документацию чтобы выявить проблемы и показать пути их решения.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Косяки с точки зрения бизнеса (+)
От: kekekeks  
Дата: 27.01.17 22:30
Оценка:
VD> Раже авторы Xamarin-а и Avalon . Они просто твоего мнения наверно не успели прочитать.

Я являюсь одним из ключевых разработчиков AvaloniaUI и в некотором роде разделяю мнение вашего оппонента в части неодобрения выпуска этого счастья под закрытой лицензией. К самой технологии интерес у нас есть, да только вот мы как приличные люди всё выпускаем под MIT и не можем сторонние блобы с очень платными лицензиями интегрировать.
Re[4]: Косяки с точки зрения бизнеса (+)
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.01.17 01:16
Оценка:
Здравствуйте, kekekeks, Вы писали:

K>Я являюсь одним из ключевых разработчиков AvaloniaUI и в некотором роде разделяю мнение вашего оппонента в части неодобрения выпуска этого счастья под закрытой лицензией. К самой технологии интерес у нас есть, да только вот мы как приличные люди всё выпускаем под MIT и не можем сторонние блобы с очень платными лицензиями интегрировать.


Я как бы сам не рад по поводу закрытости. Мне бы тоже было бы приятнее, если бы исходники были открыты.

Но и автора я понимаю. Все же он вложил море времени. Его хочется хоть как-то окупить.

Что касается лицензий, то это как раз вопрос решаемый, я думаю. Тут можно легко договориться с автором.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Косяки с точки зрения бизнеса (+)
От: ionoy Эстония www.ammyui.com
Дата: 28.01.17 10:16
Оценка: 8 (2) +1
Здравствуйте, kekekeks, Вы писали:

K>Я являюсь одним из ключевых разработчиков AvaloniaUI и в некотором роде разделяю мнение вашего оппонента в части неодобрения выпуска этого счастья под закрытой лицензией. К самой технологии интерес у нас есть, да только вот мы как приличные люди всё выпускаем под MIT и не можем сторонние блобы с очень платными лицензиями интегрировать.


Честно говоря, мне надоело бросать проекты незаконченными из-за недостатка времени или мотивации. Поэтому, когда я начинал работу над Ammy, я сразу решил, что это будет моим основным источником дохода, чтобы можно было спокойно работать фулл-тайм и при этом не думать о том как прокормить семью. Последний год я работал в режиме 3 недели на Ammy, 1 неделя на подработки, чтобы заработать прожиточный минимум. Сейчас работаю с утра до вечера почти без выходных, всё для того чтобы максимально быстро исправлять баги и двигать проект вперёд.

По поводу лицензии, то, честно говоря, не вижу большой проблемы. Если ты пишешь что-то чисто для себя, без цели заработка, то пожалуйста, получай все плюшки Ammy забесплатно. Если же ты хочешь свой продукт продавать, то цена Ammy практически не повлияет на общую стоимость разработки. Если учесть налоги, то лицензия Ammy — это около 10% от стоимости одного разработчика, а то и меньше. И это ещё в разрезе зарплат СНГ. Если же ты разработчик одиночка, то за год разработки ты заплатишь чуть больше 200 долларов, что тоже не деньги, если продукт предназначен для получения прибыли.

Честное слово, я всеми руками за опен сорс. Все мои предыдущие проекты разрабатывались в открытом виде и были доступны всем желающим. Но до тех пор, пока я не буду уверен в стабильном будущем, я не могу открыть код Ammy.

Насчёт интеграции с AvaloniaUI. Совсем необязательно делать Ammy единственным возможным языком разметки, достаточно дать людям возможность подключать её по желанию. Собственно со всеми остальными платформами именно такой вариант и будет иметь место. На днях, например, постучался разработчик на NoesisGUI и мы с ним вдвоём довольно быстро сделали поддержку этого фреймворка. Теперь люди, которые пишут на NoesisGUI, могут подключить нугет пакет и пользоваться Ammy в своих приложениях.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[2]: Bazis1 - прав
От: rm822 Россия  
Дата: 28.01.17 22:16
Оценка:
У вас в категории why ammy — написана какая-то хрень неизвестно для кого.
* Free!
* Easy to learn
* XAML compatible
* Syntax meant for people
* Mixins and variables
* Realtime update
* Nuget package
* Visual Studio extension
* Good support


о чем и для кого все это?
какую мысль вы хотели донести?
где value для бизнеса?
детский сад, честное слово

Посмотрите хотя бы на постшарп
* Reduce development costs and deliver faster.
* Build more reliable software.
* Add functionality more easily after the first release.
* Help new team members contribute quicker.
всё бизнес, быстрее, лучше, проще
Re[5]: Косяки с точки зрения бизнеса (+)
От: bazis1 Канада  
Дата: 29.01.17 19:56
Оценка: +1
Здравствуйте, ionoy, Вы писали:

I>Честно говоря, мне надоело бросать проекты незаконченными из-за недостатка времени или мотивации. Поэтому, когда я начинал работу над Ammy, я сразу решил, что это будет моим основным источником дохода, чтобы можно было спокойно работать фулл-тайм и при этом не думать о том как прокормить семью. Последний год я работал в режиме 3 недели на Ammy, 1 неделя на подработки, чтобы заработать прожиточный минимум. Сейчас работаю с утра до вечера почти без выходных, всё для того чтобы максимально быстро исправлять баги и двигать проект вперёд.

Т.е. Вы потратили 9 месяцев фуллтайма на разработку продукта, имеете ноль продаж и вместо того, чтобы с головой погружаться в налаживание и оптимизацию воронки продаж, продолжаете пилить техническую сторону? Пожалуйста, оглянитесь по сторонам и прочитайте что-нибудь вроде классики. ИМХО, Вы наступаете на грабли, стоящие на пути у 100% шароварщиков с программистским прошлым и дальнейший успех вашего продукта практически полностью зависит от того, насколько быстро Вы смените менталитет с программистского на предпринимательский.

Вот у меня второй год подряд чешется шило в заднице сделать web-сервис, в котором можно будет просматривать исходники библиотек, как будто бы в Visual Studio. С go-to-definition, find all references, подсветкой использований переменной, раскрытием макросов, списком полей, function argument hints и переформатированием кода под ваш любимый стиль прямо на ходу. Технологии для этого у меня есть, нужно только месяцев 6 работы. И я второй год бью себя по рукам, ибо понимаю, что при всей крутости идеи, фиг я ее монетизирую, да еще и на хостинг, который потянет наш IntelliSense-движок, вбухаю безвозвратно кучу денег.

I>По поводу лицензии, то, честно говоря, не вижу большой проблемы. Если ты пишешь что-то чисто для себя, без цели заработка, то пожалуйста, получай все плюшки Ammy забесплатно. Если же ты хочешь свой продукт продавать, то цена Ammy практически не повлияет на общую стоимость разработки.

Разработчик-одиночка на стадии выбора инструмента имеет расплывчатую идею и ноль продаж. Не факт, что его шаровара в первый год принесет даже эти несчастные 200 долларов, поэтому уходить в минус ради абстрактного преимущества JSON над XML он не будет.
I> Если учесть налоги, то лицензия Ammy — это около 10% от стоимости одного разработчика, а то и меньше. И это ещё в разрезе зарплат СНГ. Если же ты разработчик одиночка, то за год разработки ты заплатишь чуть больше 200 долларов, что тоже не деньги, если продукт предназначен для получения прибыли.
Во-первых, 299 это чуть меньше, чем 300, а не чуть больше, чем 200. Во-вторых, вы лезете в игру, не понимая ее правил. Люди, которые имеют авторизацию потратить 3.5K в год, мыслят совершенно другими категориями, такими как corporate influence, budget spending, head count и т.п., и ваше сравнение с девелоперской зарплатой будет звучать как в том анекдоте:

- Почем яблоки?
— Штука баксов килограмм.
— А че так дорого?
— Да очень деньги нужны.


I>Честное слово, я всеми руками за опен сорс. Все мои предыдущие проекты разрабатывались в открытом виде и были доступны всем желающим. Но до тех пор, пока я не буду уверен в стабильном будущем, я не могу открыть код Ammy.

Пожалуйста, подумайте над моим советом в предыдущем посте. Сделайте плагин для студии, который сделает прозрачный edit-and-continue для обычного XAML. Баксов за 50 (единоразово + год апдейтов) это принесет вам достаточно пользователей при относительно небольших трудозатратах. Я сам буду одним из ваших первых клиентов, ибо тормоза штатного редактора достали и риска при таком раскладе ноль. А вот переписывать код с XAML на JSON я не буду, ибо ИМХО, это шило на мыло. И думаю, со мной согласится еще куча народа, использующего XAML.
Edit: упс, поздно.
Отредактировано 30.01.2017 7:20 bazis1 . Предыдущая версия . Еще …
Отредактировано 30.01.2017 7:20 bazis1 . Предыдущая версия .
Re[6]: Косяки с точки зрения бизнеса (+)
От: ionoy Эстония www.ammyui.com
Дата: 30.01.17 09:11
Оценка:
B>Т.е. Вы потратили 9 месяцев фуллтайма на разработку продукта, имеете ноль продаж и вместо того, чтобы с головой погружаться в налаживание и оптимизацию воронки продаж, продолжаете пилить техническую сторону? Пожалуйста, оглянитесь по сторонам и прочитайте что-нибудь вроде классики. ИМХО, Вы наступаете на грабли, стоящие на пути у 100% шароварщиков с программистским прошлым и дальнейший успех вашего продукта практически полностью зависит от того, насколько быстро Вы смените менталитет с программистского на предпринимательский.

Техническая сторона в данном случае — это исправление критических багов и расширение рынка. WPF — это малая часть XAML разработки, поэтому я и стараюсь как можно быстрее выйти на другие платформы. Насчёт смены менталитета, я полностью согласен, основной упор надо будет делать на маркетинг. Но продавать забагованный продукт тоже не хочется, поэтому первый месяц после релиза ушёл исключительно на исправление ошибок.

I>>По поводу лицензии, то, честно говоря, не вижу большой проблемы. Если ты пишешь что-то чисто для себя, без цели заработка, то пожалуйста, получай все плюшки Ammy забесплатно. Если же ты хочешь свой продукт продавать, то цена Ammy практически не повлияет на общую стоимость разработки.

B>Разработчик-одиночка на стадии выбора инструмента имеет расплывчатую идею и ноль продаж. Не факт, что его шаровара в первый год принесет даже эти несчастные 200 долларов, поэтому уходить в минус ради абстрактного преимущества JSON над XML он не будет.

Я бы с тобой согласился, если бы не "ради абстрактного преимущества JSON над XML".

I>> Если учесть налоги, то лицензия Ammy — это около 10% от стоимости одного разработчика, а то и меньше. И это ещё в разрезе зарплат СНГ. Если же ты разработчик одиночка, то за год разработки ты заплатишь чуть больше 200 долларов, что тоже не деньги, если продукт предназначен для получения прибыли.

B>Во-первых, 299 это чуть меньше, чем 300, а не чуть больше, чем 200. Во-вторых, вы лезете в игру, не понимая ее правил. Люди, которые имеют авторизацию потратить 3.5K в год, мыслят совершенно другими категориями, такими как corporate influence, budget spending, head count и т.п.

Уже запланирован ещё один пакет для маленьких компаний + bulk скидки.

Понимаю, что вы хотите помочь, но я тоже достаточно долго продумывал организацию всего этого дела. Поэтому хочу попробовать сделать так как считаю нужным. Если из этого ничего не выйдет, то у вас будет возможность сказать "I told you so", а если всё получится то будет хорошо всем, и мне, и Ammy, и проекту Nitra.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[5]: Косяки с точки зрения бизнеса (+)
От: kekekeks  
Дата: 02.02.17 14:30
Оценка:
>И это ещё в разрезе зарплат СНГ. Если же ты разработчик одиночка, то за год разработки ты заплатишь чуть больше 200 долларов, что тоже не деньги, если продукт предназначен для получения прибыли.

Маленький ньюанс касательно СНГ и ценовой политики. Xamarin в своё время стоил $25/мес с разработчика за целую платформу. Народ повсеместно пиратил. Я за цельный решарпер со всеми его анализаторами, профайлерами поддержкой в год $90 плачу. И когда предлагаю другим перестать его пиратить (хороший продукт же) на меня народ смотрит странно.

Да и для не-СНГ цены выглядят задраными на фоне тех, что приведены выше. Так что присоединяюсь к мнению остальных ораторов и настоятельно рекомендую найти продажника, который проанализирует рынок.
Re[6]: Косяки с точки зрения бизнеса (+)
От: ionoy Эстония www.ammyui.com
Дата: 02.02.17 14:49
Оценка:
K>Да и для не-СНГ цены выглядят задраными на фоне тех, что приведены выше. Так что присоединяюсь к мнению остальных ораторов и настоятельно рекомендую найти продажника, который проанализирует рынок.

Если я не ошибаюсь, то у Xamarin'а не было некоммерческой лицензии, так что там в любом случае надо было платить. За решарпер надо было платить разом, достаточно много, и бесплатной лицензии тоже не было.

Но может вы и правы, на данном этапе это цена несколько высоковата. Может региональные скидки добавить? Всё-таки возможности разработчиков СНГ и северной америки значительно отличаются.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[7]: Косяки с точки зрения бизнеса (+)
От: kekekeks  
Дата: 03.02.17 15:34
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Если я не ошибаюсь, то у Xamarin'а не было некоммерческой лицензии

Была, лично у них бесплатный ключик получал.

I>Но может вы и правы, на данном этапе это цена несколько высоковата. Может региональные скидки добавить?

Достаточно сложно проконтролировать, откуда человек платит. Разве что проверять BIN-ы при оплате картой.

Всё ещё рекомендую найти продажника. Ну и главное, чтобы не было вот так.
Re[8]: Косяки с точки зрения бизнеса (+)
От: Ziaw Россия  
Дата: 17.02.17 12:09
Оценка:
Здравствуйте, kekekeks, Вы писали:

K>Всё ещё рекомендую найти продажника.


А как их вообще ищут?
Re[2]: В защиту циклов
От: MAMOHT  
Дата: 16.03.17 14:48
Оценка: 76 (2) +1
Здравствуйте, IT, Вы писали:
IT>Как насчёт циклов?

В прошлом году делали систему для СИКН(система измерения качества нефти).
Там очень нехилая система отчетности. Данные отчетов хранились в БД в json-строках (не мы так решили, так "исторически сложилось")
И мы ее делали на WPF.

В WPF есть такая штука, называется FlowDocument — тот же XAML, но для разметки документов. Проблема в том, что она декларативная и не гибкая.
К тому же, в нашем случае, форма отчетов и исходных данных постоянно менялись и надо было менять их чуть ли не на лету.

Так вот, нам пришлось строить препроцессор XAML чтобы впихнуть туда циклы и парсер jsona. В итоге он разворачивал все это в нативный XAML для дальнейшей печати.

Примеры использования:

<Paragraph Text="<!--{d.f}-->" /> //этот кусок формировал параграф, куда вставлял из jsonа значение узла d.f

А если надо было нарисовать список параграфов, то синтаксис был такой:
<!--arr{ //arr — это путь к массиву объектов в json
<Paragraph Text="<!--{Name}-->" /> //Name — это поле в объекте
}->

Paragraph дан для примера. В основном в цикле строились таблицы.

Потом туда добавилась простенькая логика, макросы и прочее. В итоге получился сплошной костыль. Но работал.

Позже я преобразовал это в лиспо-подобный язык, где можно было наращивать функционал из коробки.
И все это транслировалось в тот-же XAML.
  Пример
http://i.imgur.com/xhv9zXi.png
  А вот и цикл
http://i.imgur.com/ksxTpi4.png

P.S. Написал исключительно ради справедливости. Отчеты — штука специфическая. Но циклы все-таки иногда нужны, даже в разметке.
Re[3]: Хочу похвастаться! Первый язык на основе Nitra - AMMY
От: ionoy Эстония www.ammyui.com
Дата: 16.03.17 15:11
Оценка:
Здравствуйте, MAMOHT, Вы писали:

MAM>P.S. Написал исключительно ради справедливости. Отчеты — штука специфическая. Но циклы все-таки иногда нужны, даже в разметке.


Хороший пример, я как-то сразу не подумал про FlowDocument. С другой стороны не совсем понятно как Ammy будет резолвить ваши циклы в compile time. Вы то скорее всего парсили в рантайме, создавали нужный XAML и его уже загружали.

Есть вариант создать невидимый псевдоэлемент, который будет принимать биндинг + шаблон. По мере изменения биндинга можно создавать элементы в родительском контроле. Но тут можно целую кучу граблей собрать, а выхлоп небольшой.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[3]: В защиту циклов
От: IT Россия blogs.rsdn.ru
Дата: 16.03.17 16:17
Оценка:
Здравствуйте, MAMOHT, Вы писали:

MAM>P.S. Написал исключительно ради справедливости. Отчеты — штука специфическая. Но циклы все-таки иногда нужны, даже в разметке.


Вот! Влад, где ты там? Послушай умного человека!
//rsdn.org/forum/images/bis.gif Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Хочу похвастаться! Первый язык на основе Nitra - AMMY
От: MAMOHT  
Дата: 16.03.17 16:39
Оценка:
Здравствуйте, ionoy, Вы писали:

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


MAM>>P.S. Написал исключительно ради справедливости. Отчеты — штука специфическая. Но циклы все-таки иногда нужны, даже в разметке.


I>Хороший пример, я как-то сразу не подумал про FlowDocument. С другой стороны не совсем понятно как Ammy будет резолвить ваши циклы в compile time.

Кстати, да. Про compile time я как-то не подумал. Когда клепаю формы, про циклы еще ни разу не вспомнил. Возможно, если бы в тот раз у нас было больше опыта и времени, то выкрутились бы стандартными способами.
Re[4]: В защиту циклов
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.03.17 16:21
Оценка:
Здравствуйте, IT, Вы писали:

MAM>>P.S. Написал исключительно ради справедливости. Отчеты — штука специфическая. Но циклы все-таки иногда нужны, даже в разметке.


IT>Вот! Влад, где ты там? Послушай умного человека!


У него свой язык генераторов отчетов. XAML там не более чем выходной формат. И он отсутствие циклов в ХАМЛ-е ему не помешало генерировать ХМАЛ.

Но подобное можно реализовать и в ХАМЛ-е или Амми простым добавлением контрола-потворителя (репитера).

Надо как-то различать язык разметки и язык генерации чего либо.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Хочу похвастаться! Первый язык на основе Nitra - AMMY
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.03.17 16:23
Оценка:
Здравствуйте, MAMOHT, Вы писали:

MAM>Кстати, да. Про compile time я как-то не подумал. Когда клепаю формы, про циклы еще ни разу не вспомнил. Возможно, если бы в тот раз у нас было больше опыта и времени, то выкрутились бы стандартными способами.


А почему бы вместо циклов (я не про твой лиспо-подобный язык, а про XAML) не использовать специальный контрол-повторитель?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Хочу похвастаться! Первый язык на основе Nitra - AMMY
От: MAMOHT  
Дата: 17.03.17 16:57
Оценка:
MAM>>Кстати, да. Про compile time я как-то не подумал.

VD>А почему бы вместо циклов (я не про твой лиспо-подобный язык, а про XAML) не использовать специальный контрол-повторитель?


Да не, мне ничего объяснять не надо. Перепутал задачи. В крайнем случае, можно нагенерить прямо в коде (например столбцы таблицы для помесячного отображения). Перегружать из-за этого язык РАЗМЕТКИ не стОит. Получится аля NemerleWeb, и его опять заклюют сторонники "логика отдельно, представление отдельно". И правильно сделают, кстати. Циклы в разметке портят декларативность.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.