at:introduction
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| at:introduction [2007/04/07 12:31] – tvcutsem | at:introduction [2008/07/15 12:19] (current) – * tvcutsem | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| * **dynamically typed**, which is **not** the same as being untyped: AmbientTalk //values// are typed, but // | * **dynamically typed**, which is **not** the same as being untyped: AmbientTalk //values// are typed, but // | ||
| * object-oriented, | * object-oriented, | ||
| + | * flexible: like Scheme, Smalltalk, Self and many other languages, AmbientTalk embraces the use of elegant and expressive **block closures** to achieve a level of reusability far exceeding that of Java or similar languages lacking true closures. | ||
| * event-driven: | * event-driven: | ||
| - | * distributed: | + | * distributed: |
| * **symbiotic**: | * **symbiotic**: | ||
| - | A word of warning, though: AmbientTalk is **not** a stable development platform. Rather, it is a research artifact used as a " | + | A word of warning, though: AmbientTalk is **not**: |
| + | | ||
| + | * a secure distributed computing platform. | ||
| + | * a customisable or language-neutral distributed computing platform. | ||
| ===== AmbientTalk in a nutshell ===== | ===== AmbientTalk in a nutshell ===== | ||
| Line 36: | Line 40: | ||
| | | ||
| // engage in peer-to-peer service discovery | // engage in peer-to-peer service discovery | ||
| - | | + | |
| export: remoteInterface as: InstantMessenger; | export: remoteInterface as: InstantMessenger; | ||
| whenever: InstantMessenger discovered: { |messenger| | whenever: InstantMessenger discovered: { |messenger| | ||
| Line 47: | Line 51: | ||
| An instant messenger object is created by invoking a function called '' | An instant messenger object is created by invoking a function called '' | ||
| - | Within the lexical scope of the '' | + | Within the lexical scope of the '' |
| The '' | The '' | ||
| Line 69: | Line 73: | ||
| }; | }; | ||
| def buddyList := jlobby.java.util.HashMap.new(); | def buddyList := jlobby.java.util.HashMap.new(); | ||
| + | ... | ||
| + | }; | ||
| </ | </ | ||
| - | The '' | + | The '' |
| - | Also interesting is the initialisation code of the '' | + | Also interesting is the initialisation code of the '' |
| Now let us delve into the details of the local interface object: | Now let us delve into the details of the local interface object: | ||
| Line 105: | Line 111: | ||
| </ | </ | ||
| This code should look familiar to Smalltalk/ | This code should look familiar to Smalltalk/ | ||
| + | |||
| + | Most curly braces in AmbientTalk denote first-class blocks. These never denote hard-wired syntax as in C or Java. The only exception are the braces used to delimit a method definition. | ||
| </ | </ | ||
| Line 124: | Line 132: | ||
| < | < | ||
| - | | + | |
| export: remoteInterface as: InstantMessenger; | export: remoteInterface as: InstantMessenger; | ||
| whenever: InstantMessenger discovered: { |messenger| | whenever: InstantMessenger discovered: { |messenger| | ||
| Line 144: | Line 152: | ||
| </ | </ | ||
| - | The '' | + | The '' |
| Finally, notice how AmbientTalk allows you to deal with //partial failures//: you can register two kinds of // | Finally, notice how AmbientTalk allows you to deal with //partial failures//: you can register two kinds of // | ||
| Line 157: | Line 165: | ||
| * no need to setup a name server or similar lookup service | * no need to setup a name server or similar lookup service | ||
| * no annoying configuration files | * no annoying configuration files | ||
| - | * ahh.. not one XML document in sight | + | * not one XML document in sight |
| * not having to manage complex buffering to ensure messages sent to disconnected objects are not lost | * not having to manage complex buffering to ensure messages sent to disconnected objects are not lost | ||
| * no need to write the boring Singleton design pattern to make your classes look like objects | * no need to write the boring Singleton design pattern to make your classes look like objects | ||
| * no need to generate stubs, skeletons or other kinds of proxies to manage remote objects | * no need to generate stubs, skeletons or other kinds of proxies to manage remote objects | ||
| - | Of course, we are not claiming that AmbientTalk is a good replacement for standards such as CORBA, which are much more flexible, at the cost of increasted | + | Of course, we are not claiming that AmbientTalk is a good replacement for distributed computing |
| + | |||
| + | ===== Moving on ===== | ||
| - | So, you read the introduction and are interested in all of the gory details of the language? In that case, you can go ahead and [[at: | + | So, you read the introduction and are interested in all of the gory details of the language? In that case, you can go ahead and [[at: |
at/introduction.1175941902.txt.gz · Last modified: (external edit)
