опять же, в продолжение предыдущих тем — до меня основы программирования (в рамках двухсеместрового курса "информатика") принято было преподавать в стиле — "пишем блок-схему алгоритма" -> переводим ее на basic/pascal.
и что-то мне это не очень нравится вот почему:
1) для простейшх алгоритмов это довольно наглядно и прозрачно, но вот для более сложных блок-схемы становятся громоздкими. возможное упрощение их за счет использования тех же процедур не очень помогает, поскольку плохо учитывает моменты с механизмами передач аргументов (по значению/по ссылке), побочными эффектами, маскированием глобальных переменных локальными и проч. техникой;
2) для не слишком примитивных алгоритмов прямая трансляция блок-схемы в программу на том же паскале приводит к уродливому коду (а потому, сужу по своему опыту, блок-схему читают только для того, чтобы понять суть алгоритма, а потом просто программируют его нужным образом без обращения к первоисточнику);
в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?
__>опять же, в продолжение предыдущих тем — до меня основы программирования (в рамках двухсеместрового курса "информатика") принято было преподавать в стиле — "пишем блок-схему алгоритма" -> переводим ее на basic/pascal. __>и что-то мне это не очень нравится вот почему:
Ты — мужик.
Мы несколько раз проводилди опромс среди первокурсников.
Несколько раз один и тот же результат:
— пацаны предпочитают псевдокод
— девочки предпочитают картинку (блок-схему)
Преподы — аналогично. Я пишу псевдокод или код.
А преподавательница, которая самых начинающих учит, предпочитает нарисовать болок-схему.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, _hum_, Вы писали:
__>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?
Естественно. Псевдокод рулит. Блок схемы следует применять исключительно в случае, когда задачей стоит непременно привить отвращение к программированию у как можно большего количества студентов. Вместе с бейсиком и паскалем это просто гарантирует результат .
Кроме того, существуют гораздо более хорошие средства визуализации алгоритмов, чем блок схемы, если уж хочется непременно графической нотации. Привет от Паранджанова, называется . При всех недостатках этой визуальщины сама нотация весьма и весьма неплоха, нужно отдать должное.
Здравствуйте, _hum_, Вы писали:
__>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?
Разумеется это устарелое дерьмо нужно отнести на помойку, и псевдокод за ним. Псевдокод придумали во всемена говноязыков типа Си и Паскаля, в которых был настоько нечитаемый неочевидный код, что его приходилось построчно объяснять поминутно закапываясь в детали синтаксиса. Поэтому и придумали псевдокод в котором можно важное выделять, а детали опускать. Во времена современных языков, таких как Java, Python, Clojure, Haskel все это уже не нужно.
Здравствуйте, _hum_, Вы писали: __>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?
Cхемы хороши для визуализации переходов, то есть это больше средство документирования уже реализованного алгоритма нежели этап написания программы. Иногда алгоритм записываеся именно в виде особой схемы (BPMN например) и в этом же виде выполняется. Собственно исходя из этого и учить, надо уметь понимать и рисовать блок-схемы. В рамках какого-нибудь курса можно познакомить с промышленными вариантами (тот же BPMN). Рисование блок-схемы как этап разработки не нужно, разве что иногда, для лучшего понимания переходов. Пвевдокод в большинстве случаев проще и понятнее, см например описание различных алгоритмов в википедии.
Здравствуйте, _hum_, Вы писали:
__>опять же, в продолжение предыдущих тем — до меня основы программирования (в рамках двухсеместрового курса "информатика") принято было преподавать в стиле — "пишем блок-схему алгоритма" -> переводим ее на basic/pascal. __>и что-то мне это не очень нравится вот почему:
__>1) для простейшх алгоритмов это довольно наглядно и прозрачно, но вот для более сложных блок-схемы становятся громоздкими. возможное упрощение их за счет использования тех же процедур не очень помогает, поскольку плохо учитывает моменты с механизмами передач аргументов (по значению/по ссылке), побочными эффектами, маскированием глобальных переменных локальными и проч. техникой;
Как-то от одного врача в ответ на "я когда вот так делаю, у меня болит" услышал замечательную фразу: "раз болит, то не делайте так". В программировании — то же самое. Если делаете и сами видите, что получается неудобно — не делайте так (по крайней мере, если не знаете, что дальше от этого будут какие-то бенефиты). Не подходят блок-схемы для объяснения какого-то алгоритма — не используйте.
__>2) для не слишком примитивных алгоритмов прямая трансляция блок-схемы в программу на том же паскале приводит к уродливому коду (а потому, сужу по своему опыту, блок-схему читают только для того, чтобы понять суть алгоритма, а потом просто программируют его нужным образом без обращения к первоисточнику);
Аналогичный ответ.
__>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?
На начальном этапе блок-схемы хороши тем, что наглядно показывают все ветвления, простейшие циклы и условия. Я обычно, самые примитивные алгоритмы объясняю на блок-схемах, потом перехожу на псевдокод, а потом уже убираю блок-схемы почти в принципе, постепенно оставляя только псевдокод, либо конкретный язык программирования.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Блоксхемы нужны для создания иллюзии понимания для тех, кому понимать это для их задач ненужно очень уж в общем.
Т.е. деление, имхо, тут не на мужики и тётки, а на кому нужно программить, чтобы работало, и кому не нужно.
Здравствуйте, 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
Здравствуйте, _hum_, Вы писали: __>в связи с этим вопрос — может быть, имеет смысл отказаться от этой практики, заменив ее использованием для описания алгоритма псевдокодом (а с блок-схемами просто знакомить — чтоб умели читать и составлять в случае необходимости)?
Как учить я советовать не буду. Единственное, что учить надо на основе реальных действий, то есть чтобы научиться создавать код по диаграммам, или наоборот составлять диаграммы по коду, нужно эти процессы отрабатывать многочисленными заданиями.
Скрытый текст
Что плохо при подходе "это слишком пока для вас сложно", люди выпустятся из университета и не будут даже подозревать о многих понятиях. Но как бы компьютерное образование в России и постсоветских странах и так часто ругают за программы обучения 30-летней давности.
Y>Т.е. деление, имхо, тут не на мужики и тётки, а на кому нужно программить, чтобы работало, и кому не нужно.
Нет. Проблема тут именно в мужском и женском восприятии.
Девочки и женщины лучше воспринимают образ-картинку
Среди пацанов я не помню ни одного, которому бы блок-схемы казались проще.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Слава, Вы писали:
V>> для виндузятников нужно ещё доставить Dia Shape С>Для "виндузятников" можно поставить BpWin.
Не в этом смысле, виндузятник или линуксоид устанавливать желательно кроссплатформу. Просто в том же Debian при установке пакета dia доставляются другие пакеты вроде dia-shapes, а в винде такого не будет. В гну линуксе тоже могу проигнорировать программу, если она не кроссплатформенна, тоже самое касается и винды. Бывают, конечно, случаи, когда аналогов программе нет или нужна именно эта, но в общем и целом зависимостей от операционной системы лучше избегать, особенно это касается программ с помощью которых создаются личные данные (документы, диаграммы и так далее).
Здравствуйте, Слава, Вы писали:
GIV>>Современная блок-схема
С>Это очень похоже на IDEF0, 1981 г.в. То есть, схемы-то хорошие и лучше т.н. "блок-схем", но слово "современные" для них как-то не особо подходит.
Современные значит сейчас ими активно пользуются, создают инструменты и тд и тп.
Я не имел ввиду, что их вчера придумали тот же BPNM 2.0 2011 года выпуска.
Здравствуйте, Слава, Вы писали:
V>>Не в этом смысле, виндузятник или линуксоид устанавливать желательно кроссплатформу. С>Понимаете ли, есть программы удобные для работы, а есть — кроссплатформенные, и их множества редко пересекаются.
Удобнее Dia для построения различных видов диаграмм не встречал, причём не скрываю, что это субъективное мнение. Когда-то давно мне нравился VS, правда не нравилась тормознутость усиливающаяся с каждой новой версией. С другой стороны сейчас достаточно редактора с подсветкой и кнопки "скомпилировать и запустить" и даже без неё. Больше нет желания испытывать какие-то генераторы кода по диаграммам.
Зато в первую очередь интересует вопросы, вроде, можно ли вставить диаграмму в документацию и будет ли она одинаково хорошо отображаться во всех семействах операционных систем, которые использую. Более того, мне иногда хочется того, чего нет в самых навороченных версиях каких-либо программ.
И вот здесь возникает выбор, взять простое и функциональное, или некое навороченное, чему нужно учиться и что всё равно не даёт мне использовать то, что хочу я исходя из моих текущих познаний. Хотя если уж на то пошло, то кроссплатформа это тоже моё личное требование, которое можно выполнить в большинстве случаев, исключение CAD/CAE/CAM и некоторые игры.
Здравствуйте, LaptevVV, Вы писали:
LVV>Нет. Проблема тут именно в мужском и женском восприятии. LVV>Девочки и женщины лучше воспринимают образ-картинку LVV>Среди пацанов я не помню ни одного, которому бы блок-схемы казались проще.
Блок-схемы громоздки, а потому неудобны, кроме совсем примитивных алгоритмов или каких-то частностей.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.