I want this now….

mms://wm.microsoft.com/ms/msnse/0409/23062/Gavin_Bierman/gavinbierman_0001_56K_110K_300K.wmv

About James McParlane

CTO Massive Interactive. Ex Computer Whiz Kid - Now Grumpy Old Guru.
This entry was posted in .NET. Bookmark the permalink.

2 Responses to I want this now….

  1. Emerson says:

    Very nice, but not many original ideas.

    Anonymous classes (structs) have been around in Java for a long time, and have even made it into C# already.

    People other than Microsoft have been playing with multi language syntaxes. Groovy is an attempt at something similar in Java, though without the solid compiler underpinning.

    http://groovy.codehaus.org/

    Closures and continuations (i.e. the yield) statement have been incorporated in varying degress into many dynamic languages such as Python, Smalltalk, Scheme, and Ruby.

    http://weblogs.asp.net/rosherove/archive/2004/03/18/92051.aspx

    Many people argue that such constructs lead to unmaintainable code. Particularly closures which can lead to problems due to the numerous anonymous bits business logic which wind up smattered all over your project, something that object oriented languages should try to avoid.

    Further reading:

    http://c2.com/cgi/wiki?ContinuationExplanation
    http://c2.com/cgi/wiki?LexicalClosure
    http://www.rubycentral.com/faq/rubyfaqall.html

    Click to access appcont.pdf

    Click to access finkel02.pdf

    http://www.sourcekeg.co.uk/www.python.org/peps/pep-0334.html
    http://66.102.9.104/search?q=cache:QHXRhadiir8J:web.access.net.au/felixadv/files/output/book/x2405.html+continuations+yield+statement&hl=en
    http://www.rubygarden.org/ruby?RubyFromPython
    http://www.cs.duke.edu/~raw/cps206/ControlStructures.htm

  2. James Mc Parlane says:

    Yep – but I’ve always been a great fan of closures. And yes the maintainability issue was an option. The same with Aspect Orriented Programming – how do you know if an Aspect is affecting the code you are looking at without having a syntax that requires double entry, and requiring an edit of the target code, which pretty much kills the best thing about AOP, the ability to drop in vistor behaviors. The solution is to require a graphical editor that annotates the code as you see it. So it shows you the potential aspects by proforming a combination of IntellisenseTM and ‘Edit Time Linking’

    …in my original BSCAL VM all instructions were objects, closures were part of normal execution – programs were in fact just an arrangement of closures and rules for determing the potential ‘energy’ of objects – the interpreter had only one simple rule. ‘Reduce Entropy’

    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] DECLARE_OPERATOR (point) + [USER]
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] (point)+(point)
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] BEGIN_OPERATOR
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] PREFIX_BEGIN
    [00000000]:P[00000000]:N[00000000][0001C19F] FOLD_BEGIN 0
    [0001C19F]:P[00000000]:N[00000000][0001BF01] DECLARE_VARIABLE (point) a
    [00000000]:P[00000000]:N[00000000][0001C19F] FOLD_END
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] PREFIX_END
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] SUFFIX_BEGIN
    [00000000]:P[00000000]:N[00000000][0001C0D9] FOLD_BEGIN 0
    [0001C0D9]:P[00000000]:N[00000000][0001BDEF] DECLARE_VARIABLE (point) b
    [00000000]:P[00000000]:N[00000000][0001C0D9] FOLD_END
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] SUFFIX_END
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] CODE_BEGIN
    [00000000]:P[00000000]:N[00000000][0001C013] CAPSULE_BEGIN
    [0001C013]:P[00000000]:N[0001BC17][0001BCDD] DECLARE_VARIABLE (point) r
    [0001C013]:P[0001BCDD]:N[00000000][0001BC17] FOLD_BEGIN 0
    [0001BC17]:P[00000000]:N[0001B619][0001BB51] FOLD_BEGIN 0
    [0001BB51]:P[00000000]:N[0001B9D9][0001BA95] V_REFERENCE r.x
    [0001BB51]:P[0001BA95]:N[0001B913][0001B9D9] O_REFERENCE =
    [0001BB51]:P[0001B9D9]:N[00000000][0001B913] FOLD_BEGIN 0
    [0001B913]:P[00000000]:N[0001B79B][0001B857] V_REFERENCE a.x
    [0001B913]:P[0001B857]:N[0001B6DF][0001B79B] O_REFERENCE +
    [0001B913]:P[0001B79B]:N[00000000][0001B6DF] V_REFERENCE b.x
    [0001BB51]:P[0001B9D9]:N[00000000][0001B913] FOLD_END
    [0001BC17]:P[00000000]:N[0001B619][0001BB51] FOLD_END
    [0001BC17]:P[0001BB51]:N[0001B0E1][0001B619] FOLD_BEGIN 0
    [0001B619]:P[00000000]:N[0001B4A1][0001B55D] V_REFERENCE r.y
    [0001B619]:P[0001B55D]:N[0001B3DB][0001B4A1] O_REFERENCE =
    [0001B619]:P[0001B4A1]:N[00000000][0001B3DB] FOLD_BEGIN 0
    [0001B3DB]:P[00000000]:N[0001B263][0001B31F] V_REFERENCE a.y
    [0001B3DB]:P[0001B31F]:N[0001B1A7][0001B263] O_REFERENCE +
    [0001B3DB]:P[0001B263]:N[00000000][0001B1A7] V_REFERENCE b.y
    [0001B619]:P[0001B4A1]:N[00000000][0001B3DB] FOLD_END
    [0001BC17]:P[0001BB51]:N[0001B0E1][0001B619] FOLD_END
    [0001BC17]:P[0001B619]:N[00000000][0001B0E1] FOLD_BEGIN 0
    [0001B0E1]:P[00000000]:N[0001AF69][0001B025] V_REFERENCE r.z
    [0001B0E1]:P[0001B025]:N[0001AEA3][0001AF69] O_REFERENCE =
    [0001B0E1]:P[0001AF69]:N[00000000][0001AEA3] FOLD_BEGIN 0
    [0001AEA3]:P[00000000]:N[0001AD2B][0001ADE7] V_REFERENCE a.z
    [0001AEA3]:P[0001ADE7]:N[0001AC6F][0001AD2B] O_REFERENCE +
    [0001AEA3]:P[0001AD2B]:N[00000000][0001AC6F] V_REFERENCE b.z
    [0001B0E1]:P[0001AF69]:N[00000000][0001AEA3] FOLD_END
    [0001BC17]:P[0001B619]:N[00000000][0001B0E1] FOLD_END
    [0001C013]:P[0001BCDD]:N[00000000][0001BC17] FOLD_END
    [0001C013]:P[0001BCDD]:N[00000000][0001BC17] <->
    [00000000]:P[00000000]:N[00000000][0001ABA9] FOLD_BEGIN 0
    [0001ABA9]:P[00000000]:N[0001AA31][0001AAED] O_REFERENCE return
    [0001ABA9]:P[0001AAED]:N[00000000][0001AA31] V_REFERENCE r
    [00000000]:P[00000000]:N[00000000][0001ABA9] FOLD_END
    [00000000]:P[00000000]:N[00000000][0001C013] CAPSULE_END
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] CODE_END
    [0000000C]:P[0001C265]:N[000199DB][0001A8EB] END_OPERATOR

    and this was carried through into the MetaWrap VM

    http://www.metawrap.com/projects/server/amphibian/docs/developer/html/classMwOmObject__System__Primitive__If__Execute.html

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s