Автор Тема: Наглядность схем для алгоритмов.  (Прочитано 16105 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Наглядность схем для алгоритмов.
« : Июнь 25, 2012, 09:30:25 pm »
Вот тут предлагают оценить наглядность классической реализации втавки в avl-дереве (видимо на паскале) и "реализации" её же в виде схемы на драконе. Утверждается что драконовской схемой нагляднее получается.

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



"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #1 : Июнь 25, 2012, 09:49:40 pm »
По моему же мнению, драконосхема слишком разлапистая получилась и смотреть её не удобно (мне лично приходится скролить как по вертикали так и по горизонтали, в отличае от обычного кода. И это при том, что в обычном коде Вирт не произвел декомпозицию на подпроцедуры, чтобы в каждый момент времени на экране текущая процедура помещалась полностью).

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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #2 : Июнь 25, 2012, 09:56:23 pm »
Соглашусь, в данном случае проще сразу в код смотреть. НО. Схема была бы сильно лучше, если убрать оттуда весь мусор, специфичный для целевого ЯП (объявление переменных и т.д.). Собственно, мне поэтому никогда не импонировала идея программить непосредственно на Драконе. Возможно, что это еще работает для какого-то сильно низкоуровневого языка (типа асма). Но в случае нормального ЯВУ - оно как собаке пятая нога. Тем не менее, даже в случае ЯВУ дракон хорошо работает (по моему небольшому опыту) как спека к реализуемому функционалу.
Если этот "мусор" убрать, то от алгоритма в общем то ничего и не останется :-) Алсо если из реализации на том же паскакале убрать этот мусор и оставить лишь высокоуровневую часть алгоритма, то такой код будет так же нагляден как и высокоуровневая схема. Только вот на паскале алгоритм все еще будет реализован (вся мелочь мусорная будет просто в отдельных процедурах сидеть) а вот у дракона уже нет (как я понимаю, средств декомпозиции вменяемых у Дракона нет).
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #3 : Июнь 25, 2012, 09:57:13 pm »
Схема должна вся умещаться в поле зрения. Поэтому, схему нужно распечатать на подходящем формате.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #4 : Июнь 25, 2012, 09:58:25 pm »
как я понимаю, средств декомпозиции вменяемых у Дракона нет
Аналог процедур есть.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #5 : Июнь 25, 2012, 09:59:50 pm »
Собственно у драконовской схемы (как и у любой другой) есть ровно одно преимущество - спозиционировав (отскроллив) экран на интересующую ветку алгоритма мы перестаем видеть все другие ветки, то есть эдакий эрзац декомпозиции. При этом в некоторых случаях перемещаться по такому представлению (2D) программы может оказаться быстрее чем прыгать в IDE по функциям.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #6 : Июнь 25, 2012, 10:00:29 pm »
как я понимаю, средств декомпозиции вменяемых у Дракона нет
Аналог процедур есть.
Можно пример?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #7 : Июнь 25, 2012, 10:02:08 pm »
Если этот "мусор" убрать, то от алгоритма в общем то ничего и не останется :-)

Останется. Там много непонятных ветвлений, которые на нормальной схеме можно обозначить чем-то более вменяемым, чем 1, 0, -1.

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

В паскале очень трудно убрать мусор ;) Это ж даже не питон ;)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #8 : Июнь 25, 2012, 10:02:13 pm »
Схема должна вся умещаться в поле зрения. Поэтому, схему нужно распечатать на подходящем формате.
Эмм. А как её собственно редактировать потом? Вот я работаю на ноуте c экраном 13". Код пишу в том числе. Я слабо представляю как вот в подобном "коде" мне разбираться и править его.

Предлагается возродить кульман на рабочем месте? :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #9 : Июнь 25, 2012, 10:04:04 pm »
Если этот "мусор" убрать, то от алгоритма в общем то ничего и не останется :-)

Останется. Там много непонятных ветвлений, которые на нормальной схеме можно обозначить чем-то более вменяемым, чем 1, 0, -1.
Откровенно говоря, в нормальном коде тоже должно быть что-то более вменяемое чем вот эти вот магические числа :-)

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

В паскале очень трудно убрать мусор ;) Это ж даже не питон ;)
Но для данного класса алгоритмов вполне возможно. Впрочем, конечно на С++ мусор убирается сильно проще.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #10 : Июнь 25, 2012, 10:26:52 pm »
Откровенно говоря, в нормальном коде тоже должно быть что-то более вменяемое чем вот эти вот магические числа :-)

Все равно. Ветвления/состояния на драконовских схемах выглядят лучше.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #11 : Июнь 25, 2012, 10:34:59 pm »
Откровенно говоря, в нормальном коде тоже должно быть что-то более вменяемое чем вот эти вот магические числа :-)
Все равно. Ветвления/состояния на драконовских схемах выглядят лучше.
Состояния и переходы много лучше выглядят на схеме конечного автомата. А это ни разу не дракон.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #12 : Июнь 25, 2012, 10:39:18 pm »
Можно пример?
С примером затрудняюсь. Помню, как-то пару лет назад обсуждалась данная тема на форуме. Предлагалось то ли "примитив" для этого использовать, то ли ещё что-то. Но я не помню, в классической версии языка (от Паронджанова) так предлагалось делать или в обновлённой, которую пытались всем скопом на форуме сделать.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #13 : Июнь 25, 2012, 10:42:20 pm »
Если я тогда правильно уловил мысль, то работать оно должно было так:
1. Составляется "примитив".
2. В основной схеме упоминается примитив, что является аналогом вызова с возвратом.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Наглядность схем для алгоритмов.
« Ответ #14 : Июнь 25, 2012, 10:58:56 pm »
Все равно. Ветвления/состояния на драконовских схемах выглядят лучше.
Состояния и переходы много лучше выглядят на схеме конечного автомата. А это ни разу не дракон.

Какое именно представление ты понимаешь под "схемой конечного автомата". КА можно и в табличной форме выразить. Только это будет ни разу не нагляднее дракона.