Mama (software). Mama is an object-oriented educational programming language designed to help young students start programming by providing all language elements in the student mother tongue. Mama programming language is available in several languages, with both left-to-right (LTR) and right-to-left (RTL) language direction support.

A new variant of Mama was built on top of Carnegie Mellon's Alice development environment, supporting scripting of the 3D stage objects. This new variant of Mama was designed to help young students start programming by building 3D animations and games.

History
The first versions of Mama - 1.0, 1.1 and 1.2 - provided simple integrated development environment (IDE) which contained support to standard elements such as text editor with syntax highlighting, compiler, debugger, output window, etc. Starting at version 1.5, Mama was integrated with the open source Alice IDE to support drag and drop programming and 3D animating. Mama versions are implemented in Java.

The current release of Mama, version 1.5.4, is available both in English and in Hebrew, and it runs on Microsoft Windows.

Design
Mama was designed to address the following problems in educational programming:
 Industrial programming languages are designed to be usable for production code, thus introducing additional complexity. Mama is designed solely to teach programming concepts, providing simple and quick development of programs.
 Syntax errors frustrate students when start learning programming - Mama's variant over Alice uses a drag and drop environment to create computer animations using 3D models.

Mama language is a pure object-oriented language, while the Alice IDE is object based. That implies that while writing textual scripts with Mama language supports all object oriented elements (inheritance, polymorphism, generic programming, Observer pattern style event handling), creating objects and methods with the drag and drop interface is object based - there is no inheritance (and thus no polymorphism). The last observation may confuse beginners - thus it is suggested to use Mama scripts only as advance topics in CS courses.

Mama 1.5 main improvements over Alice version 2.2:
 added Mama programming language as a (rich) scripting language - 3D scene objects can be manipulated using this scripting mechanism
 full Unicode support 
 creation and editing of 3D objects 
 support uploading movies to YouTube and publishing in Facebook
 support for scenery and characters
 tutorial editor tool for instructors
 movie export with audio
 user standalone executables
 better menu logic
 many bug fixes

IDE Basics
There are several parts in IDE window: at the top you'll find the main menu and the toolbar, which let you execute commands such as create/open a worlds, import 3D objects into the world, create a standalone application, export the animation to YouTube, etc.

The five windows contained in the main window are:
object tree - contains the object list in the current world. 
3D window - this is where objects are positioned, moved, turned, etc. 
events area - lets you edit what happens upon occur of certain event.
details area - contains information about the currently selected object in 3 tabs: properties, methods and functions.
editor area (at the bottom) - that's where the program code is written, using drag and drop of instructions.

When in scene editing mode, two of the above parts are replaced:
control panel - replaces the events area, and displays various controls that help manipulating objects in  the 3D window.
object gallery - replaces the editor area, and displays objects in hierarchic folders to be selected and embedded in the 3D window.

Following are the basic types available in Alice IDE:
Number - a numeric type, represents both integers and reals
Boolean - a boolean value, accepting either true or false
Object - a general Mama object
String - a string, a collection of characters
Color - an RGB color
TextureMap - a texture map
Sound - a sound
Pose - a captured pose of an object
Position - a 3D array defining a position in the 3D space
Orientation - a 3D array defining the orientation in the 3D space
PointOfView - a combination of a Position and Orientation

The control instructions available in the bottom of the editor area are:
doInOrder - execute a sequence of instructions sequentially
doTogether - execute a sequence of instructions simultaneously
if - execute a sequence of instructions sequentially only under a given condition
while - execute a sequence of instructions sequentially while a given condition holds
for - execute a sequence of instructions sequentially a given number of times
forAllInOrder - execute a sequence of instructions sequentially iterating over the given collection
forAllTogether - execute a sequence of instructions simultaneously iterating over the given collection
wait - wait a given number of seconds
print - print the given data to the output console
assert - assert that a condition is true, display a message if the condition is false (new in Mama 1.5)
Script - add a free Mama script to the program
# - add a comment to the program

See also
 Visual programming language
 Very high-level programming language
mama aida hoilo ami=tanvir

References

Further reading

 Learning to Program with Alice, Wanda P. Dann, Stephen Cooper, Randy Pausch:  
 Virtual World Design and Creation for Teens; Charles R. Hardnett; Course Technologies PTR, 2009; ,

External links

Educational programming languages
Visual programming languages
Pedagogic integrated development environments