<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SimpleScript Part Seven: Binder Skeleton</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx</link><description>In Part Five I was discussing modules: there is a "global module" and any number of additional modules. Each module is associated with a named item, and the only module which is associated with more than one named item is the global module. This means</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>re: SimpleScript Part Seven: Binder Skeleton</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#9892075</link><pubDate>Mon, 07 Sep 2009 08:27:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9892075</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Hi Eric, &lt;/p&gt;
&lt;p&gt;I am aware of the fact that more than 4 years have past since this blog entry was made, but I would love to get my hands on the source code attached to this post. &amp;nbsp;Our product uses the msscript.ocx server-side in order to execute user-defined vbScript's - since there has not been a 64-bit release we need to consider our options for backward-compatibility whilst at the same time trying to be 64-bit compliant. &amp;nbsp;Do you know by any chance whether or not a 64-bit replacement will be released? Who can I ask for other (backward-compatible) options (next to Dr. Google which has not been much of a help, except for finding your blogs:)). &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Any plans for a vbScript.NET or even a IronVbScript? ;).&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892075" width="1" height="1"&gt;</description></item><item><title>VBScript Default Property Semantics</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#458055</link><pubDate>Tue, 30 Aug 2005 20:43:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:458055</guid><dc:creator>Fabulous Adventures In Coding</dc:creator><description>&lt;br&gt;Here’s a question I recently got about VBScript, where by &amp;amp;quot;recently&amp;amp;quot; I mean August 28th, 2003.&amp;amp;amp;nbsp;This...&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=458055" width="1" height="1"&gt;</description></item><item><title>VBScript Default Property Semantics</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#458053</link><pubDate>Tue, 30 Aug 2005 20:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:458053</guid><dc:creator>Fabulous Adventures In Coding</dc:creator><description>&lt;br&gt;Here’s a question I recently got about VBScript, where by &amp;amp;quot;recently&amp;amp;quot; I mean August 28th, 2003.&amp;amp;amp;nbsp;This...&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=458053" width="1" height="1"&gt;</description></item><item><title>re: SimpleScript Part Seven: Binder Skeleton</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#129229</link><pubDate>Mon, 10 May 2004 18:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:129229</guid><dc:creator>Eric Lippert</dc:creator><description>Thanks Nicholas.  I think you're right on the money.  &lt;br&gt;&lt;br&gt;I've never written a copy-based GC before, so that might be an interesting experiment.  And I agree that a goal of the language should be brevity.&lt;br&gt;&lt;br&gt;I once considered writing up a .NET language that I was going to call &amp;quot;VERBOSE&amp;quot; -- basically a simple C#-like demonstration language but with the property that there were NO optional keywords.  A typical class declaration would look something like&lt;br&gt;&lt;br&gt;class { &lt;br&gt;  name := &amp;quot;MyClass&amp;quot;,&lt;br&gt;  sealed := true,&lt;br&gt;  extends := class {&lt;br&gt;    name := &amp;quot;MyBaseClass&amp;quot;,&lt;br&gt;    namespace := &amp;quot;MyNamespace&amp;quot;&lt;br&gt;    }, &lt;br&gt;&lt;br&gt;etc, etc.  It would have been wonderfully horrid.  I never did get around to it though.&lt;br&gt;&lt;br&gt;I agree that the runtime is the interesting part, but I will probably concentrate upon the infrastructure -- the GC, the error reporting mechanism, etc -- and not implement things like a big string manipulation library, a date object, etc.  &lt;br&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=129229" width="1" height="1"&gt;</description></item><item><title>Pedagogy</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#128514</link><pubDate>Sat, 08 May 2004 18:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:128514</guid><dc:creator>Nicholas Allen</dc:creator><description>Since I promised earlier to write more on this I thought I'd catch up.&lt;br&gt;&lt;br&gt;There seems to be three big tradeoff areas to consider:&lt;br&gt;&lt;br&gt;Scriptyness- how well the language supports quick, little programs&lt;br&gt;Parser complexity- how hard the language is to process&lt;br&gt;Runtime complexity- how hard the language is to execute &lt;br&gt;&lt;br&gt;In general, scripty languages are harder to parse and run (automatic semicolonization, expando objects).  We can trade parser and runtime complexity by moving things like type checking to be early or late (which also impacts the scripty feel).  These choices affect other &amp;quot;cool stuff to do&amp;quot; items.  Syntax coloring needs to match the parser and debugging needs to understand the runtime.&lt;br&gt;&lt;br&gt;There's a minimum level of scriptyness required.  Fortran77Script#.NET really just misses the point.  I think though that complex scripty features are better described than implemented.  Slotted objects are neat but you wouldn't want to read the code that handles them after the preprocessor has gotten done with it.  My goals are:&lt;br&gt;&lt;br&gt;* Eliminate boilerplate and uninteresting code.  Make a language that lets you do a two line job in two lines.&lt;br&gt;* Support programs more interesting than &amp;quot;Hello world&amp;quot;, less interesting than being able to compile itself&lt;br&gt;&lt;br&gt;I consider the parser the least interesting part.  There are a lot of good books on how to parse just about anything.  As long as the parser works and it's not too hard to add new language features that's fine by me.  There will probably be a lot of questions about code generation which is not as commonly talked about.  And that leads to...&lt;br&gt;&lt;br&gt;The runtime which I consider the most interesting part.  There are two ways to go here.  The first is to develop a new runtime which would explain a lot about memory management, call resolution, and how existing languages are implemented.  There have been only a few good discussions like this.  The second is to leverage an existing runtime.  I've never seen a really detailed look going through the entire process.  The original roadmap had Managed Code - ? so maybe.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=128514" width="1" height="1"&gt;</description></item><item><title>GC</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#127777</link><pubDate>Fri, 07 May 2004 12:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:127777</guid><dc:creator>Trevor Talbot</dc:creator><description>My main interest here is in the script engine interfaces; I'm coming from a perspective of wanting to implement an engine for an existing language.  In this case I want to know what the engine needs to be aware of for a GC'd language, but the actual GC may as well be a black box.  I just need to know how my language behaves.&lt;br&gt;&lt;br&gt;On the other hand, I'm interested in GCs for separate reasons.  One of the most intriguing things to me is the ability to move memory, for better locality, larger allocation, or whatever.  This is also more interesting because it requires awareness of the language -- what a memory reference is, etc.  So if you do decide to explore a complex GC, I echo Nicholas' comments in that I'd like to see a good stepping stone for experimenting with more exotic things.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=127777" width="1" height="1"&gt;</description></item><item><title>re: SimpleScript Part Seven: Binder Skeleton</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#126247</link><pubDate>Wed, 05 May 2004 05:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:126247</guid><dc:creator>Eric Lippert</dc:creator><description>Re: IID_NULL -- Hmm, I'm surprised the compiler didn't catch that.  Looks like I need to bump the warning level up to max. &lt;br&gt;&lt;br&gt;Re: Two to's is too many. Yep. &lt;br&gt;&lt;br&gt;Re: LError on non-error. Yeah, you're right. I might fix that up. &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=126247" width="1" height="1"&gt;</description></item><item><title>re: SimpleScript Part Seven: Binder Skeleton</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#126246</link><pubDate>Wed, 05 May 2004 05:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:126246</guid><dc:creator>Eric Lippert</dc:creator><description>Re: failing to provide room -- it's possible that the property get has a side effect and you care about that, not the return value.  That's a very rare situation, but it is legal.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=126246" width="1" height="1"&gt;</description></item><item><title>re: SimpleScript Part Seven: Binder Skeleton</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#126180</link><pubDate>Wed, 05 May 2004 03:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:126180</guid><dc:creator>Nicholas Allen</dc:creator><description>// Failing to&lt;br&gt;// provide room for the return value is dumb, but not illegal.&lt;br&gt;&lt;br&gt;Arrgh.&lt;br&gt;&lt;br&gt;&lt;br&gt;Binder::Invoke sure was a lot of fun to read.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=126180" width="1" height="1"&gt;</description></item><item><title>re: SimpleScript Part Seven: Binder Skeleton</title><link>http://blogs.msdn.com/b/ericlippert/archive/2004/05/04/125837.aspx#126177</link><pubDate>Wed, 05 May 2004 02:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:126177</guid><dc:creator>Nicholas Allen</dc:creator><description>Binder::GetIDsOfNames &amp;gt;&amp;gt;&amp;gt;&lt;br&gt;if (IID_NULL != riid)&lt;br&gt;{&lt;br&gt;    return hr= DISP_E_UNKNOWNINTERFACE;&lt;br&gt;    goto LError;&lt;br&gt;}&lt;br&gt;&amp;lt;&amp;lt;&amp;lt;&lt;br&gt;&lt;br&gt;This probably isn't what you wanted to do.&lt;br&gt;&lt;br&gt;&lt;br&gt;Binder::Invoke &amp;gt;&amp;gt;&amp;gt;&lt;br&gt;Bug(&amp;quot;We don't support named arguments to except to property puts.&amp;quot;)&lt;br&gt;&amp;lt;&amp;lt;&amp;lt;&lt;br&gt;&lt;br&gt;Too many to's here.&lt;br&gt;&lt;br&gt;&lt;br&gt;The goto LError; kind of bugs me.  It makes a lot of sense when there actually is an error.  But it's also used to skip to the end of a function even when everything is ok.  I'd be quicker to understand what you were doing if it was goto out; on success or something.&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;HRESULT GetIdOfName(const WCHAR * pszName , DISPID * pdispid);&lt;br&gt;HRESULT GetNameById(DISPID dispid, Name * * ppName);&lt;br&gt;&amp;lt;&amp;lt;&amp;lt;&lt;br&gt;&lt;br&gt;Interesting that these aren't symmetric.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=126177" width="1" height="1"&gt;</description></item></channel></rss>