Track 3 | 18:15RU
Programs are usually written by human beings and performed by computers. Since computers were invented, a huge amount of work has been done to low barriers to entry programming: nowadays you don't need to know how computers work to make them do some action. However, nothing is free of cost, and behind the high-level languages, there are many fascinating things. Sometimes the ignorance of what is happening on the "low level" can cause dire consequences. Especially when we talk about concurrency and cross-platform software, there are pitfalls everywhere. In this talk we'll try to tell what memory model is and how it looks like in .NET, what things specification guarantees us, what the platform gives us, what problems can be expected when you step out of your comfort zone: choosing a lock-free direction, running on other architectures (ARM, for instance). We'll also show that some problems can be revealed by a simple static analysis (this talk is not about static analysis, so ask for details if necessary). Among other things, we'll show that .NET can also happen to have bugs.
.NET Developer at Sidenis company. Uses his spare time to study the "insides", especially the ones of concurrency, because to know something well you need to dig at least one level lower than you use it.