Jump to content

Talk:Automata-based programming

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Kenga (talk | contribs) at 13:53, 18 January 2008. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

There is no something new in Automata-based programming, introduced by Anatoly Shalyto in 1991. Some words here are just an implementation-specific issues for a general FSM article. Also, the "Switch-technology" isn't described and published at all. Automata-Based Programming is not general purpose program development methodology. This article in just another one finite state machine implementation or "Original research".

20:13, 8 September 2006 (UTC)20:13, 8 September 2006 (UTC)~~ FSM-based programming seems to be so classical that it is almost impossible to find the pioneering works in this field. Can someone provide relevant links?


See

D. Harel, "Statecharts: A visual Formalism for complex systems", The Science of Computer Programming, 1987, 8, pp.231-274.

D. Harel, "Executable Object Modeling with Statecharts", 1997, IEEE COMPUTER, Vol. 30, issue 7, JULY, pp.31-42 Also online at http://www.wisdom.weizmann.ac.il/~dharel/SCANNED.PAPERS/OOStatecharts.pdf

P. Ward and S. Mellor, "Structured Development for Real-time Systems", 1985, Prentice Hall pp.86 & 302.

B.P. Douglass, "UML Statecharts", 1999, http://www.embedded.com/1999/9901/9901feat1.htm

C.A.R. Hoare, "Communicating Sequential Processes", 1985, Prentice Hall International Series in Computer Science.

C.A.R. Hoare, "Mathematical Models for Computer Science",1994, ftp://ftp.comlab.ox.ac.uk/pub/Documents/techpapers/Tony.Hoare/mathmodl.ps.z

G. Hilderink, A. Bakkers, J. Broenink, "A Distributed Real-Time Java System Based on CSP", 2000, The Third IEEE International Symposium on Object-Oriented Real-Time Distributed Computing ISORC 2000, California, March 15-17, pp. 400-407. Also online at http://www.rt.el.utwente.nl/javapp/information/CTJ/DRTJSBCSP.pdf

With all due respect for SPb academic departments, isn't the article self-promotion? 212.188.108.174 00:02, 10 December 2006 (UTC) Dietmar[reply]

-- I agree with you, Dietmar, but most of your sources are newer than 1991, so I am not sure it can be used to support the lack of novelty in the approach. As for older documents, do they contain the description of the same approach (i.e. simulating DFA using a high-level programming language for general use)? //Max


-- Colleagues, I definitely agree this article is self-promotion. Personally I know a paper dated back to 1968, devoted to automata-based programming:

Johnson W. L., Porter J. H., Ackley S. I., Ross D. T. Automatic generation of efficient lexical processors using finite state techniques, Comm ACM, 11:12, 805-813

and I'm nearly sure this is not the earliest work related to the subject, only I don't know them. The idea of simulating state-machines (as such) is obvious and widely used in lexical and syntax analyses, in event-driven programming (as an alternative to spawning numerous processes and threads) and in many other cases.

Furthermore, as far as I understand, Shalyto himself has written this article, may be with some help from his students.

DrCroco (talk) 21:12, 14 January 2008 (UTC)[reply]


-- Automata-based programming is not about implementing FSMs and not about that FSMs may be used in programming in some special problem domains (compilers, network protocols, reactive systems). Its main idea is that finite automata should be used to describe (not only to implement, but also to design and to document) behavior logic in every software system that contains entities with complex behavior. Such entities appear in a wide variety of domains, not only in compilers and network protocols: they are common in embedded systems and systems connected with logical control, in intellectual systems and games, in user interface, in information systems, where software entities frequently correspond to real-world entities. It makes automata-based programming a widely applicable programming method. Instead of saying: “use automata to generate lexical processors” or “use automata to design widgets” (http://www.ibm.com/developerworks/java/library/wa-finitemach1/index.html?S_TACT=105AGX99&S_CMP=CP) like different authors did before, Shalyto claims: “Do not reinvent automata-based programming in every specific domain! Use it universally for every entity with complex behavior that you meet in any domain.”

Main problems that are considered in automata-based programming are not how to implement FSMs, but how to extract entities with complex behavior from domain description or from system requirements, how to decompose such entities into logic and semantics (into automaton and control object), how to choose an appropriate level of abstraction for control object's operations. Unlike Harel's method that requires using statecharts from the very beginning of system design (and as a result, the whole system's behavior is described with a statechart even if only a single entity in it has complex beheavior), state-based object-oriented programming allows to integrate automated classes (state-based implementations of entities with complex behavior) into an existing pure object-oriented system. It makes automata-based programming even more widely applicable.

Kenga