Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Флейм > Нужныли блок-схемы?


Автор: Nastya 10.9.2002, 16:50
Нужно ли людям, начинающим изучать программирование изучать блок-схемы?

Автор: TwoK 10.9.2002, 18:49
Начинающим, я думаю, - да. Чтобы алгоритм был нагляден.

Людям, которые уже три года программируют - нет.
[По мотивам обучения на четвертом курсе] :D

Автор: Alex101 10.9.2002, 19:19
Цитата(Nastya @ 10.9.2002, 09:50)
Нужно ли людям, начинающим изучать программирование изучать блок-схемы?

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

Автор: Chingachguk 10.9.2002, 21:12
Цитата

Nastya Дата сообщения: 10.9.2002,09:50
Нужно ли людям, начинающим изучать программирование изучать блок-схемы?


Нет, ибо существуют алгоритмы, которые не выразить в блок-схемах. Например, события по прерываниям.

Автор: 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
Как вы все меня не так поняли :D

Я имел в виду именно то, что после трех лет обучения С нам буквально начинали заново вдалбливать блок-схемы. Не требовать их рисовать. Не требовать прилагать их к программе на С - это все понятно, это действительно надо. Ровно 2 семестра мы, с позволения сказать, дружили с ларьком, потому что не могли это слушать. Нам снова и снова рассказывали, как пишется "начало" или почему нельзя написать i++ и так далее. ЕЩЕ РАЗ. ТО ЖЕ САМОЕ. Понимаете, это именно "дыра" в схеме образования или в программе образования или в чем там еще. Когда по второму разу начинают рассказывать то же самое.

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

Автор: Vit 11.9.2002, 01:17
Цитата(TwoK @ 10.9.2002, 08:22)
В общем, обобщив все что я тут написал: не нужно рассказывать, что такое блок-схема человеку, который уже умеет писать программы. Ибо он через это уже прошел.

Это точно, судя по эмоциональному накалу, тебя ими здорово достали! Но в общем схемы то на то и схемы, что изучить их легко и просто не могу представить что там можно учить дольше 1-2 часов...

Автор: Fantasist 11.9.2002, 13:36
Так, господа, а что UML никто не пользуется?

Правильно Vit сказал, в больших проектах, да еще и со множеством участников без выразительного плана проекта будет очень много кусочков у которых непонятно откуда растет голова.

Автор: Vit 11.9.2002, 23:44
Цитата(Fantasist @ 10.9.2002, 21:36)
Так, господа, а что UML никто не пользуется?

Пользуются, правда в основном серьёзные дяди с зарплатой в $150-$200 тыс. год... А мы так, на уровне пользователей... :D  :D  :D  :D  :D

Автор: podval 11.9.2002, 23:50
Вряд ли обычные программеры ("кодировщики", как их называют некоторые боссы) пользуются UML. Если и пользуются, то это, скроее, исключение из правила. Это совсем другой уровень, это разработка идеологии всей системы. И занимаются этим т.н. проект-менеджеры (Project Manager) или как минимум  руководители групп пограммистов (Team Leader) или, не знаю как назвать, системные аналитики, что ли. Или, по крайней мере, должны заниматься. У нас на фирме пока только говорят о том, как мы хорошо можем жить, если использовать UML. Хотя, если мне не изменяет мой склероз, ISO рекомендует это делать.

Автор: TwoK 12.9.2002, 02:41
Хотел тут написать... и даже написал... но потом подумал, что лучше промолчу.

ЗЫ. Это по поводу "мы на уровне пользователей" :D

Автор: Devos 12.9.2002, 04:28
а что такое блок-схемы?

Автор: Vit 12.9.2002, 04:38
Цитата(podval @ 11.9.2002, 07:50)
И занимаются этим т.н. проект-менеджеры (Project Manager) или как минимум  руководители групп пограммистов (Team Leader) или, не знаю как назвать, системные аналитики, что ли.

Не совсем они, скорее 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
Цитата
скорее Software Architect Engeneers, System Analysts, Software Engineering Managers

А таких у нас и в помине нет  :)
А может и  :(
Системные аналитики (System Analysts) встречались.
А Team Leader' ов у нас заставляют работать на UML, именно архитектуру системы придумывать.

Автор: podval 12.9.2002, 20:23
Цитата(Devos @ 11.9.2002, 21:28)
а что такое блок-схемы?

Это схемы, "...используемые для отображения различных видов задач обработки данных и средств их решения". (см. ЕСПД ГОСТ 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'а не является серьёзным программированием :D ) Блок-схемы надо учить обязательно.

Автор: Chingachguk 2.10.2002, 00:31
Цитата

simanyay Дата сообщения: 01.10.2002,17:12
Хотел бы спросить у крутых программеров с 3 летнем стажем на уровне пользователей, смогли бы они написать ОС без точного анализа и рисования блок-схем? Да и ещё - можно долго мучаться пытаясь найти алгоритм (самый оптимальный и краткий) для нахождения кратчайшего пути авиа перелётов (А такие проги стоят немало), а можно использовать алгоритм Дейкстры и ему подобные.


Почему ты так считаешь ? Ты сам писал ОСь или какой-нибудь крупный проект и при этом выяснилось, что без блок-схем - никак ?

Автор: simanyay 2.10.2002, 00:41
Я не писал, я ещё учусь, но мой близкий друг (программер с 8 летним стажем) писал оболочку под Юникс для расчитывания кратчайших путей авиа перелётов из Ташкента и наоборот (Для сдешнеё авиа компании) Так вот после двух месяцев "кодинга" (когда абсолютно ничего не получилось) они сели и за полтора месяца нарисовали полную блок схему, для каждого модуля. Здесь то как раз и нашлись почти все их ошибки. После этого всё пошло как по маслу и программа была написана.(Хотя её хотели уже передать другой группе) Так, что уменя есть некий жизненный опыт, чтобы утверждать правильность блок-схем.

Автор: simanyay 2.10.2002, 00:43
Извините за ошибку (не "сдешнеё"  ??? , а "сдешней"  :colgate )

Автор: Chingachguk 2.10.2002, 00:51
Ну, может ты и прав... Хотя могло быть и просто написание документации (а это не блок-схемы)...что приводит к рассеиванию тумана в голове...

ЗЫ: не "сде", а "зде" ;)

Автор: Kesh 2.10.2002, 10:20
Ну, блин, не знаю я кто крутой программер, а кто нет... Но лично я перед тем как сесть за компьютер задачку обязательно рисую... не составляю блок схему, а именно рисую... Вот такая дурная привычка... :0)

Автор: Vit 2.10.2002, 11:27
Цитата(kesh @ 01.10.2002, 18:20)
Ну, блин, не знаю я кто крутой программер, а кто нет... Но лично я перед тем как сесть за компьютер задачку обязательно рисую... не составляю блок схему, а именно рисую... Вот такая дурная привычка... :0)

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

Автор: Grey 2.10.2002, 17:45
Я уже ответил и повторю еще раз, по моему мнению блок-схемы не нужны. Но это совсем не значит что программу не нужно проектировать, это нужно делать обязательно. Просто мне UML больше нравится, вот и все. При чем иногда намного важнее отобразить связи между классами, чем их поведение, иногда наоборот.

Автор: cosmic 5.10.2002, 18:18
подскажите, UML - это программа "перевода" блок-схем в код?

Автор: Vex 5.10.2002, 21:46
Цитата(cosmic @ 05.10.2002, 10:18)
подскажите, UML - это программа "перевода" блок-схем в код?

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

Автор: cosmic 5.10.2002, 22:20
а есть прграммы для перевода блок-схем в код?

Автор: Vit 6.10.2002, 01:37
Цитата(cosmic @ 05.10.2002, 06:20)
а есть прграммы для перевода блок-схем в код?

Есть - программист называется :)
Вообще-то это сделать по-моему по определению нельзя, такие штуки пытались разработать - например тот же 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
Цитата(cosmic @ 05.10.2002, 15:20)
а есть прграммы для перевода блок-схем в код?

Подобные программы есть для UML, напримар та же RationalRose, но о качестве перевода сказать ничего не могу это надо посмотреть.

Автор: simanyay 8.10.2002, 01:28
Я считаю, что для решения уравнения не нужно и программировать ведь, его так решить легче. А если используешь его в программе, то вероятно это не маленькая програмка, а хоть средняя. И в этом случае блок-схема нужна.

Автор: Grey 8.10.2002, 02:01
Цитата(simanyay @ 07.10.2002, 18:28)
Я считаю, что для решения уравнения не нужно и программировать ведь, его так решить легче. А если используешь его в программе, то вероятно это не маленькая програмка, а хоть средняя. И в этом случае блок-схема нужна.

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

Автор: neutrino 9.10.2002, 23:11
Под "квадратным уравнением" я пытался выразить элементарную задачу, наверное это у меня не получилось. Конечно для решений некоторых уравнений нужно составлять блок схемы, а затем и программы. Уж весь этот симплекс то точно на бумаге, больше 10 условий по 10 переменных в каждом, без программы не решишь.
Кстати, я сейчас как раз занимаюсь написанием компонента для построения блок-схем на Delphi.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)