Some of us have been interfacing different languages for decades - I know
that some newbies think it's a recent development, but really, it isn't.
I've worked on projects where we were using Pascal, Fortran, C, and
Assembler, all on the same hardware and interfacing to each other via
API[1], and no doubt others have similar stories.
Of course interfacing different languages has been possible for ages, I
write my Dlls in C++ and they talk to my Delphi programs without problems
via APIs LoadLibrary - GetProcedureAddress and all that jazz, but this is
different to the way .net works. In dotnet there is a Common Language
Runtime (CLR). The Common Language Runtime is the substrate that abstracts
the underlying operating system from your code, so you don't need to think
anymore about language dependient type (an string in classic passcal (not
Delphi) was not compatible with null terminated strings or VB strings, for
example). You don't need to think anomorre about calling conventions,
stdcalls, fastcalls etc. That means that if I compile a assembly with VB for
.NET, I can use it DIRECTLY in my C# program. So there is a difference,.