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: AMMY - XAML с человеческим лицом
От: Ziaw Россия  
Дата: 18.01.17 12:46
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Автор: ionoy.


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

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


VD>>Автор: ionoy.


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


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

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


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

<Button BlaBla="10" />
Re: AMMY - XAML с человеческим лицом
От: IT Россия 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[3]: AMMY - XAML с человеческим лицом
От: IT Россия linq2db.com
Дата: 18.01.17 15:05
Оценка: +2 :))) :)
Здравствуйте, ionoy, Вы писали:

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


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

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

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

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

TextBlock {
  viewmodel MyApp.SomeType

  Text: bind PropertyFromViewModel
}


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

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


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


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

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

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

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

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


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

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


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

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


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


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


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

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


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

I>Но зачем?


Человек, создающий инструменты для программистов не должен задавать таких вопросов
Если нам не помогут, то мы тоже никого не пощадим.
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[6]: AMMY - XAML с человеческим лицом
От: ionoy Эстония www.ammyui.com
Дата: 18.01.17 17:16
Оценка: 74 (2)
Здравствуйте, IT, Вы писали:

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


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

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

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

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


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


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

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

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

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

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

StackPanel {
  #FiveBlocks
  #FiveBlocks
}



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

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

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

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

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


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


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

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

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


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

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

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

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