||This article contains content that is written like an advertisement. (January 2013) (Learn how and when to remove this template message)|
|This article does not cite any sources. (January 2013) (Learn how and when to remove this template message)|
|Stable release||3.7.0 / November 15, 2013|
|Operating system||Mac OS X|
Smile is a free Macintosh computer programming and working environment based on AppleScript. It features a number of production technologies and a natural fashion of having them work together. Smile is primarily designed for scientists, engineers, desktop publishers, and web applications developers, to help them produce faster and better work, automate frequent tasks, and control complex operations.
The name of the first version of Smile, released in 1995, was SMILE (upper case), and some users still name it so. The acronym stood for SMI, Limited Edition, where SMI itself stands for Scriptable Measurements on Images. SMI is the name of the software that Satimage, a French company engaged in Machine vision technology, develops and uses to power the systems that they supply, automated real-time measurement and inspection systems for industrial plants.
SMI is really a core engine, written in C/C++, which alone does nothing: it requires an interface, and that interface's behavior is programmed in AppleScript, in scripts. SMI's core implements the key features of the software, and publishes them to AppleScript. SMI is designed to make development costs lower while maintaining a wide range of applications. Basically, Smile is just SMI, sans the real-time video processing features.
The need for 2D and 3D real-time visualization (of the measurements) gave rise to SmileLab. More recently, web-based control of facilities becomes a standard, and Smile is now also a web applications server - and a web browser.
The technologies included in Smile:
- AppleScript Terminal windows,
- an AppleScript editor with many helpers,
- an editor of scripted interfaces,
- a web browser,
- a proprietary URL protocol to make HTML interfaces and have them send events to scripts,
- a text editor for ASCII and Unicode, with a search-and-replace tool supporting Regular Expressions,
- a XML editor,
- a Regular Expression engine,
- a XML and p-list engine,
- a 2D graphic engine, to program vectorial PDF graphics by script,
- fast mathematical commands on numbers, arrays and matrices,
- commands for driving industrial interfaces: RS232 serial communication, digital I/O, LED display.
Smile provides an Aqua interface to make any data graph "manually", and libraries of commands to make graphs and process data by script (SmileLab can display at any moment the script corresponding to the user's action.)
The mathematical commands are optimized, and versatile thanks to AppleScript. Graphical documents (PDFs, bitmaps, videos of 1D, 2D, and 3D graphs, and custom graphics) are of professional printable quality.
Computational extensions can be written in C or C++. Smile handles the most usual data file formats, and extensions for other file formats can be plugged-in.
Basically, the Smile system will appeal to those concerned with not doing the same thing twice. For instance, once a plot is finely tuned with custom settings, the user can view and save the (AppleScript) script to get exactly the same settings later. One single language, AppleScript, drives the computations, produces the graphics, schedules the actions, and handles the interfaces. So the script once saved may then be used in a variety of contexts.
Also, the Smile system benefits from a unique feature of AppleScript: live interaction with running codes. AppleScript – and thus, Smile – can interact with a program while it is running. This feature is a concern for scientists or engineers running long computations or computations involving large amounts of data, when stopping, dumping, then relaunching a program implies significant costs.
Smile Server is a bridge between a CGI program and AppleScript. This works by Smile opening a server port. A specific cgi, included, makes an http request into a p-list (Apple's associative array XML format) and sends it to Smile Server on that port (specified in a configuration file). Asynchronous as well as synchronous behaviors are implemented, allowing Smile Server to be used as an alternate solution to .asp or .php to build dynamic sites, including AJAX-based web sites.
Smile also handles XML-RPC requests.