Type inference for JScript.NET

Neil Hodgson neilh at scintilla.org
Tue Jul 25 22:50:23 EDT 2000


> There is an article on MSDN
> (http://msdn.microsoft.com/voices/scripting07142000.asp) about .NET
> enhancements of JScript, the Microsoft dialect of Javascript.
> Among the known things like compilation to IL bytecode there is mentioning
> of optional typing of variables to boost performance and even - type
> inference! (although rudimentary).

   I found this article quite depressing. One of the effects of .NET appears
to be the homogenisation of programming languages. When the platform
emphasises compilation, compiler helpful warts like variable declaration and
"option fast" start appearing. There is a place for languages with optional
typing but there is also a place for a language that tries to stay very
simple.

   VB has been on a long journey of complexification which has been great
for many but has left some people behind. One of my mates works as a
manager/bureaucrat - programming isn't a significant part of his job but
over the years he's been able to write bits of dBase, Excel macros and HTML
with embedded JavaScript. Excel moved from a simple macro language to a
simplified VB variant (OK, so far) to using full VB (getting worse) and then
VB starts gaining C++ features (bad). So this bloke has stopped programming
in Excel - just too hard now. Adding 'programming in the large' features
appears good to help the more advanced users but it introduces unwanted
complexity for others. JavaScript was the last refuge of simplicity but now
Microsoft (and Netscape) are moving it into the same zone as Python, VB and
C#. I expect a new simple language will appear, gain some users and then
embark on the same journey to complexity.

   For more .NET homogenisation indicators -
   VBScript (because there will only be VB.NET) is dropping their equivalent
of eval (possibly temporarily).
   Lightning Oberon is dropping extension records from Oberon 2.
   Eiffel# is dropping multiple inheritance (again, this may be temporary
but there is mention of forking language development into Eiffel and Eiffel#
branches).
   VB.NET has changed syntax (such as requiring braces when calling a
subroutine) and semantics (such as exception handling) to be more like
C/C++,  so VB source will have to be run through a conversion utility before
it is VB.NET compatible.
   When C++ is used to produce managed code, destructors are not called
until garbage collection time like Java, so
resource-acquisition-is-initialisation is a far less useful idiom.

   Neil





More information about the Python-list mailing list