Atom (programming language): Difference between revisions

Content deleted Content added
top: notability
m clean up
Line 30:
and [[Bluespec]], Atom compiled circuit descriptions, that were based on guarded atomic operations, or [[Term Rewriting System|conditional term rewriting]], into [[Verilog]] [[netlist]]s for simulation and [[logic synthesis]].
As a hardware compiler, Atom's primary objective was to maximize the number of operations, or rules, that can execute in a given clock cycle without violating the semantics of atomic operation.
By employing the properties of conflict-free and sequentially-composable rules,<ref name="hoe1"/> Atom reduced maximizing execution concurrency to a [[feedback arc set]] optimization of a rule-data dependency graph. This process was similar to [[James Hoe]]'s original algorithm.<ref name="hoe1" />
 
When Atom's author switched careers in late 2007 from logic design to [[Embedded systems|embedded software]] engineering, Atom was redesigned from an [[hardware description language|HDL]] to a [[___domain specific language]]
Line 39:
== Overview ==
 
Atom is a concurrent programming language intended for embedded applications. Atom features [[Compile time|compile-time]] [[Scheduling (computing)|task scheduling]] and generates code with deterministic execution time and memory consumption, simplifying [[worst case execution time]] analysis for applications that require [[Realtime computing|hard realtime]] performance. Atom's concurrency model is that of [[Atomic action|guarded atomic actions]], which eliminates the need for, and the [[Lock_Lock (computer_sciencecomputer science)#The_problems_with_locksThe problems with locks|problems]] of using, [[Lock (computer science)|mutex locks]].
 
By removing [[Run time (program lifecycle phase)|run-time]] task scheduling and mutex locking—two services traditionally served by an [[Real-time operating system|RTOS]]—Atom can eliminate the need and overhead of an [[Real-time operating system|RTOS]] in embedded applications.
 
== Examples ==