|
Dynamic compilation is a process used by some programming language implementations to gain performance during program execution. The best known language that uses this technique is Java. Dynamic compiling originated in Self. It allows optimizations to be made that can only be known at runtime. Runtime environments using dynamic compilation typically have programs run slowly for the first few minutes, and then after that, most of the compilation and recompilation are done and it runs quickly. Due to this initial performance lag, dynamic compilation is undesirable in certain cases. In most implementations of dynamic compilation, some optimizations that could be done at the initial compile time are delayed until further compilation at runtime, causing further unnecessary slowdowns. Just-in-time compilation is a form of dynamic compilation. Computer programming (often simply programming or coding) is the craft of writing a set of commands or instructions that can later be compiled and/or interpreted and then inherently transformed to an executable that an electronic machine can execute or run. Programming requires mainly logic, but has elements of science...
Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. ...
Self is an object-oriented programming language based on the concept of prototypes. ...
Computer programming (often simply programming) is the craft of implementing one or more interrelated abstract algorithms using a particular programming language to produce a concrete computer program. ...
In computer science, compile time, as opposed to runtime, is the time when a compiler compiles code written in a programming language into an executable form. ...
In computer science, run time (with a space, though often its spelled without one) describes the operation of a computer program, the duration of its execution, from beginning to termination (compare compile time). ...
In computing, just-in-time compilation (JIT), also known as dynamic translation, is a technique for improving the performance of bytecode-compiled programming systems, by translating bytecode into native machine code at runtime. ...
A closely related technique is incremental compilation used in POP-2 POP-11, some versions of LISP, e.g. Maclisp and at least one version of the ML programming language, namely Poplog ML. This requires the compiler for the programming language to be part of the runtime system. In consequence source code can be read in at any time, from the terminal, from a file, or possibly from a data-structure constructed by the running program, and translated into a machine code block or function (which may replace a previous function of the same name), which is then immediately available for use by the program. Because of the need for speed of compilation during interactive development and testing the compiled code is likely not to be as heavily optimised as code produced by a standard 'batch compiler', which reads in source code and produces object files that can subsequently be linked and run. However an incrementally compiled program will typically run much faster than an interpreted version of the same program. So incremental compilation provides a mixture of the benefits of interpreted and compiled languages. To aid portability it is generally desirable for the incremental compiler to operate in two stages, namely first compiling to some intermediate platform-independent language, and then compiling from that to machine code for the host machine. In that case porting requires only changing the 'back end' compiler. Unlike dynamic compilation, as defined above, incremental compilation does not involve further optimisations after the program is first run. POP-2 was a programming language developed around 1970 which drew roots from many sources: the languages LISP and ALGOL 60, and theoretical ideas from Landin. ...
POP-11 is a powerful reflective programming language developed as part of the Poplog programming environment by the Universities of Birmingham and Sussex. ...
A lisp is a speech impediment, historically also known as sigmatism. ...
MacLisp is a dialect of the Lisp programming language. ...
ML is a general-purpose functional programming language developed by Robin Milner and others in the late 1970s at the University of Edinburgh, whose syntax is inspired by ISWIM. Historically, ML stands for metalanguage as it was conceived to develop proof tactics in the LCF theorem prover (the language of...
Poplog is a powerful multi-language reflective programming environment, originally created in the UK for use at the Universities of Birmingham and Sussex. ...
A diagram of the operation of a typical multi-language, multi-target compiler. ...
See also
Transmeta NASDAQ: TMTA develops computing technologies with focus on reducing power consumption in electronic devices. ...
x86 or 80x86 is the generic name of a microprocessor architecture first developed and manufactured by Intel. ...
A very long instruction word or VLIW CPU architectures implement a form of instruction level parallelism. ...
External links |