In 2018, Dylan Beattie created an esoteric programming language called Rockstar, designed for creating computer programs that are also rock song lyrics. The language was initially created as a joke... then people started to submit ideas, and pull requests. Then somebody created an implementation... and another one. The Rockstar language is now a full open source project, with a test suite and a formal reference implementation — and it is also a great example of an esoteric programming language. In this talk, Dylan shows you how to build a parser and interpreter for an esoteric programming language using C# and .NET. We'll explain the concepts behind parsing expression grammars, and the libraries that exist in .NET such as IronMeta and Pegasus for creating and parsing these kinds of grammars. We'll look at the idea of an abstract syntax tree, and how to use the .NET type system to represent the syntax of your programs. We'll create a meta-circular evaluator that can interpret these syntax trees and turn your Rockstar code into actual running programs. Finally, we'll show how you can use the same tools and ideas in your own projects, to build parsers, transpilers or domain-specific languages.
Founded in April 2017, NUKE is a free, open source build automation system for C#/.NET that runs cross-platform on .NET Core, .NET Framework, and Mono. While builds are bootstrapped with conventional…
Ошибки и проблемы использования многопоточности в .NET. Платформа .NET предоставляет множество готовых примитивов синхронизации и потокобезопасных коллекций. Если при разработке приложения нужно реа…
Задаём тренд — пишем на C# в браузере. Blazor is a client-side framework capable of running C# code that unlike its notorious far ancestor Silverlight doesn't suffer from plugin-itis and doesn't for…
Новых фич C# 8 много, надо про все знать. Очередной релиз C# приносит достаточно много новых фич, которые хочется обсудить. Тут присутствуют как кардинальные изменения, которые затрагивают весь язык…
Каковы связи между обновлениями, работающими в режиме реального времени, инкрементными сборками, кэшированием, избыточностью микросервиса и, наконец, популярностью React? Александр покажет, как набор…
. Performance is at the heart of .NET, with an incredible amount of energy invested in every release towards making the stack faster and more scalable. In this talk, Stephen Toub will walk through ex…
Создание парсеров и лексических анализаторов — затратное по времени дело. Обычно к ним прибегают при необходимости реализации различного рода формальных грамматик, в том числе предметно-ориентированн…
Вы задумывались, как ReSharper анализирует ваш код? В докладе Андрей с практическими примерами расскажет о том, как писать кросс-процедурные анализы кода и почему это теперь необходимо для самых раз…
Всё ли известно про async/await? Мы уверены, что нет — Дмитрий расскажет все тонкости работы с ними. Появление async/await в C# привело к пересмотру того, как писать простой и корректный параллельны…
Developing cross-platform apps for Windows, iOS, macOS, Android, and WebAssembly can be a complex process, especially when it comes to the user interface. Each platform has its ways of defining dynam…
The SOLID principles. The five commandments of the software world. Forgotten for years, as developers focused on JavaScript frameworks with stupid names and complicated patterns. Not grasping that th…
В своем докладе автор расскажет историю миграции большого энтерпрайз-приложения с MS SQL на PostgreSQL, которое не останавливалось ни на минуту в ходе этого процесса. Естественно на этом непростом пу…
Нет ничего проще, чем отладить асинхронный код — когда про это рассказывают два профессионала WinDbg и других инструментов. Times have changed. Multi-core CPUs have become the norm and multi-threadi…
Given the new capabilities of .NET Core to run on Linux and ARM CPUs, creating an IoT application is straightforward. But don't stop at the blinking led because you would miss the most important desi…
Забудем ужасы C++/CLI и рассмотрим альтернативу. При всей простоте использования технологии P/Invoke, она, увы, пригодна лишь для использования библиотек, предоставляющих функции в C-стиле. Объектно…
Массовый переход от монолитов к микросервисам решает одни проблемы, но создаёт другие — взаимодействие сервисов существенно сложнее и дороже, чем взаимодействие объектов в памяти. Частично упростить …
Кто, если не автор Pro .NET Memory Management, расскажет, как писать собственный GC для .NET? As you may already know, starting with .NET Core 2.1 a new feature called Local GC has been added. It al…
Новый фреймворк, определяющий стандарт на ближайшие годы. A lot has happened in the past five years concerning .NET Core and ASP.NET Core development. With version 3.0 coming out, it's time to look …
Современные приложения состоят из множества подсистем: базы данных, кеши, брокеры сообщений. Для обработки одного запроса от пользователя сервер может выполнять десятки внутренних подзапросов. Вы ска…