HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: c#, разработка, программирование на с#, итерация, создание крупных проектов</p>
1 <p>Теги: c#, разработка, программирование на с#, итерация, создание крупных проектов</p>
2 <p>Крупные проекты не появляются на пустом месте. Написать в самом деле<strong>большую и сложную программу</strong>сразу не получится. Однако выход есть!</p>
2 <p>Крупные проекты не появляются на пустом месте. Написать в самом деле<strong>большую и сложную программу</strong>сразу не получится. Однако выход есть!</p>
3 <h2>Разделяй и повторяй</h2>
3 <h2>Разделяй и повторяй</h2>
4 <p>Лучше всего это правило продемонстрировать на примере. Представим, вы хотите написать программу для решения головоломки Судоку. Чтобы навёл камерой на журнал Судоку и сразу увидел ответ. Круто? Было бы классно. Как написать такую программу?</p>
4 <p>Лучше всего это правило продемонстрировать на примере. Представим, вы хотите написать программу для решения головоломки Судоку. Чтобы навёл камерой на журнал Судоку и сразу увидел ответ. Круто? Было бы классно. Как написать такую программу?</p>
5 <p>Сначала нужно разделить её на множество подзадач как технических, так и алгоритмических: - как получить фото с камеры? - как его сделать чёрно-белым? - как выделить область с Судоку? - как распознать цифры? - как решить головоломку? - как показать результат? - как запустить это всё на телефоне?</p>
5 <p>Сначала нужно разделить её на множество подзадач как технических, так и алгоритмических: - как получить фото с камеры? - как его сделать чёрно-белым? - как выделить область с Судоку? - как распознать цифры? - как решить головоломку? - как показать результат? - как запустить это всё на телефоне?</p>
6 <p>Далее необходимо в "лабораторных" условиях разобраться с каждым пунктом. Это значит - найти способ решения каждой подзадачи, хорошенько "погуглить", сделать тестовый проектик и реализовать указанный функционал по принципу "лишь бы заработало": только для того, чтобы поставить галочку, что ты понял, как это делается и что у тебя есть<strong>рабочий пример</strong>.</p>
6 <p>Далее необходимо в "лабораторных" условиях разобраться с каждым пунктом. Это значит - найти способ решения каждой подзадачи, хорошенько "погуглить", сделать тестовый проектик и реализовать указанный функционал по принципу "лишь бы заработало": только для того, чтобы поставить галочку, что ты понял, как это делается и что у тебя есть<strong>рабочий пример</strong>.</p>
7 <h2>Следующий этап</h2>
7 <h2>Следующий этап</h2>
8 <p>Когда все части реализованы, начинается самое интересное -<strong>создание полной программы</strong>. Не нужно ставить перед собой задачу сделать суперправильное архитектурное решение. Просто пиши, чтобы работало: - вызывай модуль фотографирования, делай фотку чёрно-белой; - находи область задачки, запускай распознавание; - вычисляй решение и показывай его на экране.</p>
8 <p>Когда все части реализованы, начинается самое интересное -<strong>создание полной программы</strong>. Не нужно ставить перед собой задачу сделать суперправильное архитектурное решение. Просто пиши, чтобы работало: - вызывай модуль фотографирования, делай фотку чёрно-белой; - находи область задачки, запускай распознавание; - вычисляй решение и показывай его на экране.</p>
9 <p>На данном этапе не стоит отвлекаться на оптимизацию, проверку данных, универсальность. Твоя задача - сделать так,<strong>чтобы программа могла отработать от начала до конца под твоим контролем</strong>.</p>
9 <p>На данном этапе не стоит отвлекаться на оптимизацию, проверку данных, универсальность. Твоя задача - сделать так,<strong>чтобы программа могла отработать от начала до конца под твоим контролем</strong>.</p>
10 <h2>Что дальше?</h2>
10 <h2>Что дальше?</h2>
11 <p>Когда всё это получится, тогда можно сделать "Reset" и начать создавать программу "с нуля", имея в запасе функционал для решения каждой подзадачи и<strong>опыт</strong>их совмещения.</p>
11 <p>Когда всё это получится, тогда можно сделать "Reset" и начать создавать программу "с нуля", имея в запасе функционал для решения каждой подзадачи и<strong>опыт</strong>их совмещения.</p>
12 <p>Опять же, не стоит слишком заморачиваться на универсальности и на оптимизации. Впрочем, вы и сами почувствуете, как лучше начать писать эту программу с определённой долей объектно-ориентированности и удобства использования.</p>
12 <p>Опять же, не стоит слишком заморачиваться на универсальности и на оптимизации. Впрочем, вы и сами почувствуете, как лучше начать писать эту программу с определённой долей объектно-ориентированности и удобства использования.</p>
13 <p>Когда и это будет завершено, вы наконец-таки поймёте, как программа на самом деле должна работать. И вот теперь можно и в самом деле начать её создавать. Да, снова "с нуля", используя все былые наработки.</p>
13 <p>Когда и это будет завершено, вы наконец-таки поймёте, как программа на самом деле должна работать. И вот теперь можно и в самом деле начать её создавать. Да, снова "с нуля", используя все былые наработки.</p>
14 <h2>Крупные проекты не создаются на пустом месте</h2>
14 <h2>Крупные проекты не создаются на пустом месте</h2>
15 <p>Необходимо сделать несколько<strong>итераций</strong>: от эскиза до прототипа и рабочего продукта. На каждой итерации продукт будет получаться<strong>более качественным и эффективным</strong>. Может, не всегда новая версия будет лучше прежней. Но при желании можно вернуться и к прошлой версии, ведь так?</p>
15 <p>Необходимо сделать несколько<strong>итераций</strong>: от эскиза до прототипа и рабочего продукта. На каждой итерации продукт будет получаться<strong>более качественным и эффективным</strong>. Может, не всегда новая версия будет лучше прежней. Но при желании можно вернуться и к прошлой версии, ведь так?</p>
16 <h2>Зачем начинать сначала?</h2>
16 <h2>Зачем начинать сначала?</h2>
17 <p>Чтобы избежать "монстров" и "колоссов", которые могут обрушиться, когда ещё неясно, как программа работает. Программисты любят создавать своё, а не разбираться в старом. И это прекрасно, если только позволяет бюджет. Разделяйте и повторяйте, и будет тебе счастье!</p>
17 <p>Чтобы избежать "монстров" и "колоссов", которые могут обрушиться, когда ещё неясно, как программа работает. Программисты любят создавать своё, а не разбираться в старом. И это прекрасно, если только позволяет бюджет. Разделяйте и повторяйте, и будет тебе счастье!</p>
18 <p><em>А как вы создаёте сложные программы? Пишите в комментариях!</em></p>
18 <p><em>А как вы создаёте сложные программы? Пишите в комментариях!</em></p>
19  
19