Найти тему
Просто программист

Как делают большие программы?

Не так.
Не так.

Как и обещал в статье "Рабочий день программиста. Как это выглядит" , рассмотрим как все это работает.

По данным из Википедии в
Windows XP было 45 000 000 строчек кода. Думаю, что код последней версии Windows 10 занимает еще больше. В считающемся у нас мерилом текстового объема эпосе Л.Н. Толстого "Войне и Мире" количество символов равно 2 966 547. Это просто символов, а не строчек. Вспомните, сколько времени у вас заняло прочтение этого произведения. И это книга, которую вы читаете последовательно.

А теперь представьте, программу невозможно читать последовательно. Иногда вам нужно перемещаться между её частями, чтобы понимать, к чему та или иная часть поставлена здесь и что вообще она значит. Чтение программы, скорее напоминает чтение на придуманном языке, где каждая новая строчка может ввести новое слово или переопределить старое.

Взяв все эти факты вместе складывается вопрос, КАК?

Ответ на этот вопрос и простой и сложный одновременно. Но самое главное, что нужно понимать. Средств, которые позволяют успешно разрабатывать огромные программы несколько:

1. Системы контроля версий.

Это такая специальная программа, в которой вы можете сливать вместе несколько кусков кода, при этом она покажет вам, какие изменения вы внесли, сохранит предыдущую рабочую версию, и поможет в случае чего удалить лишние изменения. Вдобавок ко всему, эти изменения может посмотреть любой программист из любого конца света и помочь вам отыскать ошибки, а может даже исправить их вместо вас.

2. Архитектура кода

Если вы когда-либо программировали, то наверное помните, что вся программа умещалась в один файл. Сложные продукты так, конечно не пишут. Будь 45 миллионов строк в одном файле, можно было бы считать успехом просто то что он открылся в текстовом редакторе, а уж компьютер, который позволял бы с успехом в нем что-то изменять всяко стоил бы немалых денег.

Так вот. Программисты разбивают программу на небольшие файлы, каждый из которых отвечает за свою функцию. Звучит просто, но на самом деле умение правильно разделить участки кода на части тренируется годами и во многом отличает хорошего программиста от плохого. Это действительно сложно, хотя бы потому, что тут нельзя просто вырезать просто случайные куски алгоритмов и вставить их в другой файл. Нужно, чтобы любой такой участок кода был сам по себе автономной программой, которая может уметь встраиваться в разные еще не написанные участки других программ, которые пока что есть только в планах, да и то не в ваших. Вот это умение предугадать будущее и заключает в себе весомую часть сложности. Но если вы обладаете этим умением, то дописывать вашу программу будет легко, даже если в ней миллиард строчек кода.

3. Среды разработки

Попробуйте открыть программу в обычном текстовом редакторе и что-то поменять. Правильно ли вы сделали изменение? Можете ответить на такой вопрос? Думаю, что, если вы не программировали никогда, то нет. Но вот попробуйте открыть программу в среде разработке, и, если ваши изменения неправильные, то среда разработки очень быстро вам на это укажет. Но не подумайте, что это просто такой Word для программистов. Эта штука умеет подсказывать, какие куски из уже написанной программы, вы можете использовать, какие переменные вы создали, как оптимальнее написать отрезок кода, чтобы было удобнее читать его и многие другие вещи. По сути, в хорошей среде программирования разработка превращается в конструирование, и это очень приятное ощущение. Моя любимая среда программирования Visual Studio 2017. Но есть и многие другие не менее хорошие.

4. Современные языки программирования

Этот пункт последний по порядку, но не по значению. Современные языки программирования позволяют удобно разделять вашу программу на маленькие понятные участки. Чем удобнее делать это в языке, тем приятнее на нем писать. Никакая среда разработки, система контроля версий и архитектура не поможет вам делать код понятным, если этого не позволяет сам язык.

Если вам интересно, как все эти четыре пункта работают вместе в динамике, то напишите об этом. Постараюсь коротко показать это на примере. А в следующей статье поговорим о заработках C# разработчиков и про всякие образовательные курсы.