<rdf:RDF
    xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
    xmlns:s='http://snipsnap.org/rdf/snip-schema#'
    xml:base='http://www.peerbox.com:8668/rdf'>
    <s:Snip rdf:ID='Context'
         s:name='Context'
         s:cUser='kgr'
         s:oUser='kgr'
         s:mUser='kgr'>
        <s:content>\\&#xD;&#xA;I use the term &quot;Context&quot; to refer to the concept of bringing the implicit namespace (ie. global variables) under explicit program control.&#xD;&#xA; &#xD;&#xA;Other terms or systems which are the same or similiar include: Dynamic Scoping, Fluid Variables, Inversion of Control, Dependency Injection, Component Contexts, Environmental Acquisition, Frames, Prototypes, Explicit Namespaces, First-Class Environments, Pi-Calculus, and Alpha Forms.&#xD;&#xA;&#xD;&#xA;1 Dynamic Scoping / Fluid Variables&#xD;&#xA;&#xD;&#xA;Lisp was originally dynamically scoped.  It was later switched to lexical scoping but the ability to perform dynamic scoping was still retained.&#xD;&#xA;   * {link:Dynamic Scoping in C2|http://c2.com/cgi/wiki?DynamicScoping}&#xD;&#xA;   * {link:Dynamic Scoping in Lisp|http://www.n-a-n-o.com/lisp/cmucl-tutorials/LISP-tutorial-12.html}&#xD;&#xA;   * {link:Fluid Variables in Ruby|http://www.visibleworkings.com/ruby/fluid.html}&#xD;&#xA;&#xD;&#xA;1 Inversion of Control&#xD;&#xA;&#xD;&#xA;IoC frameworks are becoming very popular in the Java community.&#xD;&#xA;   * {link:PicoContainer|http://www.picocontainer.org/}&#xD;&#xA;   * {link:NanoContainer|http://www.nanocontainer.org/}&#xD;&#xA;   * {link:Phoenix|http://avalon.apache.org/phoenix/}&#xD;&#xA;   * {link:Avalon|http://jakarta.apache-korea.org/avalon/framework/guide-patterns-ioc.html}&#xD;&#xA;   * {link:Inversion of Control Containers and the Dependency Injection pattern|http://www.martinfowler.com/articles/injection.html}&#xD;&#xA;&#xD;&#xA;1 Component Oriented Software&#xD;&#xA;&#xD;&#xA;Component Oriented software development involves creating software components which can be used to compose larger software systems.  The method of plugging a &#xD;&#xA;component into the rest of the system is to provide it with some container specific Context class.  In Java you can see many examples of this, including: ServletContext, AppletContext, and EJBContext.  I&apos;m interested in generic rather than specific Contexts.&#xD;&#xA;   * {link:Component Software: Beyond Object-Oriented Programming|http://www.amazon.ca/exec/obidos/ASIN/0201745720/ref=pd_bxgy_text_2/701-8806431-7292345}&#xD;&#xA;&#xD;&#xA;1 Environmental Acquisition&#xD;&#xA;&#xD;&#xA;I&apos;ve only ever seen this term used in the Python world.&#xD;&#xA;   * {link:Environmental Acquisition|http://www.ccs.neu.edu/home/lorenz/research/acquisition/}&#xD;&#xA;&#xD;&#xA;1 Frame-Based Systems&#xD;&#xA;&#xD;&#xA;In AI they have the notion of a &quot;Frame-Based System&quot; as knowledge-based system in which frames constitute the primary means for encoding knowledge.  Frames are a form of knowledge representation in which concepts are associated explicitly with their defining attributes. Instances of a concept are created by assigning values to the attributes.&#xD;&#xA;   * {link:Expert systems: frames, rules or logic for species identification?|http://bioinformatics.oupjournals.org/cgi/content/abstract/3/1/1}&#xD;&#xA;   * {link:XI|http://xi.verbdev.com/xi/} - a Frame based language/database hybrid&#xD;&#xA;   * {link:CYCL|http://en.wikipedia.org/wiki/CycL} was originally Frame-based but isn&apos;t any longer&#xD;&#xA;   * {link:Frame Languages|http://en.wikipedia.org/wiki/Frame_language} - at Wikipedia&#xD;&#xA;   * {link:Frame-Based Systems|http://www.cs.umbc.edu/771/current/papers/nebel.html}&#xD;&#xA;   * {link:Related to Description Logics (DL)|http://www.inf.unibz.it/~franconi/dl/course/dlhb/dlhb-04.pdf}&#xD;&#xA;&#xD;&#xA;1 Prototype Based Programming&#xD;&#xA;&#xD;&#xA;The idea for creating &quot;classless&quot; OO systems was at least partially based on ideas taken from AI&apos;s Frame-Based Systems.  The Class/Object duality is removed in favour of a single construct called the &quot;Prototype&quot;.  Prototypes are exactly Contexts.  Context mechanics are very well developed within the field of prototype based languages. Unfortunately, these languages tend to underexploit the environmental aspects of prototypes.  &#xD;&#xA;   * {link:Introduction|http://www.iam.unibe.ch/~scg/Teaching/IOOM/PPT/NewProtoTypesIntro.pdf}&#xD;&#xA;   * {link:Advanced|http://www.iam.unibe.ch/~scg/Teaching/IOOM/PPT/PrototypesAdvanced.pdf}&#xD;&#xA;   * {link:Io Language|http://www.iolanguage.com/}&#xD;&#xA;   * {link:Prototype-based Languages|http://www.dekorte.com/Proto/Chart.html}&#xD;&#xA;   * {link:Self Tutorial|http://www.cs.ucsb.edu/labs/oocsb/self/release/Self-4.0/Tutorial/index.html}&#xD;&#xA;   * [Albert]&#xD;&#xA;&#xD;&#xA;1 Mobile Agents&#xD;&#xA;&#xD;&#xA;A mobile agent is a software component which can move from node to node in a network in the fulfillment of its tasks.  When a Mobile Agent arrives at a new node&#xD;&#xA;it needs something like a Context to help it find its way around.&#xD;&#xA;   * {link:IBM&apos;s Aglet Context|http://www.trl.ibm.com/aglets/api/com.ibm.aglet.AgletContext.htm}&#xD;&#xA;&#xD;&#xA;1 Pi Calculus &#xD;&#xA;   * {link:Piccola - A Small Composition Language|http://www.iam.unibe.ch/~scg/Research/Piccola/} - Language based on immutable Contexts&#xD;&#xA;&#xD;&#xA;1 Explicit Namespaces&#xD;&#xA;   * {link:Explicit Namespaces|http://www.iam.unibe.ch/~scg/Archive/Papers/Ache00bExplicitNamespaces.pdf}&#xD;&#xA;   * {link:Environments as First Class Objects|http://citeseer.ist.psu.edu/gelernter87environments.html} - Alpha Forms in Symmetric Lisp\\&#xD;&#xA;   * {link:Free variables and first-class environments|http://portal.acm.org/citation.cfm?id=113826}\\&#xD;&#xA;   * {link:A Programming Language Supporting First-Class Parallel Environments |http://citeseer.ist.psu.edu/cache/papers/cs/975/ftp:zSzzSzftp.nj.nec.comzSzpubzSzplszSzmitTR434.pdf/jagannathan89programming.pdf} - Symmetric Lisp\\&#xD;&#xA;   * {link:Locales: First-Class Lexical Environments for Common Lisp|http://www.flownet.com/gat/locales.pdf}&#xD;&#xA;&#xD;&#xA;1 Other&#xD;&#xA;   * {link:Contexts in Scheme|http://www-spi.lip6.fr/~queinnec/WWW/chap8.html} - and {link:here|http://www-spi.lip6.fr/~queinnec/Papers/modenv.ps.gz}&#xD;&#xA;   * {link:BeanContext JavaDocs|http://java.sun.com/j2se/1.4.2/docs/api/java/beans/beancontext/package-summary.html} - Standard but unknown Java package&#xD;&#xA;   * {link:Context Oriented Programming (in Forth)|http://64.233.167.104/search?q=cache:4VVIMgWz508J:dec.bournemouth.ac.uk/forth/euro/ef98/gassanenko98a.pdf+context+oriented&amp;hl=en}&#xD;&#xA;   * {link:HiveMind|http://jakarta.apache.org/hivemind/} - a services and configuration microkernel.  Similar goals to Contexts.&#xD;&#xA;   * {link:NewLisp|http://www.newlisp.org/} - A New Lisp which is {link:Context-Oriented|http://newlisp.org/newlisp_manual.html#contexts}&#xD;&#xA;   * {link:Context Objects on C2|http://c2.com/cgi/wiki?ContextObjectsAreEvil}&#xD;&#xA;   * {link:Dynamically Scoped Functions as the Essence of AOP|http://prog.vub.ac.be/~wdmeuter/PostJava/Costanza.pdf}&#xD;&#xA;   * {link:The Bla Language|http://wouter.fov120.com/bla/}&#xD;&#xA;   * {link:Pic%: A contemporary Prototype-Based Language|http://pico.vub.ac.be/}&#xD;&#xA;   * {link:Transmuter|http://www.transmuter.org/intro.html} prototype-based dynamic programming language &#xD;&#xA;   * {link:ContextL|http://common-lisp.net/project/closer/contextl.html} - CLOS extension for Context-oriented Programming&#xD;&#xA;   * {link:Context-oriented Programming|http://www.swa.hpi.uni-potsdam.de/cop/} - by Prof. Dr. Robert Hirschfeld&#xD;&#xA;   * {link:Monkey Patching|http://gbracha.blogspot.com/2008/03/monkey-patching.html}&#xD;&#xA;   * {link:Context-oriented Programming|http://www.jot.fm/issues/issue_2008_03/article4/}&#xD;&#xA;   * {link:Activation Records in Smalltalk|http://www.mirandabanda.org/cogblog/2009/01/14/under-cover-contexts-and-the-big-frame-up/}</s:content>
        <s:mTime>2009-02-06 16:23:47.243</s:mTime>
        <s:cTime>2005-02-12 21:04:33.123</s:cTime>
        <s:comments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
        <s:snipLinks>
            <rdf:Bag>
                <rdf:li rdf:resource='http://www.peerbox.com:8668/rdf#start/2006-03-07/1'/>
                <rdf:li rdf:resource='#Albert'/>
                <rdf:li rdf:resource='#Projects'/>
                <rdf:li rdf:resource='#snipsnap-search'/>
                <rdf:li rdf:resource='#FISH'/>
                <rdf:li rdf:resource='#snipsnap-index'/>
                <rdf:li rdf:resource='#Bio'/>
                <rdf:li rdf:resource='http://www.peerbox.com:8668/rdf#start/2006-03-31/1'/>
                <rdf:li rdf:resource='#Quotes'/>
                <rdf:li rdf:resource='#Links'/>
                <rdf:li rdf:resource='http://www.peerbox.com:8668/rdf#start/2005-11-14/1'/>
                <rdf:li rdf:resource='#kgr'/>
                <rdf:li rdf:resource='http://www.peerbox.com:8668/rdf#start/2006-05-16/1'/>
                <rdf:li rdf:resource='http://www.peerbox.com:8668/rdf#start/2006-03-23/1'/>
            </rdf:Bag>
        </s:snipLinks>
        <s:attachments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
    </s:Snip>
</rdf:RDF>
