<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ideawaza.com/index.php?action=history&amp;feed=atom&amp;title=Aikido_%28programming_language%29</id>
	<title>Aikido (programming language) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ideawaza.com/index.php?action=history&amp;feed=atom&amp;title=Aikido_%28programming_language%29"/>
	<link rel="alternate" type="text/html" href="https://ideawaza.com/index.php?title=Aikido_(programming_language)&amp;action=history"/>
	<updated>2026-09-29T10:31:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://ideawaza.com/index.php?title=Aikido_(programming_language)&amp;diff=73683&amp;oldid=prev</id>
		<title>Idea at 06:49, 29 September 2026</title>
		<link rel="alternate" type="text/html" href="https://ideawaza.com/index.php?title=Aikido_(programming_language)&amp;diff=73683&amp;oldid=prev"/>
		<updated>2026-09-29T06:49:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 06:49, 29 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{ infobox programming language&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| name                   = Aikido&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| paradigm               = [[Object-oriented programming|object-oriented]], [[Thread (computer science)|multithreaded]], [[scripting language|scripting]], [[imperative programming|imperative]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| year                   =  2003&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| designer               = David Allison, [[Sun Microsystems]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| latest release version =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| latest release date    =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| typing                 = Partially dynamic ([[Duck typing|duck]]), [[weak typing|weak]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| implementations        = [http://sourceforge.net/projects/aikido Aikido]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| influenced_by          = [[Ada (programming language)|Ada 83]], [[BASIC]], [[C (programming language)|C]], [[C++ (programming language)|C++]], [[Java (programming language)|Java]], [[JavaScript]], [[Pascal (programming language)|Pascal]], [[Perl]], [[Verilog]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| operating_system       =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| license                =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| website                =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Aikido&amp;#039;&amp;#039;&amp;#039; is a programming language that can be used for rapid scripting, prototyping and general programming tasks.  It was developed in [[Sun Microsystems]] Laboratories by David Allison and released as [[open source]] in September 2003.  It is a dynamically typed, [[Object-oriented programming|object-oriented]] language with built-in [[Thread (computer science)|multithreading]].  In some respects it is similar in functionality to [[Python (programming language)|Python]], [[Perl]], [[JavaScript]] and [[Java (programming language)|Java]].  Syntactically it is very similar to [[C++]] and Java.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Aikido&amp;#039;&amp;#039;&amp;#039; is a programming language that can be used for rapid scripting, prototyping and general programming tasks.  It was developed in [[Sun Microsystems]] Laboratories by David Allison and released as [[open source]] in September 2003.  It is a dynamically typed, [[Object-oriented programming|object-oriented]] language with built-in [[Thread (computer science)|multithreading]].  In some respects it is similar in functionality to [[Python (programming language)|Python]], [[Perl]], [[JavaScript]] and [[Java (programming language)|Java]].  Syntactically it is very similar to [[C++]] and Java.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Idea</name></author>
	</entry>
	<entry>
		<id>https://ideawaza.com/index.php?title=Aikido_(programming_language)&amp;diff=70190&amp;oldid=prev</id>
		<title>wikademia&gt;Eme: by http://en.wikipedia.org/w/index.php?title=Aikido_(programming_language)&amp;action=history</title>
		<link rel="alternate" type="text/html" href="https://ideawaza.com/index.php?title=Aikido_(programming_language)&amp;diff=70190&amp;oldid=prev"/>
		<updated>2011-02-05T20:25:11Z</updated>

		<summary type="html">&lt;p&gt;by http://en.wikipedia.org/w/index.php?title=Aikido_(programming_language)&amp;amp;action=history&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
{{ infobox programming language&lt;br /&gt;
| name                   = Aikido&lt;br /&gt;
| paradigm               = [[Object-oriented programming|object-oriented]], [[Thread (computer science)|multithreaded]], [[scripting language|scripting]], [[imperative programming|imperative]]&lt;br /&gt;
| year                   =  2003&lt;br /&gt;
| designer               = David Allison, [[Sun Microsystems]]&lt;br /&gt;
| latest release version =&lt;br /&gt;
| latest release date    =&lt;br /&gt;
| typing                 = Partially dynamic ([[Duck typing|duck]]), [[weak typing|weak]]&lt;br /&gt;
| implementations        = [http://sourceforge.net/projects/aikido Aikido]&lt;br /&gt;
| influenced_by          = [[Ada (programming language)|Ada 83]], [[BASIC]], [[C (programming language)|C]], [[C++ (programming language)|C++]], [[Java (programming language)|Java]], [[JavaScript]], [[Pascal (programming language)|Pascal]], [[Perl]], [[Verilog]]&lt;br /&gt;
| operating_system       =&lt;br /&gt;
| license                =&lt;br /&gt;
| website                =&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aikido&amp;#039;&amp;#039;&amp;#039; is a programming language that can be used for rapid scripting, prototyping and general programming tasks.  It was developed in [[Sun Microsystems]] Laboratories by David Allison and released as [[open source]] in September 2003.  It is a dynamically typed, [[Object-oriented programming|object-oriented]] language with built-in [[Thread (computer science)|multithreading]].  In some respects it is similar in functionality to [[Python (programming language)|Python]], [[Perl]], [[JavaScript]] and [[Java (programming language)|Java]].  Syntactically it is very similar to [[C++]] and Java.&lt;br /&gt;
&lt;br /&gt;
Full documentation for the Aikido language is available in the [http://downloads.sourceforge.net/aikido/aikido_prm.pdf Programmers reference manual]&lt;br /&gt;
&lt;br /&gt;
==Heritage==&lt;br /&gt;
&lt;br /&gt;
The name &amp;#039;&amp;#039;Aikido&amp;#039;&amp;#039; refers to the [[Aikido|Japanese martial art]] of the same name and was&lt;br /&gt;
chosen because the language, like the martial art is derived from many other parts, taking&lt;br /&gt;
the most desirable aspects of each.  The original name for the Aikido language was &amp;#039;&amp;#039;Darwin&amp;#039;&amp;#039; but&lt;br /&gt;
this was such a common name that it was unavailable for use by Sun.&lt;br /&gt;
&lt;br /&gt;
The original use for Aikido was as the control language for an [[Assembly language#Assembler|assembler]]&lt;br /&gt;
for an internal experimental simulation project within Sun Microsystems Laboratories.  The language run-time&lt;br /&gt;
system still maintains the hooks necessary to make it into a control language.&lt;br /&gt;
&lt;br /&gt;
==Characteristics==&lt;br /&gt;
&lt;br /&gt;
Modern [[scripting language]]s are used for many tasks ranging from control of the computer operating&lt;br /&gt;
system to general application programming.  The ever increasing speed of computers has made it&lt;br /&gt;
much more feasible to write programs using an interpreted language rather than the traditional&lt;br /&gt;
compiled languages.&lt;br /&gt;
&lt;br /&gt;
Interpreted languages typically run slower than their compiled cousins, but provide much more&lt;br /&gt;
flexibility for the programmer, resulting in a much compressed development time.&lt;br /&gt;
&lt;br /&gt;
Aikido is an interpreted language that retains most of the syntactic characteristics of C++.  Most&lt;br /&gt;
of the elements of the language will be familiar to anyone who understands C++ (or Java, since it is&lt;br /&gt;
also derived somewhat from C++).&lt;br /&gt;
&lt;br /&gt;
==Design Goals==&lt;br /&gt;
&lt;br /&gt;
The Aikido language was designed with a number of goals in mind.&lt;br /&gt;
&lt;br /&gt;
*Familiarity.  Anyone who is familiar with programming in C++ or similar languages should recognize the constructs used in Aikido.&lt;br /&gt;
*Evolution.  There are many desirable features in the multitude of programming languages in existence.  Aikido selects the most desirable of these from languages ranging from [[BASIC]] to [[Verilog]].&lt;br /&gt;
*Speed.  Being an interpreted language, Aikido cannot compete with compiled languages in terms of speed.  Aikido&amp;#039;s speed goal is to be fast enough to be useful in its own right without trying to attain compiled speeds.&lt;br /&gt;
*Readability.  A program written in Aikido should be readable by a person who did not write it.&lt;br /&gt;
&lt;br /&gt;
== Hello world==&lt;br /&gt;
&lt;br /&gt;
The [[Hello world program]] in Aikido is very simple:&lt;br /&gt;
&lt;br /&gt;
 println (&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This is executed by the following command in a [[Unix]] like shell (assuming that it is saved in a file called &amp;#039;&amp;#039;hello.aikido&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 $ aikido hello.aikido&lt;br /&gt;
&lt;br /&gt;
The result is&lt;br /&gt;
&lt;br /&gt;
 $ aikido hello.aikido&lt;br /&gt;
 Hello world&lt;br /&gt;
 $&lt;br /&gt;
&lt;br /&gt;
== Implementations==&lt;br /&gt;
&lt;br /&gt;
Aikido is supplied primarily as [http://sourceforge.net/projects/aikido source code].  It is written entirely in C++ and is available for [[Linux]], [[Mac OS X]] and [[Solaris (operating system)|Solaris]].  There is currently no [[Microsoft Windows|Windows]] port available.&lt;br /&gt;
&lt;br /&gt;
==Language Features==&lt;br /&gt;
===Novel features===&lt;br /&gt;
Aikido contains a number of novel language features:&lt;br /&gt;
&lt;br /&gt;
;Partially dynamically typed variables:Variables are assigned a value of any type when they are created and cannot change type after that.&lt;br /&gt;
&lt;br /&gt;
 var x = 1&lt;br /&gt;
 var pi = 3.14159265&lt;br /&gt;
&lt;br /&gt;
 x = pi // error, cannot change type once defined&lt;br /&gt;
&lt;br /&gt;
This feature reduces programming errors by not permitting arbitrary type changes at runtime.  A variable may also be declared as &amp;#039;&amp;#039;&amp;#039;generic&amp;#039;&amp;#039;&amp;#039; thus allowing its type to change.&lt;br /&gt;
&lt;br /&gt;
;Block derivation:In most object-oriented languages, a class may be derived from another class forming a class hierarchy.  In Aikido, this concept is available for any &amp;#039;&amp;#039;block&amp;#039;&amp;#039;.  This includes functions, threads, monitors and enumerations.&lt;br /&gt;
&lt;br /&gt;
;Statement macros:A macro is a textually-replaced name that may be used at the statement level of a program&lt;br /&gt;
&lt;br /&gt;
;Stream operator:The built-in stream operator (&amp;lt;code&amp;gt;-&amp;gt;&amp;lt;/code&amp;gt;) may be used to stream data to and from devices and program elements.&lt;br /&gt;
&lt;br /&gt;
;Raw native functions:Aikido can invoke code that resides in an external library directly without requiring complex mapping and conversion.  This is subject to certain rules.&lt;br /&gt;
&lt;br /&gt;
;Switch statement comparison operators:The &amp;#039;&amp;#039;case&amp;#039;&amp;#039; limbs of a &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; statement can contain comparison operators that allow for comparisons other than the normal &amp;#039;&amp;#039;&amp;#039;equality&amp;#039;&amp;#039;&amp;#039; comparison.  The operators can be one of  &amp;#039;&amp;#039;==&amp;#039;&amp;#039;, &amp;#039;&amp;#039;!=&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;lt;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;lt;=&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;gt;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;gt;=&amp;#039;&amp;#039;, &amp;#039;&amp;#039;in&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
;Smart statement boundary detection:The use of a semicolon (&amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;) character is optional in Aikido.  It may be used if desired to separate statements but the language compiler has a special algorithm that is used to detect the end of statements unambiguously.  This means that you rarely need to insert a semicolon at the end of a line, unlike most other languages.&lt;br /&gt;
&lt;br /&gt;
===Familiar features===&lt;br /&gt;
&lt;br /&gt;
In common with many other languages, Aikido provides the following program constructs:&lt;br /&gt;
&lt;br /&gt;
;Variables and constants:A variable is a named program storage location.  Variables must be assigned a value when they are declared.  Variables and constants are held in scopes and do not interfere with enclosing or non-intersecting scopes.  Variables and constants must be declared before use&lt;br /&gt;
&lt;br /&gt;
A variable may also be declared as fully dynamic using the &amp;#039;&amp;#039;&amp;#039;generic&amp;#039;&amp;#039;&amp;#039; keyword.  In this case no value need be assigned to it at declaration time&lt;br /&gt;
&lt;br /&gt;
;Type casts:A value can be converted to another type using a &amp;#039;&amp;#039;&amp;#039;cast&amp;#039;&amp;#039;&amp;#039; operation.  The syntax is similar to that in C++ but simplified.  Casts are always performed at runtime and a specific cast operator may be defined for a class.&lt;br /&gt;
&lt;br /&gt;
;Functions:A function is a program segment that is called and performs some operations before (possibly) returning a value.  If no value is explicitly returned, the value &amp;#039;&amp;#039;&amp;#039;none&amp;#039;&amp;#039;&amp;#039; is returned.&lt;br /&gt;
&lt;br /&gt;
A function can be declared as returning a particular type.  The actual value returned is cast to the return type at runtime.&lt;br /&gt;
&lt;br /&gt;
;Classes:A class is an object-oriented type.  They may be derived from other classes to form a &amp;#039;&amp;#039;class hierarchy&amp;#039;&amp;#039;.  They provide a set of functions and operators that manipulate instances of the class.  The class may take arguments and its constructor is the body of the block.&lt;br /&gt;
&lt;br /&gt;
 class Planet (name) extends Object (name) {&lt;br /&gt;
     public function draw (screen) {&lt;br /&gt;
         // draw the planet&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 var earth = new Planet (&amp;quot;earth&amp;quot;)&lt;br /&gt;
 earth.draw (screen3)&lt;br /&gt;
&lt;br /&gt;
;Access control:Like C++ and Java, Aikido controls access to all members of blocks.  By default membership is &amp;#039;&amp;#039;private&amp;#039;&amp;#039; but may be made  &amp;#039;&amp;#039;public&amp;#039;&amp;#039; or &amp;#039;&amp;#039;protected&amp;#039;&amp;#039; using keywords.&lt;br /&gt;
&lt;br /&gt;
;Interfaces:Similar to Java, Aikido provides an interface concept to constitute a contract to provide certain functions in the class.  A class may implement one or more interfaces&lt;br /&gt;
&lt;br /&gt;
;Closures and coroutines:A [[Closure (computer science)|closure]] in Aikido is an object that contains everything that is needed to invoke a function from any point in the program.  This includes the function&amp;#039;s static link chain.  A closure is created by passing a function name as an argument or by returning it from a function.  A [[coroutine]] is an extension of a closure that also includes the current state of a function (all data, program counter and registers).  A [[coroutine]] yields to its caller using the &amp;#039;&amp;#039;yield&amp;#039;&amp;#039; keyword.  It can be resumed inside a &amp;#039;&amp;#039;foreach&amp;#039;&amp;#039; statement or by calling the &amp;#039;&amp;#039;next()&amp;#039;&amp;#039; function on the closure.&lt;br /&gt;
&lt;br /&gt;
;Polymorphic functions:Similar to Java, all public functions in a block are be overridden by a block derived from it.  This is known as &amp;#039;&amp;#039;virtual functions&amp;#039;&amp;#039; in C++.&lt;br /&gt;
&lt;br /&gt;
;Static members:Block members may be declared &amp;#039;&amp;#039;static&amp;#039;&amp;#039; meaning that their memory resides in the outer program level.  This allows them to maintain their value.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
;Parameters:Block (function, class, etc.) parameters have the following facilities:&lt;br /&gt;
*Access control&lt;br /&gt;
*Type coercion&lt;br /&gt;
*Pass by reference using the &amp;#039;&amp;#039;var&amp;#039;&amp;#039; keyword&lt;br /&gt;
*Variable parameter list using the ellipsis notation&lt;br /&gt;
*Default values&lt;br /&gt;
&lt;br /&gt;
The following example shows the various parameter mechanisms&lt;br /&gt;
&lt;br /&gt;
 function foo (a, public b, var c, d:int, e = &amp;quot;hello&amp;quot;, ...) {&lt;br /&gt;
    // a is private and passed by value&lt;br /&gt;
    // b is public and passed by value&lt;br /&gt;
    // c is passed by reference&lt;br /&gt;
    // d is cast to int on call&lt;br /&gt;
    // e is passed by value and has a default value&lt;br /&gt;
    // more parameters available in &amp;#039;&amp;#039;args&amp;#039;&amp;#039; variable&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The use of access control for functions is only useful in the case of function derivation.&lt;br /&gt;
&lt;br /&gt;
;Threads:A thread is a &amp;#039;&amp;#039;thread of control&amp;#039;&amp;#039; in the program and executes independently of other threads.&lt;br /&gt;
&lt;br /&gt;
;Packages: A package is a collection of program constructs collected in one place for use by another program.  They may be used to provide libraries.&lt;br /&gt;
&lt;br /&gt;
;Monitors:A monitor is a thread synchronization object that controls access to memory and also provides a signaling facility&lt;br /&gt;
&lt;br /&gt;
;Strings:A string is a sequence of characters.  Many operations are available for them including insertion, searching, deletion, shifting, etc.&lt;br /&gt;
&lt;br /&gt;
;Vectors:A vector is a sequence values of any type.  They may be manipulated and extended by built-in operations&lt;br /&gt;
&lt;br /&gt;
;Maps:A map is an associative container that maps one value to another.&lt;br /&gt;
&lt;br /&gt;
;Iteration:The iteration constructs of Aikido are similar to those in other languages from the &amp;#039;&amp;#039;C&amp;#039;&amp;#039; family (&amp;#039;&amp;#039;while&amp;#039;&amp;#039;, &amp;#039;&amp;#039;for&amp;#039;&amp;#039; and &amp;#039;&amp;#039;do..while&amp;#039;&amp;#039; loops), but also includes a high-level iteration construct &amp;#039;&amp;#039;foreach&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
;Selection:The selection facilities include &amp;#039;&amp;#039;if&amp;#039;&amp;#039; and &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; statements.&lt;br /&gt;
&lt;br /&gt;
;Enumeration:Aikido provides an enumeration ability that is similar to that provided in Pascal.&lt;br /&gt;
&lt;br /&gt;
;Operator Overloading:The C++ style of operator overloading is provided by Aikido.  This is also used to provide type conversions and iterators.&lt;br /&gt;
&lt;br /&gt;
;Lexical Scoping:Similar to languages such as Pascal and Ada, Aikido allows nested definitions for blocks.  In this way, a function (or indeed, any block) can be defined within another function to an arbitrary depth.&lt;br /&gt;
&lt;br /&gt;
;Garbage Collection:Aikido uses reference counting garbage collection.  It keeps track of all references to objects and deletes the memory when there is nothing referring to them.  In addition, a &amp;#039;&amp;#039;&amp;#039;delete&amp;#039;&amp;#039;&amp;#039; operator is available to allow removal of circular references.&lt;br /&gt;
&lt;br /&gt;
In addition, raw memory may be allocated for use in the program using the familiar &amp;#039;&amp;#039;&amp;#039;malloc&amp;#039;&amp;#039;&amp;#039; function.  This memory is garbage collected when there are no references remaining.  Access to the contents of the memory is performed using the &amp;#039;&amp;#039;&amp;#039;peek&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;poke&amp;#039;&amp;#039;&amp;#039; facilities, borrowed from the venerable [[BASIC]] language.&lt;br /&gt;
&lt;br /&gt;
;Exceptions:Exceptions are very similar to C++ in that you &amp;#039;&amp;#039;&amp;#039;throw&amp;#039;&amp;#039;&amp;#039; a value that is caught using a &amp;#039;&amp;#039;&amp;#039;catch&amp;#039;&amp;#039;&amp;#039; clause.  The major difference is that there may only be one &amp;#039;&amp;#039;&amp;#039;catch&amp;#039;&amp;#039;&amp;#039; clause for a &amp;#039;&amp;#039;&amp;#039;try&amp;#039;&amp;#039;&amp;#039; block.  Any value may be thrown and caught.&lt;br /&gt;
&lt;br /&gt;
==Native functions==&lt;br /&gt;
&lt;br /&gt;
An interpreted programming language cannot execute a program independently from the operating system upon which it is running.  It must make use of the operating system facilities to perform certain tasks such as input/output, memory allocation, etc.  Aikido provides a relatively easy way to invoke code that resides outside the interpreter in an external library.  This facility is normally referred to as &amp;#039;&amp;#039;native&amp;#039;&amp;#039; function access.&lt;br /&gt;
&lt;br /&gt;
==Uses==&lt;br /&gt;
&lt;br /&gt;
Along with general scripting and programming, Aikido can be used as a control language for a larger application.  One such application is Command Line Interpreter where it can be used to provide a built-in scripting ability.&lt;br /&gt;
&lt;br /&gt;
Whenever the Aikido interpreter comes across a section of code that it does not understand, it has the ability to pass this off to another program known as a &amp;#039;&amp;#039;worker&amp;#039;&amp;#039;.  This worker program can then use this unrecognized text as a command. &lt;br /&gt;
&lt;br /&gt;
==Comparison with other languages==&lt;br /&gt;
&lt;br /&gt;
Aikido is in part derived from the syntax and semantics of other programming languages. &lt;br /&gt;
&lt;br /&gt;
===C++===&lt;br /&gt;
&lt;br /&gt;
Aikido&amp;#039;s syntactic constructs are mostly derived from the [[C++]] programming language.  The expression syntax is almost exactly like C++ with some extensions for higher level constructs.  The object-orientation is similar to C++ except that [[multiple inheritance]] is not available.&lt;br /&gt;
&lt;br /&gt;
===Java===&lt;br /&gt;
&lt;br /&gt;
[[Java (programming language)|Java]] is also a language that is similar in construct to C++.  Aikido takes a number of&lt;br /&gt;
Java&amp;#039;s constructs in favor of similar constructs in C++.  For example, the object oriented &lt;br /&gt;
class structure is Java-like in that is provides single inheritance, uses &amp;#039;&amp;#039;extends&amp;#039;&amp;#039; for &lt;br /&gt;
derivation and provides [[Interface (computer science)|interfaces]].&lt;br /&gt;
&lt;br /&gt;
===Pascal===&lt;br /&gt;
&lt;br /&gt;
[[Niklaus Wirth|Niklaus Wirth&amp;#039;s]] [[Pascal (programming language)|Pascal]] language provides a number of features that Aikido&lt;br /&gt;
has borrowed.  In particular, the lexical structure of an Aikido program is similar to that in Pascal.  This is known as [[lexical scoping]] and allows a nested block to access the variables in an enclosing block.  Some syntactic elements are also derived from&lt;br /&gt;
Pascal.  For example, the use of the keyword &amp;quot;var&amp;quot; to denote [[call by reference]] in function formal argument lists.&lt;br /&gt;
&lt;br /&gt;
===Python===&lt;br /&gt;
[[Python (programming language)|Python]] and Aikido are quite similar in some respects, but vastly different in others.  Syntactically, Aikido is a lot different from Python, the former being derived from the [[C (programming language)|C]] family of languages, and the latter having a unique syntactic style.  Despite their differences, Aikido and Python share a similar goal and runtime ability.  The runtime libraries for both languages are very similar, with Python having a much richer set of functions.&lt;br /&gt;
&lt;br /&gt;
===JavaScript===&lt;br /&gt;
&lt;br /&gt;
Aikido is very similar to the [[JavaScript]] language.  Syntactically it is almost identical, but one major &lt;br /&gt;
difference is the object orientation features.  JavaScript uses a prototype style of inheritance where Aikido&lt;br /&gt;
uses a traditional class hierarchy.&lt;br /&gt;
&lt;br /&gt;
==Runtime library==&lt;br /&gt;
&lt;br /&gt;
Aikido&amp;#039;s runtime library is relatively small in comparison to other languages.  A lot of the features normally found in runtime libraries in other language systems are built in to the Aikido interpreter.  For example, Aikido provides extensive string manipulation operations in the interpreter itself rather than relying on calls to an external library.&lt;br /&gt;
&lt;br /&gt;
Most of the library functions and classes are used to provide operating system access facilities.  For example, runtime library functions are available to access the operating system shell.&lt;br /&gt;
&lt;br /&gt;
The runtime library is accessed in an Aikido program by importing one of the few files contained in the Aikido package.  Once imported, the functions and classes of that section of the runtime library can be used in the program.&lt;br /&gt;
&lt;br /&gt;
==Patents==&lt;br /&gt;
&lt;br /&gt;
Many of the features and facilities in Aikido are subject to a number of US patents:&lt;br /&gt;
&lt;br /&gt;
*{{cite web&lt;br /&gt;
|url=http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;amp;d=PALL&amp;amp;p=1&amp;amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&amp;amp;r=1&amp;amp;f=G&amp;amp;l=50&amp;amp;s1=7146601.PN.&amp;amp;OS=PN/7146601&amp;amp;RS=PN/7146601&lt;br /&gt;
|title=US Patent 7,146,601 - Method and apparatus for deriving functions from other functions in a programming language &lt;br /&gt;
}}&lt;br /&gt;
*{{cite web&lt;br /&gt;
|url=http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;amp;d=PALL&amp;amp;p=1&amp;amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&amp;amp;r=1&amp;amp;f=G&amp;amp;l=50&amp;amp;s1=7028289.PN.&amp;amp;OS=PN/7028289&amp;amp;RS=PN/7028289&lt;br /&gt;
|title=US Patent 7,028,289 - Stream operator in a dynamically typed programming language  &lt;br /&gt;
}}&lt;br /&gt;
*{{cite web&lt;br /&gt;
|url=http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;amp;d=PALL&amp;amp;p=1&amp;amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&amp;amp;r=1&amp;amp;f=G&amp;amp;l=50&amp;amp;s1=6925640.PN.&amp;amp;OS=PN/6925640&amp;amp;RS=PN/6925640&lt;br /&gt;
|title=US Patent 6,925,640 -  Method and apparatus for extending a program element in a dynamically typed programming language   &lt;br /&gt;
}}&lt;br /&gt;
*{{cite web&lt;br /&gt;
|url=http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;amp;d=PALL&amp;amp;p=1&amp;amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&amp;amp;r=1&amp;amp;f=G&amp;amp;l=50&amp;amp;s1=7003764.PN.&amp;amp;OS=PN/7003764&amp;amp;RS=PN/7003764&lt;br /&gt;
|title=US Patent 7,003,764 -  Method and apparatus for dynamic configuration of a lexical analysis parser &lt;br /&gt;
}}&lt;br /&gt;
*{{cite web&lt;br /&gt;
|url=http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;amp;d=PALL&amp;amp;p=1&amp;amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&amp;amp;r=1&amp;amp;f=G&amp;amp;l=50&amp;amp;s1=6988265.PN.&amp;amp;OS=PN/6988265&amp;amp;RS=PN/6988265&lt;br /&gt;
|title=US Patent 6,988,265 -  Method and apparatus for statement boundary detection &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==External references==&lt;br /&gt;
&lt;br /&gt;
*{{cite web&lt;br /&gt;
|url=http://sourceforge.net/projects/aikido&lt;br /&gt;
|title=Aikido Language System&lt;br /&gt;
}}&lt;br /&gt;
*{{cite web&lt;br /&gt;
|url=http://downloads.sourceforge.net/aikido/aikido_prm.pdf&lt;br /&gt;
|title=Aikido Programming Reference Manual&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Object-oriented programming languages]]&lt;/div&gt;</summary>
		<author><name>wikademia&gt;Eme</name></author>
	</entry>
</feed>