Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Флейм > Нужныли блок-схемы? |
Автор: Nastya 10.9.2002, 16:50 |
Нужно ли людям, начинающим изучать программирование изучать блок-схемы? |
Автор: TwoK 10.9.2002, 18:49 |
Начинающим, я думаю, - да. Чтобы алгоритм был нагляден. Людям, которые уже три года программируют - нет. [По мотивам обучения на четвертом курсе] ![]() |
Автор: Alex101 10.9.2002, 19:19 | ||
Думаю, они только усложнят переход на настоящий язык программирования. Лучше объяснять алгоритмы на каком-нибудь формальном языке, приближенном к реальному... |
Автор: Chingachguk 10.9.2002, 21:12 | ||
Нет, ибо существуют алгоритмы, которые не выразить в блок-схемах. Например, события по прерываниям. |
Автор: Wowa 10.9.2002, 22:02 |
Самым начинающим - нужны. Но только не надо на них долго останавливаться. Их просто надо изучуть и составить с ними несколько программ. Не более. |
Автор: podval 10.9.2002, 22:23 | ||||||
Как бы не так! С точки зрения программера-одиночки оно, конечно, может быть и так. Но у ГОСТа другое мнение ![]() Т.н. "блок-схемы" (название не стандартизированное, в ГОСТе называется по-другому) являются неотъемлемой частью программной документации, поясняющей работу программы/программного комплекса. Блок-схемы обязаны присутствовать в пояснительной записке к проекту (см. ГОСТ 19-й серии - единая система программной документации).
Такое впечатление создается, потому что в школе и вузах учат рисовать только один тип "блок-схем". На самом деле их множество. Ссылаюсь на ту же серию ГОСТ. Там найдете, что бывают схемы данных, схемы взаимодействия программ и т.д. Эх, господа программирующие 3 года и более! ![]() ![]() |
Автор: Vit 10.9.2002, 23:50 |
Нет я категорически не согласен, что опытным программистам они не нужны. В них нет необходимости если ты пишешь пасьянс или Notapad, а если разрабатывается серьезный проект включающий в себя десяток серверов, десяток баз данных, сотню разных exe, тысячи объектов и т.п. и разрабатывать это должен коллектив из десятка (сотни) программистов, то без блок-схемы всего проекта и каждой части через неделю после начала разработки будет полный хаос - половина программистов будет делать не то что надо, 90% модулей будет иметь несопоставимые интерфейсы, 50% состыкованных модулей будут иметь противоречивую лолгику работы и т.д. Через несколько месяцев разработки 95% времени програмистов будет тратится на согласование действий, логики, интерфейсов, а не на программирование. Я не знаю как в России, но в США 95% проектов именно такого свойства, и перед тем как написать первую строчку кода зачастую тратится 2-3 месяца на написание блок схемы всего проекта и каждого модуля, описание интерфейсов всех классов, описание что должен делать каждый метод и процедура и их внутренняя логика, после этого от программистов требуется только следовать документации - это позволяет легко распределить работу между любым колличеством программистов и на несколько порядков уменьшает вероятность появления несогласованности в работе разных модулей. А тестеры такого проекта смогут быстро локализовать модуль, в котором есть ошибка. |
Автор: TwoK 11.9.2002, 00:22 |
Как вы все меня не так поняли ![]() Я имел в виду именно то, что после трех лет обучения С нам буквально начинали заново вдалбливать блок-схемы. Не требовать их рисовать. Не требовать прилагать их к программе на С - это все понятно, это действительно надо. Ровно 2 семестра мы, с позволения сказать, дружили с ларьком, потому что не могли это слушать. Нам снова и снова рассказывали, как пишется "начало" или почему нельзя написать i++ и так далее. ЕЩЕ РАЗ. ТО ЖЕ САМОЕ. Понимаете, это именно "дыра" в схеме образования или в программе образования или в чем там еще. Когда по второму разу начинают рассказывать то же самое. В общем, обобщив все что я тут написал: не нужно рассказывать, что такое блок-схема человеку, который уже умеет писать программы. Ибо он через это уже прошел. |
Автор: Vit 11.9.2002, 01:17 | ||
Это точно, судя по эмоциональному накалу, тебя ими здорово достали! Но в общем схемы то на то и схемы, что изучить их легко и просто не могу представить что там можно учить дольше 1-2 часов... |
Автор: Fantasist 11.9.2002, 13:36 |
Так, господа, а что UML никто не пользуется? Правильно Vit сказал, в больших проектах, да еще и со множеством участников без выразительного плана проекта будет очень много кусочков у которых непонятно откуда растет голова. |
Автор: Vit 11.9.2002, 23:44 | ||
Пользуются, правда в основном серьёзные дяди с зарплатой в $150-$200 тыс. год... А мы так, на уровне пользователей... ![]() ![]() ![]() ![]() ![]() |
Автор: podval 11.9.2002, 23:50 |
Вряд ли обычные программеры ("кодировщики", как их называют некоторые боссы) пользуются UML. Если и пользуются, то это, скроее, исключение из правила. Это совсем другой уровень, это разработка идеологии всей системы. И занимаются этим т.н. проект-менеджеры (Project Manager) или как минимум руководители групп пограммистов (Team Leader) или, не знаю как назвать, системные аналитики, что ли. Или, по крайней мере, должны заниматься. У нас на фирме пока только говорят о том, как мы хорошо можем жить, если использовать UML. Хотя, если мне не изменяет мой склероз, ISO рекомендует это делать. |
Автор: TwoK 12.9.2002, 02:41 |
Хотел тут написать... и даже написал... но потом подумал, что лучше промолчу. ЗЫ. Это по поводу "мы на уровне пользователей" ![]() |
Автор: Devos 12.9.2002, 04:28 |
а что такое блок-схемы? |
Автор: Vit 12.9.2002, 04:38 | ||
Не совсем они, скорее Software Architect Engeneers, System Analysts, Software Engineering Managers потому что Project Manager отвечает за весь проект в целом, т.е. большую часть его времени занимает администрирование, а Team Leader - это просто главный программист проекта, во многих случаях он со своей командой начинает работать когда архитектура и дизайн проекта уже разработаны полностью. Здесь можно посмотреть описание должностей в США: http://swz-yahoo.salary.com/salarywizard/layoutscripts/swzl_jobdesc.asp?narrowcode=IT05&geo=the%20United%20States&metrocode=NullString&narrowdesc=IT%20--%20Computers%2C%20Software&zipcode=MI&jobcode=IT10000071 |
Автор: podval 12.9.2002, 20:15 | ||
А таких у нас и в помине нет ![]() А может и ![]() Системные аналитики (System Analysts) встречались. А Team Leader' ов у нас заставляют работать на UML, именно архитектуру системы придумывать. |
Автор: podval 12.9.2002, 20:23 | ||
Это схемы, "...используемые для отображения различных видов задач обработки данных и средств их решения". (см. ЕСПД ГОСТ 19.701-90). В интерпретации автора темы имеются в виду, скорее всего, схемы алгоритмов. А вообще различают схемы данных, схемы программ, схемы работы системы, схемы взаимодействия программ, схемы ресурсов системы. Это если опираться на тот же ГОСТ. Вообще полезно иногда заглядывать в ГОСТ http://www.nist.ru/hr/doc/gost/gost19.htm |
Автор: Vex 13.9.2002, 04:49 |
Меня тоже эти блок-схемы так достали !!! В школе одно и тоже, каждый алгоритм заставляли выражать блок-схемами, мне намного проще код написать, а учитель знал это и специально меня заставлял рисовать эти схемы, от зараза. Поступил в универ, а на первой паре по информатике опять те-же мои любимые схемы. Так что меня тоже достали повторением и повторением блок-схем. Интерестная особенность: когда кто-то из преподов (в школе, универе и т.д) пытается объяснить блок-схемы, то фантазия у них не доходит дальше чем до квадратного уравнения, абсолютно все рисовали схему алг. кв. уравнения. ![]() |
Автор: Devos 13.9.2002, 04:54 |
значит это меня тоже ждет........... а кто линку знает по блок-схемам? |
Автор: Devos 13.9.2002, 04:55 |
кроме гостов, конечно...... |
Автор: simanyay 2.10.2002, 00:12 |
Хотел бы спросить у крутых программеров с 3 летнем стажем на уровне пользователей, смогли бы они написать ОС без точного анализа и рисования блок-схем? Да и ещё - можно долго мучаться пытаясь найти алгоритм (самый оптимальный и краткий) для нахождения кратчайшего пути авиа перелётов (А такие проги стоят немало), а можно использовать алгоритм Дейкстры и ему подобные. Короче, если собрался серьёзно заниматься программированием (Поясняю: написание Hello World'а не является серьёзным программированием ![]() |
Автор: Chingachguk 2.10.2002, 00:31 | ||
Почему ты так считаешь ? Ты сам писал ОСь или какой-нибудь крупный проект и при этом выяснилось, что без блок-схем - никак ? |
Автор: simanyay 2.10.2002, 00:41 |
Я не писал, я ещё учусь, но мой близкий друг (программер с 8 летним стажем) писал оболочку под Юникс для расчитывания кратчайших путей авиа перелётов из Ташкента и наоборот (Для сдешнеё авиа компании) Так вот после двух месяцев "кодинга" (когда абсолютно ничего не получилось) они сели и за полтора месяца нарисовали полную блок схему, для каждого модуля. Здесь то как раз и нашлись почти все их ошибки. После этого всё пошло как по маслу и программа была написана.(Хотя её хотели уже передать другой группе) Так, что уменя есть некий жизненный опыт, чтобы утверждать правильность блок-схем. |
Автор: simanyay 2.10.2002, 00:43 |
Извините за ошибку (не "сдешнеё" ![]() ![]() |
Автор: Chingachguk 2.10.2002, 00:51 |
Ну, может ты и прав... Хотя могло быть и просто написание документации (а это не блок-схемы)...что приводит к рассеиванию тумана в голове... ЗЫ: не "сде", а "зде" ;) |
Автор: Kesh 2.10.2002, 10:20 |
Ну, блин, не знаю я кто крутой программер, а кто нет... Но лично я перед тем как сесть за компьютер задачку обязательно рисую... не составляю блок схему, а именно рисую... Вот такая дурная привычка... :0) |
Автор: Vit 2.10.2002, 11:27 | ||
Я тоже довольно часто, но иногда мне лень, начинаю писать без блок схемы, а потом себя очень грязно ругаю - примерно так через неделю другую, когда количество процедур, модулей и классов переваливает за вторую сотню.... |
Автор: Grey 2.10.2002, 17:45 |
Я уже ответил и повторю еще раз, по моему мнению блок-схемы не нужны. Но это совсем не значит что программу не нужно проектировать, это нужно делать обязательно. Просто мне UML больше нравится, вот и все. При чем иногда намного важнее отобразить связи между классами, чем их поведение, иногда наоборот. |
Автор: cosmic 5.10.2002, 18:18 |
подскажите, UML - это программа "перевода" блок-схем в код? |
Автор: Vex 5.10.2002, 21:46 | ||
UML - это язык, который предназначен для проектирования програмного обеспечения, позволяет спроектировать объекты, а также связи между ними. |
Автор: cosmic 5.10.2002, 22:20 |
а есть прграммы для перевода блок-схем в код? |
Автор: Vit 6.10.2002, 01:37 | ||
Есть - программист называется ![]() Вообще-то это сделать по-моему по определению нельзя, такие штуки пытались разработать - например тот же PowerBuilder, но они с треском развалились. Но есть программы переводящие схемы баз данных в реальные базы данных - ты рисуешь схему базы данных со всеми зависимостями, а потом нажимаешь кнопку и база данных строится автоматично - создаются таблицы, ключи, индексы... |
Автор: cosmic 6.10.2002, 04:41 |
а каковы причины неуспеха? и почему это, "по определению нельзя"? очень интересно. казалось бы, совсем наоборот... такой замечательный "челендж"... ведь и блок-схема и язык служат для описания алгоритма (я вообще-то не очень хорошо с этой темой знаком), так почему из языка получается executable, а из блок-схемы один "треск"? |
Автор: Vit 6.10.2002, 06:16 |
Да потому что от чертежа до конкретной реализации очень и очень далеко. Конечно, если ты каждый if в схему вставишь и каждую переменную, тогда да, но обычно схема даёт некоторый уровень обстрагирования от реалий. Например я могу написать(с UML я не знаком, а квадратики писать в текстовом режиме геморройно, поэтому напишу просто по пунктам): 1) достаём данные из таблицы Х по критерию Y 2) на основе этих данных делаем репорт 3) репорт посылаем по факсу Для блок схемы этого достаточно - здесь никаких ветвлений, всё прямо. А конкретная реализация? Пункт первый - как коннектимся к базе?, а база локальная или нет? А выборка 10 записей или 10000? Пункт второй - делаем репорт чем? Пункт третий - посылаем по факсу как? В зависимости от конкретных обстоятельств реализация этого алгоритма может занять от часа до полугода работы. |
Автор: neutrino 7.10.2002, 19:54 |
Здравствуйте. Мое мнение по теме таково: для трудных задач, таких как транспортная задача (тут господин simanyay приводил пример), это нужно. Ну а для того, чтобы решить квадратное уравнение - нет. А про перевод в программный код, скажу, что это возможно для математических задач, т.к. в них нет надобности в каких-нибудь функциях типа установить_соединение(). Ну а тот пример, что Vit привел, конечно не реально перевести. |
Автор: Wowa 7.10.2002, 20:57 |
А для простых задач тоже нужны. При решении любой задачи блок-схемы строятся в голове у человека, а при решении сложных задач в голове все держать трудно, поэтому и рисуют где-нибудь. |
Автор: Grey 8.10.2002, 00:18 | ||
Подобные программы есть для UML, напримар та же RationalRose, но о качестве перевода сказать ничего не могу это надо посмотреть. |
Автор: simanyay 8.10.2002, 01:28 |
Я считаю, что для решения уравнения не нужно и программировать ведь, его так решить легче. А если используешь его в программе, то вероятно это не маленькая програмка, а хоть средняя. И в этом случае блок-схема нужна. |
Автор: Grey 8.10.2002, 02:01 | ||
Есть уравнения которые можно решить только численными методами, то есть программно. Изначально программисты только этим и занимались. Решение уравнения это некий алгоритм вот его как раз и можно и нужно выразить блок-схемой или как-то еще. Вот ты приводил пример задачи нахождения оптимального пути. Это по сути задача линейного программирования и формулируется она грубо говоря одним уравнением. |
Автор: neutrino 9.10.2002, 23:11 |
Под "квадратным уравнением" я пытался выразить элементарную задачу, наверное это у меня не получилось. Конечно для решений некоторых уравнений нужно составлять блок схемы, а затем и программы. Уж весь этот симплекс то точно на бумаге, больше 10 условий по 10 переменных в каждом, без программы не решишь. Кстати, я сейчас как раз занимаюсь написанием компонента для построения блок-схем на Delphi. |