Компиляция и запуск C# и Blazor внутри браузера

Введение

Если вы Web-разработчик и ведете разработку для браузера, то вы точно знакомы с JS, который может исполняться внутри браузера. Существует мнение, что JS не сильно подходит для сложных вычислений и алгоритмов. И хотя в последние годы JS cделал большой рывок в производительности и широте использования, многие программисты продолжают мечтать запустить системный язык внутри браузера. В ближайшее время игра может поменяться благодаря WebAssembly.

Microsoft не стоит на месте и активно пытается портировать .NET в WebAssembly. Как один из результатов мы получили новый фреймворк для клиенской разработки - Blazor. Пока не совсем очевидно, сможет ли Blazor за счет WebAssembly быть быстрее современных JS - фреймворков типа React, Angular, Vue. Но он точно имеет большое преимущество - разработка на C#, а так же весь мир .NET Core может быть использован внутри приложения.

14 December 2018
Read More

6 Best Blazor Components Libraries (November 2018)

Blazor is an experimental .NET web framework using C# and HTML that runs in the browser.

Naturally, many components are at the beginning of their development.

I tried to collect the 6 most interesting libraries with components for Blazor. Enjoy.

04 November 2018
Read More

MatBlazor - Material Design components for Blazor

02 November 2018
Read More

BlazorSplit - resizeable split views for Blazor

01 November 2018
Read More

Мир ботов и генетический алгоритм

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

И вот я приболел и решил сделать нечто похожее. Итак, я тоже сделал маленьких синих ботов, которые будут самостоятельно выживать в мире. Боты имеют мозг - микропрограмму, которая является геномом бота, которая будет создаваться и эволюционировать сама. Мозг - 64 ячейки памяти (чисел). Каждое число - команда.

Команды:

  • ходить,
  • повернуться
  • схаватить еду или преобразовать яд в еду,
  • посмотреть что в соседней ячейке,
  • безусловный переход
  • добавил дальнее зрение (посмоотреть на ячейку дальше соседних)

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

Если бот попал на еду, ему добавляется 10 здоровья, если на яд - он умирает. Каждый ход бот теряет 1 здоровья. Когда здоровье доходит до 0, бот умирает.

После каждой симуляции жизни мира новое поколение составляют только лучшие боты с предыдущей симуляции и плюс добавляются мутации (случайной изменение нескольких ячеек памяти на случайные числа).

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

Если пройти несколько поколений (несколько тысяч), то боты уже вполне могут жить. Для быстрой симуляции большого количества поколений - нажать на кнопку Fast by Generations. Потом можно вернуться на Slow by Step.

В целом идея слизана с этого видео и немного развита. Код написан на TypeScript/JS и выложен на GitHub.

Ссылка на демо: SamProfAI Demo

07 May 2018
Read More