Est. 1992 Intermediate

SimTalk

SimTalk is the object-oriented, event-driven language embedded in the German plant-simulation system that began life as Fraunhofer IPA's SIMPLE, was sold commercially as SIMPLE++ by AESOP GmbH from 1992, and is today Siemens Tecnomatix Plant Simulation - a language almost nobody writes outside a factory model, and one that hundreds of manufacturing engineers write every working day

Created by AESOP GmbH of Stuttgart, building on the SIMPLE and SIMPLEmac simulators developed at the Fraunhofer Institute for Manufacturing Engineering and Automation (Fraunhofer IPA). AESOP was founded in 1990 as AIS and renamed AESOP in 1991; the company was acquired by Tecnomatix, which was in turn acquired by UGS and then by Siemens. No individual has ever been publicly credited as the designer of the language itself

Paradigm Object-oriented and event-driven, embedded in a discrete-event simulation environment. Behavior is written in Methods that are themselves objects in a class library with single inheritance, and those Methods are attached to the entry, exit and failure controls of material-flow objects or scheduled to fire at a simulated time. Otherwise imperative and procedural
Typing Static and declaration-based. Local variables and parameters carry a declared type - integer, real, boolean, string, time, date, datetime, object, table, length, speed, acceleration, weight, list, stack, queue - plus an escape-hatch type any. The physical-quantity types are deliberately not interchangeable with each other
First Appeared 1992, as the built-in language of SIMPLE++ - the AESOP paper at the 1997 Winter Simulation Conference says the system was 'released commercially in 1992 by AESOP GmbH', and Fraunhofer's own account dates the C++ reimplementation of the earlier SIMPLEmac to 1992. Language lists that date SimTalk to 1993 are close but appear to be a year late; the name SimTALK itself is first documented in AESOP material from the mid-1990s
Latest Version SimTalk 2.0, as shipped in Tecnomatix Plant Simulation 2606 (announced by Siemens on 25 June 2026). SimTalk 1.0 is still supported in the same product and the two notations can be mixed freely within one model

SimTalk is the programming language you have almost certainly never written and quite possibly walked through. It exists inside exactly one product - today Siemens Tecnomatix Plant Simulation, previously eM-Plant, and before that SIMPLE++ from AESOP GmbH of Stuttgart - and its job is to describe what happens on a factory floor when the drag-and-drop objects are not enough. When a conveyor has to decide which of three buffers to feed, when a shift calendar has to interact with a breakdown distribution, when an AGV fleet has to be dispatched by a rule that no vendor dialog box anticipated, somebody writes SimTalk.

It is an odd position for a language: completely invisible from the outside, and completely unavoidable from the inside. There is no standalone compiler, no REPL, no package manager, no GitHub ecosystem, no Docker image. There is a Method object in a class library, and a text editor inside a Windows application that costs money. And yet the language has been in continuous commercial use since 1992, has had exactly one syntax revision in that time, and has just acquired an LLM front end.

History and origins

The lineage starts at the Fraunhofer Institute for Manufacturing Engineering and Automation (Fraunhofer IPA) in Stuttgart, in the research group that built factory simulators. Fraunhofer’s own publication record describes the eventual product as having been “first designed and implemented at the Fraunhofer-Institute for Manufacturing Engineering and Automation as SIMPLEmac and reimplemented based on C++ in 1992”. SIMPLE is an acronym - Simulation in Production, Logistics and Engineering - and the Macintosh version, per the commonly repeated account of the lineage, dates to 1986.

Commercialization followed the classic German institute route. A company called AIS (Angewandte Informations Systeme) was founded in Stuttgart around 1990 to take the work to market, renamed itself AESOP in 1991, and shipped the C++ rewrite as SIMPLE++. AESOP’s staff described it as a “new generation object-oriented simulation environment for modeling manufacturing, logistics and service systems that can be defined in terms of discrete events”, and, in the 1997 Winter Simulation Conference paper by David Kalasky and Gerald Levasseur of the company’s Chicago office, dated its commercial release plainly to 1992.

The language inside it was called SimTALK, capitalised that way in AESOP’s own web pages of the period. Those pages are the clearest surviving statement of what the language was for:

SIMPLE++ offers an integrated, and graphical modeling environment of a complete object-oriented built-in language. The language is called SimTALK. SimTALK is implemented as an interpreter, which makes it extremely user-friendly. Most of the modeling will usually be graphical, relying on the default behavior of the Basic Objects. However, specific rules for material or information flow, or decision rules for actions to be taken, can be implemented as necessary by a Text Editor.

That is the whole design brief, and it has never changed. SimTalk is the escape hatch from a graphical tool - not the primary interface, but the thing that makes the primary interface sufficient.

Who designed it

Nobody knows, publicly. Unusually for a language with a thirty-four-year commercial life, no individual has ever been credited with designing SimTalk. Dietmar Geuder of AESOP presented the system at the 1995 Winter Simulation Conference; Kalasky and Levasseur presented it in 1997; Siemens’ documentation refers to it only as “the proprietary programming language SimTalk”. The language is a corporate artifact in the most literal sense.

The name changes

The product went through four owners and three names while the language kept one:

YearProduct nameOwner
1992SIMPLE++AESOP GmbH (Fraunhofer IPA lineage)
1997SIMPLE++Tecnomatix AESOP GmbH
2000eM-PlantTecnomatix Technologies
2005Tecnomatix Plant SimulationUGS Corporation
2007Tecnomatix Plant SimulationSiemens AG

At no point did anyone rename SimTalk, and at no point did anyone break existing source code badly enough to force a rewrite. For a language embedded in enterprise simulation models that outlive the factories they describe, that continuity is the whole product.

The language

A SimTalk program is not a file. It is a Method - an object in the model’s class library, sitting alongside Conveyors, Stations, Buffers, Workers and DataTables, and inheriting from a parent Method the same way any other object inherits from its class. Methods are triggered by the simulation: attached to an object’s entry control, exit control or failure control; scheduled to fire at a simulated time; run at model initialization (Init) or termination (EndSim); or called directly from another Method. This is what makes the language event-driven in a strict sense - the scheduler, not the programmer, decides when your code runs.

SimTalk 1.0

The original notation is Eiffel-flavoured, and a teaching source at Škoda Auto University describes it outright as “derived from programming language Eiffel”. The resemblance is hard to miss: declarations between is and do, the body between do and end, := for assignment, and result as the keyword that carries a function’s return value.

is
   count : integer;
do
   count := 0;
   if count >= 10 then
      print "buffer full";
   end;
end;

Every statement ends in a semicolon. Control structures are if … then … else … end, for … to/downto, while, repeat … until, loop … exitloop, and switch. The documented keyword list - which covers both notations, so it includes the SimTalk 2.0 additions var, param, div and mod - is small enough to print on a slide: and, any, array, basis, boolean, byref, continue, create, current, date, datetime, div, downto, else, elseif, end, exitloop, false, for, forget, if, integer, length, list, loop, method, mod, next, not, object, or, param, pi, print, prio, queue, real, repeat, result, return, root, rootfolder, self, speed, stack, stopuntil, string, switch, table, then, time, to, true, until, var, void, wait, waitexpired, waituntil, weight, when, while.

The type system is small, static, and interesting in one respect: alongside the ordinary integer, real, boolean, string, object and table, SimTalk has physical-quantity types - length in metres, speed in metres per second, acceleration in metres per second squared, weight in kilograms - plus time, date and datetime. These are deliberately not mutually compatible; you cannot silently add a length to a time. In a language whose entire purpose is to describe machines moving material, that is a well-judged bit of domain-specific type safety, and it long predates the fashion for units-of-measure types elsewhere.

Two more features come straight from the simulation domain rather than from general-purpose language design. wait and waituntil suspend a Method in simulated time, so a control routine can be written as a linear narrative of what a machine does rather than as a state machine over callbacks. And every model gets an Event Debugger in addition to an ordinary Method Debugger - AESOP’s 1998 specification sheet advertised the ability to view the scheduled event list, set breakpoints on events, and stop the run when a user-specified condition holds for a scheduled event. Debugging a simulation means debugging time, and the tooling has reflected that since the 1990s.

SimTalk 2.0

In Plant Simulation 12.1, around 2015-2016, Siemens shipped a second notation. The release notes are unusually candid about the motivation: SimTalk 2.0’s “features make programming methods in Plant Simulation faster, easier, and less error-prone”. The changes are a catalogue of twenty-year-old papercuts:

  • Statements are line-terminated; the trailing semicolon is gone (a semicolon now separates multiple statements on one line, and an incomplete expression continues onto the next line).
  • The is … do … end scaffolding is gone. Local variables are declared with var, parameters with param, and the return type after -> rather than after a colon.
  • Control flow is simplified - if … else … end rather than if … then … else … end.
  • Compound assignment operators +=, -= and *= were added.
  • The about-equal operator became ~= instead of ==.
  • The keywords div and mod replaced SimTalk 1.0’s cryptic // (integer division) and \\ (integer modulo); // now introduces a comment.
  • Lists, DataTables, and the referencing of Methods and global variables all got cleaner syntax.
param arriving: object -> boolean
var waiting: integer := 0

waiting := Buffer.numMU
if waiting > 10
    print "backlog: " + to_str(waiting)
    return false
end
return true

The migration story is the part worth studying. SimTalk 1.0 was not deprecated, removed, or shimmed. Both notations remain first-class, selectable per Method with a New Syntax toggle on the ribbon, and freely mixable in a single model; clicking the toggle on an existing 1.0 Method converts its source in place, and a Shift-click on the model root converts everything at once. A decade later the current documentation still says SimTalk 1.0 “works in current and previous versions of Plant Simulation and you can continue using SimTalk 1.0 in old and new models”. Language designers with far larger user bases have handled a syntax break far worse.

Evolution and current relevance

The last decade has been about the boundary of the language rather than the language itself. Version 2201 (January 2022) added HTTP functions so a running model could talk to external servers. Recent releases added a PythonModule, which hosts Python functions inside the model and exposes them to SimTalk through .call() and .getValue(), with executePythonFile() for external scripts; the tutorial documentation notes that a system Python of 3.12.2 or newer is required. That is a meaningful admission: the interesting analysis around a simulation - optimization, statistics, machine learning - now happens in Python, and SimTalk’s job is increasingly to be the part that knows about conveyors.

And then there is the Copilot. Siemens announced an AI assistant with version 2504 in December 2025, initially for cloud-enabled users, promising SimTalk generation in a future update; version 2606, announced on 25 June 2026, delivered “LLM-based SimTalk coding support, which means it can convert natural language descriptions directly into functional SimTalk control code”, with a hosted model by default and a bring-your-own-LLM option for customers who would rather not send their plant logic anywhere.

A note on status. SimTalk is often catalogued as dormant, and for a language whose name has not appeared in a new product for three decades that is understandable - but it is not accurate. Plant Simulation is under active development, shipping several releases a year under a year-month version scheme, and SimTalk is its only native programming language. What is fair to say is that the language is frozen by design: SimTalk 2.0 in 2026 is very close to SimTalk 2.0 in 2016, and SimTalk 1.0 has been unchanged in essentials since the SIMPLE++ manuals of the 1990s. It is dormant the way a load-bearing wall is dormant.

The one genuine loss is reach. The 1998 specification sheet for SIMPLE++ V4.1 listed released platforms on Digital UNIX, HP-UX, AIX, IRIX, Solaris, SunOS, SCO Unix, Windows NT and Windows 95. Siemens today distributes Plant Simulation for Windows only. A language that once ran on seven Unixes now runs on one operating system, which is a fair summary of what happened to engineering workstations generally between 1998 and now.

Why it matters

SimTalk is a good argument for a category of language that programming-language history mostly ignores: the embedded vendor language that outlives its vendor. It has no standard, no committee, no independent implementation and no community outside a licence file, and it has nonetheless been continuously useful for thirty-four years across four corporate owners and three product names, in an industry - automotive manufacturing - where a bad model costs real money.

Three things about it are worth borrowing:

Domain types earn their keep. Making length, speed, acceleration, weight and time distinct, mutually incompatible primitive types is a small decision that prevents a specific and expensive class of error in exactly the domain the language serves. General-purpose languages have spent decades reaching for the same idea through libraries.

Simulated time belongs in the language. wait, waituntil and waitexpired let a control rule be written as a story rather than as a callback graph, and the Event Debugger treats the scheduled event list as a first-class thing to inspect and breakpoint. Coroutine-based concurrency arrived in the mainstream much later.

Compatibility is a feature you can ship. The SimTalk 1.0-to-2.0 transition - both notations valid, mixable per Method, convertible with one click, and the old one never removed - is a model of how to modernise a syntax without stranding a decade of customer code. It is not glamorous, and it is the reason models written under AESOP-era assumptions still open.

The rest of it is the ordinary fate of a good tool language: invisible, unfashionable, and running.

Timeline

1986
The Fraunhofer Institute for Manufacturing Engineering and Automation (Fraunhofer IPA) in Stuttgart builds the simulator that everything else descends from. Fraunhofer's own publication describes the eventual product as 'first designed and implemented at the Fraunhofer-Institute for Manufacturing Engineering and Automation as SIMPLEmac'; Wikipedia's account of the lineage dates the Macintosh version, SIMPLE Mac, to 1986. SIMPLE stands for Simulation in Production, Logistics and Engineering
1990
AIS (Angewandte Informations Systeme) is founded in Stuttgart to commercialize the work, and produces SIMPLE++. The company is renamed AESOP the following year, keeping the product name. Fraunhofer IPA's copyright notice from 1991 continues to appear alongside AESOP's in SIMPLE++ materials for years afterwards
1992
SIMPLE++ is reimplemented in C++ and released commercially. David Kalasky and Gerald Levasseur of AESOP's Chicago office write in their 1997 Winter Simulation Conference paper that it was 'released commercially in 1992 by AESOP GmbH' and had 'become the popular choice for simulation and simulation-based IT solutions for hundreds of organizations worldwide'. The built-in language that ships inside it - an interpreted, object-oriented control language - is SimTALK
1995
SIMPLE++ arrives in the English-language simulation literature. Dietmar F. Geuder of AESOP GmbH, Mittlerer Pfad 9, Stuttgart, presents 'Object Oriented Modeling with SIMPLE++' at the 27th Winter Simulation Conference, and AESOP publishes the SIMPLE++ Reference Manual, version 3
1996
AESOP runs the SiMPLE++ Object-Oriented Simulation Contest jointly with SCS, the Society for Computer Simulation. One of the entries, from Yu-Chi Ho's group at Harvard, builds a 'super-simulation' framework on top of the system's object model to compare designs for an apparel manufacturing line and a turbine-blade problem - an early demonstration that SimTalk was being used to extend the tool rather than merely to script it
1997
AESOP runs newsgroups for its user community on news.aesop.de, among them aesop.simple++.simtalk and aesop.simple++.modeling. The published customer list of that year runs to several hundred names and includes BASF, Bayer, BMW, Bosch, AEG, MTU, Nokia, Philips, Siemens, Thyssen and Voest. In the same year Tecnomatix Ltd. acquires AESOP
1998
SIMPLE++ V4.1 is released in January. AESOP's specification sheet for it lists 'SimTALK: object-oriented built-in language for individual controls' among the modeling features, alongside a Method Debugger and an Event Debugger, and gives the released platforms as Digital UNIX 3.2/4.0, HP-UX 9.x/10.x, AIX 3.2.5/4.1, IRIX 5.3/6.2, Solaris 2.5, SunOS 4.x, SCO 3.0/5.0, Windows NT and Windows 95. This is the high-water mark of the language's Unix reach
2000
SIMPLE++ is renamed eM-Plant under Tecnomatix Technologies. The product name changes; SimTalk does not
2005
UGS Corporation, which agreed to acquire Tecnomatix in January 2005 and closed the $228 million deal that April, renames eM-Plant to Tecnomatix Plant Simulation. Siemens AG acquires UGS in 2007, and SimTalk becomes - improbably, for a language born in a Stuttgart start-up - a Siemens product feature
2015
Tecnomatix Plant Simulation 12 is presented at the Plant Simulation Worldwide User Conference. In the point release that follows, 12.1 - shipped in the 2015-2016 window; Siemens does not publish day-level release dates for point releases - Siemens introduces SimTalk 2.0: the release notes record that 'we introduced SimTalk 2.0. Its features make programming methods in Plant Simulation faster, easier, and less error-prone', activated per-Method by a New Syntax button. Crucially, SimTalk 1.0 is not removed - the two notations coexist in the same model, and old source code never has to be rewritten
2022
With version 2201, released in January 2022, Siemens abandons sequential version numbers for a year-month scheme (the same release is 'version 17' in legacy license files). SimTalk gains HTTP functions for talking to external servers, part of a decade-long drift from a self-contained modeling language toward a client of other systems
2025
Plant Simulation gains a PythonModule object, letting Python functions be defined inside the model and called from SimTalk with .call() and .getValue(), or executed from an external file with executePythonFile(). In December 2025 Siemens announces an AI Copilot shipping with version 2504, initially for cloud-enabled users, and says that generating SimTalk logic from natural language is planned for later updates
2026
Plant Simulation 2606, announced on 25 June 2026, delivers it: the Copilot now offers 'LLM-based SimTalk coding support, which means it can convert natural language descriptions directly into functional SimTalk control code', with a Siemens-hosted model by default and a bring-your-own-LLM option. Thirty-four years after SIMPLE++ shipped, the most-discussed new feature of the language is a machine that writes it for you

Notable Uses & Legacy

German automotive plant planning

Siemens describes Plant Simulation as the leading production-simulation software among German car makers, and publishes case studies to match. BMW Motoren GmbH in Steyr, the BMW Group's largest engine plant, used it in an energy-efficiency study whose predicted saving of 1.66 million kilowatt-hours per year was, according to the case study, realised exactly as simulated after maintenance technicians reprogrammed the machines' PLCs. Audi Hungaria is described by Siemens as a regular user of the 3D capability. The plant models in this kind of work are built graphically, but the control rules that make them behave like the real line - dispatching, sequencing, shift calendars, breakdown logic - are SimTalk

The AESOP customer base of the 1990s

The customer list AESOP published on its own web site in 1997 is a snapshot of who was doing discrete-event simulation in continental Europe at the time: BASF, Bayer, Ciba-Geigy, Boehringer Mannheim, AEG, BMW, Bosch, Bosch-Siemens, Braun, Bühler, MTU, Nokia, Philips, PPG, Peguform, Siemens, Thyssen, VAW, Voest, Wacker and Wieland, plus, in AESOP's phrasing, 'viele Hochschulen und Institute weltweit'. Every one of those sites that customised a model was writing SimTALK

Application Object Templates and interfaces

Rather than sell only a language, AESOP sold libraries written in it: SIMPLE++_AGV for automated guided vehicles, SIMPLE++_carbody for automotive body shops, SIMPLE++_conveyor, SIMPLE++_EOM for electrical overhead monorails, SIMPLE++_HBW for high-bay warehouses, SIMPLE++_personnel and SIMPLE++_process for the chemical industry. Alongside them ran the interface products - a C interface, DDE, ODBC, SQL, sockets, RPC, and SIMPLE++_POI, a Planning Optimization Interface for SAP R/3. The pattern of a vendor-supplied object library that end users extend in the embedded language has survived intact into Plant Simulation's modern object libraries

University teaching and textbooks

SimTalk is one of the few proprietary in-house languages with a genuine textbook literature. Steffen Bangsow has written several, including the German 'Praxishandbuch Plant Simulation und SimTalk' (Hanser, 2011, over 150 example models) and the English 'Manufacturing Simulation with Plant Simulation and Simtalk' (Springer, 2010) and 'Tecnomatix Plant Simulation: Modeling and Programming by Means of Examples' (Springer, 2nd edition 2020). University courses maintain their own tutorials - the University of Twente's Plant Simulation tutorial by Martijn Mes, updated for software version 2404 in 2025, teaches SimTalk 2.0 directly - and the language is taught in logistics and industrial-engineering programmes across Europe

Academic simulation research

The 1996 SiMPLE++ contest entry from Harvard - a 'super-simulation' shell for comparing structurally different production systems, built on the software's object model and applied to an apparel manufacturing system and a turbine-blade design problem - is an early example of a pattern that has continued for three decades: researchers in operations research, logistics and industrial engineering use the environment as a substrate and write the novel part of the work in SimTalk

Language Influence

Influenced By

Running Today

Run examples using the official Docker image:

docker pull
Last updated: