Funk2 is a free, open, programming language designed for causal reflective tracing and monitoring of complex control systems. This project has been developed in conjuction with the Reflective Commonsense Thinking group at the MIT Media Lab. The Funk2 project has been supported as a core research effort of the Mind Machine Project.Please see the new Funk2 Wiki on GitHub for tutorials on downloading, installation, and programming techniques!
The goal of the programming language Funk2 is to enable reflective algorithmic tracing for large heterogenous control systems. A few points emphasized in the Funk2 programming language are:
- Layered Critical Causal Reflection
- Efficient and Robust Control
- Learning by Credit Assignment
- Divergent Solution Paths
- Intricate Thread Control
- Goal-oriented Learning
Funk2 is a novel programming language that introduced a programming technology that we call Causal Reflective Programming. The language is based on a peer-to-peer shared memory system, allowing individuals access to large numbers of processors and memory. Funk2 uses a virtual scheduler, processor, and thread model that is based on top of the shared memory system, while taking advantage of the specific number of processor cores on each machine. We use POSIX threads to implement virtual processors. Funk2 includes very simple and abstract data and syntax representation--inspired by lisp and scheme. Funk2 compiles to bytecodes that may be shared between architectures, inspired by these similar concepts in Python and Java virtual machines. What is novel to the Funk2 programming language is it's unique ability to keep track of everything that it does, which uses a lot of memory when used indiscreetly, but in general allows reflective tracing for causal reasons why bugs occur, when they inevitably do. Other reflective features of the language include an event-based inter-process communication system that works across the peer-to-peer network, inspired by the Erlang model. We see a language like this as necessary for the social, iterative, cooperative design environment for large distributed complex control systems. Our applications are inspired by Marvin Minsky's, Emotion Machine layered control algorithm for a Society of Mind.
- Morgan, B.; "Funk2: A Distributed Processing Language for Reflective Tracing of a Large Critic-Selector Cognitive Architecture"; Proceedings of the Metacognition Workshop at the Third IEEE International Conference on Self-Adaptive and Self-Organizing Systems; San Francisco, California, USA; 2009 September
- Morgan, B.; "Funk2: A Frame-based Programming Language with Causally Reflective Capabilities"; Technical Note; Massachusetts Institute of Technology; 2009 May
- Morgan, B.; "Funk2 Trust Presentation online Movie, PDF, and Transcript."; Research Presentation; Massachusetts Institute of Technology; 2008 April
- Morgan, B.; "Funk2: Causal Reflective Programming"; Research Presentation; Massachusetts Institute of Technology; 2008 January