windows has so different ways to program i have no idea what some of them even mean. could someone help me out with the meaning of all these.
COM
.NET
api
mfc
CLI
CLR
managed c++
windows forms
windows has so different ways to program i have no idea what some of them even mean. could someone help me out with the meaning of all these.
COM
.NET
api
mfc
CLI
CLR
managed c++
windows forms
COM - Can can be viewed as a generic term. At its heart it means Component Object Model. But it emcompasses other technologies such as OLE and ActiveX. More here.
.Net - It's a framework intended to replace many of the past windows programming related technologies, including COM above. In a simplistic view, it wraps the windows API and exposes a set of objects and functions the programmer can use to program for Windows. Theoretically it is fully portable, contrary to MFC, since the exposed objects and functions can wrap around other operating systems own API. But little effort has been done in that area. .Net is not language independent in a strict sense since it provides it's own virtual machine known as Common Language Runtime (CLR). You'll thus need to use its own set of programming languages that include C#, VB.Net and ASP.Net.
API - An API can be many things depending on where you are looking. If at an operating systems, a programming library, a service or a piece of software. Concerning windows programming, it refers to the Win32 API, the core windows library that is still today the favorite way of programming for windows by a few, and is at the core of many higher level windows programming libraries from GUI to networking and graphics.
MFC - Microsoft Foundation Classes. A framework that was developed to ease and simplify windows programming by abstracting the Win32 API into a new set of objects and functions and to facilitate the development of RAD related tools. It's probably the most common windows library in existence.
CLI - It's just a specification.
CLR - It's the implementation of CLI. Common Language Runtime. A virtual machine that provides .Net programming with essential services like garbage collection, multithreading or exception handling. The most important feature is its Just-In-Time compiler that converts CIL code (code compiled by the .Net compiler) into native code, at runtime and by request.
Managed C++ - Not a programming language in my opinion, contrary to what may be said in some circles. It's essentially a set of extensions that allow C++ code to run under .Net. Since these extensions change also some syntactic elements of C++, hence probably the argument that is sometimes heard Managed C++ was a programming language. It's not. It's a compiler extension to C++. The argument is perhaps even stronger now since the term is oficialy dead and has been replaced with C++/CLI... which seems to mean C++ for the CLI, a more mature version of Managed C++, many call a programming language. Again... it's not. More here.
Windows Forms - I'm to this date not entirely sure what it is. It's not a programming language if that is what you want to know. It's a programming interface. But it's overly confusing to me since it wraps the win32 API and places it in a .Net GUI programming environment with RAD capabilities... well, the thing is that I don't get the why of the redundancy since part of what defines .Net is exactly a wrapper around the Win32 API... Try and see if you can make any sense of it. I never could, even though I honestly never tried hard to. In any case, its essentially akin to MFC and when someone says they are programming in Windows Forms, what they mean is that they are programming in C# or VB.Net using Windows Forms interface... much like a C++ programmer using MFC.
Last edited by Mario F.; 07-06-2008 at 08:58 PM.
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.
C++/CLI is a stand/alone programming language that is standardized. It may not be much more than C++ and a few extensions, but nevertheless, it is standard.
So can it be called a programming language, then? I would have to say yes, simply because it is another form of C++ tied at the dotNet framework with its own designs and mechanisms and flaws.
Well, to put it simply - it is the RAD interface you use to build Windows apps using dotNet, much as the Dialog resources are a way to create windows or dialogs the native way.Windows Forms - I'm to this date not entirely sure what it is. It's not a programming language if that is what you want to know. It's a programming interface. But it's overly confusing to me since it wraps the win32 API and places it in a .Net GUI programming environment with RAD capabilities... well, the thing is that I don't get the why of the redundancy since part of what defines .Net is exactly a wrapper around the Win32 API... Try and see if you can make any sense of it. I never could, even though I honestly never tried hard to. In any case, its essentially akin to MFC and when someone says they are programming in Windows Forms, what they mean is that they are programming in C# or VB.Net using Windows Forms interface... much like a C++ programmer using MFC.
In his answer to the FAQ What do you think of C++/CLI?, Stroustrup calls C++/CLI "a set of extensions to ISO C++", and also calls it 'a far better language than its predecessor "Managed C++"'. In other words, from a notable language designer's from of view, a set of extensions to a programming language constitutes a new programming language, perhaps in a similiar way as deriving from a base class gives one a child class (though sometimes the inheritance is more private than public, and the Liskov substitution principle may not hold true).The argument is perhaps even stronger now since the term is oficialy dead and has been replaced with C++/CLI... which seems to mean C++ for the CLI, a more mature version of Managed C++, many call a programming language. Again... it's not. More here.
Look up a C++ Reference and learn How To Ask Questions The Smart WayOriginally Posted by Bjarne Stroustrup (2000-10-14)