Digests » 192
this week's favorite
The toolkit contains various controls (labels, text entry, buttons, radio buttons, checkboxes, dialog boxes, windows, menus) for building text user interfaces, a main loop, is designed to work on Curses and the Windows Console, works well on both color and monochrome terminals and has mouse support on terminal emulators that support it.
Sometime in the last few weeks, while I was writing the explanations for the way in which neural networks learn and backpropagation algorithm, I realized how I never tried to implement these algorithms in one of the programming languages. Then it struck me that I’ve never tried to implement the whole Artificial Neural Network from scratch. I was always using some libraries that were hiding that implementation from me so I could focus on the mathematical model and the problem I was trying to solve. One thing led to another and the decision to implement my own Neural Network from scratch without using third-party libraries was made. Also, I decided to use object-oriented programming language I prefer – C#.
So, after this „literary” introduction I want to welcome you to new series of interesting C# internals. I believe that at least some of you will like it although the knowledge I’m going to pass is not very „practical” in everyday work. On the other hand, knowing exactly what’s happening under the hood of C# might be helpful in the future, especially when it comes to the performance. Oh, and one more thing before we start. I don’t have any plan specified for this series. I’m not that deep into the subject, I’m still discovering lots of things. Therefore I can’t tell you now, whether new parts will be published regularly and what exactly will be described. We will see. All right, let’s get started.
Intelligible stack traces for async, iterators and Dictionary (key not found) .NET Core 2.1 now has intelligible async stack traces! But what do I mean by this bold claim?
As you should already know from the first post of the series, the compiler does a lot of transformations to make asynchronous programming experience very similar to a synchronous one. But to do that the compiler creates a state machine instance, pass it around to an async method builder, that calls task awaiter etc. Obviously, all of that logic has its own cost, but how much do we pay?