Hi Aldrin,
my personal addition to Jon's answer...
In my opinion the right question is not "MDL or MVBA and how they differ", but as Jon mentioned, "What is your programming horizont?" ... in other words, what do you want to achieve, what type of problems you need to solve, what are your long-term plans and how much time you are wiling to invest into a learning process?
If I extend a bit Jon's summary what MicroStation offers now:
At first, it's important to realize there are two different types of questions: Available APIs and development languages you can use. They are interconnected, but not one-to-one. With a slight simplification, APIs are: MDL, MicroStationAPI, COM/VBA; and languages are MDL, C, C++, NET (e.g. C# or VB.NET) and VBA. How they are inteconnected? From language perspective:
- MDL (pseudocode applications): MDL language (don't mix it up with MDL API) is C-based language, which can be compiled into pseudocode. This technology was marked as obsolete when MicroStation 8.0 was released and will be removed completely from MicroStation in a next major update (which is planned to happen next year). This language can be marked as dead and there is no reason to invest any time to learn it. To provide all information, from MDL language you can use MDL API, which are tightly coupled as they were developed together.
What can be confusing for beginners is a fact some tools like bmake and data structures and file types like resource files, which originates from old MDL times, are still used even with new technologies like native C++ code. - Native C/C++ code: It's the preferred way how to develop MicroStation applications. Here you can use MDL API and MicroStationAPI. MicroStationAPI is C++ API and is treated as the primary API for MicroStation. Because MicroStationAPI is not completed yet, it doesn't offer access to all MicroStation features and it's time when MDL API is used. MDL API is C (not C++), pretty old (together with MDL language introduced in MicroStation V4, but very rich and powerfull. With every version, more features are added to MicroStationAPI and from the next major version, the process of MDL API functions removal will begin.
If you aim is to be professional developer for MicroStation, C++ with MicroStationAPI, supplemented with MDL API where necessary, is the best way to go. A disadvantage (but not if the development is your main job) is you need Microsoft Visual Studio (VS2005 now, probably VS2012 for the planned major update next year). - NET languages: It's a kind of mean course in MicroStation application development. You can choose your favourite language (C#, VB.NET or any other NET language), available API is COM/VBA API (so MicroStationVBA help is valuable here) with several extra features (e.g. command table, WinForms integrated into MicroStation GUI are available, whereas in VBA not). It's planned that NET API will be extended substantially in future and will be not the same as VBA API, but it will be still "second level" option comparing to C++ MicroStationAPI and NET will probably never offer offer the same range of functionality.
If you aim is not to develop high-speed applications extremely tightly integrated with MicroStation (e.g. with its display engine) and you can live with existing limitations (limited 3D functionality), NET can be the good option as it's easier to learn C# than C++ ... or VB.NET if you know VBA already (but be careful, VBA and VB.NET are different! ;-)
An advantage is you need "only" a development environment with NET support, even free Visual Studio 2012 Express should be enough. - MicroStationVBA is Microsoft VBA extended by API allowing to interact with MicroStation. It's the poorest technology, not tightly integrated with MicroStation and with a lot of limitations. The main function of VBA (not in MicroStation only, but in all applications) is to be, as Jon wrote, rapid development tool allowing fast and easy creation of simple macros and small applications. It's not the good tool to create anything bigger and more complex, not only because of limited API, but in my opinion mostly because of limited environment without tools helping you to create clean and efficient code and to manage bigger projects.
My summary is you can choose to learn C++, which is seriously demanding process, but you will have access to everything in MicroStation. On the other hand, NET is also a good alternative, but not as powerfull as C++.
With regards,
Jan