The book "Memory Management in .NET for Professionals" in the correct translation of the DotNetRu team

More recently , a wonderful book by Konrad Kokosy , Memory Management in .NET for Professionals, was published by the DMK-press in Russian . This publication is notable for the fact that the translation involved not only people from the publisher, but also members of the DotNet.Ru community , practicing developers for whom this book is really relevant. Under the cut, the story of why we got involved in this, how the process was organized and what difficulties we encountered.







About the author of the article: Eugene Bikkinin , member of DotNetRu, one of the translation editors.

Motivation


Many of you will ask: why translate a technical book into Russian? After all, English has long become the main language of an IT specialist, so much so that some phrases of our Russian-speaking colleagues have to be translated in the mind - there are so many English words in them.

I would highlight a few points:

  • Lack of knowledge of the language. Sometimes knowledge is needed faster than learning English courses.
  • Time and place of reading. This is especially true for paper books when there is no dictionary or internet nearby to quickly translate a phrase. For example, I often read in the subway from an e-book.
  • . , , . , . , , . .

Surely there are many other reasons, but these three are for me personally the main ones. If the translation is good, competent, I will read and learn knowledge more efficiently faster, instead of going into a dictionary every page. On the other hand, we all know translations of such quality when you don’t just stumble, and sometimes you just get up in the middle of the page because you absolutely don’t understand what the author wanted to say. Then you read the same sentence in the original, and everything is clear to you. That is, the translation can both make life easier for the reader, and make reading completely impossible.

How did this project come about?


Conrad Coconut’s book is about memory management in .NET, and in fact it completely describes the garbage collector algorithm, what decisions its creators made, and their motivation. The topic itself is very difficult to read in the original, and a poor translation could completely kill any understanding. Therefore, the help of experts was needed.

But with experts, trouble. There are translators who last saw this code 30 years ago. There are developers who shout at any foreign term that everyone is required to know English. And there is a market whose needs they are not able to satisfy. At best, publishers are looking for technical correctors among practicing professionals. And this is exactly what our .NET booth at the TechTrain festival faced .


TechTrain Community Booth

Indeed, an independent non-profit community - who can master this task better than him? People who write code every day, collect meetings, write articles on the hub, train future colleagues at schools and universities, aggressively invest in the creation and dissemination of Russian-language material on their favorite platform. This is a perfect symbiosis. The community needs quality translations of fundamental books. Publishers need demand for their product. Despite the fact that for us it was the first such experience, we grabbed the offer with excitement.

First of all, we contacted Konrad Kokosoy and received his blessing for translation (by the way, in the process we repeatedly turned to him for clarifications of non-obvious places and always received great support). Next, we have gathered fans of the author’s work, people who are familiar with the described processes firsthand. They were diluted by programmers-lovers of the Russian language and literature (yes, there are such). And they got an excellent team, ready for several months to devote themselves to the unexplored exploits of translation.

Difficulties


The first chapter showed that it’s not just a technical adjustment. We wanted to substantially redo the translation. And it was not as simple as it seems. For publishing houses, this practice is absent, because they face the risk of poor translation from obscure people. But we are lucky. After much discussion, the publishing house DMK-press agreed to arrange an experiment and give the transfer to our full disposal. For which we are extremely grateful to them. Therefore, this work is not only a translation of the book, but also an attempt to prove that the Russian version can be not only qualitative from a technical point of view, but also harmonious on the part of the language.

In most cases, the corrections were pretty obvious. Replace the "frame" with the "framework", the "call route" with the "call stack", and the "smart pointer" with the "smart pointer".

But there were snags. One such case was a couple of plug / gap . On the one hand, there is no established IT translation for these words. On the other hand, this is not the author’s fantasy. These words are used directly in the gc.cpp code . So, in the sense, plug is a continuous area in memory in which used objects are located, and gap is a gap between such areas.



At first, a pair of block / gap was used as a translation of these two words. But we decided that such a translation would not be adequately perceived by the reader. Therefore, we had to sacrifice brevity and introduce the concepts of “filled / empty block”.
True, pinned plugs appeared in the text, but nevertheless “fixed filled blocks” seems to sound better than “fixed blocks”.

Fortunately, there are not many such specific terms in the book. Basically, nevertheless, there were quite well-known descriptor, handle, value type, reference type and others. It would seem that all these terms have long been translated, however, disagreements arose with them.

Descriptor literally translates to “descriptor”. But also handlealso often translated like that. Therefore, I had to translate descriptor literally “descriptor”, and handle became a “descriptor” (do not translate the same as “pen” - and this was found in some translations).

When solving translation issues, the big problem is the lack of a “reference” source. Such a source could be the site docs.microsoft.com/ru-ru . Unfortunately, not all articles on it have been translated and verified. Therefore, we tried to use this resource as a source only if we saw that a specific page was translated manually.

When editing a book of nearly 1,000 pages, a separate challenge is to achieve the same terms in all chapters. Since the group was involved in editing, the chapters were not processed in order, and sometimes it happened to use slightly different terms in different chapters. Undoubtedly, the general glossary of terms helped a lot, but this did not cancel the need for the final proofreading of all chapters in a row and reconciliation of all terms.


In the photo, the author of a book with one of the translators

Conclusion


Thanks to all those who made this project a reality. Of course, Konrad for his original work and for helping in the Russian version of the book. Anyone who supported the real revolution inside the publishing house and is ready to go for experiments.

Our friendly team that makes the world better for free, namely:

  • Igor Labutin
  • Irina Ananyeva
  • Maxim Shoshin
  • Elizabeth Golenok
  • Evgeny Bikkinin
  • Renat Taziev
  • Anatoly Kulakov

And of course to you, readers, for the sake of which all this was started.

25% discount code : DotNet25 .

You can order a book on the publisher’s website .

And we also created a telegram chat . Here you can chat with translation editors, ask your questions, explain why and how much we were wrong, or simply debate on the topic of translations and community participation in such activities.

All Articles