Currently, I fluently program in two languages - LISP and VBA. Dot-Net is something I'm trying to squeeze in when I have time *snicker yeah right*. The basic decision method of what to use for programming is this:
- if its needed RFN, only needs to work in a single drawing, and/or is only moderately complex, that gets done in LISP. Its fast to write and relatively forgiving.
- if it must run across multiple drawings ("batch" processing), and/or requires complex dialogs, and/or requires complex interaction with Excel or Access files, then it gets done in VBA. Its not quite as fast to set up as LISP, but has better dialog support, there's no fiddling around to get it to run across multiple drawings, and its easier to connect to other data-using programs.
- if it is a complex application which requires massive amounts of data handling, then that is going to be done with .NET (provided I can get going on it). Incredibly complex but with that complexity comes tools for handling virtually everything - XML data, SQL databases, multiple threads for concurrent processes, data manipulation for any kind of data you can get your hands on or create.
One of the downsides of using .NET is future support. Not many CAD support personnel know (or care to learn) .NET, so if a core in-house customization is written with it and the originator is no longer around, migrating that code to a new AutoCAD release could be quite difficult. On the other hand, virtually all CAD support personnel have exposure to LISP, and many know some VBA as well.