LINUX.ORG.RU

История изменений

Исправление CrX, (текущая версия) :

Не пойму, тебе редактор блок-схем нужен, или научиться продумывать архитектуру?

Если редактор, то в Dia можно их делать.

Если же…

Хотелось бы услышать опытных программистов как это происходит у них? Неужели весь алгоритм программы они держат в голове? И чтобы при этом не свихнутся… Или сначала чертят графический алгоритм в какой-то программе и затем уже пишут код..?

Я не черчу, и не знаю никого, кто всерьёз бы чертил.

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

Это не требуется. Если программа не примитивная, а просто простая, она делится на примитивные подзадачи — их совокупность можно удержать в голове, а в каждый момент работать над каждой конкретной. Если программа не простая, а сложная, то она делится на простые подзадачи — их совокупность удерживается в голове. При работе над отдельной простой задачей она тоже удерживается в голове, как и одна конкретная примитивная под-под задача. И так далее, для очень сложных программ, состоящих из сложных задач, а также очень-очень сложных программ…

В общем, разделяй и властвуй.

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

Когда ты работаешь над функцией, которая рассчитывает тебе длину отрезка, соединяющего точки с координатами (x1, y1) и (x2, y2), тебе совершенно не нужно держать в голове, что вообще делает вся остальная программа. Ты реализуешь этот рассчёт расстояния. Когда ты её реализовал, то размышляя над тем, как построить алгоритм основной программы, ты располагаешь функцией рассчёта расстояния — принимающей эти координаты и возвращающей расстояние — тебе совершенно не нужно держать в голове, как она реализована внутри — она для тебя теперь «просто есть» и является эдаким кирпичиком алгоритма, внутреннее устройство которого не имеет значения.

Для этого всего у тебя есть процедуры и функции (из которых ты можешь вызывать другие процедуры и функции). Для этого у тебя есть ООП с иерархией, наследованием и т.д. Для этого у тебя есть функции высшего порядка, есть каррирование. Всякие штуки вроде генераторов, декораторов. В зависимости от языка, в общем.

Если у тебя на каком-то уровне абстракции, какая-то функция стала настолько сложной, что её не удаётся удержать в голове, то тут то ли голова дырявая, то ли надо на более простые части стараться разделить — это почти всегда возможно.

Исходная версия CrX, :

Не пойму, тебе редактор блок-схем нужен, или научиться продумывать архитектуру?

Если редактор, то в Dia можно их делать.

Если же…

Хотелось бы услышать опытных программистов как это происходит у них? Неужели весь алгоритм программы они держат в голове? И чтобы при этом не свихнутся… Или сначала чертят графический алгоритм в какой-то программе и затем уже пишут код..?

Я не черчу, и не знаю никого, кто всерьёз бы чертил.

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

Это не требуется. Если программа не примитивная, а просто простая, она делится на примитивные подзадачи — их совокупность можно удержать в голове, а в каждый момент работать над каждой конкретной. Если программа не простая, а сложная, то она делится на простые подзадачи — их совокупность удерживается в голове. При работе над отдельной простой задачей она тоже удерживается в голове, как и одна конкретная примитивная под-под задача. И так далее, для очень сложных программ, состоящих из сложных задач, а также очень-очень сложных программ…

В общем, разделяй и властвуй.

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

Для этого у тебя есть процедуры и функции (из которых ты можешь вызывать другие процедуры и функции). Для этого у тебя есть ООП с иерархией, наследованием и т.д. Для этого у тебя есть функции высшего порядка, есть каррирование. Всякие штуки вроде генераторов, декораторов. В зависимости от языка, в общем.