F-Script (programming language)
F-Script is an object-oriented scripting programming language for Apple's macOS operating system developed by Philippe Mougin. F-Script is an interactive language based on Smalltalk, using macOS's native Cocoa API.
Paradigm | multi-paradigm: object-oriented, array |
---|---|
Designed by | Philippe Mougin |
Developer | Jonathan Mitchell, Ilya Kulakov, others |
First appeared | June 28, 2009 |
Stable release | 2.2.1
/ February 5, 2014 |
Typing discipline | dynamic |
Platform | x86 |
OS | macOS |
License | Open-source |
Website | github |
Major implementations | |
F-Script | |
Influenced by | |
Smalltalk, APL |
Overview
F-Script is based on a pure object paradigm: every entity manipulated within the language is an object. Its base syntax and concepts are identical to those of the language Smalltalk (the canonical example of an object-oriented language) with specific extensions to support array programming as in the language APL.
F-Script provides an interpreted, interactive environment with support for workspaces, which provide a rich set of functions including object persistence, distributed objects, graphical user interface (GUI) framework, database access, among other things.
Syntax
Like Smalltalk, F-Script's syntax is very simple, without requiring specific notation for control structures which are provided in a unified manner by the message send
operation. Unlike Smalltalk, F-Script provides specific notational extensions to support the Array
class, using curly brackets to describe literal arrays, which may contain any F-Script expressions.
For example, {1+3, 'name', true}
is a valid array literal. The empty array is denoted by {}
. Arrays of arrays are supported transparently, since any array is just another object.
Message sending
Message expressions in F-Script are similar to those in Smalltalk: they specify which object is the receiver of the message, which operation is called by the message, and any argument objects needed by the operation. F-Script supports unary, binary, and keyword messages. F-Script message semantics are extended to support array programming by recognizing that an array operation, such as adding to numerical vectors, must be viewed as generating a number of messages relating the elements of the vectors involved
Thus, if A = {1, 2, 3}
and B = {10, 20, 30}
, then F-Script allows A + B = {11, 22, 33}
.
Usage
F-Script is chiefly used as a lightweight scripting layer on top of macOS's Cocoa application programming interface (API). It can be embedded in applications using the F-Script framework and Interface Builder palettes. It can also be used interactively from the F-Script interpreter to prototype applications. Finally, it can be used to explore applications' object hierarchies using an injector such as F-Script Anywhere.
Forks
The original F-script development by Philippe Mougin stopped at version 2.1 in 2011. Ilya Kulakov (Kentzo) took over the FScript.org website and updated the program to work with Mac OS X 10.7 through 10.10 until version 2.3 of 2014, building off Jonathan Mitchell's modernization work. Kulakov noted that as F-Script ties deeply into the system, the code must be changed to reflect the framework available in each Mac OS X release. The last update to this chain of work was done in 2018, by Wolfgang Baird, who updated F-Script to work with Mac OS X 10.12.[1]
References
- Baird, Wolfgang (23 March 2020). "w0lfschild/F-Script".