aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConnor Zanin <cnnrznn@gmail.com>2016-12-12 00:51:19 -0500
committerConnor Zanin <cnnrznn@gmail.com>2016-12-12 00:51:19 -0500
commitef6a156c910ef50a40f68a16d11abfa4c8fe48c1 (patch)
treee45e9ac6b1187625ad61c5c63c7ef7db443cf751
parentd7dd751aa356f4f97abde84774ae9be7b11d55e4 (diff)
.
-rw-r--r--chapter/4/dist-langs.md27
1 files changed, 27 insertions, 0 deletions
diff --git a/chapter/4/dist-langs.md b/chapter/4/dist-langs.md
index 0059171..89eb496 100644
--- a/chapter/4/dist-langs.md
+++ b/chapter/4/dist-langs.md
@@ -183,6 +183,33 @@ It is worth noting that stack frame growth is still possible, but if the recursi
#### Emerald
+Emerald is a distributed programming language based around a unified object model.
+Programs in Emerald consist of collections of Objects.
+Critically, Emerald provides the programmer with a unified object model so as to abstract object location from the invocation of methods.
+With that in mind, Emerald also provides the developer with the tools to designate explicitly the location of objects.
+
+Objects in Emerald resemble objects in other OOP languages such as Java.
+Emerald objects can only be manipulated by methods that are exposed, and may contain internal state.
+However, their are a few key differences between Emerald and Java Objects.
+First, objects in Emerald may have an associated process which starts after initialization.
+In Emerald, object processes are the basic unit of concurrency.
+Additionally, an object may *not* have an associated process.
+These objects more closely resemble traditional Java objects, and their code is executed when called by processes.
+Second, processes may not touch internal state (members) of other objects.
+Unlike Java, all internal state of Emerald objects must be accessed through method calls.
+Third, objects in Emerald may contain a special *monitor* section which can contain methods and variables that are accessed atomically.
+If multiple processes make simultaneous calls to a "monitored" method, the calls are effectively serialized.
+
+* single object model
+ * objects only manipulated by exposed methods
+ * can be moved
+ * identity, operations, process (optional)
+ * process, monitor, initially sections
+* abstract types
+ * interfaces
+ * allow system upgrades, new implementations
+ * implementations can have different semantics for an interface
+
#### Argus
#### Orleans