DRAKON.SU

Текущее время: Пятница, 26 Апрель, 2024 19:13

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 328 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13 ... 17  След.
Автор Сообщение
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 09:25 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Ильченко Эдуард писал(а):
Программа — это предписания.
Алгоритм — это описание предписаний.
И да, и нет. См. ниже.

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

Цитата:
Без сознательного существа алгоритма быть не может.
Этот тезис следует читать как "понятие алгоритма может возникать на верхнем по отношению к программе уровне абстракции".
То есть то, что на текущем уровне является программой для исполнителя, может быть приближённо описано в виде алгоритма в терминах соответствующего уровня.
То есть для осмысленного описания "механики" требуется наличие верхнего уровня абстракции (или можно говорить о надсистеме). Ибо смысл всегда является категорией надсистемы.
То есть необходим субъект, который может придать смысл этому самому приближённому описанию.
То есть алгоритм - это смысл программы. Смысл для кого? Для субъекта верхнего уровня.

Но.

Не будем забывать об относительности. В надсистеме верхнего уровня наша первая надсистема превращается в подсистему, бывший субъект с точки зрения надсистемы становится объектом.
А алгоритм, соответственно, становится программой.

Цитата:
Конечно, можно приравнять алгоритм к программе.
Нельзя.
Потому что они существуют в разных системных уровнях, и эти уровни пересекаться не должны (ну то есть что значит "не должны"? Это значит "нецелесообразно". Для кого? Для субъекта соответствующей надсистемы, ибо иначе он утонет в море проблем и выйдет за ограничения своих ресурсов).

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

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

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

Вот так, собственно.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 09:58 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
andr писал(а):
То есть такая нотная запись - это алгоритм для человека-пианиста.
А в совокупности с литерным текстом - это также алгоритм для человека-певца,
который умеет читать литерный текст (причем по-русски или /и по-английски) и нотную запись.

О программах пока забыли - абстрагировались.

Здесь под утро (утро вечера мудренее) появился небольшой добавок:
такая нотная запись - это параллельный алгоритм
в горизонтальном исполнении очень компактной записи (с переносами блоков строк).


Мне пока непонятно, как обсуждение параллельных алгоритмов может привести к пониманию «Что такое алгоритм?» (смотрим название топика) и взаимоотношений между алгоритмом и программой.


andr писал(а):
Теперь появляется задача точного перевода таких алгоритмов
в блок-схемы (дракон-схемы) с мелкими блоками, штрих схемы и т.п.
с регулярной тактовой синхронизацией - в конце тактов (параллельная конъюнкция).

Но для чего?
Переобучать пианистов? и распространять Дракон среди творческих музыкальных гуманитариев?

Вы поставили задачу, Вам и отвечать для чего : )

Может быть вынести обсуждение параллельных алгоритмов в отдельную ветку?

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


Если человека-пианиста определить как исполнителя, то, имхо, привлечение некой параллельности излишне.

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

Алгоритм для человека-пианиста — да, но не для генераторов нотных звуков. Для генераторов существуют только программы (состоящей, например, для струны всего из двух команд — механический удар и механическое приглушение).

Алгоритм (в данном случае описывающий звучание генераторов) существует только для человека (осознающего существа/механизма) и только в его представлении (памяти, сознании, голове).

Кстати, обычное пианино нельзя рассматривать в качестве исполнителя. оно не умеет производить действия.
Струна - умеет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 11:06 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
Ибо для любого представления алгоритма можно сделать вполне простого, механического исполнителя.

Не могли бы Вы дать описание (привести пример) такого простого, механического исполнителя.

Alexey_Donskoy писал(а):
"сознание" принципиально ничем не отличается от "механики", кроме уровня сложности.

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

Alexey_Donskoy писал(а):
Цитата:
Без сознательного существа алгоритма быть не может.
Этот тезис следует читать как "понятие алгоритма может возникать на верхнем по отношению к программе уровне абстракции".

Да, если программа оперирует опытом взаимодействия с окружающим миром (даже если он виртуальный).

Alexey_Donskoy писал(а):
То есть алгоритм - это смысл программы. Смысл для кого? Для субъекта верхнего уровня.

Да.

Alexey_Donskoy писал(а):
А алгоритм, соответственно, становится программой.

Не совсем.
Алгоритм — это восприятие набора знаков, описывающих действия исполнителя, как смысла его (исполнителя) работы. Считывание знаков воспринимателем(?) (в этом качестве набор знаков является программой для исполнительного устройства воспринимателя : ) приводит к активации программы определения смысла работы исполнителя, но не выполняет действия исполнителя.

Программа — набор команд, которые безальтернативно приводят к выполнению определённых действий исполнителя.

Поэтому, алгоритм всегда описывает действия исполнителя.


Alexey_Donskoy писал(а):
И, наконец, моё определение алгоритма как программы для абстрактного исполнителя в точности соответствует информационно-иерархическому отношению между этими понятиями: на одном уровне - программа, на другом — алгоритм.


Абстрактный исполнитель требует своего определения.
Мне он до конца не понятен.

На мой взгляд, абстрактный исполнитель имеет только одну функцию — Действовать().
При этом она ничего не делает и никогда не вызывается, поскольку набор команд не определён. Иначе это будет не абстрактный исполнитель.

Алгоритм не может быть программой.
Alexey_Donskoy писал(а):
Цитата:
Конечно, можно приравнять алгоритм к программе.
Нельзя.


Один и тот же набор знаков может быть и алгоритмом (программой по выявлению смысла действий исполнителя, описанием) и программой (приводящей исполнителя в действие).

Alexey_Donskoy писал(а):
(а алгоритм как описание предписаний - это и есть метаинформация), мы автоматически вводим разделение по системным уровням (уровням абстракции).

Ничего против этого не имею.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 12:10 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Ильченко Эдуард писал(а):
Alexey_Donskoy писал(а):
Ибо для любого представления алгоритма можно сделать вполне простого, механического исполнителя.
Не могли бы Вы дать описание (привести пример) такого простого, механического исполнителя.
Хе-хе, ну, скажем, ИС Дракон, которая генерирует текст по схеме :)
Составляет ли для вас большую проблему написать какой-нибудь симулятор, исполняющий (и визуализирующий исполнение) блок-схемы?
Вопрос тут получается не совсем корректным. Потому что "исполнить алгоритм" в бытовом понимании неизбежно уходит в семантику и контекст. И тут требуется слишком многое: а) таки система команд (если написано "варить до готовности", то исполнитель должен понимать и уметь это делать); б) уже упомянутый контекст (сознание, палец на схеме, программное решение с окружением и т.п.).

Но. Если уж мы договорились, что алгоритм - это описание, то априори подразумеваем, что есть и исполнитель, который может понять это описание и исполнить его. И это уже дело техники, независимо от того, есть у исполнителя память или нет, есть (не)детерминированность или нет, и т.д. и т.п.

Цитата:
Alexey_Donskoy писал(а):
А алгоритм, соответственно, становится программой.

Не совсем.
Алгоритм — это восприятие набора знаков, описывающих действия исполнителя, как смысла его (исполнителя) работы. Считывание знаков воспринимателем(?) (в этом качестве набор знаков является программой для исполнительного устройства воспринимателя : ) приводит к активации программы определения смысла работы исполнителя, но не выполняет действия исполнителя.
Смотрите, опять попутаны уровни!
Во-первых, вы описали не что иное, как вполне механический процесс.
Во-вторых, совершенно очевидно, что исполнение программы на низком уровне не должно совпадать с исполнением описания программы - на высоком.
Для низкого уровня алгоритм = метаинформация.
Для высокого уровня то, с чем работает "восприниматель" - по сути является программой - ДЛЯ НЕГО, а не для исполнителя низкого уровня.

Другое дело, что сам субъект верхнего уровня МОЖЕТ опуститься и на нижний, устроив закат солнца вручную по алгоритму - вместо исполнителя нижнего уровня.
В таком случае программа и алгоритм с точки зрения теории становятся на один уровень и отличаются только языком (и соответствующим его декодером, то есть исполнителем).

Цитата:
Один и тот же набор знаков может быть и алгоритмом (программой по выявлению смысла действий исполнителя, описанием) и программой (приводящей исполнителя в действие).
Да.
При этом - важно! - само понятие алгоритма (вместе со смыслом) появляется ТОЛЬКО при наличии субъекта на верхнем уровне.
Поэтому данный тезис как бы и не имеет особого смысла (опять смешение уровней!).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 12:58 

Зарегистрирован: Четверг, 30 Январь, 2014 13:38
Сообщения: 423
Ильченко Эдуард писал(а):
Alexey_Donskoy писал(а):
И, наконец, моё определение алгоритма как программы для абстрактного исполнителя в точности соответствует информационно-иерархическому отношению между этими понятиями: на одном уровне - программа, на другом — алгоритм.

Абстрактный исполнитель требует своего определения.
Мне он до конца не понятен.

Абстрактный исполнитель требует своего определения.

Исполнитель - это материальный объект,
который может выполнить заданный процесс (заданный алгоритмом или программой).

Далее.
Что такое абстрактный исполнитель - как абстрактный материальный объект,
который что?

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

Но что такое, например:
абстрактный компьютер,
абстрактный стол,
абстрактный камень???

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

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

----------------------------
Такой алгоритм обычный технический исполнитель непосредственно выполнить не может
(за исключением достаточно высокоумного робота - но это пока не трогаем).
Такой алгоритм не может выполнить и никакой абстрактный исполнитель.

Многие алгоритмы в принципе может выполнить человек.
Но не все алгоритмы может выполнить человек.
Человек не может, например, летать (непосредственно).

Так кому же нужен такой алгоритм, который никто выполнить не может.
А нужен он именно человеку, потому что:
человек может понять и объяснить алгоритм - суть заданного им процесса.
В этом особый смысл алгоритма, в отличие от программы, перегруженной необходимыми частностями.
А обычному автомату (без понятия) алгоритм - по барабану.

---------------------------
Это я попытался вывернуться из проблемного определения:
алгоритм - это программа для абстрактного исполнителя.

Уж как получилось сходу.
Кажется получилось?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 13:28 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
andr писал(а):
Ильченко Эдуард писал(а):
Alexey_Donskoy писал(а):
И, наконец, моё определение алгоритма как программы для абстрактного исполнителя в точности соответствует информационно-иерархическому отношению между этими понятиями: на одном уровне - программа, на другом — алгоритм.

Абстрактный исполнитель требует своего определения.
Мне он до конца не понятен.

Абстрактный исполнитель требует своего определения.

Определения так и не нашёл : (

andr писал(а):
Так кому же нужен такой алгоритм, который никто выполнить не может.

Не могли бы Вы привести пример алгоритма, который никто выполнить не сможет?


andr писал(а):
Это я попытался вывернуться из проблемного определения:
алгоритм - это программа для абстрактного исполнителя.

Уж как получилось сходу.
Кажется получилось?

Что такое алгоритм - не раскрыто.
Что такое абстрактный исполнитель - не раскрыто.
Определение программы Вы просите пока не рассматривать.

Наверно не получилось ... : )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 14:51 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Ильченко Эдуард писал(а):
Абстрактный исполнитель требует своего определения.
Мне он до конца не понятен.
Да вы что, сговорились?

Что такое абстрактное? Это значит, что сформулирован ряд существенных критериев, которым соответствует потенциально неограниченное множество конкретных объектов. У этих объектов есть куча разных свойств, но все они, кроме отвечающих заданным критериям, в данном случае несущественны.

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

Если мы говорим: "приглашённый может войти в кафе" - получается почти то же самое, только добавляется ещё один явный критерий "приглашение" (и одновременно из контекста исчезает часть - наличие денег).

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


Если мы говорим: "компьютер с процессором Intel i5 может выполнить код для Intel 8080" - мы говорим об абстрактном компьютере, удовлетворяющим критерию "процессор Intel i5", и т.д. и т.п.

Если мы говорим про "компьютер" и "программу на С" - мы повышаем уровень абстракции для исполнителя (при этом расширяется доступное множество объектов). За счёт чего повышается уровень абстракции? За счёт критерия "есть копилятор С в нативный код".


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

Например, код для процессора 8080 будет проще кода для 386 (прямой совместимости нет, обратная есть). Идя по пути упрощения кода, мы одновременно расширяем множество потенциальных исполнителей.
К примеру, псевдокод IL из стандарта программирования ПЛК является более абстрактным, чем интеловский ассемблер.

Наконец, если мы рассмотрим предельно возможное упрощение системы команд, то получим то, о чём я писал выше: помимо элемента "действие" - обязательность, последовательность и развилка (ОПР). Этой простейшей системе команд соответствует... а что ей соответствует?
Да ей соответствуют все современные процессоры и даже человек с листом бумаги (или даже без, но развитым сознанием)!
Тогда мы имеем не что иное, как крайнюю степень абстракции "системы команд" и, соответственно, исполнителя.

Если мы говорим: "Исполнитель может выполнить программу на языке ОПР", то подразумеваем абстрактного исполнителя, критерием для отбора которого будет знание системы команд ОПР.
Причём степень абстракции в данном случае максимальна.

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


Заметим, что рассуждения с плавным движениям по шкале сложность-простота я производил ДЛЯ ОДНОГО И ТОГО ЖЕ УРОВНЯ системной иерархии.
Причём без всяких дополнительных когнитивных аспектов и заморочек вроде сознания, смысла и описания предписаний!
Так вот, фишка получается в том, что программа на языке, близком к ОПР, очень удачно годится для описания программы на ЯВУ, и может служить для придания ей смысла на верхнем уровне, где тусуется субъект (разработчик, или вообще "восприниматель" из рассуждений Эдуарда).
И вот это самое описание сегодня и называют алгоритмом.

Если же учитывать исторический аспект, то незамутнённый техникой ум математиков уже давно довёл процесс абстрагирования (и упрощения системы команд) до предела, близкого к ОПР - что и было названо алгоритмом.

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

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


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

Посмотрим, к тому же, что такое ассемблер по отношению к нативному коду?
Сюрприз! Это не что иное, как "описание предписаний", то есть по определению Эдурада - это алгоритм!
Аналогично, программу на ЯВУ можно рассматривать как алгоритм по отношению к ассемблеру, причём соответствие будет уже не совсем тривиальным (ибо пофиг технические детали оптимизации, которые заботят только транслятор).

О чём говорит это рассуждение? Да всего-навсего о том, что алгоритм есть понятие относительное.
С точки зрения субъекта, рассматривающего более низкий уровень - это описание (алгоритм).
С точки зрения объекта - исполнителя текущего уровня - это предписание (программа).

Вот.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 16:01 

Зарегистрирован: Четверг, 30 Январь, 2014 13:38
Сообщения: 423
Ильченко Эдуард писал(а):
andr писал(а):
Это я попытался вывернуться из проблемного определения:
алгоритм - это программа для абстрактного исполнителя.

Уж как получилось сходу.
Кажется получилось?

Определения так и не нашёл : (

Что такое алгоритм - не раскрыто.
Что такое абстрактный исполнитель - не раскрыто.
Определение программы Вы просите пока не рассматривать.

Наверно не получилось ... : )


Цитата:
Определения так и не нашёл : (


Цитата:
Что такое алгоритм - не раскрыто
Вот те на.
Я думал, уж Вы то это знаете. Или запамятовали в дискуссиях? :D
Это каждый добропорядочный школьник должен знать - определение из школьной информатики типа:
алгоритм - это строгое и точное предписание исполнителю,
выполнить последовательность действий,
направленных на достижение заданной цели или решение поставленной задачи.

Это последовательный алгоритм (можно обобщить на параллельные алгоритмы).

Или Вам нужно более крутое определение?

Цитата:
Что такое абстрактный исполнитель - не раскрыто
Вот те на.
А я то старался.
Еще раз - по другому:
абстрактный исполнитель - это логически невозможная сущность.

Понятие "абстрактный исполнитель" представляет пустой класс (несуществующих) сущностей.
Абстрактные исполнители не существуют в природе.
Это пустое по объему понятие.
Как понятие вечного двигателя, но по физическим критериям.

Какое определение несуществующему объекту этому можно дать?
Через род (еще более пустое понятие) и видовое отличие - с единственным признаком:
не существует?
Через генетическое определение - как несуществующие сущности порождаются?

Не существует и баста.
В этом и заключается выверт из проблемного (сомнительного) определения:
алгоритм - это программа для абстрактного исполнителя.

Да еще:
Цитата:
Не могли бы Вы привести пример алгоритма, который никто выполнить не сможет?
Например, алгоритм доставки крылатой ракеты к цели.

Человек этот алгоритм не может выполнить - по понятным причинам.
Но человек может его понять и объяснить - это очень важно (архиважно :D).
И на основе этого он может сделать качественную программу - программную реализацию алгоритма.

Крылатая ракета не может выполнить алгоритм - ей нужна программа.
Понять и объяснить она его тоже не может.

----------------------------
Не имеются в виду потенциально возможные (маслом масляные) особо интеллектуальные ракеты (роботы),
которые работают прямо по алгоритмам - транслируют их в программы:
в принципе (теоретически) это можно будет (когда-нибудь), но сейчас это на фига - на убой?


Последний раз редактировалось andr Пятница, 06 Февраль, 2015 16:28, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 16:03 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 101
Моя формулировка:
Программа - это алгоритм, записанный на формальном языке в виде пригодном для исполнения механически без участия человека. В качестве исполнителя как правило выступает универсальная цифровая вычислительная машина.

Уточнение:
Вид пригодный для исполнения - это, к примеру, перфокарта или поток символов на магнитной ленте. Те физический носитель + некоторая система кодирования.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Пятница, 06 Февраль, 2015 16:16 

Зарегистрирован: Четверг, 30 Январь, 2014 13:38
Сообщения: 423
Alexey_Donskoy писал(а):
Ильченко Эдуард писал(а):
Абстрактный исполнитель требует своего определения.
Мне он до конца не понятен.
Да вы что, сговорились?

............................
............................
............................

Алексей.
Выражение "абстрактный исполнитель" некорректное.

В прямом смысле слова - оно бессмысленное, так как абстрактных объектов не бывает.
Абстрактными бывают понятия объектов.
Поэтому оно и вызывает недоумение.

Вы его использует в каком-то другом переносном, фигуральном и т.п. смысле.
Лучше это выражение сформулировать поточнее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 00:20 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
ilovb писал(а):
Программа - это алгоритм
Уже неверно. Поменялись местами класс и подкласс.
Каждый алгоритм можно перевести в программу, но не каждая программа является (описывается) алгоритмом.
Примеры: программа на декларативном языке. Это не обязательно Пролог. Любые данные в какой-нибудь системе моделирования одновременно являются также и программой - поскольку предписывают однозначные действия. Но сами действия зависят от исполнителя (моделирующей системы).

Цитата:
записанный на формальном языке в виде пригодном для исполнения механически без участия человека.
Мистический подход детектед. Чем человек принципиально отличается от "механического" исполнителя?!

Цитата:
В качестве исполнителя как правило выступает универсальная цифровая вычислительная машина.
Частный случай. Ввиду общности рассматриваемой проблемы не стоит его здесь упоминать.

Цитата:
физический носитель + некоторая система кодирования.
А вот это принципиально важно.
Структура + информация.
Правда, физический носитель не всегда легко выделить (что является им в случае на лету подкачиваемого и исполняемого кода в том же браузере? Разве что память).


andr писал(а):
Абстрактными бывают понятия объектов.
Блин, а о чём я твержу на протяжении стольких постов?!
Понятие по отношению к объекту - это категория надуровня!
А вот на самом надуровне это понятие является вполне себе реальным объектом.

Вот, смотрите на пальцах:

Уровень N: есть программа как предписание исполнителю. Конкретная программа для конкретного исполнителя.

Уровень N+1: есть программа как предписание исполнителю. Конкретная программа (на языке ОПР, например) и конкретный исполнитель (например, человек).

Взгляд (человека) с уровня N+1 на уровень N: тут вот у нас есть хорошая такая программа, но, блин, исполнитель на уровне N такой дурацкий, что требуется муторная детализация с идиотскими надуманными подробностями, чтобы сделать программу для него и заставить его делать то, что нам нужно.

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


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

А на самом деле всё просто.
Замените в вышеприведённых тезисах "программу уровня N" на "ассемблер", а "алгоритм" - на "ЯВУ". Что-нибудь изменится?
Нет, блин, не изменится! Потому что все эти понятия относительны, а отношения между ними инвариантны к значению N.
И вот так вы безбедно будете подниматься от самого нижнего уровня (скажем, нативного кода) - пока не упрётесь в штамп "алгоритм" со всеми его историческими корнями и недоосмыслениями - и психика упирается.
Ну в конце-то концов. Нельзя же быть настолько рабом психики!

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 14:31 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 101
Alexey_Donskoy писал(а):
Уже неверно. Поменялись местами класс и подкласс.
Каждый алгоритм можно перевести в программу, но не каждая программа является (описывается) алгоритмом.
Примеры: программа на декларативном языке. Это не обязательно Пролог. Любые данные в какой-нибудь системе моделирования одновременно являются также и программой - поскольку предписывают однозначные действия. Но сами действия зависят от исполнителя (моделирующей системы).

Вы ошибаетесь.

Любая программа является алгоритмом. Это очень важно понять и усвоить. Попробую объяснить раз такая проблема с этим:
Что такое язык программирования? Что нам известно?
1. Это формальный язык. Т.е. язык, который однозначен и не допускает различных интерпретаций.
2. Этот язык содержит набор деклараций, базовых операторов и управляющих структур.
Чем отличаются декларативные языки от императивных?
Вот тут важно понимать, что принципиальных отличий нет. Отличия только в форме записи и в организации интерпретатора.
Отстаивать отсутствие алгоритма можно про абсолютно любой язык.
Возьмем ассемблер:
ADD AX, BX

Где алгоритм? Может человек механически выполнить эту программу?
Очевидно что не может, если только..... он не знает алгоритм сложения двух чисел!

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

И вот тут очень важный момент. Алгоритм скрыт только ради удобства, а не потому, что его нет.

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

С этой позиции совершенно безразлично императивный язык или декларативный или еще какой. Эти два правила едины для всех языков программирования.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 14:47 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 101
Alexey_Donskoy писал(а):
Мистический подход детектед. Чем человек принципиально отличается от "механического" исполнителя?!


Тем, что он слишком много знает и благодаря этим знаниям может вмешиваться в процесс.
Вот, к примеру, я даю вам программу:
x := 2 + 2;

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

Ну и в итоге совсем не факт что сложить два числа можно механически без вашего участия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 15:16 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 101
Alexey_Donskoy писал(а):
ilovb писал(а):
В качестве исполнителя как правило выступает универсальная цифровая вычислительная машина.
Частный случай. Ввиду общности рассматриваемой проблемы не стоит его здесь упоминать.

Может быть, а может быть и стоит.
Я не просто так сформулировал "универсальная цифровая вычислительная машина"
1. Универсальная - прочие просто нет смысла рассматривать. Нас ведь интересуют все алгоритмы а не маленькое подмножество типа комбинационных схем.
2. Цифровая - подчеркивает дискретность и цифровую абстракцию. Без этого алгоритмы не работают.
3. Вычислительная - подчеркивает, что алгоритмы - это вычисления и ничего больше.
4. Машина - подчеркивает, что устройство работает "механически" без вмешательства человека.

Обращаю внимание, что УЦВМ - это не обязательно ЭВМ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 15:52 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Alexey_Donskoy писал(а):
Ильченко Эдуард писал(а):
Абстрактный исполнитель требует своего определения.
Мне он до конца не понятен.
Да вы что, сговорились?

Что такое абстрактное? Это значит, что сформулирован ряд существенных критериев, которым соответствует потенциально неограниченное множество конкретных объектов. У этих объектов есть куча разных свойств, но все они, кроме отвечающих заданным критериям, в данном случае несущественны.

Что такое абстрактное — понятно. Не понятно, что такое абстрактный исполнитель : )

Попробую из абстрактного получить определение абстрактного исполнителя.

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

Согласуется ли это с Вашим пониманием абстрактного исполнителя?
Или определению подлежит конкретный абстрактный исполнитель, например, абстрактный исполнитель человек?

Alexey_Donskoy писал(а):
В общем, в итоге предлагаю зафиксировать, что разница понятий "алгоритм" и "программа" возникает при сопоставлении двух соседних уровней, и никак иначе. На одном уровне что "программа", что "алгоритм" - не более чем разные языки.

Наверно, да. Только в одном случае прочтение исполнителем знаков приведёт к выполнению им действий, а во втором он их не сможет воспринять (пАтАмушто другой язык : )

Alexey_Donskoy писал(а):
Наконец, если мы рассмотрим предельно возможное упрощение системы команд, то получим то, о чём я писал выше: помимо элемента "действие" - обязательность, последовательность и развилка (ОПР).

Alexey_Donskoy писал(а):
Если мы говорим: "Исполнитель может выполнить программу на языке ОПР", то подразумеваем абстрактного исполнителя, критерием для отбора которого будет знание системы команд ОПР.

ОПР нельзя назвать системой команд, это скорее свойства исполнителя.
По поводу развилки смутные сомнения, нельзя ли её уложить в первые два понятия? …

Alexey_Donskoy писал(а):
Заметим, что рассуждения с плавным движениям по шкале сложность-простота я производил ДЛЯ ОДНОГО И ТОГО ЖЕ УРОВНЯ системной иерархии.
Причём без всяких дополнительных когнитивных аспектов и заморочек вроде сознания, смысла и описания предписаний!


Alexey_Donskoy писал(а):
С точки зрения субъекта, рассматривающего более низкий уровень - это описание (алгоритм).
С точки зрения объекта - исполнителя текущего уровня - это предписание (программа).

wiki писал(а):
Субъект — в психологии активное самосознающее начало душевной жизни, которое противопоставляет себя внешнему миру и своим собственным состояниям, рассматривая их как объект.

Совершенно с Вами согласен. Чтобы осознать нечто в качестве алгоритма, требуется субъект.
Alexey_Donskoy писал(а):
... алгоритм как абстракция ...

Кстати, абстракция может возникнуть только в «сознании (как памяти, содержащей опыт)» субъекта, не обязательно человека.

Абстракция — это всегда описание.

Alexey_Donskoy писал(а):
Это есть алгоритм как абстракция основных свойств нашей программы

Да, соглашусь.

Alexey_Donskoy писал(а):
Это значит, что понятие "алгоритм" со всей очевидностью становится частным случаем понятия "программа".

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


Последний раз редактировалось Ильченко Эдуард Суббота, 07 Февраль, 2015 16:19, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 16:04 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 101
Ильченко Эдуард писал(а):
Кстати, абстракция может возникнуть только в «сознании (как памяти, содержащей опыт)» субъекта, не обязательно человека.

Абстракция — это всегда описание.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 18:06 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
andr писал(а):
Цитата:
Что такое алгоритм - не раскрыто
Вот те на.
Я думал, уж Вы то это знаете. Или запамятовали в дискуссиях? :D
Это каждый добропорядочный школьник должен знать

Я уже далеко не школьник и могу позволить себе сомневаться в школьных истинах.

andr писал(а):
алгоритм <--> программа.

andr писал(а):
О программах пока забыли — абстрагировались.


Понятно Ваше определение алгоритма. Оно совпадает со школьным определением.
andr писал(а):
алгоритм - это строгое и точное предписание исполнителю,
выполнить последовательность действий,
направленных на достижение заданной цели или решение поставленной задачи.


Но чувствуете некий подвох

andr писал(а):
А ведь в этих двух соснах путаница существует до сих пор в информатике, включая школьную.


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


Что такое программа?



andr писал(а):
Абстрактные исполнители не существуют в природе.

Соглашусь с Вами.

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


andr писал(а):
Цитата:
Не могли бы Вы привести пример алгоритма, который никто выполнить не сможет?
Например, алгоритм доставки крылатой ракеты к цели.

Человек этот алгоритм не может выполнить - по понятным причинам.


Мне эти причины не понятны.

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

Не абстрактную ли ракету мы сейчас рассмотрели? : )


Из-за того, что школьное определение алгоритма практически не отличает его от программы, Ваша ракета может не добрать до цели : )

andr писал(а):
Но человек может его понять и объяснить - это очень важно (архиважно :D).
И на основе этого он может сделать качественную программу - программную реализацию алгоритма.


Согласен. Или лечь за рычаги управления.
Понять и объяснить — это категории сознания.

andr писал(а):
Крылатая ракета не может выполнить алгоритм - ей нужна программа.

И опять согласен. Если её система управления устроена соответствующим образом.

andr писал(а):
Понять и объяснить она его тоже не может.


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

P.S.
Ильченко Эдуард писал(а):
Кстати, обычное пианино нельзя рассматривать в качестве исполнителя. оно не умеет производить действия.

Погорячился. Можно. : )

P.P.S.
А ещё крылатую ракету можно доставить к цели автофургоном : )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 18:41 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 101
Цитата:
Описание алгоритма в форме, воспринимаемой ЭВМ, называется программой

Каган Б. М. Электронные вычислительные машины и системы. — М.: Энергоатом-издат, 1991, стр. 10


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 21:14 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5851
Откуда: Москва
andr писал(а):
Абстрактные исполнители не существуют в природе.

Ильченко Эдуард писал(а):
Соглашусь с Вами.

Маши́на Тью́ринга (МТ) — абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма.

Мне кажется, "абстрактный исполнитель" существует только на русском языке (но не на английском).

Похоже, что англофоны вообще не знают, что такое исполнитель. Или я не прав?

Там, где русский скажет "исполнитель", американцы говорят "simulator/computer/computor"
Цитата:
A computer (or human "computor"[28]) is a restricted type of machine, a "discrete deterministic mechanical device"

Цитата:
target computing agent (computer/computor).

Цитаты взяты из статьи Algorithm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что же такое алгоритм?
СообщениеДобавлено: Суббота, 07 Февраль, 2015 21:59 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
ilovb писал(а):
Цитата:
Описание алгоритма в форме, воспринимаемой ЭВМ, называется программой

Т.е. программ за пределами ЭВМ не существует?

А так да, определение имеет право на существование.
На основании определения автор делает какие-то выводы.
Внутри рамок, очерченных ЭВМой, противоречий наверное нет.

Для меня алгоритмы и программы в связи с ЭВМ представляют лишь локальный частный случай.

Моё мнение:
Программы существуют с момента возникновения вселенной, а может и раньше : ), ведь как-то Вселенная появилась : )

Алгоритмы существуют с момента появления сознательных существ. Это необязательно человек. Например, кошку я отношу у сознательному существу. Основной признак сознательного существа наличие нервной системы и способности учиться.

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

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

Существа по-сложнее для описания алгоритма используют звуки, графику.

Наскальные рисунки (декларативный язык?) вполне могли быть алгоритмами охоты.

Своё мнение, как могу, обосновываю здесь.

Ну, а сами определения просты:
Ильченко Эдуард писал(а):
Алгоритм — описание порядка действий исполнител(я/ей), для достижения определённой цели.

Программа — определённый набор команд (предписаний), на которые может реагировать исполнитель

На мой взгляд, случай с ЭВМ сюда тоже подходит.


ilovb писал(а):
Возьмем ассемблер:
ADD AX, BX

Где алгоритм? Может человек механически выполнить эту программу?
Очевидно что не может, если только..... он не знает алгоритм сложения двух чисел!

Очень хороший пример.

Всё просто.
Алгоритм у Вас в голове, у меня в голове и может появиться в голове того, кто изучает ассемблер и устройство процессора.

Алгоритм, как ему и положено, содержит описание (понятное и Вам и мне, но не процессору) действий исполнителя. «Сложить содержимое регистров АХ и ВХ. Результат поместить в регистр АХ.»

Выполнить эту программу человек не может. Потому, что это не программа : )
Нет у человека физического доступа к регистрам АХ и ВХ.

И знание алгоритма сложения двух чисел тоже не поможет (кстати, где находится этот алгоритм?), хотя бы потому, что неизвестно содержимое регистров.


ilovb писал(а):
1. ... Нас ведь интересуют все алгоритмы

Да.

ilovb писал(а):
2. Цифровая - подчеркивает дискретность и цифровую абстракцию.

Дайте, пожалуйста, определение цифровой абстракции.

ilovb писал(а):
Без этого алгоритмы не работают.

Не факт. Обоснуйте, пожалуйста.

ilovb писал(а):
3. ... алгоритмы - это вычисления и ничего больше.

Пожалуйста, обоснуйте. С учётом: «Нас ведь интересуют все алгоритмы».

ilovb писал(а):
4. Машина - подчеркивает, что устройство работает "механически" без вмешательства человека.

Обращаю внимание, что УЦВМ - это не обязательно ЭВМ.

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


ilovb писал(а):
Ильченко Эдуард писал(а):
Кстати, абстракция может возникнуть только в «сознании (как памяти, содержащей опыт)» субъекта, не обязательно человека.

Абстракция — это всегда описание.

Тут не все так однозначно. Есть известная природная абстракция - ДНК.
Вполне себе абстрактный цифровой код. Причем этот код содержит самый натуральный алгоритм построения организма.

Ещё один, очень хороший пример. Спасибо.

Природной абстракции - ДНК не существует. (Ну, или дайте определение абстракции)

В природе существуют вполне себе конкретные ДНК из которых строятся вполне конкретные организмы. Возможно ДНК существовали задолго до появления человека.

Абстракция ДНК существует только в голове (сознании) человека.

ilovb писал(а):
И никаких "сознаний" и "субъектов" тут очевидно нет. (ну если исключить божество конечно)
[/quote]

Там где, абстракция, там всегда «сознание» и «субъекты». По определению.

Что такое абстрактный цифровой код?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 328 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13 ... 17  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB