Tom wrote:
Did MS make windows with pascal? I think so because in TASM win 3.1 programming, you use the model somthing somthink PASCAL
Prior to Windows 95, most of Windows was written in assembly language (no, really...). However, until at least Windows 3.0, there was an assumption that most programmers were going to be using Pascal, which was the most popular language for PC programming at the time, so the designed all the API codes to use the Pascal calling conventions. This remains the standard for at least the older 16-bit legacy code, for reasons of backwards contemptability.
As for what language you can use, well, it really depends more on you rpreferences and you skills than anything else. I intend to mixed compiled/interpreted language of my own design (a derivative of Scheme which uses infix rather than prefix notation, with some influences from Smalltalk) for the bulk of my coding, with C and assembly for the time-critical or space-critical portions (one of the keys to successful optimization is to know what
doesn't need to be tweaked, so you can concentrate on the parts that do need it). The only real rule is, the compiler you use has to generate code that does not have any system dependencies in it that you didn't explicitly put there.
Many will say that C is the best choice, and if you know C well, it certainly has many advantages when it comes to systems programming. However, it is hardly the only choice; if yo prefer the Pascal family, then you may be better off with Modula-2, or Oberon, or Ada all of which are also designed for systems programming and all of which have been used in working OSes in the past (Pascal itself has been too, but it makes a poor choice in many ways; too many nonstandard extensions are required to make it a viable systems language).
Despite what some C programmers may say, Modula-2 compilers can generate optimized code that is comparable to the equivalent from an optimized C compiler. Optimization is a highly variable thing, however, and different languages will have very different results. It is very easy to generate efficient objct code from C code without any great optimization, but it is hard to optimize it any further because it's rather irregular syntax and semantics. Modula-2, by comparison, produces object code that is somewhat less efficient by nature (but not all that much so), but is much easier to optimize. When you get to a very high level language Scheme, the language lends itself to many advanced optimizations which would be nearly impossible to use for either C or Modula-2, but the unoptimized code it procudes is often extremely inefficient. As a result, a Scheme compiler may, on average, match a C compiler for efficency, but the C code will generate executables that are consistently optimized, while the Scheme executables may be either far more efficient than the C executables for some programs, or far less so for others. Much of this also depends on the compiler writer's skills and design, as well; two compilers for the same language, especially a very highh level one, may produce very different object code.