Изучение основ на блок-схемах
От: _hum_ Беларусь  
Дата: 07.09.17 21:01
Оценка: +1
опять же, в продолжение предыдущих тем — до меня основы программирования (в рамках двухсеместрового курса "информатика") принято было преподавать в стиле — "пишем блок-схему алгоритма" -> переводим ее на basic/pascal.
и что-то мне это не очень нравится вот почему:

1) для простейшх алгоритмов это довольно наглядно и прозрачно, но вот для более сложных блок-схемы становятся громоздкими. возможное упрощение их за счет использования тех же процедур не очень помогает, поскольку плохо учитывает моменты с механизмами передач аргументов (по значению/по ссылке), побочными эффектами, маскированием глобальных переменных локальными и проч. техникой;

2) для не слишком примитивных алгоритмов прямая трансляция блок-схемы в программу на том же паскале приводит к уродливому коду (а потому, сужу по своему опыту, блок-схему читают только для того, чтобы понять суть алгоритма, а потом просто программируют его нужным образом без обращения к первоисточнику);

в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?
Re: Изучение основ на блок-схемах
От: LaptevVV Россия  
Дата: 08.09.17 04:08
Оценка:
__>опять же, в продолжение предыдущих тем — до меня основы программирования (в рамках двухсеместрового курса "информатика") принято было преподавать в стиле — "пишем блок-схему алгоритма" -> переводим ее на basic/pascal.
__>и что-то мне это не очень нравится вот почему:
Ты — мужик.
Мы несколько раз проводилди опромс среди первокурсников.
Несколько раз один и тот же результат:
— пацаны предпочитают псевдокод
— девочки предпочитают картинку (блок-схему)
Преподы — аналогично. Я пишу псевдокод или код.
А преподавательница, которая самых начинающих учит, предпочитает нарисовать болок-схему.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Изучение основ на блок-схемах
От: elmal  
Дата: 08.09.17 04:52
Оценка: +1
Здравствуйте, _hum_, Вы писали:

__>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?

Естественно. Псевдокод рулит. Блок схемы следует применять исключительно в случае, когда задачей стоит непременно привить отвращение к программированию у как можно большего количества студентов. Вместе с бейсиком и паскалем это просто гарантирует результат .
Кроме того, существуют гораздо более хорошие средства визуализации алгоритмов, чем блок схемы, если уж хочется непременно графической нотации. Привет от Паранджанова, называется . При всех недостатках этой визуальщины сама нотация весьма и весьма неплоха, нужно отдать должное.
Re: Изучение основ на блок-схемах
От: pestis  
Дата: 08.09.17 05:14
Оценка: -1 :))) :))
Здравствуйте, _hum_, Вы писали:

__>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма

псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?

Разумеется это устарелое дерьмо нужно отнести на помойку, и псевдокод за ним. Псевдокод придумали во всемена говноязыков типа Си и Паскаля, в которых был настоько нечитаемый неочевидный код, что его приходилось построчно объяснять поминутно закапываясь в детали синтаксиса. Поэтому и придумали псевдокод в котором можно важное выделять, а детали опускать. Во времена современных языков, таких как Java, Python, Clojure, Haskel все это уже не нужно.
Re: Изучение основ на блок-схемах
От: GarryIV  
Дата: 08.09.17 05:44
Оценка:
Здравствуйте, _hum_, Вы писали:

__>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?


Cхемы хороши для визуализации переходов, то есть это больше средство документирования уже реализованного алгоритма нежели этап написания программы. Иногда алгоритм записываеся именно в виде особой схемы (BPMN например) и в этом же виде выполняется. Собственно исходя из этого и учить, надо уметь понимать и рисовать блок-схемы. В рамках какого-нибудь курса можно познакомить с промышленными вариантами (тот же BPMN). Рисование блок-схемы как этап разработки не нужно, разве что иногда, для лучшего понимания переходов. Пвевдокод в большинстве случаев проще и понятнее, см например описание различных алгоритмов в википедии.

  Современная блок-схема
WBR, Igor Evgrafov
Re: Изучение основ на блок-схемах
От: scf  
Дата: 08.09.17 05:55
Оценка:
Здравствуйте, _hum_, Вы писали:

__>1) для простейшх алгоритмов это довольно наглядно и прозрачно


Так блок-схема в обучении и предназначена для простейших алгоритмов от "угадай число" до сортировок и двоичного поиска. Потом переходят на псевдокод.
Re: Изучение основ на блок-схемах
От: Александр Кузнецов Россия  
Дата: 08.09.17 06:29
Оценка:
Здравствуйте, _hum_, Вы писали:

__>опять же, в продолжение предыдущих тем — до меня основы программирования (в рамках двухсеместрового курса "информатика") принято было преподавать в стиле — "пишем блок-схему алгоритма" -> переводим ее на basic/pascal.

__>и что-то мне это не очень нравится вот почему:

__>1) для простейшх алгоритмов это довольно наглядно и прозрачно, но вот для более сложных блок-схемы становятся громоздкими. возможное упрощение их за счет использования тех же процедур не очень помогает, поскольку плохо учитывает моменты с механизмами передач аргументов (по значению/по ссылке), побочными эффектами, маскированием глобальных переменных локальными и проч. техникой;


Как-то от одного врача в ответ на "я когда вот так делаю, у меня болит" услышал замечательную фразу: "раз болит, то не делайте так". В программировании — то же самое. Если делаете и сами видите, что получается неудобно — не делайте так (по крайней мере, если не знаете, что дальше от этого будут какие-то бенефиты). Не подходят блок-схемы для объяснения какого-то алгоритма — не используйте.

__>2) для не слишком примитивных алгоритмов прямая трансляция блок-схемы в программу на том же паскале приводит к уродливому коду (а потому, сужу по своему опыту, блок-схему читают только для того, чтобы понять суть алгоритма, а потом просто программируют его нужным образом без обращения к первоисточнику);


Аналогичный ответ.

__>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?


На начальном этапе блок-схемы хороши тем, что наглядно показывают все ветвления, простейшие циклы и условия. Я обычно, самые примитивные алгоритмы объясняю на блок-схемах, потом перехожу на псевдокод, а потом уже убираю блок-схемы почти в принципе, постепенно оставляя только псевдокод, либо конкретный язык программирования.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Re[2]: Изучение основ на блок-схемах
От: ylem  
Дата: 08.09.17 10:17
Оценка: +1
LVV>Ты — мужик.

Блоксхемы нужны для создания иллюзии понимания для тех, кому понимать это для их задач ненужно очень уж в общем.
Т.е. деление, имхо, тут не на мужики и тётки, а на кому нужно программить, чтобы работало, и кому не нужно.
Отредактировано 08.09.2017 10:30 ylem . Предыдущая версия .
Re[2]: Изучение основ на блок-схемах
От: MTD https://github.com/mtrempoltsev
Дата: 08.09.17 10:31
Оценка: +5 :))) :)
Здравствуйте, pestis, Вы писали:

P>Разумеется это устарелое дерьмо нужно отнести на помойку, и псевдокод за ним. Псевдокод придумали во всемена говноязыков типа Си и Паскаля. Во времена современных языков, таких как Java, Python, Clojure,


И чем же так сильно Java от Паскаля отличается?

P>Haskel все это уже не нужно.


Действительно все же понятно:

loadMap :: a -> FilePath -> Bool -> IO (GameState a)
loadMap extra f tr 
          = do fdata <- readFile f
               let (tiles, metadata) = span (not.null) $ lines fdata
               let (w, h) = (maximum (map length tiles), length tiles)
               world <- newArray ((0,0), (w-1, h-1)) Empty
               oldworld <- newArray ((0,0), (w-1, h-1)) Empty
               let initSt = GS extra 
                            (0,0) (0, 0) 0 0 0 0 0 0 growth [] [] False False False False 
                            tr world 0 0 0 0 10 oldworld 0 2
               let mSt = foldl parseMeta initSt metadata
               mSt' <- execStateT (buildWorld w h tiles) mSt
               -- HACK! Do it again to update trampoline metadata
               return $ foldl parseMeta mSt' metadata
Re: Изучение основ на блок-схемах
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 08.09.17 10:57
Оценка:
Здравствуйте, _hum_, Вы писали:

__>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?


Блок-схемы не учитывают параллелизм, диаграммы деятельности UML учитывают. Так же другие известные виды диаграмм были переработаны и улучшены в UML. Для начала я бы рекомендовал почитать UML Основы. Краткое руководство по унифицированному языку моделирования (3-е издание). Сами диаграммы, то есть блок-схемы, ER, SDL, BPMN, UML, баз данных и многие другие создавать в Dia, для виндузятников нужно ещё доставить Dia Shape. Всё это можно использовать совместно с псевдокодом, да и в принципе не стоит забывать о программной инженерии и требованиях в которых тоже используются различные виды диаграмм. Между прочим в Dia актёры и варианты использования запихали в набор UML.

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

Что плохо при подходе "это слишком пока для вас сложно", люди выпустятся из университета и не будут даже подозревать о многих понятиях. Но как бы компьютерное образование в России и постсоветских странах и так часто ругают за программы обучения 30-летней давности.
Re[3]: Изучение основ на блок-схемах
От: LaptevVV Россия  
Дата: 08.09.17 14:11
Оценка:
Y>Т.е. деление, имхо, тут не на мужики и тётки, а на кому нужно программить, чтобы работало, и кому не нужно.
Нет. Проблема тут именно в мужском и женском восприятии.
Девочки и женщины лучше воспринимают образ-картинку
Среди пацанов я не помню ни одного, которому бы блок-схемы казались проще.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Изучение основ на блок-схемах
От: Слава  
Дата: 08.09.17 14:24
Оценка:
Здравствуйте, velkin, Вы писали:

V> для виндузятников нужно ещё доставить Dia Shape


Для "виндузятников" можно поставить BpWin.
Re[2]: Изучение основ на блок-схемах
От: Слава  
Дата: 08.09.17 14:27
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Современная блок-схема


Это очень похоже на IDEF0, 1981 г.в. То есть, схемы-то хорошие и лучше т.н. "блок-схем", но слово "современные" для них как-то не особо подходит.
Отредактировано 08.09.2017 14:34 Слава . Предыдущая версия .
Re[3]: Изучение основ на блок-схемах
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 08.09.17 15:50
Оценка:
Здравствуйте, Слава, Вы писали:

V>> для виндузятников нужно ещё доставить Dia Shape

С>Для "виндузятников" можно поставить BpWin.

Не в этом смысле, виндузятник или линуксоид устанавливать желательно кроссплатформу. Просто в том же Debian при установке пакета dia доставляются другие пакеты вроде dia-shapes, а в винде такого не будет. В гну линуксе тоже могу проигнорировать программу, если она не кроссплатформенна, тоже самое касается и винды. Бывают, конечно, случаи, когда аналогов программе нет или нужна именно эта, но в общем и целом зависимостей от операционной системы лучше избегать, особенно это касается программ с помощью которых создаются личные данные (документы, диаграммы и так далее).
Re[3]: Изучение основ на блок-схемах
От: GarryIV  
Дата: 08.09.17 16:47
Оценка:
Здравствуйте, Слава, Вы писали:

GIV>>Современная блок-схема


С>Это очень похоже на IDEF0, 1981 г.в. То есть, схемы-то хорошие и лучше т.н. "блок-схем", но слово "современные" для них как-то не особо подходит.


Современные значит сейчас ими активно пользуются, создают инструменты и тд и тп.
Я не имел ввиду, что их вчера придумали тот же BPNM 2.0 2011 года выпуска.
WBR, Igor Evgrafov
Re[4]: Изучение основ на блок-схемах
От: Слава  
Дата: 09.09.17 11:11
Оценка: +2
Здравствуйте, velkin, Вы писали:

V>Не в этом смысле, виндузятник или линуксоид устанавливать желательно кроссплатформу.


Понимаете ли, есть программы удобные для работы, а есть — кроссплатформенные, и их множества редко пересекаются.
Re[5]: Изучение основ на блок-схемах
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 09.09.17 11:55
Оценка:
Здравствуйте, Слава, Вы писали:

V>>Не в этом смысле, виндузятник или линуксоид устанавливать желательно кроссплатформу.

С>Понимаете ли, есть программы удобные для работы, а есть — кроссплатформенные, и их множества редко пересекаются.

Удобнее Dia для построения различных видов диаграмм не встречал, причём не скрываю, что это субъективное мнение. Когда-то давно мне нравился VS, правда не нравилась тормознутость усиливающаяся с каждой новой версией. С другой стороны сейчас достаточно редактора с подсветкой и кнопки "скомпилировать и запустить" и даже без неё. Больше нет желания испытывать какие-то генераторы кода по диаграммам.

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

И вот здесь возникает выбор, взять простое и функциональное, или некое навороченное, чему нужно учиться и что всё равно не даёт мне использовать то, что хочу я исходя из моих текущих познаний. Хотя если уж на то пошло, то кроссплатформа это тоже моё личное требование, которое можно выполнить в большинстве случаев, исключение CAD/CAE/CAM и некоторые игры.
Re[4]: Изучение основ на блок-схемах
От: Ops Россия  
Дата: 16.09.17 18:24
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Нет. Проблема тут именно в мужском и женском восприятии.

LVV>Девочки и женщины лучше воспринимают образ-картинку
LVV>Среди пацанов я не помню ни одного, которому бы блок-схемы казались проще.

Блок-схемы громоздки, а потому неудобны, кроме совсем примитивных алгоритмов или каких-то частностей.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.