Что изучить, прочитать по разработке логики (алгоритма) работы будущей программы?
Коллеги, в подавляющем большинстве онлайн-курсов по программированию, а также в книжных самоучителях, новичкам предлагают сразу же окунуться в код, начать кодить. Но при этом никто не разъясняет о необходимости предварительной подготовки к кодированию. То есть, прежде чем начать писать код программы, нужно проработать алгоритм будущей программы, понять, что за чем следует, какие связи могут быть между функциями программы и т.п. Вот этому никто не учит. В результате новички бросаются кодить, пишут излишний код, неправильный код с неправильной логикой.
Вопрос: есть ли какие курсы, книги, сайты, обучающие предподготовке написанию кода? Что-то, что позволило бы сначала разработать логику программы, а потом писать код программы?
Спасибо.
Потому что вопросы проектирования архитектуры новичков в программировании не касаются. Сначала надо азбуку освоить и десятки тысяч раз написать "мама мыла раму", а уж потом за поэмы браться, образно говоря.
Спасибо.
Да, именно алгоритмизация интересует. Простой пример: задача, над которой сейчас работаю: скормить онлайн-переводчику все файлы из заданной папки, а перевод сохранить в другой папке. Вроде бы, общая логика очевидна: взять имена файлов, открыть их на чтение, прочитать в память, отправить на перевод, сохранить результат. Но до этой логики новичку надо ещё дойти, а ведь задачи могут быть и посложнее. Да и по этой задаче есть вопросы: а нужно ли использовать относительный путь к файлу или абсолютный, а как сохранить результат в новые файлы (добавлять ли к имени нового файла сокращение языка, на который осуществляется перевод (DE-Ru.txt, к примеру) и т.д. и т.п.
Отсюда и вопрос такой, который больше относится не к программированию как к таковому, а к построению логики работы программы.
P.S. помощь по моей задаче не нужна ;)))
GavriKos, алгоритмы не "прорабатываются заранее". В лучшем случае они подбираются и реализуются в процессе разработки, а чаще и после MVP, в процессе последующих рефакторингов.
akokin, я опять прибегну к иносказательности, вы находитесь на том уровне знания языка программирования, на котором находится средний школьник в знании английского языка - вроде словарный запас есть, формально знает правила, но правильно фразы строить не умеет. Это исправляется только практикой, желательно с носителем языка. Нигде этому не учат потому, что через год работы джуном оно становиться естественным и очевидным, вы вообще перестаёте задумываться о таких примитивных вопросах.
Сергей Горностаев, вы что, шутите? Процесс разработки - это внезапно реализация алгоритма. Ну или перенос алгоритма на соответствующий язык программирования.
akokin, ну у вас не совсем алгоритмизация тоже. Тут скорее еще декомпозиция и формулирование требований. Но этот этап в любом случае идет до разработки.
GavriKos, или можно сразу то же самое сделать в коде. Ну, если пишущий программу - не школьник, конечно. А UML использовать раньше, чем столкнулся с архитектурными вопросами - это уже совсем натягивание совы на глобус, как по мне.
GavriKos, или можно сразу то же самое сделать в коде. Ну, если пишущий программу - не школьник, конечно. А UML использовать раньше, чем столкнулся с архитектурными вопросами - это уже совсем натягивание совы на глобус, как по мне.
Так я ведь и задал вопрос, исходя из мнения "школьника", который как раз сейчас и обучается. Программируй то, что пока не понятно, как должно быть спрограммировано. Блок-схемы, да, очень в тему, спасибо.
akokin, это только моё мнение и я могу ошибаться, но просто пишите код и не заморачивайтесь. Я полезность форматирования и именования понял, когда кода стало много и в нём стало сложно разбираться. Пользу ООП понял, когда кода стало ещё больше и его стало сложно сопровождать. Пользу паттернов и архитектурный принципов понял, когда понадобилось код сопровождать годами и делить с другими программистами. Ко мне, как и к многим другим, теория "налипла" только поверх набитых синяков и шишек. Блок-схемы я вообще никогда не рисовал, если исключить контрольные по информатике.
Сергей Горностаев, спасибо за ваше мнение.
Просто начались задачи, когда прежде чем писать код, надо подумать, а что я хочу получить в итоге и как это реализовать.
Неудобно цитировать самого себя, но буквально пару дней назад в ответе не немного другой вопрос новичка уже давал свое видение ответа и на этот вопрос, который по сути можно переформулировать так : "Что лежит между знанием синтаксиса языка программирования и умением писать реальные программы" Как дальше продвигаться новичку в питоне?