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 на сайте продукта.

Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: AMMY - XAML с человеческим лицом
От: IT Россия linq2db.com
Дата: 19.01.17 19:01
Оценка: +4 -3
Здравствуйте, VladD2, Вы писали:

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

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

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

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

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

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

Впрочем, я знаю как в будущем решить эту проблемы. Нужно по-лучше настроить фильтр форумов и исключить оттуда Nemerle.
Если нам не помогут, то мы тоже никого не пощадим.
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[3]: AMMY - XAML с человеческим лицом
От: IT Россия linq2db.com
Дата: 18.01.17 15:05
Оценка: +2 :))) :)
Здравствуйте, ionoy, Вы писали:

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


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

Как мне без копипасты определить десять однотипных кнопок?
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: AMMY - XAML с человеческим лицом
От: IT Россия linq2db.com
Дата: 19.01.17 15:48
Оценка: 7 (2) -3
Здравствуйте, VladD2, Вы писали:

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


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


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

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

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

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


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

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


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

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


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

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


Да любая форма ввода, на которой присутсвует десяток кастомных полей с лейблами и ещё чем-нибудь. Каждая такая группа контролов занимает в XAML десяток строк и при этом отличается лишь парой аттрибутов, типа название и баиндинг.
Если нам не помогут, то мы тоже никого не пощадим.
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[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[9]: AMMY - XAML с человеческим лицом
От: IT Россия linq2db.com
Дата: 19.01.17 16:47
Оценка: +1 -3
Здравствуйте, VladD2, Вы писали:

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


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

В общем, ничего в этом форуме за пять лет не изменилось. Пичалька.
Если нам не помогут, то мы тоже никого не пощадим.
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.
  Пример
  А вот и цикл

P.S. Написал исключительно ради справедливости. Отчеты — штука специфическая. Но циклы все-таки иногда нужны, даже в разметке.
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[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[5]: AMMY - XAML с человеческим лицом
От: IT Россия linq2db.com
Дата: 18.01.17 15:44
Оценка: :)))
Здравствуйте, ionoy, Вы писали:

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


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

I>Но зачем?


Человек, создающий инструменты для программистов не должен задавать таких вопросов
Если нам не помогут, то мы тоже никого не пощадим.
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.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 19.01.2017 15:44 VladD2 . Предыдущая версия .
Re[11]: AMMY - XAML с человеческим лицом
От: fddima  
Дата: 19.01.17 17:22
Оценка: +3
Здравствуйте, VladD2, Вы писали:

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

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

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

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

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

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

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

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

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

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


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


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

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


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

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


Отвечаю честно и без ваших беспонтовых понтов: НИКАК!
Если нам не помогут, то мы тоже никого не пощадим.
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[13]: AMMY - XAML с человеческим лицом
От: fddima  
Дата: 19.01.17 19:08
Оценка: 3 (1) +1
VD>Ну, так присоединяйся и помоги его сделать. В проект мы это заложили. Но нужно много и долго работать, чтобы все получилось как в проекте. Все делается через бэкэнды. Можно написать бэкэнд для LLVM, например. Когда будет Немерл на Нитре, можно будет бутстрапнуться на LLVM.
Это интересно, хотя я слышал об этом изначально. Я щас выпадаю в идл. Если вдруг забуду — просьба пнуть меня. Вообще думаю собрать свои хотелки/мыслишки и от этого отталкиваться. Короче это в отдельном топике/может лично. Короче не тут точно, тут пока это никому не интересно будет.

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

Это всегда было понятно. Проделанная работа вашей команды ещё несколько лет назад была выше всяких похвал. Ammy же только подтверждает — что твои обзоры — не рекламная чепушень! Имхо — конкурентов у Нитры вообще нет как и не было. Я вижу проблему тока в привязке к дотнету. И мало материалов. Но это решится. Я люблю дотнет всей душой, но самые интересные программы на нём не сделать. Короче — я рад что не смотря на все невзгоды — ты остаешься верен своему делу.
Re[4]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 05:16
Оценка: -1 :)
Здравствуйте, IT, Вы писали:

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


Взял и обидел сразу двух людей. Зачем?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Косяки с точки зрения бизнеса (+)
От: Jack128  
Дата: 19.01.17 06:56
Оценка: +1 :)
Здравствуйте, bazis1, Вы писали:

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


Был силверлайт. Только это умирающий тренд
Re: AMMY - XAML с человеческим лицом
От: okon  
Дата: 25.10.19 15:16
Оценка: :))
Здравствуйте, VladD2, Вы писали:

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


VD>Автор: ionoy.

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

VD>Особенности языка:

VD>1. Вместо XML, на котором основан XAML, в AMMY используется синтаксис базирующийся на JSON.
Сомнительное преимущество, количество сущностей то же, читабельность не ощутимо лучше. Особенно на больших формах.
Причем в ущерб функциональности, многие важные фичи не поддерживаются как пишет сам автор.

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

Это не преимущество с существующими.

VD>3. Для AMMY имеется поддержка IDE (подсветка, автодополение, навигация по коду и т.п.).

VD>4. Поддерживает миксины (аналог макросов для XAML). Повышает производительность руда и повторного использования кода.
Тоже не преимущество с существующими решениями все это есть.

VD>5. Возможность менять GUI прямо во время исполнения.

Тоже во всех UI фреймворках это есть или я не очень понял что автор хочет сказать.
Даже на WinAPI можно убрать кнопку и показать кнопку, увеличить/уменьшить окно или контрол, не говоря уже о возможностях более высокоуровневых решений.

Если имеется ввиду дизайнить в рантайме , то в студии это вроде как давно есть, запускаешь приложение и редактируешь — сразу видишь результат.


Я за интересные решения для UI, но в данном случае не понятно зачем это все, как это увеличит производительность моего труда особенно с учетом что многие фичи доступные в XAML не поддерживаются, а JSON XMLя не слаще, те же яйца вид сбоку со своими плюсами и минусами.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Отредактировано 25.10.2019 15:17 okon . Предыдущая версия .
Re[5]: AMMY - XAML с человеческим лицом
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.02.20 09:03
Оценка: 108 (1)
Здравствуйте, VladD2, Вы писали:


VD>Ну, вот есть варианты. Возможно его лучше сделать на Blazor-е, например. При этом сразу убъется несколько зайцев. Ну, и это не должен быть XAML. Программирование в XML-е это звиздец какой идиотизм.


https://devblogs.microsoft.com/aspnet/mobile-blazor-bindings-feb-2020-update/

К блазору как раз и прикручивают Xaml Standard https://github.com/microsoft/xaml-standard
и солнце б утром не вставало, когда бы не было меня
Re: AMMY - XAML с человеческим лицом
От: Kolesiki  
Дата: 30.12.19 10:56
Оценка: 52 (1)
VD>AMMY — XAML с человеческим лицом

Image: lightweight-syntax.png

Раз про Немерле никто ничё не пишет, напишу про Ammy пару размышлизмов.

1. Ammy как хелпер — превосходно. Mixin и Alias — громадная помощь неуклюжему WPF (вот чем надо было MS заниматься, а не байндинги с триггерами мусолить).
2. При всём моём презрении к раздутому XML, оказалось, что JSON здесь не намного лучше. Есть что-то стилистически неуклюжее в том, что разные по сути элементы выглядят одинаково. Посмотрите на иллюстрацию вверху — казалось бы, StackPanel содержит вполне однотипные с ним контролы внутри — два TextBlock'а. Однако у второго TextBlock'а внутри уже идут не элементы, а инициализация пропертей! Но выглядят-то они абсолютно идентично — внутри скобок. Ещё более наглядный пример:



Ширина, высота,... что?? ТекстБлок? А он там с какого перепугу?

Понятно, что "умный парсер" всё расскажет и покажет, но это неправильно. Распечатайте ч/б эмми-код и поймёте, что у вас нет никакого желания разбираться, кто есть кто.

Я тоже не один день размышлял, как можно красиво-декларативно задавать UI (и тоже попался на удочку JSON), но решил, что тут надо думать глубже и создавать UI-язык без оглядки на существующие решения. Прям вот смело брать и запиливать свой DSL, с конкретной заточкой на сущности "контрол проперть-значение коллекция-контролов". Ну и сахар не забывать, конечно.
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 30.12.19 11:27
Оценка: 52 (1)
Здравствуйте, Kolesiki, Вы писали:

K>Image: HQlYNh4.png


K>Ширина, высота,... что?? ТекстБлок? А он там с какого перепугу?

Разные люди по-разному визуализируют дерево контролов UI. Дети контрола это всего лишь ещё одно свойство. Его можно записать явно, как Children = {}, а можно принять договорённость, что все элементы находящиеся внутри других, будут автоматически добавлены в Children. Суп из свойств и детей корёжит только по-началу, особенно после XML. Там ведь свойста обычно задаются атрибутами, а дети внутренними нодами. Но по факту ведь весь XAML превращается в "элемент.свойство = ...". И где находится присвоение детей, а где "обычных" свойств, совсем не важно.

K>Понятно, что "умный парсер" всё расскажет и покажет, но это неправильно. Распечатайте ч/б эмми-код и поймёте, что у вас нет никакого желания разбираться, кто есть кто.

Я очень быстро привык к тому, что обычные свойства заканчиваются двоеточием, а контролы имеют вид "ИмяЭлемента {}". Но и язык то я придумывал в соответствии с собственным пониманием прекрасного. Вполне вероятно, что другой человек и через пол года будет плеваться на синтаксис.

K>Я тоже не один день размышлял, как можно красиво-декларативно задавать UI (и тоже попался на удочку JSON), но решил, что тут надо думать глубже и создавать UI-язык без оглядки на существующие решения. Прям вот смело брать и запиливать свой DSL, с конкретной заточкой на сущности "контрол проперть-значение коллекция-контролов". Ну и сахар не забывать, конечно.

Собственно, Ammy — это и есть отдельный UI язык. Некоторые оглядки там всё-таки были (например QML). Но в целом, я думал о том как создать язык именно для замены XAML, без компромиссов. С удовольствием обсужу альтернативные варианты, просто хотя бы из интереса к теме.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
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: 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[4]: Косяки с точки зрения бизнеса (+)
От: ifle  
Дата: 19.01.17 10:56
Оценка: 24 (1)
Добавьте киллер фичу — поддержку ограниченного css, как в nativescript и react-native. Будет очень полезно и для xamarin
Re[3]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 03.01.20 09:05
Оценка: 18 (1)
Здравствуйте, Mamut, Вы писали:


K>>Я тоже не один день размышлял, как можно красиво-декларативно задавать UI (и тоже попался на удочку JSON), но решил, что тут надо думать глубже и создавать UI-язык без оглядки на существующие решения. Прям вот смело брать и запиливать свой DSL, с конкретной заточкой на сущности "контрол проперть-значение коллекция-контролов". Ну и сахар не забывать, конечно.


M>SwiftUI же. Хотя Swift как язык еще то гуанецо.


Один мой знакомый делает нечто похожее для C# https://github.com/VincentH-Net/CSharpForMarkup/
Ну и я когда-то сделал прототип https://github.com/ionoy/Ammy2
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
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[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[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: AMMY - XAML с человеческим лицом
От: Ziaw Россия  
Дата: 18.01.17 12:46
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Автор: ionoy.


ionoy молоток, выглядит все очень и очень круто.
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 не нужны. Точнее даже вредны.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 17:09
Оценка: +1
Здравствуйте, IT, Вы писали:

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


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

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


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

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


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

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

ЗЫ

И ты не ответил на мой вопрос. Как там с циклами в linq2db?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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.

Но лично у меня до этого вряд ли дойдут руки в ближайшее время.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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 не нужна. Чувствуешь разницу? Она не нужна лично мне. Я не вижу в этом инструменте большой необходимости. Я не вижу. Лично для себя. Она не нужна МНЕ. Но это не значит, что она не нужна вообще.

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

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


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

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

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

В общем, завязывай с демогогией и оскорблениями. До тебя здесь была нормальная здоровая атмосфера. Если у тебя плохое настроение, выпей пива, а не вымещай его на окружающим.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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" }
}


Column {
    Repeater {
        model: ["apples", "oranges", "pears"]
        Text { text: "Data: " + modelData }
    }
}
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[9]: AMMY - XAML с человеческим лицом
От: Kolesiki  
Дата: 05.05.20 19:54
Оценка: :)
Здравствуйте, Mamut, Вы писали:

M>Закапывать проект, в котором нет нормального комбобокса


Ну так ни у кого его нет! А гуйню тогда делать на чём??

K>>Я-то писал, я представляю. Да, МНОГО. Но это если сразу обозреть ВСЮ функциональность. Которая, очевидно, не всем и не сразу нужна. И делается в режиме дописывания. Главное — заложить гибкую основу.


M>Угу. «Делается в режиме дописывания». Не делается. Этому надо реально посвятить разработку, а не «в режиме дописывания».


Ты не так понимаешь мысль. ГУЙ — в нём есть принципы построения. Вот как у WPF: "невизуальный контрол" + стили. Если заложить правильные и гибкие принципы, удобные примитивы, то вся остальная либа делается "в режиме дописывания", т.е. база у нас есть, а отсутствующие контролы легко дописываются по мере надобности.

M>Их не осталось. Кроме полутора, что разрабатываются уже тридцать лет (например, Qt) или поставляются с самой ОСЬю (например, в МакОСи). Все остальное по разным причинам вымерло: с одной стороны разработка невероятно сложная, дорогая и долгая. С другой — все деньги в мобильных приложениях.


WPF — жив. Даже WinForms живее всех живых! Кто умер-то?? Не слишком громкие высказывания, мистер Эпатаж?

Разработка — не особо сложная, все трудности — они на этапе проектирования и написания базовой модели.
К слову, вот этот симпатичный ГУЙ https://github.com/buggins/dlangui поначалу делался вообще одним челом, причём когда проект был представлен, он уже содержал больше десятка контролов. Задача — вполне подъёмная, особенно когда есть единомышленники. А вот это тухлое Qt и ко — даром не нужно.
Re: AMMY - XAML с человеческим лицом
От: Jack128  
Дата: 18.01.17 14:21
Оценка:
Здравствуйте, VladD2, Вы писали:

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


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

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

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


Как насчёт циклов?
Если нам не помогут, то мы тоже никого не пощадим.
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[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[2]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.01.17 16:54
Оценка:
Здравствуйте, Ziaw, Вы писали:

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


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


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

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

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

Многое, в этом плане, выпрямляет РеШарпер. Но не все. Плюс он ведь денег стоит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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 это не сложно будет сделать. Пока что я не вижу в этом никакой необходимости.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 05:54
Оценка:
Здравствуйте, IT, Вы писали:

I>>Но зачем?


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


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

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

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

В общем, привел бы пример задачи, которую это решает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 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)Большое количество значений в строках. Нитра позволяет делать подсветку и автокомплит в строках.


Ага. Я не однократно говорил об этом автору. Но он меня не послушал. Думаю, что в процессе эволюции это уйдет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 19.01.2017 15:43 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, Вы писали:

Просьба не задавать вопросов в заголовке.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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[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 Россия linq2db.com
Дата: 19.01.17 14:51
Оценка:
Здравствуйте, ionoy, Вы писали:

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


В принципе, если через параметры можно задать в том числе и события, то это решение годное.
Если нам не помогут, то мы тоже никого не пощадим.
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[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[5]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.01.17 15:57
Оценка:
Здравствуйте, ionoy, Вы писали:

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

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

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


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

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

Потому что работал на ограниченных браузерах/системах и не вписывался органично в HTML, работая по сути в отдельном iframe.
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
. Я с нем во многом не согласен, но это все же критика. Человек обосновывает свои мысли. И при этом, заметь, на личности не переходит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.01.17 07:56
Оценка:
Здравствуйте, fddima, Вы писали:

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


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

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

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

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

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

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


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

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

Что касатеся материала, то на русском его уже не так много, хотя конечно не все описано пока и на русском. А вот английском все хуже. Мой английский недостаточен для корректных переводов, к сожалению. Тут тоже нужна внешняя помощью.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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-ы красными, а не четными зелеными.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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.


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

А есть у кого-то такие лецензии на практике?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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"

и радуешься жизни.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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 ни ногой.


А если появились бы фичи которые я описал выше (проперти-грид для текста и возможность навигации в код прямо из работающей формы) ты смог бы обойтись без дизайнера?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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 использовать

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



А как предполагалось бы сделать иначе ?
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
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>


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


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

ИтемзЛист{ Соурс=лист, ИтемШоблон=Батон{ Капшен=датакантекст  } }
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
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 и не можем сторонние блобы с очень платными лицензиями интегрировать.


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

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

Что касается лицензий, то это как раз вопрос решаемый, я думаю. Тут можно легко договориться с автором.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
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[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[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 Россия linq2db.com
Дата: 16.03.17 16:17
Оценка:
Здравствуйте, MAMOHT, Вы писали:

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


Вот! Влад, где ты там? Послушай умного человека!
Если нам не помогут, то мы тоже никого не пощадим.
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 там не более чем выходной формат. И он отсутствие циклов в ХАМЛ-е ему не помешало генерировать ХМАЛ.

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

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

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


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

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


Да не, мне ничего объяснять не надо. Перепутал задачи. В крайнем случае, можно нагенерить прямо в коде (например столбцы таблицы для помесячного отображения). Перегружать из-за этого язык РАЗМЕТКИ не стОит. Получится аля NemerleWeb, и его опять заклюют сторонники "логика отдельно, представление отдельно". И правильно сделают, кстати. Циклы в разметке портят декларативность.
Re: AMMY - XAML с человеческим лицом
От: QrystaL Украина  
Дата: 25.10.19 14:28
Оценка:
Каков статус проекта на сегодняшний день?
В частности, https://github.com/AmmyUI/AmmyUI/issues/124 ?
Re[2]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 29.10.19 07:58
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>Каков статус проекта на сегодняшний день?

QL>В частности, https://github.com/AmmyUI/AmmyUI/issues/124 ?

К сожалению, у меня сейчас нет энергии заниматься альтернативным бэкендом. Если есть желающие помочь, то я только за.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[3]: AMMY - XAML с человеческим лицом
От: QrystaL Украина  
Дата: 29.10.19 16:17
Оценка:
Здравствуйте, ionoy, Вы писали:
I>К сожалению, у меня сейчас нет энергии заниматься альтернативным бэкендом.

В соседней ветке обещают поддержку NetCore3
http://rsdn.org/forum/nemerle/7529023.flat
Автор: DarthSidius
Дата: 27.08.19
Re[3]: AMMY - XAML с человеческим лицом
От: Kolesiki  
Дата: 30.12.19 15:49
Оценка:
Здравствуйте, ionoy, Вы писали:

K>>Ширина, высота,... что?? ТекстБлок? А он там с какого перепугу?


I> Суп из свойств и детей корёжит только по-началу, особенно после XML


Вот именно — "поначалу"! Т.е. свежий, незамутнённый взгляд сразу цепляется за "неправильное".
Я согласен, привыкнуть можно к чему-угодно, даже к Перлу но вот моё мнение таково, что если тебе КАК ЧЕЛОВЕКУ сложно читать код, то и парсеру тоже будет несладко.
Мой намёк очевиден: сделать как-то разграничение — отдельно проперти, отдельно чилдренята. И вовсе не обязательно придерживаться какой-то узкой парадигмы (как в XML "всё есть узел + атрибуты") — мы можем вертеть синтакисом как угодно, вплоть до юникода и эмодзи.

I>Я очень быстро привык к тому, что обычные свойства заканчиваются двоеточием, а контролы имеют вид "ИмяЭлемента {}"


Вот-вот! Т.е. сначала мы читаем "нечто именованное" и только потом, по привычному имени или заглянув вперёд, понимаем — ага, это проперть! Это не есть хорошо. Я бы даже пошёл по пути Перла, где $ и @ определяют разные сущности. Хотя может это и не понадобится, если продумать синтаксис дочерних элементов.

I>Собственно, Ammy — это и есть отдельный UI язык


Неа. Ты же сам на странице пишешь "JSON-like syntax". И это прекрасно в том плане, что тысячи людей, знающих JSON, могут легко влиться в проект. Но проблема как раз в самом JSON'е — это немного "не то". Для объектов (как абстрактных наборов свойств) — прекрасно подходит. Но для UI-языка — нет, потому что "язык описания интерфейса" 100% потребует множество сахара (чтобы быть красивым и лаконичным). JSON и так весьма краткий язык и именно поэтому в нём очень мало простора для сокращений.

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


Я эту тему тоже не раз касаюсь, когда выбешивает WPF Но пока рисую лишь черновики. Если что сформулирую длиннее абзаца — обязательно поделюсь.
Re[2]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.12.19 09:06
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Я тоже не один день размышлял, как можно красиво-декларативно задавать UI (и тоже попался на удочку JSON), но решил, что тут надо думать глубже и создавать UI-язык без оглядки на существующие решения. Прям вот смело брать и запиливать свой DSL, с конкретной заточкой на сущности "контрол проперть-значение коллекция-контролов". Ну и сахар не забывать, конечно.


Проблема в том, что под языком должна лежать какая-то реализация. Лично я согласен, что для описания нужен полноценный DSL без переиспользования универсальных языков вроде JSON-а или XML-я. Но DSL должен выражать некую семантику. И тут без использования чего-то вроде WPF-не обойтись. Ну, а библиотека уже будет диктовать свои решения и ограничения.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.12.19 09:10
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Я очень быстро привык к тому, что обычные свойства заканчиваются двоеточием, а контролы имеют вид "ИмяЭлемента {}".


Дык и к XAML-у привыкают. Но это не от хорошей жизни. Возможно имело смысл ввести специальное ключевое слово и перейти на синтаксис более близки к присвоению в обычных императивных язках.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: AMMY - XAML с человеческим лицом
От: Mamut Швеция http://dmitriid.com
Дата: 03.01.20 00:07
Оценка:
K>Я тоже не один день размышлял, как можно красиво-декларативно задавать UI (и тоже попался на удочку JSON), но решил, что тут надо думать глубже и создавать UI-язык без оглядки на существующие решения. Прям вот смело брать и запиливать свой DSL, с конкретной заточкой на сущности "контрол проперть-значение коллекция-контролов". Ну и сахар не забывать, конечно.

SwiftUI же. Хотя Swift как язык еще то гуанецо.

struct ContentView: View {
    var body: some View {
        VStack {
            MapView()
                .frame(height: 300)

            CircleImage()
                .offset(y: -130)
                .padding(.bottom, -130)

            VStack(alignment: .leading) {
                Text("Turtle Rock")
                    .font(.title)
                HStack(alignment: .top) {
                    Text("Joshua Tree National Park")
                        .font(.subheadline)
                    Spacer()
                    Text("California")
                        .font(.subheadline)
                }
            }
            .padding()
        }
    }
}


dmitriid.comGitHubLinkedIn
Re[3]: AMMY - XAML с человеческим лицом
От: Kolesiki  
Дата: 21.02.20 18:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Проблема в том, что под языком должна лежать какая-то реализация. ... И тут без использования чего-то вроде WPF-не обойтись.


Я понял мысль. Но библиотека как раз вторична, а вот потенциал, закладываемый в язык — нужен.
А по поводу WPF... мне кажется, это ещё одна страшная ошибка. Как идея — WPF превосходен (идея декларативного UI), но реализация была безбожно испорчена космическими микроархитекторами микрокомпании с микротанцорами, мать их за ногу! Поэтому я безо всяких сомнений сделал бы этот "Гуеязыг" поверх... WinForms! А почему бы и нет?
Декларации, стили, контролы — всё транслируются в обычный Win32 мир, который на порядок быстрее WPF, как бы нас ни убеждали в обратном продажные шлёндры микрософта.
Другими словами, мы можем сделать тот же WPF, но правильный, быстрый и на известных каждому школьнику ВинФормсах, где "создать новый контрол" — вопрос пяти строк, а не километровой простыни свойств, стилей и прочей шняги.
Re[4]: AMMY - XAML с человеческим лицом
От: Kolesiki  
Дата: 21.02.20 18:43
Оценка:
Здравствуйте, ionoy, Вы писали:

I>Один мой знакомый делает нечто похожее для C#


Проблема в том, что "шарпоГУЙ" своей идеей напрочь отрезает от процесса главных гуеделов — ДИЗАЙНЕРОВ! Если для WPF запилили хотя бы Blend, то что ты предоставишь для C#??
Теги способен выучить последний имбецил. Причём достаточно просто тега, остальное допилим ползунками в Property Editor. В цэшарпе ты уже ничего не допилишь.
Re[5]: AMMY - XAML с человеческим лицом
От: varenikAA  
Дата: 25.02.20 05:39
Оценка:
Здравствуйте, Kolesiki, Вы писали:

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


I>>Один мой знакомый делает нечто похожее для C#


K>Проблема в том, что "шарпоГУЙ" своей идеей напрочь отрезает от процесса главных гуеделов — ДИЗАЙНЕРОВ! Если для WPF запилили хотя бы Blend, то что ты предоставишь для C#??

K>Теги способен выучить последний имбецил. Причём достаточно просто тега, остальное допилим ползунками в Property Editor. В цэшарпе ты уже ничего не допилишь.

У нас в провинции гуй делается руками разрабов по макетам. Может это неправильно. Но так уж получилось.
Чем принципиально отличается древовидная структура списка в синтаксисе C# от xml?
Ничем кроме вида скобок. Плюс все возможности C# можно. Уже практически все это используют.
Например, .
еще Giraffe, Suave, WebSharper (если нужно увидеть как это C#).
Разметка в коде вероятно более гибка и менее подвержена болезням шаблонизаторов.
Конечно, дизайнер это хорошо, но он также становится зависимостью от которой трудно избавиться, т.к. генерится очень много доп кода. Или взять swing Jtable(java), там данные и метаданные(названия колонок) берутся из программной модели.

Ну а в лиспах типа кложи/скрипта уже давно и html и css пишут в коде на одном языке.
Это удобно и мощно. Как сложно например в разоре (асп нет) генерить по циклах да еще если условия нужны.
На чистом C# гораздо было бы проще.
Что-то много написал.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[4]: AMMY - XAML с человеческим лицом
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.02.20 22:02
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Я понял мысль. Но библиотека как раз вторична, а вот потенциал, закладываемый в язык — нужен.


Я то с тобой согласен. Проблема лившь в том, что людям не нужны абстрактные языки. Им нужно решать конекретные задачи. По сему ничего вторичного тут нет. Если выбрать мертвую либу в базу, то даже самый лучший ДСЛ не спасет такой проект.

K>А по поводу WPF... мне кажется, это ещё одна страшная ошибка. Как идея — WPF превосходен (идея декларативного UI), но реализация была безбожно испорчена космическими микроархитекторами микрокомпании с микротанцорами, мать их за ногу!


Опять же согласен. Более того МС сама как-то забила на WPF. WPF же сделан по верх Direct X и стало быть не особо переносим. Ну, а UWP, который предлагают в МС не кросплатформен даже в пределах винды. Нам вот надо поддерживать Win 7, а там UWP. Есть, правда, Xamarin но и у него куча пролбем.

K>Поэтому я безо всяких сомнений сделал бы этот "Гуеязыг" поверх... WinForms! А почему бы и нет?


Вот только людям не нужен WinForms. Он не переносим. Не достаточно расширябелен. А главное люди не считают его чем-то что имеет смысл выбирать.

K>Декларации, стили, контролы — всё транслируются в обычный Win32 мир, который на порядок быстрее WPF, как бы нас ни убеждали в обратном продажные шлёндры микрософта.


Да не фига он не быстрее. На сегодня и WPF довольно быстр, за счет 3D-акселлерации. И есть другие варианты. И вообще, скорость как-то перестала быть критерием для выбора библиотек. Ее достаточно даже в HTML-е.

K>Другими словами, мы можем сделать тот же WPF, но правильный, быстрый и на известных каждому школьнику ВинФормсах, где "создать новый контрол" — вопрос пяти строк, а не километровой простыни свойств, стилей и прочей шняги.


Ну, вот есть варианты. Возможно его лучше сделать на Blazor-е, например. При этом сразу убъется несколько зайцев. Ну, и это не должен быть XAML. Программирование в XML-е это звиздец какой идиотизм.

Сочетание переносимости, приемлемой скорости, хорошего строготипизированного ДСЛ-я, хорошей интеграции с ЯП вроде Nemerle/C#/F#, динамического превью как в AMMY и Live XAML, богатая библиотека дотнета, прозрачная интеграция с серверным кодом написанным на тех же языках, пакетная система nuget-а и может получиться отличное решение.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: AMMY - XAML с человеческим лицом
От: Kolesiki  
Дата: 01.04.20 16:01
Оценка:
Здравствуйте, VladD2, Вы писали:

K>>Поэтому я безо всяких сомнений сделал бы этот "Гуеязыг" поверх... WinForms! А почему бы и нет?


VD>Вот только людям не нужен WinForms. Он не переносим.


ээ... вопрос колом: а ЗАЧЕМ его переносить?? Куда, в какой дивный мир ты хочешь выйти из Окон? Кругом венда. Линуксоиды застряли в своём гиковом мире. Макакось — вообще секта контуженых ябловеров. Ну... куда? Я не праздный вопрос вопрошаю, я за свои 25 лет в индустрии так и не видел ничего путного в идее "кросс-чего-нибудь". Ни ГУЙня никогда не была нормальной, ни целые платформы — все страдали синдромом павлиноуткоежа.

VD> Не достаточно расширябелен.


В каком смысле?? Наследуй контрол, да расширяй!

VD>А главное люди не считают его чем-то что имеет смысл выбирать.


Скажем так: это не совсем те люди, мнение которых я могу ценить. Кто писал реальные проги на WPF и WinForms *поклонился*, тот знает, насколько череззаборногузадерищенски работает WPF и насколько всё проще в мире WinForms. Чего б его не выбирать-то?? Или кто-то увидел, как кастомайзить кнопочку в WPF и всё, поплыла Катя? Даже кривая обучения у WPF — это какая-то жоццкая кубическая парабола, где на старте всё мягко, а потом уносимся в непостижимые разумом облака! На WinForms можно писать годами и никогда не перекрыть OnPaint. А надо — всегда можно прочитать ОДИН туториал и тут же(!) запилить свой контрол. Это к слову "расширябелен".

K>>Декларации, стили, контролы — всё транслируются в обычный Win32 мир, который на порядок быстрее WPF, как бы нас ни убеждали в обратном продажные шлёндры микрософта.


VD>Да не фига он не быстрее. На сегодня и WPF довольно быстр, за счет 3D-акселлерации.


Влад, это всё сказки, не верь им. Я даже ГЛАЗАМИ вижу, как WPF-ная гуета тормозит во многих приложениях. Причём было бы на чём: в одном месте тупо засосал 1000 записей из базы — и всё, СЕКУНДАМИ жду грид, пока покажет результат. Чо там ускоряет, говоришь, DirectX? А криворуких разрабов WPF там никто не ускоряет?

Вот хорошая статья, почему WPF говно тормозит — там чувак реально заморочился до самого нижнего уровня и показал, как неэффективно работает отрисовка. А мне лично даже без чувака достаточно моего человеческого ощущения, что приложения реагируют куда медленнее, чем должны. Про идиотию на базовом(!) уровне в виде Dep.Properties вообще молчу. Ты как инженер скажи: если на машину повесить полутонные колёса, она быстрее поедет?

VD> И вообще, скорость как-то перестала быть критерием для выбора библиотек.


Ну да. Если бы ВСЕ библиотеки отрисовывали сложный экран за <= 1 мкс. Пока что этого не наблюдаю. А ты не представляешь, насколько раздражают задержки именно в ГУЯх! Ты можешь делать самый крутой UI, но если я больше полсекунды жду реакции — к чёрту такой "тырфейс", лучше запилите простую консоль.

VD>Ну, вот есть варианты. Возможно его лучше сделать на Blazor


Ну так это же в итоге HTML! Накой мне этот протухший монстр с кучей ограничений и костылей? Только потому, что его могут посмотреть задроты со смартфона? Так мобильный ИТ — это вообще другой мир с другими правилами.

VD> Ну, и это не должен быть XAML. Программирование в XML-е это звиздец какой идиотизм.


Согласен, не самый удобный язык. Но пока нет лучшего, ДАЖЕ ЕГО я готов терпеть — пока что он наиболее близкий к декларативным гуям. Но чтобы транслировать всё в WinForms.

Проблема в том, что для юных подаванов любая технология старше 5 лет кажется каким-то атавизмом — ещё б, они привыкли JS-фрэймворки каждую неделю менять! Как им объяснить, что чем дольше лет — тем больше стабильность самой либы и тем больше САМО ВРЕМЯ доказывает, что либа ещё не исчерпала себя?
Я согласен, что "неуклюжих" моментов в WinForms хватает, но никто не мешает их улучшить! Вплоть до переписывания комбобокса. Факт тот, что результат будет быстрый и главное — СОПРОВОЖДАЕМЫЙ. Никому не нужен "театр одного актёра", людям нужен код, который можно взять и уже через час расширять его во всю ширь.

Я вот только с декларативностью немного не в ладах — на .NET GUI напишу почему.
Re[6]: AMMY - XAML с человеческим лицом
От: Mamut Швеция http://dmitriid.com
Дата: 03.04.20 19:39
Оценка:
K>Я согласен, что "неуклюжих" моментов в WinForms хватает, но никто не мешает их улучшить! Вплоть до переписывания комбобокса.

Если тебе надо переписывать такой базовый компонент, как комбобокс, чтобы убрать «неуклюжий момент», то все, можно закапывать

K>Факт тот, что результат будет быстрый и главное — СОПРОВОЖДАЕМЫЙ.


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

Алсо. GUI-фреймворки умерли, как класс.


dmitriid.comGitHubLinkedIn
Re[7]: AMMY - XAML с человеческим лицом
От: Kolesiki  
Дата: 06.04.20 17:25
Оценка:
Здравствуйте, Mamut, Вы писали:


K>>Я согласен, что "неуклюжих" моментов в WinForms хватает, но никто не мешает их улучшить! Вплоть до переписывания комбобокса.


M>Если тебе надо переписывать такой базовый компонент, как комбобокс, чтобы убрать «неуклюжий момент», то все, можно закапывать


Закапывать ЧТО?

Моя идея проста: можно иметь декларативно описанный ГУЙ, который мэпится на уже существующий WinForms. И если типичная кастомизация контрола (из WinForms) не поддерживается, значит переписать контрол с правильной внутренней структурой. Что в этом такого? Да, поначалу сложно, ну так и задача — фундаментальная! До сих пор на рынке даже близко не было тех ГУЁв, которые были бы адекватным, простым решением.


K>>Факт тот, что результат будет быстрый и главное — СОПРОВОЖДАЕМЫЙ.


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


Я-то писал, я представляю. Да, МНОГО. Но это если сразу обозреть ВСЮ функциональность. Которая, очевидно, не всем и не сразу нужна. И делается в режиме дописывания. Главное — заложить гибкую основу.

M>Алсо. GUI-фреймворки умерли, как класс.


Можно развернуть мысль?
Re[5]: AMMY - XAML с человеческим лицом
От: Kolesiki  
Дата: 06.04.20 17:27
Оценка:
Влад, если скучно, глянь: http://rsdn.org/forum/dotnet.gui/7695974.all
Автор: Kolesiki
Дата: 01.04.20

По-моему, декларативный метод не дружит с ООП.
Re[8]: AMMY - XAML с человеческим лицом
От: Mamut Швеция http://dmitriid.com
Дата: 06.04.20 18:09
Оценка:
K>>>Я согласен, что "неуклюжих" моментов в WinForms хватает, но никто не мешает их улучшить! Вплоть до переписывания комбобокса.
M>>Если тебе надо переписывать такой базовый компонент, как комбобокс, чтобы убрать «неуклюжий момент», то все, можно закапывать

K>Закапывать ЧТО?


Закапывать проект, в котором нет нормального комбобокса

K>Моя идея проста: можно иметь декларативно описанный ГУЙ, который мэпится на уже существующий WinForms. И если типичная кастомизация контрола (из WinForms) не поддерживается, значит переписать контрол с правильной внутренней структурой. Что в этом такого? Да, поначалу сложно, ну так и задача — фундаментальная! До сих пор на рынке даже близко не было тех ГУЁв, которые были бы адекватным, простым решением.


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

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


K>Я-то писал, я представляю. Да, МНОГО. Но это если сразу обозреть ВСЮ функциональность. Которая, очевидно, не всем и не сразу нужна. И делается в режиме дописывания. Главное — заложить гибкую основу.


Угу. «Делается в режиме дописывания». Не делается. Этому надо реально посвятить разработку, а не «в режиме дописывания».


M>>Алсо. GUI-фреймворки умерли, как класс.


K>Можно развернуть мысль?


Их не осталось. Кроме полутора, что разрабатываются уже тридцать лет (например, Qt) или поставляются с самой ОСЬю (например, в МакОСи). Все остальное по разным причинам вымерло: с одной стороны разработка невероятно сложная, дорогая и долгая. С другой — все деньги в мобильных приложениях.


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.