Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Опечатки #116

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions book/ru/Memory/01-00-MemoryManagement-Intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Когда вы думаете о разработке любого .NET приложения до недавних пор можно было себе позволить считать, что приложение, которое вы делаете, будет всегда работать на одной и той же платформе: это операционная система Windows, запущенная поверх технологического стека Intel. Сейчас же с каждым прожитым днем мы входим в новую эпоху: платформа .NET стала поистине кроссплатформенной, пустив новые корни в сторону всех доступных настольных операционных систем. Это -- прекрасное время и наш долг сейчас не потерять нить и остаться востребованными специалистами. Ведь когда toolset становится кроссплатформенным, это означает что мы обязаны начать смотреть внутрь. Изучать, как работает двигатель нашей платформы. Чтобы понимать, почему тот ведет себя, так или иначе, на различных системах.

Вторая мысль, которую мне хотелось бы передать через страницы данной книги: даже если ваши сервера будут сверхпроизводительными. Даже если они будут настолько быстрыми, что будет казаться, что оптимизации -- последнее дело, о котором стоит думать... Вы всё равно начнёте оптимизировать код. Вспомните: когда-то всем известный системный программист Билл Гейтс сказал, что 640 Кб памяти должно хватить любому. И на тот момент это было правдой. И на тот момент если скажи любому, что через каких-то 20 лет один компьютер сможет заменить несколько тысяч серверов того времени, вам бы сказали: в ваше время производительность настолько высокая, что над оптимизацией наверняка не стоит даже задумываться. Но что мы видим? Всё большее количество людей уходит в онлайн. Всё большее количество людей начинает пользоваться смартфонами и как следствие -- онлайн торговлей. А этим системам чтобы выдерживать всё нарастающие нагрузки хочется сэкономить: арендовывать меньшее количество серверов при всё нарастающих потребностях. И поверьте: эпоха сети Интернет только взяла старт: в прошлое уйдёт население, не принимающее современных технологий, а на смену ему придёт поколение, не знающее другого пути. И даже если серверные системы будущего будут выдерживать нагрузки в 1,000 раз большие.. Конечно же сайты "попроще" могут быть написаны как угодно плохо... Но если ваша цель -- работать в компаниях топового уровня, оптимизацией вы будете заниматься всегда.
Вторая мысль, которую мне хотелось бы передать через страницы данной книги: даже если ваши сервера будут сверхпроизводительными. Даже если они будут настолько быстрыми, что будет казаться, что оптимизации -- последнее дело, о котором стоит думать... Вы всё равно начнёте оптимизировать код. Вспомните: когда-то всем известный системный программист Билл Гейтс сказал, что 640 Кб памяти должно хватить любому. И на тот момент это было правдой. И на тот момент если скажи любому, что через каких-то 20 лет один компьютер сможет заменить несколько тысяч серверов того времени, вам бы сказали: в ваше время производительность настолько высокая, что над оптимизацией наверняка не стоит даже задумываться. Но что мы видим? Всё большее количество людей уходит в онлайн. Всё большее количество людей начинает пользоваться смартфонами и как следствие -- онлайн торговлей. А этим системам чтобы выдерживать всё нарастающие нагрузки хочется сэкономить: арендовать меньшее количество серверов при всё нарастающих потребностях. И поверьте: эпоха сети Интернет только взяла старт: в прошлое уйдёт население, не принимающее современных технологий, а на смену ему придёт поколение, не знающее другого пути. И даже если серверные системы будущего будут выдерживать нагрузки в 1,000 раз большие.. Конечно же сайты "попроще" могут быть написаны как угодно плохо... Но если ваша цель -- работать в компаниях топового уровня, оптимизацией вы будете заниматься всегда.

[>]: Касательно этого вопроса, конечно же, может существовать множество мнений. Однако, как опыт так и статистика по зарплатам на различных порталах говорит нам о том, что вектор развития индустрии именно такой.

Expand All @@ -16,6 +16,6 @@

Первым делом мы обоснуем алгоритмистику управления памятью внутри кучи .NET. Т.е. докажем, что она построена правильно. Это будет как часть введения, тренировки ума и программа принятия того, до чего у многих не доходили руки. Далее мы проследуем в описание особенностей устройства и организации работы с памятью. Зачем? Слово "Организация" имеет цену. Выделить память - время. Освободить память - время. На всё нужно время: и прежде всего время нужно нам самим. Жаль, у профилировщиков нет метрики: сколько времени работал Garbage Collector. Я думаю, эта цифра бы заставила многих задуматься. И, нет. Вовсе не о смене языка или платформы. Тут у нас как раз-таки всё просто замечательно. А о том, как можно работать иначе. Чтобы это время стало нашим.

Язык не даёт производительности. Производительность даёт компилятор. Знаете.. Не испротить можно, пожалуй, только язык `asm`. Потому что это - язык процессора. А вот всё что выше можно написать как аккуранто относясь к деталям, так и в качестве студенческого проекта "чтобы не влепили неуд". Второе, что даёт производительность - наш ум. Если вы влепим в цикл `LINQ` выражение, создающее, например, по 4 аллокации благодаря использованию замыкания, то нечего удивляться, что на 100,000 итераций цикла создаётся около 4-6 Мб траффика из ниоткуда + 1-2 GC. Если переписать под `for()`, то картина в корне поменяется. Другими словами, профессионал знает инструмент, которым он работает. Проблематику некоторых аспектов языка программирования, платформы, операционной системы и оборудования.
Язык не даёт производительности. Производительность даёт компилятор. Знаете.. Не испортить можно, пожалуй, только язык `asm`. Потому что это - язык процессора. А вот всё что выше можно написать как аккуратно относясь к деталям, так и в качестве студенческого проекта "чтобы не влепили неуд". Второе, что даёт производительность - наш ум. Если вы влепим в цикл `LINQ` выражение, создающее, например, по 4 аллокации благодаря использованию замыкания, то нечего удивляться, что на 100,000 итераций цикла создаётся около 4-6 Мб траффика из ниоткуда + 1-2 GC. Если переписать под `for()`, то картина в корне поменяется. Другими словами, профессионал знает инструмент, которым он работает. Проблематику некоторых аспектов языка программирования, платформы, операционной системы и оборудования.

Далее мы поговорим про практику. В разделе практики мы будем учиться писать максимально производительный код. Будем выжимать всё возможное из тех инструментов, которые у нас есть и учиться применять их тогда, когда это делать своевременно.
Loading