Ken Ismert
KIsmert at TexasSystems.com
Wed Mar 29 13:29:23 CST 2006
Shamil, >>I'd note all that below are "old school" >>definitions (beginning of 90ies) Yes, I admit that. >> ... COM and VB6/VBA, good but too inflexible ... >> ... late bound interfaces/run-time binding >> are in the same or even bigger favor ... Surprisingly, VB6/VBA is not fundamentally inflexible -- but the orthodoxy of how to use it is. Remove Option Explicit from your module header, and you can write code like: Public Sub Test() a = "ABC" b = 1234 Set c = CurrentDb() Debug.Print a, VarType(a) Debug.Print b, VarType(b) Debug.Print c.Name, TypeName(c) End Sub Looking kind of dynamic, no? But how many times have the VB gods told you that this style of code was wrong? And VB has always had late bound interfaces/run-time binding using the Object type. In fact, it may be possible to do a decent implementation of run-time introspection and partial binding to foreign interfaces -- using VBA only, with no custom support DLLs/ActiveX required. My point is not to bash the new stuff -- it has its obvious merits. But, if you are prepared to shed preconceptions, the old wave can probably do 95% of what the new wave can do. >> ... Test driven development means that you tested >> all the interfaces by running unit tests ... That is the big problem with dynamic languages: verifiability. Thus, the emphasis on test-driven development in the dynamic Ruby and Python platforms. It is the latest attempt to bridge the chasm between static/inflexible/verifiable languages (C, C++, Java, ...) and dynamic/flexible/hard-to-verify (Lisp, Smalltalk, Python, Ruby). I bring up Lisp and Smalltalk because they, in their day, were supposed to revolutionize the world with their dynamic flexibility -- but they didn't. >> Ruby is the next challenge to MS C# and VB.NET... In terms of purity of concept, Ruby is it. For the time being, I'm going with Python, not because it is the 'ideal' language, but for purely practical reasons that I am not going to outline in this post. -Ken