Changes

Jump to navigation Jump to search
1,386 bytes added ,  22:59, March 21, 2012
mention portability and optimisation
Line 1: Line 1:  
A '''compiler''' is a [[computer program]] which translates [[source code]] written in a high-level [[programming language]] into executable [[machine code]].  The act of doing this is called [[compilation]].
 
A '''compiler''' is a [[computer program]] which translates [[source code]] written in a high-level [[programming language]] into executable [[machine code]].  The act of doing this is called [[compilation]].
 +
 +
There are compilers for the more common programming languages available on a wide variety of different computer architectures.  This means that a program written in one of these languages is ''portable'' and can generally be used on any of the different machines just by using the appropriate compiler; note that there may be occasional problems with machine-dependencies, especially if there are substantial differences in the accuracy and size of numbers on the different machines.
 +
 +
Some compilers just perform a fast simple-minded translation from high-level source code to low-level machine language.  Many compilers have one or more optional optimisation levels.  Such optimisations generally make the resulting machine code 'better' (for some definition of 'better' such as 'faster' or 'smaller' or 'less power consumption'); higher speed may be important for frequently-used long-running programs; less memory usage may be important for embedded computers used within other devices; lower power consumption may be important for battery-powered computers (e.g. laptops).  As the level/amount of optimisation increases the compiler tends to spend more and more time doing the optimisation.  The word 'optimisation' is perhaps misleading - perfect optimisation is a very hard problem ([[NP-complete]] or even [[undecidable]]), so a conceptually better term would be 'improvement'.
    
==Outline of the compilation process==
 
==Outline of the compilation process==
SkipCaptcha
265

edits

Navigation menu