?

Log in

No account? Create an account
Изобретатель автоматного программирования - Теоретическая информатика по-русски [entries|archive|friends|userinfo]
Теоретическая информатика по-русски

[ Профиль | livejournal userinfo ]
[ Архив | journal archive ]

Изобретатель автоматного программирования [Jan. 4th, 2008|01:45 pm]
Теоретическая информатика по-русски
ru_cs
[ex_croco667]
Коллеги, только что обнаружил в Википедии интересный казус. Имеется статья (причем и на русском, и на английском), посвященная "автоматному программированию". И в обоих вариантах статьи делается, ни много ни мало, утверждение, что автоматное программирование предложено (SIC!!!) неким А.А.Шалыто в 1991 году. Статьи весьма солидно оформлены, библиография на два десятка названий, всё такое.

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


Короче, вот ссылка на статью по-русски.
http://ru.wikipedia.org/wiki/%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

Может, с ней что-нибудь всё-таки сделать?

NB: буду только рад, если кто-нибудь объяснит мне, в чём я не прав.
LinkReply

Comments:
[User Picture]From: waqur
2008-01-04 12:50 pm (UTC)
Похоже на изобретение своего велосипеда с квадратными колёсами под проедание государственных грантов.
(Reply) (Thread)
From: ex_croco667
2008-01-04 01:10 pm (UTC)
Именно. Но ладно бы он там тихонько потреблял свои гранты, а то ведь лезет в изобретатели новой парадигмы. При том что парадигма-то небось старше его самого.
(Reply) (Parent) (Thread)
[User Picture]From: geniepro
2008-01-04 02:27 pm (UTC)

Чуть-чуть ссылок:

(Reply) (Thread)
From: stassats
2008-01-04 03:10 pm (UTC)

Re: Чуть-чуть ссылок:

Цитата по первой ссылке забавна:

«Не беспокойтесь, что ваши идеи украдут.
Если эти идеи хороши, вы должны вбить их людям в глотки.»
(Reply) (Parent) (Thread)
From: ex_croco667
2008-01-04 03:55 pm (UTC)

Re: Чуть-чуть ссылок:

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

Нет, я ничего против этого Шалыто не имею. Кроме одного: не мог он "предложить" автоматное программирование. К 1991 году история автоматного программирования насчитывала уже три десятка лет.
(Reply) (Parent) (Thread)
[User Picture]From: geniepro
2008-01-04 06:39 pm (UTC)

Re: Чуть-чуть ссылок:

Если я правильно понял, он предложил сумму этих знаний, сведённую в стройную методологию, и инструментарий для неё.

А что касается того, кто что раньше там экспериментировал...
Ну вот в начале 60-х появился язык Симула, но термин ООП придумал Алан Кей, в семидесятых. И изобретателем ООП считается автор Смоллтока, а не Симулы...

Отдельно элементы методики Шалыто, может быть, и не новы, но, видимо, сведя их вместе, Шалыто получил новое качество...

Кстати, на западе работы и заслуги Шалыто не оспариваются, а называются (по-крайней мере, раньше назывались) русским прорывом в области программирования...
Наверное, это о чём-то говорит...
(Reply) (Parent) (Thread)
[User Picture]From: zavulonium
2008-01-04 07:22 pm (UTC)

Re: Чуть-чуть ссылок:

> Кстати, на западе работы и заслуги Шалыто не оспариваются, а называются (по-крайней мере, раньше назывались) русским прорывом в области программирования...
> Наверное, это о чём-то говорит...

Как раз это ни о чём не говорит.
(Reply) (Parent) (Thread)
From: ex_croco667
2008-01-04 08:11 pm (UTC)

Re: Чуть-чуть ссылок:

Если я правильно понял, он предложил сумму этих знаний, сведённую в стройную методологию,

И в чём, простите, заключается эта "методология"? Только не торопитесь. Заметим, кому-то не хватило формата статьи в Википедии, чтобы это объяснить.

При этом, NB: в чём заключается автоматное программирование как таковое -- можно объяснить в две-три фразы.

Нет, вот давайте, я -- программист-практик (ну, я ещё и к.ф.-м.н., и сейчас скорее воспринимаю себя как исследователя, но таки nevertheless, программировать за деньги мне тоже приходилось, и не так чтобы мало). Как использовать конечные автоматы -- я знаю. И объяснить могу, в том числе и студентам (и, кстати, и объясняю). И сам часто применяю. Особенно в событийно-ориентированных программах. И, более того, я знаю, чем отличаются от меня те программисты, которые этого делать не могут (например, массированным и не по делу применением тредов).

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

Но даже если какая-то методология и есть, и даже обладает научной новизной (что вполне возможно), это не означает, что Шалыто предложил (как это написано в Википедии) автоматное программирование как таковое, как парадигму программирования. Если бы было написано "развил и получил серьёзные результаты в области" -- это я бы понял, да. Но написано там не это. Там написано -- что именно "ПРЕДЛОЖИЛ".

Кстати, "свести воедино сумму имеющихся знаний" -- это никоим образом не есть "предложить". Это есть именно что "свести воедино сумму знаний". Вот там какая-то switch-технология упоминается -- я готов допустить, что её, технологию эту, Шалыто действительно предложил. А автоматное программирование -- это парадигма, известная, как я уже в сотый раз повторяю, с тех пор, когда Шалыто ещё в школе учился (он ведь 1948 г/р, так? -- значит, в начале 1960х ему было 12-13-14-15 лет).

Между прочим, по версии статьи из Википедии, "предложено" автоматное программирование было в 1991 году. Так вот, я хоть и помоложе, но точно помню, что state machines уже использовал если не в 1991, то уж в 1992 году точно.

Кстати, на западе работы и заслуги Шалыто не оспариваются, а называются (по-крайней мере, раньше назывались) русским прорывом в области программирования...

Знаете, я что-то этого ни разу не видел. Ссылочку давайте, что ли? А так, знаете, я и на конференциях бываю, в том числе и за рубежом, и с коллегами общаюсь -- не слышал я фамилии Шалыто. Нигде и никогда.

Да я, впрочем, заслуг Шалыто и не оспариваю, поскольку не знаю, в чём они заключаются. Я оспариваю только одно: парадигму программирования в терминах конечных автоматов он не изобретал. И не предлагал.
(Reply) (Parent) (Thread)
[User Picture]From: geniepro
2008-01-04 10:34 pm (UTC)

Re: Чуть-чуть ссылок:

> А вот ЧТО сделал Шалыто? В двух словах

Ну если в двух словах, то SWITCH-технологию.
Именно это он и предложил в 1991 году, как я понимаю.
А также был соавтором инструмента UniMod для поддержки этой технологии...

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

> Знаете, я что-то этого ни разу не видел. Ссылочку давайте, что ли? А так, знаете, я и на конференциях бываю, в том числе и за рубежом, и с коллегами общаюсь -- не слышал я фамилии Шалыто. Нигде и никогда.

Ну, что тут скажешь? Конференции конференциям рознь. Впрочем, я ни на одной не был... :о)

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

-- не поместилось... :о(
(Reply) (Parent) (Thread)
[User Picture]From: geniepro
2008-01-04 10:35 pm (UTC)

Re: Чуть-чуть ссылок:

> Но даже если какая-то методология и есть, и даже обладает научной новизной (что вполне возможно), это не означает, что Шалыто предложил (как это написано в Википедии) автоматное программирование как таковое, как парадигму программирования. Если бы было написано "развил и получил серьёзные результаты в области" -- это я бы понял, да. Но написано там не это. Там написано -- что именно "ПРЕДЛОЖИЛ".

Опять упомяну про Алана Кея и ООП. В сущности, основа для ООП была до Смоллтока, ещё в Симуле лет за десять. Однако ООП ассоциириуется именно с именем Кея, так как этот термин предложил он.
В принципе, ОО-программы можно писать и на Сях, и в Модуле-2, однако это не то, что С++ или Оберон, и совсем не то, что Смоллток...

Возможно, аналогичная ситуация была и с автоматным программированием. Да, была теория автоматов, были машины клеточных автоматов, были всякие конечные и бесконечные автоматы типа машин Тьюринга и Поста.
Почему некоторые источники (и в том числе и вики) связывают автоматное программирование с Шалыто? Не знаю. Может быть потому, что он предложил этот термин (в 1991 г.), а также инструментарий для поддержки этой технологии?

В биографии http://is.ifmo.ru/persons/shalyto/ написано:

"В 1991 г. предложил Switch-технологию — технологию программирования на основе применения конечных автоматов."

По этой ссылке http://www.mind42.com/wiki/Automata-Based_Programming говорится вот что:

"Automata-Based Programming is a programming paradigm [1]. Its defining characteristic is the use of finite state machines to describe program behavior. The transition graphs of a state machines are used in all stages of software development (specification, implementation, debugging and documentation). Automata-Based Programming was introduced by Anatoly Shalyto in 1991 [2]. Switch-technology [3] was developed to support automata-based programming. Automata-Based Programming is considered to be rather general purpose program development methodology than just another one finite state machine implementation."

Здесь http://www.answers.com/topic/switch-technology и http://en.wikipedia.org/wiki/Switch-technology вот что пишут:

"Switch-technology is a technology for automata-based programming support. It was proposed by Anatoly Shalyto in 1991. It involves software specification, design, implementation, debugging, documentation and maintenance. The term “automata-based programming” is used not only for finite automata building and implementation, but also the whole process of software design and implementation, when automata are used to describe programs’ behavior."

В статье в PC Week http://www.pcweek.ru/themes/detail_print.php?ID=70806&print=Y и в русской вики упоминается, что

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

ЗЫ. Я вот подумал, а может Вам стоит задать все эти вопросы самому Шалыто?
shalyto@mail.ifmo.ru
(Reply) (Parent) (Thread)
[User Picture]From: geniepro
2008-01-05 12:29 pm (UTC)

Re: Чуть-чуть ссылок:

Я тут ещё подумал -- связь между "программированием с использованием автоматов" и "автоматным программированием" может быть такой же, как между "программированием с использованием объектов" и "объектно-ориентированным программированием", или между "программированием с использованием функций Си" и "функциональным программированием"...
(Reply) (Parent) (Thread)
(Deleted comment)
From: (Anonymous)
2009-09-02 01:25 pm (UTC)

Re: Чуть-чуть ссылок:

Вы, товарищ к.ф.-м.н., не утрудили себя даже вступление прочитать, где черным по белому написано
"Программирование с использованием автоматов имеет достаточно богатую историю
развития. Различные аспекты и понятия, связанные с этой идеей, рассматривались в
работах многих авторов с самых разных точек зрения и применительно к различным
конкретным вопросам. Программирование от состояний является одним из основных
стилей программирования [1]."
(Reply) (Parent) (Thread)
From: ex_croco667
2008-01-04 08:13 pm (UTC)

Re: Чуть-чуть ссылок:

P.S. А вот что мне уже реально интересно -- сам-то Шалыто видел, что про него в Википедии написали?
(Reply) (Parent) (Thread)
[User Picture]From: geniepro
2008-01-04 09:04 pm (UTC)

Re: Чуть-чуть ссылок:

Подозреваю, что видел, раз уж ссылка на вики-статью есть у него на сайте...
(Reply) (Parent) (Thread)
From: ex_croco667
2008-01-04 09:51 pm (UTC)

Re: Чуть-чуть ссылок:

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

Кстати, на сайте-то безумного утверждения про "изобретение автоматного программирования в 1991 году" как раз нет, во всяком случае я не заметил. Про switch-технологию -- есть, но тут как будто бы всё в порядке.

Впрочем, чем гадать, я, пожалуй, попытаюсь с Шалыто связаться сам. Скорее всего, уважаемого профессора попросту подставили не в меру восторженные ученики -- тогда это всё быстро решится.
(Reply) (Parent) (Thread)
[User Picture]From: geniepro
2008-01-04 10:37 pm (UTC)

Re: Чуть-чуть ссылок:

> Впрочем, чем гадать, я, пожалуй, попытаюсь с Шалыто связаться сам. Скорее всего, уважаемого профессора попросту подставили не в меру восторженные ученики -- тогда это всё быстро решится.

Совершенно с Вами согласен. ;о)
(Reply) (Parent) (Thread)
[User Picture]From: alf_kadett
2008-02-11 03:42 pm (UTC)
Увы, я общался с Шалыто - он сам себе не в меру восторженый ученик. Так что ничего быстро не решится, это именно способ подачи материала :)
(Reply) (Parent) (Thread)
From: (Anonymous)
2008-01-05 07:44 am (UTC)
Большинство профессоров сами свои сайты поддерживают. Не такой Шалыто старый. Хотя я, конечно, не знаю. Но не читать свой сайт - это уже за пределами возможного. Шалыто гиперактивный. Читал, конечно.

К сожалению, не думаю, что от личного общения будет какой-либо толк. На всякий случай: по-английски он не говорит. Но, вроде, и Вы по-русски пока можете.

А как вообще в Википедии разруливается ситуация, когда люди имеют противоположные мнения?
(Reply) (Parent) (Thread)
[User Picture]From: geniepro
2008-01-05 08:28 pm (UTC)
Ставят вопрос на обсуждение между пользователями и администрацией вики, что-то типа того...
Потом, через какое-то время принимают решение, какой вариант оставить, а какой стереть.
Думаю, так... По крайней мере, так решают вопрос о том, какие статьи удалить из вики. Например, статью о кариантсве... :о)
(Reply) (Parent) (Thread)
[User Picture]From: ivansorokin
2008-03-21 10:35 pm (UTC)
Когда люди имеют противоположное мнение в Вики пришут оба мнения.
(Reply) (Parent) (Thread)
[User Picture]From: rg_software
2008-03-29 12:08 am (UTC)
Да, я тоже в своё время поразился этой ситуации... Но знаете, в чём забавная деталь? Словосочетание "автоматное программирование" никто не догадался в своё время "закопирайтить". А г-н Шалыто догадался! И что теперь?
P.S. попробуйте найти этот термин в другом месте, без ссылок на Шалыто.
(Reply) (Thread)
[User Picture]From: mosk_on
2010-05-19 07:41 pm (UTC)

Похвально

я наткнулся на статью об "автоматном программировании" два года назад и, честно признаться, просто охренел от такого использования Википедии. Сейчас обнаружил, что статья подправлена и выглядит благопристойно. Я так понимаю, это случилось, в частности, благодаря Вам. Низкий поклон и респект.
(Reply) (Thread)
From: nb1t
2011-10-11 02:01 pm (UTC)
Подскажите стоит ли изучать это "Автоматное программирование" или лучше все по отдельности в классическом представлении?
(Reply) (Thread)
From: wevchykee7
2013-02-17 12:52 am (UTC)
Can we chat? Go Here dld.bz/chwZQ
(Reply) (Thread)

Error running style: S2TIMEOUT: Timeout: 4, URL: ru-cs.livejournal.com/7377.html at /home/lj/src/s2/S2.pm line 531.