Автоматное программирование, Где истоки?
От: rg_software  
Дата: 11.09.06 10:04
Оценка:
Задавал этот вопрос на одном из форумов, но чёткого ответа не получил. Мб, здесь повезёт

---

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

Типичный пример использования -- например, при создании стратегии жизни игрового персонажа, пусть будет муравья. Муравей либо отдыхает, либо атакует врага, либо ищет пищу.
Каждая из этих моделей поведения представляется отдельной процедурой, а вызов процедур определяется "автоматом" примерно такого вида:

режим = ОТДЫХАТЬ;
switch(режим)
{
case ОТДЫХАТЬ: fun_REST(); break;
case ИСКАТЬ: fun_SEARCH(); break;
case АТАКОВАТЬ: fun_ATTACK(); break;

// а здесь идёт логика переключений
if(враг рядом) режим = АТАКОВАТЬ;
if(голодный) режим = ИСКАТЬ;
в противном случае режим = ОТДЫХАТЬ;
};

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

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

А теперь внимание, вопрос. Может ли кто-нибудь указать на (1) более раннее описание сходной техники; (2) определить название того, как это называется ("автоматное программирование"?) и когда этот термин появился (со ссылками, разумеется); (3) привести примеры использования данного подхода (не моделирования обычных конечных автоматов -- это любой движок регулярных выражений делает) в сравнительно старых проектах?

Спасибо.
Re: Автоматное программирование, Где истоки?
От: Cyberax Марс  
Дата: 11.09.06 10:25
Оценка:
rg_software wrote:
> Эта, наверняка многим известная методика описана в куче книг и
> представляется почти что народной. Однако судя по статье (равно как и по
> куче других ссылок в инете) данный подход был изобретён лишь в 1991 году
> (!), к тому же в России.
??? Конечные автоматы известны были лет за 30 до этого.

Скорее всего в 91 году просто сформулировали что такое "автоматное
программирование". Точно так же, ООП и паттерны использовали еще до
введения самого термина "паттерн".
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re: Автоматное программирование, Где истоки?
От: Quintanar Россия  
Дата: 11.09.06 10:26
Оценка:
Здравствуйте, rg_software, Вы писали:

>А теперь внимание, вопрос. Может ли кто-нибудь указать на (1) более раннее описание сходной техники; (2) определить название того, как это называется ("автоматное программирование"?) и когда этот термин появился (со ссылками, разумеется); (3) привести примеры использования данного подхода (не моделирования обычных конечных автоматов -- это любой движок регулярных выражений делает) в сравнительно старых проектах?


Можно начать с известной статьи Тьюринга про автоматы. Он ими моделировал человека.
Претензии некоторых на открытие этой области выглядят смешно, это "открытие" способен сделать любой человек, который изучал теорию автоматов.
Re: Автоматное программирование, Где истоки?
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 11.09.06 10:41
Оценка:
Здравствуйте, rg_software, Вы писали:

Реализация активных объектов
Автор: Гурин Сергей Васильевич
Дата: 30.07.06

Не это ли вы ищете?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re[2]: Автоматное программирование, Где истоки?
От: rg_software  
Дата: 11.09.06 11:04
Оценка:
Здравствуйте, Quintanar, Вы писали:

Q>Здравствуйте, rg_software, Вы писали:


>>А теперь внимание, вопрос. Может ли кто-нибудь указать на (1) более раннее описание сходной техники; (2) определить название того, как это называется ("автоматное программирование"?) и когда этот термин появился (со ссылками, разумеется); (3) привести примеры использования данного подхода (не моделирования обычных конечных автоматов -- это любой движок регулярных выражений делает) в сравнительно старых проектах?


Q>Можно начать с известной статьи Тьюринга про автоматы. Он ими моделировал человека.

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


Да, прошу прощения, при копировании текста исчез линк: http://en.wikipedia.org/wiki/Automata-Based_Programming

Что вы об этом думаете??

Насчёт изобретения автоматов Тьюрингом и Ко -- это всё понятно; но... Вот дальше мне предлагают статью Гурина. Это ведь уже не совсем автоматы Тьюринга, не так ли? Отлично, пусть это будет называться "технологией STEP". Пусть подход, разработанный Шалыто, называется "SWITCH-технология", это тоже нормально, никаких возражений.

Далее, если я, предположим, пишу статью по программированию и беру за основу своей программы ИДЕЮ о том, что алгоритм можно представить в виде машины с конечным числом состояний, что мне делать? Сделать реверанс в сторону Шалыто и сказать, что это он изобрёл в 1991г? Или в сторону Гурина, сославшись на его статью 2006г? Или как мне это обозвать, каким словом, и на кого сослаться как на пионера подхода?? Такое впечатление, что идея, лежащая на поверхности, настолько "народна", что никто не догадался её приватизировать, но если ты хочешь поступить честно и воздать автору должное, оказывается, что персоны появляются достаточно неожиданные...
Re: Автоматное программирование, Где истоки?
От: Privalov  
Дата: 11.09.06 11:07
Оценка:
Здравствуйте, rg_software, Вы писали:

_>А теперь внимание, вопрос. Может ли кто-нибудь указать на (1) более раннее описание сходной техники; (2) определить название того, как это называется ("автоматное программирование"?) и когда этот термин появился (со ссылками, разумеется); (3) привести примеры использования данного подхода (не моделирования обычных конечных автоматов -- это любой движок регулярных выражений делает) в сравнительно старых проектах?


Здесь смотрел?
Re[2]: Автоматное программирование, Где истоки?
От: rg_software  
Дата: 11.09.06 11:15
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Здравствуйте, rg_software, Вы писали:


_>>А теперь внимание, вопрос. Может ли кто-нибудь указать на (1) более раннее описание сходной техники; (2) определить название того, как это называется ("автоматное программирование"?) и когда этот термин появился (со ссылками, разумеется); (3) привести примеры использования данного подхода (не моделирования обычных конечных автоматов -- это любой движок регулярных выражений делает) в сравнительно старых проектах?


P>Здесь смотрел?


Да смотрел... по правде говоря, именно эти ребята меня и беспокоят. То есть то, что они делают и развивают автоматный подход -- это замечательно, но они претендуют на то, что любая программа, составленная в "автоматном" стиле, должна быть со ссылкой на них как на авторов идеи.
Re: Автоматное программирование, Где истоки?
От: DerBober США  
Дата: 11.09.06 15:31
Оценка: 3 (1)
Здравствуйте, rg_software, Вы писали:

_>Эта, наверняка многим известная методика описана в куче книг и представляется почти что народной. Однако судя по статье (равно как и по куче других ссылок в инете) данный подход был изобретён лишь в 1991 году (!), к тому же в России.


Автоматное программирование позиционируется как методика или даже методология разработки программ. Он возможно и возник в начале 90-ых. А сами автоматы и множество других моделей динамических систем были созданны значительно раньше и еще будут созданны в будующем .
Здесь следует чувствовать разницу между моделью (собственно автоматами), применению модели для решения конкретных задач (например в программировании) и методологией разработки основанной на некоторой модели.
Re[3]: Автоматное программирование, Где истоки?
От: Quintanar Россия  
Дата: 11.09.06 15:44
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Далее, если я, предположим, пишу статью по программированию и беру за основу своей программы ИДЕЮ о том, что алгоритм можно представить в виде машины с конечным числом состояний, что мне делать? Сделать реверанс в сторону Шалыто и сказать, что это он изобрёл в 1991г? Или в сторону Гурина, сославшись на его статью 2006г? Или как мне это обозвать, каким словом, и на кого сослаться как на пионера подхода?? Такое впечатление, что идея, лежащая на поверхности, настолько "народна", что никто не догадался её приватизировать, но если ты хочешь поступить честно и воздать автору должное, оказывается, что персоны появляются достаточно неожиданные...


Возможно ты составлял на уроках информатики блок-схемы алгоритмов — чем это отличается от "автоматного" подхода?
Я видел, что в различных описаниях внешних устройств, их функционирование описывается именно конечным автоматом и по нему почти один в один пишутся драйвера. Это настолько естественный подход, что его используют очень давно. Не знаю, кто там пытается присвоить себе славу изобретателя, я бы никого не упоминал.
Re[2]: Автоматное программирование, Где истоки?
От: rg_software  
Дата: 11.09.06 16:54
Оценка:
Здравствуйте, DerBober, Вы писали:

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

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


Ну хорошо, не нужна мне "методология" со всеми её наворотами. Я просто вижу (психологически), что мою программу удобно представить в виде конечного автомата, вернее, в виде машины с конечным числом состояний. Как мне назвать этот психологический инструмент? "Автоматное программирование"? Ан нет, на это название уже претендуют господа из SoftCraft'а...
Re[3]: Автоматное программирование, Где истоки?
От: UrryMcA Россия http://www.UrryMcA.com
Дата: 11.09.06 16:55
Оценка:
Здравствуйте, rg_software, Вы писали:

_>но они претендуют на то, что любая программа, составленная в "автоматном" стиле, должна быть со ссылкой на них как на авторов идеи.


Где это Вы такое откопали???

Можно ссылочку на softcraft'e??
Re[4]: Автоматное программирование, Где истоки?
От: rg_software  
Дата: 11.09.06 17:03
Оценка:
Здравствуйте, UrryMcA, Вы писали:

UMA>Здравствуйте, rg_software, Вы писали:


_>>но они претендуют на то, что любая программа, составленная в "автоматном" стиле, должна быть со ссылкой на них как на авторов идеи.


UMA>Где это Вы такое откопали???


UMA>Можно ссылочку на softcraft'e??



Вопрос тонкий, я послал личное сообщение.
Re[3]: Автоматное программирование, Где истоки?
От: UrryMcA Россия http://www.UrryMcA.com
Дата: 11.09.06 17:24
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Ну хорошо, не нужна мне "методология" со всеми её наворотами. Я просто вижу (психологически), что мою программу удобно представить в виде конечного автомата, вернее, в виде машины с конечным числом состояний. Как мне назвать этот психологический инструмент? "Автоматное программирование"? Ан нет, на это название уже претендуют господа из SoftCraft'а...


Используйте в таком случае термин "синхронное программирование". За его использование уж точно ничего не будет.

P.S. Спасибо кстати за письмо с объяснением. Лично я уверен, что никаких юридических прав на данный термин никто не имеет, а посему не может указывать как его использовать. Хотя надо копать по этому поводу историю вопроса...
Re[3]: Автоматное программирование, Где истоки?
От: DerBober США  
Дата: 11.09.06 17:28
Оценка:
Здравствуйте, rg_software, Вы писали:

_>Ну хорошо, не нужна мне "методология" со всеми её наворотами. Я просто вижу (психологически), что мою программу удобно представить в виде конечного автомата, вернее, в виде машины с конечным числом состояний. Как мне назвать этот психологический инструмент? "Автоматное программирование"? Ан нет, на это название уже претендуют господа из SoftCraft'а...


Подскажи, какая статья или утверждение старкрафтовцев тебя так смутили?

Зачем сразу автоматное программирование? Скажи что ты строишь модель некоторой системы используя автоматные модели (ссылки на Тюринга или еще кого либо). Потом уже рассуждай о реализации этой модели на языке программирования.
Re[3]: Автоматное программирование, Где истоки?
От: FR  
Дата: 11.09.06 17:30
Оценка:
Здравствуйте, rg_software, Вы писали:


_>Ну хорошо, не нужна мне "методология" со всеми её наворотами. Я просто вижу (психологически), что мою программу удобно представить в виде конечного автомата, вернее, в виде машины с конечным числом состояний. Как мне назвать этот психологический инструмент? "Автоматное программирование"? Ан нет, на это название уже претендуют господа из SoftCraft'а...


Назови программирование с помощью машины состояний
Re[4]: Автоматное программирование, Где истоки?
От: DerBober США  
Дата: 11.09.06 17:34
Оценка:
Здравствуйте, UrryMcA, Вы писали:

UMA>Используйте в таком случае термин "синхронное программирование". За его использование уж точно ничего не будет.


UMA>P.S. Спасибо кстати за письмо с объяснением. Лично я уверен, что никаких юридических прав на данный термин никто не имеет, а посему не может указывать как его использовать. Хотя надо копать по этому поводу историю вопроса...


А за какие термины и модели может что-то быть? Это же научное знание. Пока они эти абстракции не узаконят в патентах ничего быть не может. Да и патенты можно обойти, но для этого надо в патентных вопросах разбираться. Или иметь под рукой человека уровня "заслуженый изобретатель СССР/России".
Re[5]: Автоматное программирование, Где истоки?
От: UrryMcA Россия http://www.UrryMcA.com
Дата: 11.09.06 17:40
Оценка:
Здравствуйте, DerBober, Вы писали:

DB>А за какие термины и модели может что-то быть? Это же научное знание.


Что-то типа аналога интеллектуального права есть в академических кругах. Точнее — давать ссылки на автора идеи является хорошим тоном.
Re[6]: Автоматное программирование, Где истоки?
От: FR  
Дата: 11.09.06 17:47
Оценка:
Здравствуйте, UrryMcA, Вы писали:

UMA>Здравствуйте, DerBober, Вы писали:


DB>>А за какие термины и модели может что-то быть? Это же научное знание.


UMA>Что-то типа аналога интеллектуального права есть в академических кругах. Точнее — давать ссылки на автора идеи является хорошим тоном.


Угу индекс цитирования поисковики именно отуда и сперли
Re[6]: Автоматное программирование, Где истоки?
От: DerBober США  
Дата: 11.09.06 17:57
Оценка:
Здравствуйте, UrryMcA, Вы писали:

DB>>А за какие термины и модели может что-то быть? Это же научное знание.


UMA>Что-то типа аналога интеллектуального права есть в академических кругах. Точнее — давать ссылки на автора идеи является хорошим тоном.


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

Не совсем понял проблему. Проблема в том, что при использование термина "автоматное программирование" в программе/документации авторы термина заявят о своих правах на программу? Дык это полный бред. Или просто не хочется давать ссылку на авторов?
Re[7]: Автоматное программирование, Где истоки?
От: rg_software  
Дата: 11.09.06 18:44
Оценка:
Здравствуйте, DerBober, Вы писали:

DB>Здравствуйте, UrryMcA, Вы писали:


DB>>>А за какие термины и модели может что-то быть? Это же научное знание.


UMA>>Что-то типа аналога интеллектуального права есть в академических кругах. Точнее — давать ссылки на автора идеи является хорошим тоном.


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


DB>Не совсем понял проблему. Проблема в том, что при использование термина "автоматное программирование" в программе/документации авторы термина заявят о своих правах на программу? Дык это полный бред. Или просто не хочется давать ссылку на авторов?


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