What language/API to choose is not really the question you
need to be asking yourself. What you need to ask yourself is
what do you need to make effective use of any of them.
Unlike LISP and VB6, True OOP languages like .Net; C++; Delphi,
and most other modern, object oriented programming languages
require the VB6 or LISP programmer to learn new, fundamental,
key concepts and principles of real OOP, most if not all of
which are entirely foreign to LISP and VB.
Many who wear C# on their sleeve and say they use it, do so in
a relatively unsophisticated way, and that's primarily because
they're VB 'programmers' who just recently jumped ship, still
'wet behind the ears', and don't yet fully understand some of
the key OOP principles and concepts, or how to properly apply
them in real world development.
Hence, they generally use C# like it was a supercharged VB6,
in a non-object oriented way, where the code they write is
mostly a client or consumer of existing classes rather than an
implementer/provider of classes.
That's almost exactly how it went for me, when I began using
Delphi about 10 years ago. Initially, I used Delphi as though
it were just a 'turbocharged' Visual Basic (in other words, I
wrote code that primarily consumed classes of the VCL Framework,
but did not implement my own code in classes).
Over the course of those 10 years I gradually learned OOP and the
principles it is founded on. As a result, today I can do really
cool things using OOP (in Delphi, C++, and C#).
With the exception of some concepts like multiple inheritance
and generics (templates in C++), which are to this point the
exclusive domain of C++, most of the other fundamental OOP
concepts that I've had to learn and embrace in the course of
using Delphi and C++ for past 10 years, are equally applicable
to C# and any other real OOP language.
So, it's really not so much about what OO language you use.
Rather, it's the fact that using any of them effectively
requires a good understanding of the key concepts of OOP.
Once you understand those software engineering concepts and
have a solid foundation in OOP; class design and best practices
in coding, underpinnings of all OO languages, then you will
be able to learn to use just about any of them with relative
ease (I use them all, except VB.Net, which I detest).
You'll undoubtedly come across many recent VB-to-C# converts
who now proudly wear C# on their sleeves and claim they are
now 'better' programmers because they use a real OOP. But in
many cases, they're using those languages as a souped-up VB6,
with the same old, flawed ideas. Hence they're just beginning
to learn the basics of OO; class design; and how to exploit
key concepts like polymorphism, inheritance, and persistence.
The fact that you use an OOP language, doesn't necessarily
mean you're using it in the way it was intended to be used,
that only comes with years of experience with it.
--
http://www.caddzone.com
AcadXTabs: MDI Document Tabs for AutoCAD 2004/2005
http://www.acadxtabs.com
AutoCAD based Security Planning Solutions:
http://www.caddzone.com/securityplanning
"perry"
wrote in message news:40ce0710$1_3@newsprd01...
> First, I apologize for "cross-posting" this but since I'm asking general
> questions about mulitipe Adesk API's I thought it would
> be appropriate in this case.
>
> Basically, Im looking for input on what would be the best API for me to
> devote my time to. I've been using Lisp for years now
> but recently started using VBA (I had to if I wanted to tinker with
> Inventor). I avoided vba for a long time because it seemed
> so "foreign" to me, with the dot syntax and all. After just a week of
> VBA'ing though, I've grown to love it.
> Its MUCH easier than Lisp, much more intuitive, much easier to read,
> maintain and debug. It also seems much faster. So now I scorn
> Lisp for anything but the simplest of macro's.
> My intent, after completing my first major project with VBA was to "port" it
> over to standalone VB6. Now though Im wondering,
> since Im embarking on a new (to me) language should I just skip the vb6 step
> and go to VB.net? In that same vein, should I just
> skip VB altogether and go to C-sharp?
> I avoided C for a long time too after tinkering with it a bit several years
> ago, it seemed that to build even a simple
> acad addon with C required a PhD in computer science so that you could first
> master C then grapple with the rather large
> libraries composing the object arx system.
> At a glance, the learning curve for Arx programming looked very much like
> the Eifel tower. Needless to say I gave up on that
>
> approach, I didnt have the time (and money) to spend so much trying to learn
> it, especially when Lisp (and later vb) were SO much
> easier.
> I have heard though that C sharp is considerably easier to master that C/C++
> and so assume arx programming should be a bit
> less painful as well, and apparently the Arx system is moving in that
> direction.
>
> In a nutshell then is my question, should I stick with VBA, go to VB6, go to
> VB.net or take the plunge into C sharp?
> To give this question a little perspective, here are my requirements:
>
> 1. Most important, the one thing I miss from Lisp is the ability to create
> what appear to be "native" commands, i.e. (defun
>
> c:mycommand) this isnt possible with vba, and I assume its not with vb6. It
> is possibe with C, but what about VB.net or C sharp?
>
> 2. The ability to create custom entities would be real nice, been wanting to
> do that for a long time. Obviously this cant be
> done with Lisp or VBA. Last I heard it could only be done with C++/Arx. Can
> the .Nets do it? VB or C?
>
> 3. It would be nice if I could create code that would be compatible all the
> way back to Acad2000, this of course will
> sometimes be impossible. Im under the impresson that only Acad2005 supports
> VB.net, although I thought I heard someone
> say they were doing .net with Acad2004. I have also heard that Inventor only
> partially supports .net right now.
>
> 4. Lastly, as you may have gathered, I also want to create apps/utilies for
> Inventor, thats what got me into VB in
> the first place.
>
> As an aside, if I decide to use VB6, how is the executable to be compiled,
> as an activeX.dll? activeX.exe? neither?
> How are functions inside this executable called from within Acad? I assume
> the "vbarun" construct will not work.
> Is the process similair for VB.net?
> I have found tons of helpfull VBA projects on the net but have not as of yet
> found any examples of "standalone"
> apps/utilities designed for Acad. Are there any examples out there?
>
> Thanks much for any tips
>
> --
> Perry Leets
> Inovec Optimization and Control Systems
> Eugene, Oregon
>
>