Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вред алгоритмов ? хочется поговорить о подходах 
:(
    Опции темы
nssh
  Дата 14.1.2012, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.1.2012

Репутация: нет
Всего: нет



Привет,

Словом "алгоритм" обозначают много всего разного. Но если вы наберёте это слово в Гугле и попросите показать картинки или в Википедии, например так : http://en.wikipedia.org/wiki/Algorithm , то увидите - схемки с квадратиками и ромбиками. Вот об этих алгоритмах я и хочу поговорить.

 smile  Бакалавра я получил по радиоэлектронике, магистра по телекоммуникациям, так что заранее простите, ежели кому то приведённые ниже рассуждения покажутся не компетентными, да, программирование, мне пришлось осваивать самому ...

Подобные алгоритмы, приводили преподаватели в школе и универе, они встречаются в книжках, но давайте посмотрим на них, по внимательнее ... Из чего они состоят ? 
Ромбик - это языковая конструкция по типу: if...then...else, остальные операции блок-схемок, можно свести к двум: (а) - операции ввода-вывода и, (б) - модификация данных. 
Т.о. алгоритм - это попытка собрать программу используя самые примитивные (базовые) конструкции, которые находят своё отражение в любом языке программирования. 
Давайте проведём аналогию с радиоэлектроникой. Если, некий чиж, решит собрать радиоприёмник методом, подобным методу алгоритмов, то, он - должен взять базовые конструкции, которыми являются радиодетали, и - начать - творить ...
Представьте, подходит чиж к своему рабочему месту, вываливает на стол сотни радиодеталей (в радиоэлектронике - их -ой, как много) и начинает собирать... Понятно, что собирать - он - будет очень долго ... И результат его усилий - тоже - очевиден ...

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

Так, почему же, в программировании - не так. Почему же, пропагандируется метод работы "из базовых элементов", т.е. алгоритмический ???   

PM MAIL   Вверх
Фантом
Дата 14.1.2012, 18:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(nssh @  14.1.2012,  19:39 Найти цитируемый пост)

Так, почему же, в программировании - не так. Почему же, пропагандируется метод работы "из базовых элементов", т.е. алгоритмический ???   

Простить-то простим, но Вы называете "алгоритмом" блок-схему, а "алгоритмическим подходом" - простейший вариант императивной парадигмы, из-за чего трудно понять, что именно Вам не нравится.
PM   Вверх
_Y_
Дата 14.1.2012, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(nssh @  14.1.2012,  18:39 Найти цитируемый пост)
разложение сложной задачи на более простые; затем, более простые - ещё на более простые и т.д.
........................
Так, почему же, в программировании - не так


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

Например, вот такоая схема алгоритма вполне законна:
user posted image

И врядли кому-то придет в голову расписывать в этой же схеме весь метод наименьших квардратов smile 




--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Absinthe
Дата 14.1.2012, 22:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: нет
Всего: 11



Цитата

Почему же, пропагандируется метод работы "из базовых элементов", т.е. алгоритмический ???   
 ТЫ имеешь ввиду блок-схемы? Они пропагандируются только для обучения новичков первому языку программирования. Ну считается, что маленький мозг первокурсника плохо вмещает буквы и хорошо вмещает картинки.
Блок-схемами никто не пытается представить полноценную программу, да и невозможно это.
PM MAIL   Вверх
_Y_
Дата 15.1.2012, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Absinthe @  14.1.2012,  22:16 Найти цитируемый пост)
Блок-схемами никто не пытается представить полноценную программу, да и невозможно это. 

Н-е-е-е, не согласная я.

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

И полноценную программу можно представить. Не надо только пытаться вогнать в нее все мелкие само-собой разумеющиеся операции, а надо представлять группы операций крупными блоками. Скажем так, блок-схема может быть написана для разных уровней абстракции. Самый не-абстрактный вариант: блок-схема какой-то мелочи включающая все сложения-вычитания. Самый абстрактный:
Запустить программу -> Выполнить все опереции -> Закончить выполнение
При этом не надо рисовать все, а только то и на тех уровнях абстракции, что действительно в этом нуждается.

ЗЫ: В моем предидущем посте это уже было проиллюстрировано. Но там блок-схемой, а их, как выяснилось, не все любят smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Absinthe
Дата 15.1.2012, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: нет
Всего: 11



Цитата

Если не могу сразу въехать в алгоритм, один из способов - начать рисовать. Особенно это удобно если алгоритм описан путано и непонятно.
 А еще понятнее и быстрее - написать его на псевдоязыке(или Python).

Понятнее - потому что без ненужных рамочек и с экономией места.
Быстрее - ну и так понятно, почему.

Цитата

И полноценную программу можно представить. Не надо только пытаться вогнать в нее все мелкие само-собой разумеющиеся операции, а надо представлять группы операций крупными блоками. 
 Все, что выше функций - не представить. Например взаимодействие объектов.
PM MAIL   Вверх
disputant
Дата 15.1.2012, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: 2
Всего: 3



Цитата

Так, почему же, в программировании - не так. Почему же, пропагандируется метод работы "из базовых элементов", т.е. алгоритмический ???


Ну почему же "не так"? Примерно так же. Просто вы же не предлагаете человеку, который в электронике ни бу-бум, сразу начинать ваять радиоприемник? Вот так и у вас знакомство с алгоритмами произошло на уровне "элементной базы", так сказать. Т.е. на уровне самого простого. Вы же не собираетесь в схеме с операционным усилителем брать и разрисовывать каждый внутренний его элемент по отдельности? Примерно то же и с алгоритмами...

В этом смысле неплохо почитать "Алгоритмы. Введение в разработку и анализ" А. Левитина - там алгоритмы подаются под углом, который, скажем так, мне представляется для вас наиболее подходящим. Можно посмотреть "Алгоритмы. Просто, как 2*2" Красиковых, но это скорее микросправочник, но дающий возможность увидеть, что алгоритмы и блок-схемы - это две большие разницы smile

По поводу дискуссии - как следует описывать алгоритмы... Если вы не привязаны к конкретному языку/машине - то лучше вообще словесно, на мой взгляд smile Но - тогда надо хорошо понимать алгоритм, чтобы его кодировать. Псевдоязык - это уже ближе к реализации, а не к алгоритму, так как очень сильно связывает инициативу кодировщика...

Это сообщение отредактировал(а) disputant - 15.1.2012, 13:21
PM MAIL   Вверх
_Y_
Дата 15.1.2012, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Absinthe @  15.1.2012,  12:59 Найти цитируемый пост)
 А еще понятнее и быстрее - написать его на псевдоязыке(или Python).

Угу, конечно. И весь мир должен изучить Python smile 
В том и удобство схемы (в программировании, электронике или биохимии - не важно), что она наглядна и не требует для понимания дополнительных знаний. Если человек программирует на любом языке, блок-схему он поймет.
Цитата(Absinthe @  15.1.2012,  12:59 Найти цитируемый пост)
Понятнее - потому что без ненужных рамочек и с экономией места.

Если стоит задача экономии места, то я согласен smile 

Цитата(Absinthe @  15.1.2012,  12:59 Найти цитируемый пост)
Быстрее - ну и так понятно, почему.

По мне, так квадратик карандашом нарисовать - самое быстрое. Но, здесь уж наверное у кого какая моторика пальцев, а кто-то и карандашом пользоваться не умеет smile 

Цитата(Absinthe @  15.1.2012,  12:59 Найти цитируемый пост)
Все, что выше функций - не представить. Например взаимодействие объектов. 

Почему? Алгоритм взаимодействия представить можно.

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



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.