1937:
stack or a tree walk, a template interpreter maintains a large array of bytecode (or any efficient intermediate representation) mapped directly to corresponding native machine instructions that can be executed on the host hardware as key value pairs (or in more efficient designs, direct addresses to the native instructions), known as a "Template". When the particular code segment is executed the interpreter simply loads or jumps to the opcode mapping in the template and directly runs it on the hardware. Due to its design, the template interpreter very strongly resembles a just-in-time compiler rather than a traditional interpreter, however it is technically not a JIT due to the fact that it merely translates code from the language into native calls one opcode at a time rather than creating optimized sequences of CPU executable instructions from the entire code segment. Due to the interpreter's simple design of simply passing calls directly to the hardware rather than implementing them directly, it is much faster than every other type, even bytecode interpreters, and to an extent less prone to bugs, but as a tradeoff is more difficult to maintain due to the interpreter having to support translation to multiple different architectures instead of a platform independent virtual machine/stack. To date, the only template interpreter implementations of widely known languages to exist are the interpreter within Java's official reference implementation, the Sun HotSpot Java
Virtual Machine, and the Ignition Interpreter in the Google V8 javascript execution engine.
2202:
Advanced instrumentation and tracing approaches provide insights into interpreter implementations and processor resource utilization during execution through evaluations of interpreters tailored for the MIPS instruction set and programming languages such as Tcl, Perl, and Java. Performance characteristics are influenced by interpreter complexity, as demonstrated by comparisons with compiled code. It is clear that interpreter performance is more dependent on the nuances and resource needs of the interpreter than it is on the particular application that is being interpreted.
31:
2016:-like language is implemented using closures in the interpreter language or implemented "manually" with a data structure explicitly storing the environment. The more features implemented by the same feature in the host language, the less control the programmer of the interpreter has; for example, a different behavior for dealing with number overflows cannot be realized if the arithmetic operations are delegated to corresponding operations in the host language.
3903:
1868:. In this approach, each sentence needs to be parsed just once. As an advantage over bytecode, the AST keeps the global program structure and relations between statements (which is lost in a bytecode representation), and when compressed provides a more compact representation. Thus, using AST has been proposed as a better intermediate format for just-in-time compilers than bytecode. Also, it allows the system to perform better analysis during runtime.
826:. The difference in speeds could be tiny or great; often an order of magnitude and sometimes more. It generally takes longer to run a program under an interpreter than to run the compiled code but it can take less time to interpret it than the total time required to compile and run it. This is especially important when prototyping and testing code when an edit-interpret-debug cycle can often be much shorter than an edit-compile-run-debug cycle.
3913:
2245:: While some types of sandboxes rely on operating system protections, an interpreter or virtual machine is often used. The actual hardware architecture and the originally intended hardware architecture may or may not be the same. This may seem pointless, except that sandboxes are not compelled to actually execute all the instructions the source code it is processing. In particular, it can refuse to execute code that violates any
762:(or not translate it at all), thus requiring much less time before the changes can be tested. Effects are evident upon saving the source code and reloading the program. Compiled code is generally less readily debugged as editing, compiling, and linking are sequential processes that have to be conducted in the proper sequence with a proper set of commands. For this reason, many compilers also have an executive aid, known as a
3923:
2004:). A language may also be defined by an interpreter in which the semantics of the host language is given. The definition of a language by a self-interpreter is not well-founded (it cannot define a language), but a self-interpreter tells a reader about the expressiveness and elegance of a language. It also enables the interpreter to interpret its source code, the first step towards reflective interpreting.
633:
853:) allow interpreted and compiled code to call each other and to share variables. This means that once a routine has been tested and debugged under the interpreter it can be compiled and thus benefit from faster execution while other routines are being developed. Many interpreters do not execute the source code as it stands but convert it into some more compact internal form. Many
745:), although some programmers prefer to use an editor of their choice and run the compiler, linker and other tools manually. Historically, compilers predate interpreters because hardware at that time could not support both the interpreter and interpreted code and the typical batch environment of the time limited the advantages of interpretation.
730:(.exe files or .dll files or a library, see picture) is typically relocatable when run under a general operating system, much like the object code modules are but with the difference that this relocation is done dynamically at run time, i.e. when the program is loaded for execution. On the other hand, compiled and linked programs for small
1837:
functions they point to, or fetches the first instruction and jumps to it, and every instruction sequence ends with a fetch and jump to the next instruction. Unlike bytecode there is no effective limit on the number of different instructions other than available memory and address space. The classic example of threaded code is the
719:
how a compiler works. However, a compiled program still runs much faster, under most circumstances, in part because compilers are designed to optimize code, and may be given ample time for this. This is especially true for simpler high-level languages without (many) dynamic data structures, checks, or
1836:
Threaded code interpreters are similar to bytecode interpreters but instead of bytes they use pointers. Each "instruction" is a word that points to a function or an instruction sequence, possibly followed by a parameter. The threaded code interpreter either loops fetching instructions and calling the
1772:
Interpretation cannot be used as the sole method of execution: even though an interpreter can itself be interpreted and so on, a directly executed program is needed somewhere at the bottom of the stack because the code being interpreted is not, by definition, the same as the machine code that the CPU
718:
of this conversion work every time a statement or function is executed. However, in an efficient interpreter, much of the translation work (including analysis of types, and similar) is factored out and done only the first time a program, module, function, or even statement, is run, thus quite akin to
688:) may have similar machine code blocks implementing functions of the high-level language stored, and executed when a function's entry in a look up table points to that code. However, an interpreter written in a high-level language typically uses another approach, such as generating and then walking a
761:
all of the binary code files together before the program can be executed. The larger the program, the longer the wait. By contrast, a programmer using an interpreter does a lot less waiting, as the interpreter usually just needs to translate the code being worked on to an intermediate representation
680:
is used to combine (pre-made) library files with the object file(s) of the application to form a single executable file. The object files that are used to generate an executable file are thus often produced at different times, and sometimes even by different languages (capable of generating the same
766:
and program. The
Makefile lists compiler and linker command lines and program source code files, but might take a simple command line menu input (e.g. "Make 3") which selects the third group (set) of instructions then issues the commands to the compiler, and linker feeding the specified source code
2201:
Interpreters, such as those written in Java, Perl, and Tcl, are now necessary for a wide range of computational tasks, including binary emulation and internet applications. Interpreter performance is still a worry despite their adaptability, particularly on systems with limited hardware resources.
541:
Interpreters were used as early as 1952 to ease programming within the limitations of computers at the time (e.g. a shortage of program storage space, or no native support for floating point numbers). Interpreters were also used to translate between low-level machine languages, allowing code to be
1936:
Making the distinction between compilers and interpreters yet again even more vague is a special interpreter design known as a template interpreter. Rather than implement the execution of code by virtue of a large switch statement containing every possible bytecode, while operating on a software
790:
An interpreted program can be distributed as source code. It needs to be translated in each final machine, which takes more time but makes the program distribution independent of the machine's architecture. However, the portability of interpreted source code is dependent on the target machine
791:
actually having a suitable interpreter. If the interpreter needs to be supplied along with the source, the overall installation process is more complex than delivery of a monolithic executable, since the interpreter itself is part of what needs to be installed.
1871:
However, for interpreters, an AST causes more overhead than a bytecode interpreter, because of nodes related to syntax performing no useful work, of a less sequential representation (requiring traversal of more pointers) and of overhead visiting the tree.
1800:, which is a highly compressed and optimized representation of the Lisp source, but is not machine code (and therefore not tied to any particular hardware). This "compiled" code is then interpreted by a bytecode interpreter (itself written in
1863:
In the spectrum between interpreting and compiling, another approach is to transform the source code into an optimized abstract syntax tree (AST), then execute the program following this tree structure, or use it to generate native code
516:
While interpretation and compilation are the two main means by which programming languages are implemented, they are not mutually exclusive, as most interpreting systems also perform some translation work, just like compilers. The terms
1812:. In a bytecode interpreter each instruction starts with a byte, and therefore bytecode interpreters have up to 256 instructions, although not all may be used. Some bytecodes may take multiple bytes, and may be arbitrarily complicated.
1891:
at runtime. This confers the efficiency of running native code, at the cost of startup time and increased memory use when the bytecode or AST is first compiled. The earliest published JIT compiler is generally attributed to work on
2097:
Microcode is a very commonly used technique "that imposes an interpreter between the hardware and the architectural level of a computer". As such, the microcode is a layer of hardware-level instructions that implement higher-level
876:
interpreter, achieve even higher levels of program compaction by using a bit-oriented rather than a byte-oriented program memory structure, where commands tokens occupy perhaps 5 bits, nominally "16-bit" constants are stored in a
2524:
1904:
is a complementary technique in which the interpreter profiles the running program and compiles its most frequently executed parts into native code. The latter technique is a few decades old, appearing in languages such as
2007:
An important design dimension in the implementation of a self-interpreter is whether a feature of the interpreted language is implemented with the same feature in the interpreter's host language. An example is whether a
2153:
so that instructions can be designed and altered more freely. It also facilitates the building of complex multi-step instructions, while reducing the complexity of computer circuits. Writing microcode is often called
2035:
language allows writing of its own interpreter. Lisp is such a language, because Lisp programs are lists of symbols and other lists. XSLT is such a language, because XSLT programs are written in XML. A sub-domain of
837:
analysis is known as "interpretive overhead". Access to variables is also slower in an interpreter because the mapping of identifiers to storage locations must be done repeatedly at run-time rather than at
1886:
Further blurring the distinction between interpreters, bytecode interpreters and compilation is just-in-time (JIT) compilation, a technique in which the intermediate representation is compiled to native
675:
with names and tags to make executable blocks (or modules) identifiable and relocatable. Compiled programs will typically use building blocks (functions) kept in a library of such object code modules. A
783:. This conversion is made just once, on the developer's environment, and after that the same binary can be distributed to the user's machines where it can be executed without further translation. A
757:, programmers make frequent changes to source code. When using a compiler, each time a change is made to the source code, they must wait for the compiler to translate the altered source files and
714:
A compiler can thus make almost all the conversions from source code semantics to the machine level once and for all (i.e. until the program has to be changed) while an interpreter has to do
2189:
Even a non microcoding computer processor itself can be considered to be a parsing immediate execution interpreter that is written in a general purpose hardware description language such as
695:
Thus, both compilers and interpreters generally turn source code (text files) into tokens, both may (or may not) generate a parse tree, and both may generate immediate instructions (for a
833:
in the program each time it is executed and then perform the desired action, whereas the compiled code just performs the action within a fixed context determined by the compilation. This
2515:
KĂŒhnel, Claus (1987) . "4. Kleincomputer - Eigenschaften und Möglichkeiten" [4. Microcomputer - Properties and possibilities]. In
Erlekampf, Rainer; Mönk, Hans-Joachim (eds.).
1970:
exists for the language to be interpreted, creating a self-interpreter requires the implementation of the language in a host language (which may be another programming language or
562:
function could be implemented in machine code. The result was a working Lisp interpreter which could be used to run Lisp programs, or more properly, "evaluate Lisp expressions".
881:
requiring 3, 6, 10, or 18 bits, and address operands include a "bit offset". Many BASIC interpreters can store and read back their own tokenized internal representation.
667:
While compilers (and assemblers) generally produce machine code directly executable by computer hardware, they can often (optionally) produce an intermediate form called
2557:
2334:
Although this scheme (combining strategy 2 and 3) was used to implement certain BASIC interpreters already in the 1970s, such as the efficient BASIC interpreter of the
493:, may also combine two and three types. Interpreters of various types have also been constructed for many languages traditionally associated with compilation, such as
2529:
1792:
There is a spectrum of possibilities between interpreting and compiling, depending on the amount of analysis performed before the program is executed. For example,
2499:
600:
Interpreters have a wide variety of instructions which are specialized to perform different tasks, but you will commonly find interpreter instructions for basic
2780:
2908:
2402:
846:
741:
Historically, most interpreter systems have had a self-contained editor built in. This is becoming more common also for compilers (then often called an
2047:
Clive
Gifford introduced a measure quality of self-interpreter (the eigenratio), the limit of the ratio between computer time spent running a stack of
558:'s paper, "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I", and realized (to McCarthy's surprise) that the Lisp
2067:
542:
written for machines that were still under construction and tested on computers that already existed. The first interpreted high-level language was
17:
2392:, and then advertised this as a Lisp interpreter, which it certainly was. So at that point Lisp had essentially the form that it has today..."
3952:
703:, or by other means). The basic difference is that a compiler system, including a (built in or separate) linker, generates a stand-alone
352:
2946:
2744:
582:) contains the data the programmer wants to mutate, and information on how to mutate the data. For example, an interpreter might read
2483:
Theodore H. Romer, Dennis Lee, Geoffrey M. Voelker, Alec Wolman, Wayne A. Wong, Jean-Loup Baer, Brian N. Bershad, and Henry M. Levy,
2027:
have elegant self-interpreters. Much research on self-interpreters (particularly reflective interpreters) has been conducted in the
2149:
data or other input into sequences of detailed circuit-level operations. It separates the machine instructions from the underlying
806:
exist. Delivery of intermediate code, such as bytecode, has a similar effect to obfuscation, but bytecode could be decoded with a
473:
is an example of the third type. Source programs are compiled ahead of time and stored as machine independent code, which is then
2181:
and so on, which is a relatively simple way to achieve software compatibility between different products in a processor family.
787:
can generate binary code for the user machine even if it has a different processor than the machine where the code is compiled.
3656:
3628:
1808:, which is implemented not in hardware, but in the bytecode interpreter. Such compiling interpreters are sometimes also called
3681:
2484:
2219:
since each operator executed in command language is usually an invocation of a complex routine such as an editor or compiler.
617:
3532:
2441:
3686:
2965:
2460:
2496:
3198:
1897:
834:
742:
555:
547:
3947:
3838:
3666:
3203:
2830:
2539:
2363:
2239:. This is often used when the intended architecture is unavailable, or among other uses, for running multiple copies.
2794:
822:
The main disadvantage of interpreters is that an interpreted program typically runs more slowly than if it had been
3926:
3027:
794:
The fact that interpreted code can easily be read and copied by humans can be of concern from the point of view of
186:
3314:
526:
345:
2723:
2225:
can easily be implemented in an interpreted language. This relates to the origins of interpretation in Lisp and
578:, and a list of these commands in the order a programmer wishes to execute them. Each command (also known as an
3605:
3567:
3231:
2939:
2446:
858:
579:
530:
525:" signify that the canonical implementation of that language is an interpreter or a compiler, respectively. A
3747:
3724:
3454:
3444:
2562:
2080:
2028:
1912:
Just-in-time compilation has gained mainstream attention amongst language implementers in recent years, with
458:
230:
3828:
3416:
3324:
3236:
3012:
2997:
2300:
2131:
2076:
1838:
830:
279:
779:
converts source code into binary instruction for a specific processor's architecture, thus making it less
3916:
3651:
3156:
2242:
1893:
850:
594:
543:
490:
466:
454:
415:
87:
1818:- that do not necessarily ever need to pass through a compiling phase - dictate appropriate algorithmic
3888:
3537:
2911:(Chapter 7 especially) Doctoral dissertation tackling the problem of formalising what is an interpreter
2009:
1956:
754:
338:
240:
3906:
3833:
3808:
3671:
3319:
2932:
2255:
for running computer software written for obsolete and unavailable hardware on more modern equipment.
2020:
2013:
1978:
and new versions of the interpreter can be developed in the language itself. It was in this way that
1975:
1760:. Example data type definitions for the latter, and a toy interpreter for syntax trees obtained from
829:
Interpreting code is slower than running the compiled code because the interpreter must analyze each
605:
442:
203:
174:
103:
35:
1845:
systems: the source language is compiled into "F code" (a bytecode), which is then interpreted by a
849:
when using an interpreter and the execution speed when using a compiler. Some systems (such as some
3757:
3590:
3183:
3052:
2871:
2670:
2620:
2380:
is intended for reading, not for computing. But he went ahead and did it. That is, he compiled the
2270:
2139:
2119:
2041:
1960:
1881:
1865:
1801:
1761:
888:
506:
478:
258:
180:
3818:
3752:
3643:
3459:
2321:
2290:
2226:
2111:
2072:
1946:
601:
311:
236:
3883:
3714:
3595:
3362:
3352:
3347:
2866:
2615:
2001:
411:
326:
285:
63:
2145:
Microcode typically resides in special high-speed memory and translates machine instructions,
397:
program. An interpreter generally uses one of the following strategies for program execution:
3853:
3823:
3813:
3709:
3623:
3499:
3439:
3406:
3396:
3286:
3251:
3241:
3178:
3047:
3022:
3017:
2982:
2368:
1997:
1971:
1901:
653:
575:
378:
208:
191:
93:
44:
2193:
to create a system that parses the machine code instructions and immediately executes them.
3613:
3585:
3557:
3552:
3381:
3357:
3309:
3294:
3276:
3266:
3261:
3223:
3173:
3168:
3085:
3031:
1996:
Defining a computer language is usually done in relation to an abstract machine (so-called
1952:
1858:
1757:
878:
780:
518:
382:
264:
30:
1955:
interpreter written in a programming language which can interpret itself; an example is a
8:
3878:
3803:
3719:
3704:
3469:
3256:
3213:
3208:
3105:
3095:
3067:
2917:
explaining the key conceptual difference between interpreters and compilers. Archived at
2280:
2222:
2032:
645:
613:
571:
80:
2902:
3843:
3742:
3618:
3575:
3484:
3426:
3411:
3401:
3193:
2992:
2884:
2641:
2555:
Heyne, R. (1984). "Basic-Compreter fĂŒr U880" [BASIC compreter for U880 (Z80)].
2295:
2107:
758:
727:
700:
677:
657:
474:
386:
2689:
2664:
738:
memory, as there is often no secondary storage and no operating system in this sense.
692:, or by generating and executing intermediate software-defined instructions, or both.
3863:
3793:
3772:
3734:
3542:
3509:
3489:
3188:
3100:
2974:
2826:
2633:
2535:
2275:
2265:
2246:
2166:
2135:
2075:
for Scheme and its dialects. Other examples of languages with a self-interpreter are
685:
609:
522:
446:
2888:
2645:
2600:
2445: prior to 1 November 2008 and incorporated under the "relicensing" terms of the
3696:
3580:
3547:
3342:
3271:
3160:
3146:
3141:
3090:
3077:
3002:
2955:
2876:
2762:
2625:
2212:
1749:
731:
394:
374:
366:
58:
2348:
Bennett, J. M.; Prinz, D. G.; Woods, M. L. (1952). "Interpretative sub-routines".
3767:
3661:
3633:
3527:
3479:
3464:
3449:
3304:
3299:
3246:
3136:
3110:
3062:
3007:
2820:
2503:
2236:
2158:
and the microcode in a particular processor implementation is sometimes called a
2127:
2115:
2037:
1846:
1805:
865:
763:
434:
224:
120:
3873:
3777:
3676:
3522:
3494:
2918:
2783:." Logic Program Synthesis and Transformation. Springer, London, 1993. 214-227.
2232:
2178:
1917:
784:
637:
198:
98:
2914:
2629:
3941:
3762:
3057:
2637:
2596:
2372:, p. 185, McCarthy said: "Steve Russell said, look, why don't I program this
2285:
2216:
2146:
2103:
1913:
1842:
1831:
1815:
720:
696:
2745:"Demystifying the JVM: JVM Variants, Cppinterpreter and TemplateInterpreter"
2376:..., and I said to him, ho, ho, you're confusing theory with practice, this
3858:
3517:
2407:
2389:
2099:
1979:
1888:
1819:
839:
811:
672:
649:
648:
are either directly executed by some kind of interpreter or converted into
153:
73:
2880:
2822:
Encyclopedia of
Computer Science and Technology: Volume 28 - Supplement 13
2582:
3848:
3474:
3386:
2174:
2150:
2123:
1990:
1822:
via customized interpreters in similar fashion to bytecode interpreters.
803:
668:
470:
419:
405:
294:
275:
143:
138:
671:. This is basically the same machine specific code but augmented with a
3868:
3798:
3391:
3131:
2987:
2235:. Machine code intended for a hardware architecture can be run using a
2062:
goes to infinity. This value does not depend on the program being run.
1921:
1793:
869:
807:
799:
689:
110:
2909:
Theoretical
Foundations For Practical 'Totally Functional Programming'
3373:
3334:
2092:
1906:
795:
735:
482:
158:
27:
Program that executes source code without a separate compilation step
3434:
2924:
2252:
2170:
1967:
1797:
1787:
823:
776:
621:
430:
426:
390:
148:
68:
2403:"Why was the first compiler written before the first interpreter?"
2705:
2436:
2385:
551:
498:
289:
245:
477:
at run-time and executed by an interpreter and/or compiler (for
2335:
2024:
1959:
interpreter written in BASIC. Self-interpreters are related to
1925:
1753:
873:
462:
270:
1974:). By having a first interpreter such as this, the system is
854:
510:
502:
494:
486:
401:
321:
2665:
Surfin' Safari - Blog
Archive » Announcing SquirrelFish
2857:
Aycock, J. (June 2003). "A brief history of just-in-time".
2190:
862:
684:
A simple interpreter written in a low-level language (e.g.
450:
317:
254:
249:
734:
are typically statically allocated, often hard coded in a
2508:
2461:"Compilers vs. interpreters: explanation and differences"
1987:
1983:
726:
In traditional compilation, the executable output of the
661:
636:
An illustration of the linking process. Object files and
632:
2196:
1804:). The compiled code in this case is machine code for a
2781:
Logimix: A self-applicable partial evaluator for Prolog
616:. Many interpreters are also closely integrated with a
2679:, 2. JIT Compilation Techniques, 2.1 Genesis, p. 98.
2548:
2114:, as well as in more specialized processors such as
1852:
2690:
Efficient implementation of the
Smalltalk-80 system
2667:. Webkit.org (2008-06-02). Retrieved on 2013-08-10.
2525:
MilitÀrverlag der
Deutschen Demokratischen Republik
2350:
Proceedings of the ACM National
Conference, Toronto
2165:More extensive microcoding allows small and simple
2051:self-interpreters and time spent to run a stack of
1730:"internal error: illegal expression kind"
1982:developed the TANGLE interpreter for the language
570:An interpreter usually consists of a set of known
2819:Kent, Allen; Williams, James G. (April 5, 1993).
2497:The Difference Between Compilers and Interpreters
2347:
2068:Structure and Interpretation of Computer Programs
1756:as the compiler and then interpret the resulting
711:the actions described by the high-level program.
389:, without requiring them previously to have been
3939:
2588:
2324:is also an interpreter, of machine instructions.
2110:elements. Microcode is used in general-purpose
627:
868:which can be used to find the instruction in a
640:are assembled into a new library or executable.
2031:, a dialect of Lisp. In general, however, any
2964:Note: This template roughly follows the 2012
2940:
2608:International Journal of Parallel Programming
2601:"A Tree-Based Alternative to Java Byte-Codes"
2485:The Structure and Performance of Interpreters
2435:This article is based on material taken from
1825:
707:program, while an interpreter system instead
447:minicomputer and microcomputer BASIC dialects
346:
2818:
2594:
2211:Interpreters are frequently used to execute
2692:, Proceedings of 11th POPL symposium, 1984.
2521:Micro-electronics for the practical amateur
1875:
533:independent of particular implementations.
2947:
2933:
845:There are various compromises between the
353:
339:
2870:
2619:
2812:
2523:] (in German) (3 ed.). Berlin:
2430:
2428:
2426:
1781:
631:
29:
2700:
2698:
2173:more powerful architectures with wider
1931:
1748:An interpreter might well use the same
14:
3940:
3657:Knowledge representation and reasoning
2856:
2676:
2514:
899:// data types for abstract syntax tree
425:Explicitly execute stored precompiled
3682:Philosophy of artificial intelligence
2928:
2554:
2423:
2197:Understanding Interpreter Performance
2184:
449:would be examples of the first type.
34:W3sDesign Interpreter Design Pattern
3008:Energy consumption (Green computing)
2954:
2695:
2517:Mikroelektronik in der Amateurpraxis
2442:Free On-line Dictionary of Computing
748:
565:
3953:Programming language implementation
3687:Distributed artificial intelligence
2966:ACM Computing Classification System
2792:
1940:
590:it as a request to add five to the
433:and matched with the interpreter's
24:
3199:Integrated development environment
2795:"Eigenratios of Self-Interpreters"
2249:constraints it is operating under.
1764:expressions are shown in the box.
872:. A few interpreters, such as the
469:are examples of the second, while
408:and perform its behavior directly;
304:Notable compilers & toolchains
25:
3964:
3667:Automated planning and scheduling
3204:Software configuration management
2896:
2000:) or as a mathematical function (
1853:Abstract syntax tree interpreters
3921:
3911:
3902:
3901:
2825:. New York: Marcel Dekker, Inc.
2583:AST intermediate representations
546:. Lisp was first implemented by
481:systems). Some systems, such as
414:source code into some efficient
3912:
3315:Computational complexity theory
2786:
2773:
2755:
2737:
2716:
2682:
2658:
2576:
2205:
770:
18:Interpreter (computer software)
3106:Network performance evaluation
2495:Terence Parr, Johannes Luber,
2489:
2477:
2453:
2395:
2362:According to what reported by
2356:
2341:
2328:
2313:
798:. However, various systems of
13:
1:
3470:Multimedia information system
3455:Geographic information system
3445:Enterprise information system
3041:Computer systems organization
2306:
2132:network interface controllers
1928:now including JIT compilers.
1776:
1767:
817:
628:Compilers versus interpreters
485:and contemporary versions of
422:and immediately execute that;
3829:Computational social science
3417:Theoretical computer science
3237:Software development process
3013:Electronic design automation
2998:Very Large Scale Integration
2086:
2073:meta-circular interpretation
1541:"division by zero"
261:target-specific initializer)
7:
3652:Natural language processing
3440:Information storage systems
2905:page at Columbia University
2585:, Lambda the Ultimate forum
2259:
2029:Scheme programming language
612:, making most interpreters
554:computer. Russell had read
416:intermediate representation
88:Intermediate representation
10:
3969:
3568:Humanâcomputer interaction
3538:Intrusion detection system
3450:Social information systems
3435:Database management system
2850:
2763:"JVM template interpreter"
2724:"HotSpot Runtime Overview"
2688:L. Deutsch, A. Schiffman,
2090:
1944:
1879:
1856:
1829:
1826:Threaded code interpreters
1785:
755:software development cycle
536:
381:instructions written in a
3897:
3834:Computational engineering
3809:Computational mathematics
3786:
3733:
3695:
3642:
3604:
3566:
3508:
3425:
3371:
3333:
3285:
3222:
3155:
3119:
3076:
3040:
2973:
2962:
2558:radio-fernsehn-elektronik
2142:, and in other hardware.
2140:graphics processing units
2120:digital signal processors
2102:instructions or internal
2042:domain-specific languages
1986:of the de-facto standard
443:Lisp programming language
3948:Interpreters (computing)
3844:Computational healthcare
3839:Differentiable computing
3758:Graphics processing unit
3184:Domain-specific language
3053:Computational complexity
2534:, Leipzig. p. 222.
2271:Command-line interpreter
2112:central processing units
1951:A self-interpreter is a
1882:Just-in-time compilation
1876:Just-in-time compilation
1163:// interpreter procedure
896:
3819:Computational chemistry
3753:Photograph manipulation
3644:Artificial intelligence
3460:Decision support system
2630:10.1023/A:1018740018601
2449:, version 1.3 or later.
2291:Meta-circular evaluator
2227:artificial intelligence
2019:Some languages such as
1947:Meta-circular evaluator
891:expression interpreter
602:mathematical operations
312:GNU Compiler Collection
237:Common Language Runtime
3884:Educational technology
3715:Reinforcement learning
3465:Process control system
3363:Computational geometry
3353:Algorithmic efficiency
3348:Analysis of algorithms
3003:Systems on Chip (SoCs)
2369:Hackers & Painters
2002:denotational semantics
1961:self-hosting compilers
644:Programs written in a
641:
167:Compilation strategies
38:
3854:Electronic publishing
3824:Computational biology
3814:Computational physics
3710:Unsupervised learning
3624:Distributed computing
3500:Information retrieval
3407:Mathematical analysis
3397:Mathematical software
3287:Theory of computation
3252:Software construction
3242:Requirements analysis
3120:Software organization
3048:Computer architecture
3018:Hardware acceleration
2983:Printed circuit board
2903:IBM Card Interpreters
2881:10.1145/857076.857077
2859:ACM Computing Surveys
2388:machine code, fixing
2071:presents examples of
2058:self-interpreters as
1998:operational semantics
1924:implementations, and
1902:Adaptive optimization
1782:Bytecode interpreters
1547:// doesn't return
857:interpreters replace
635:
192:Compile and go system
33:
3614:Concurrent computing
3586:Ubiquitous computing
3558:Application security
3553:Information security
3382:Discrete mathematics
3358:Randomized algorithm
3310:Computability theory
3295:Model of computation
3267:Software maintenance
3262:Software engineering
3224:Software development
3174:Programming language
3169:Programming paradigm
3086:Network architecture
2301:Readâevalâprint loop
1953:programming language
1932:Template Interpreter
1859:Abstract syntax tree
1758:abstract syntax tree
1601:executeIntExpression
1385:executeIntExpression
1349:executeIntExpression
1169:executeIntExpression
879:variable-length code
519:interpreted language
265:Java virtual machine
187:Tracing just-in-time
3889:Document management
3879:Operations research
3804:Enterprise software
3720:Multi-task learning
3705:Supervised learning
3427:Information systems
3257:Software deployment
3214:Software repository
3068:Real-time computing
2712:. 18 November 2021.
2465:IONOS Digital Guide
2320:In this sense, the
2281:Dynamic compilation
2223:Self-modifying code
2124:channel controllers
2106:sequencing in many
652:by a compiler (and
646:high-level language
527:high-level language
81:Optimizing compiler
3672:Search methodology
3619:Parallel computing
3576:Interaction design
3485:Computing platform
3412:Numerical analysis
3402:Information theory
3194:Software framework
3157:Software notations
3096:Network components
2993:Integrated circuit
2779:Bondorf, Anders. "
2726:. Openjdk.java.net
2502:2014-01-06 at the
2296:Partial evaluation
2185:Computer processor
2167:microarchitectures
2136:network processors
2108:digital processing
2040:is the writing of
1991:typesetting system
642:
441:Early versions of
387:scripting language
39:
3935:
3934:
3864:Electronic voting
3794:Quantum Computing
3787:Applied computing
3773:Image compression
3543:Hardware security
3533:Security services
3490:Digital marketing
3277:Open-source model
3189:Modeling language
3101:Network scheduler
2599:(February 1999).
2595:Kistler, Thomas;
2411:. 8 November 2014
2384:in my paper into
2276:Compiled language
2266:BASIC interpreter
2213:command languages
1746:
1745:
847:development speed
749:Development cycle
618:garbage collector
610:memory management
566:General operation
523:compiled language
363:
362:
45:Program execution
16:(Redirected from
3960:
3925:
3924:
3915:
3914:
3905:
3904:
3725:Cross-validation
3697:Machine learning
3581:Social computing
3548:Network security
3343:Algorithm design
3272:Programming team
3232:Control variable
3209:Software library
3147:Software quality
3142:Operating system
3091:Network protocol
2956:Computer science
2949:
2942:
2935:
2926:
2925:
2919:ghostarchive.org
2892:
2874:
2844:
2843:
2841:
2839:
2816:
2810:
2809:
2807:
2805:
2793:Gifford, Clive.
2790:
2784:
2777:
2771:
2770:
2767:ProgrammerSought
2759:
2753:
2752:
2741:
2735:
2734:
2732:
2731:
2720:
2714:
2713:
2702:
2693:
2686:
2680:
2674:
2668:
2662:
2656:
2655:
2653:
2652:
2623:
2605:
2592:
2586:
2580:
2574:
2573:
2566:
2552:
2546:
2545:
2533:
2512:
2506:
2493:
2487:
2481:
2475:
2474:
2472:
2471:
2457:
2451:
2450:
2432:
2421:
2420:
2418:
2416:
2399:
2393:
2360:
2354:
2353:
2345:
2339:
2332:
2326:
2317:
2156:microprogramming
2128:disk controllers
2116:microcontrollers
2057:
1941:Self-interpreter
1750:lexical analyzer
1740:
1737:
1734:
1731:
1728:
1725:
1722:
1719:
1716:
1713:
1710:
1707:
1704:
1701:
1698:
1695:
1692:
1689:
1686:
1683:
1680:
1677:
1674:
1671:
1668:
1665:
1662:
1659:
1656:
1653:
1650:
1647:
1644:
1641:
1638:
1635:
1632:
1629:
1626:
1623:
1620:
1617:
1614:
1611:
1608:
1605:
1602:
1599:
1596:
1593:
1590:
1587:
1584:
1581:
1578:
1575:
1572:
1569:
1566:
1563:
1560:
1557:
1554:
1551:
1548:
1545:
1542:
1539:
1536:
1533:
1530:
1527:
1524:
1521:
1518:
1515:
1512:
1509:
1506:
1503:
1500:
1497:
1494:
1491:
1488:
1485:
1482:
1479:
1476:
1473:
1470:
1467:
1464:
1461:
1458:
1455:
1452:
1449:
1446:
1443:
1440:
1437:
1434:
1431:
1428:
1425:
1422:
1419:
1416:
1413:
1410:
1407:
1404:
1401:
1398:
1395:
1392:
1389:
1386:
1383:
1380:
1377:
1374:
1371:
1368:
1365:
1362:
1359:
1356:
1353:
1350:
1347:
1344:
1341:
1338:
1335:
1332:
1329:
1326:
1323:
1320:
1317:
1314:
1311:
1308:
1305:
1302:
1299:
1296:
1293:
1290:
1287:
1284:
1281:
1278:
1275:
1272:
1269:
1266:
1263:
1260:
1257:
1254:
1251:
1248:
1245:
1242:
1239:
1236:
1233:
1230:
1227:
1224:
1221:
1218:
1215:
1212:
1209:
1206:
1203:
1200:
1197:
1194:
1191:
1188:
1185:
1182:
1179:
1176:
1173:
1170:
1167:
1164:
1161:
1158:
1155:
1152:
1149:
1146:
1143:
1140:
1137:
1134:
1131:
1130:_binaryOperation
1128:
1125:
1122:
1119:
1116:
1113:
1110:
1107:
1104:
1101:
1098:
1095:
1092:
1089:
1086:
1083:
1080:
1077:
1074:
1071:
1068:
1065:
1062:
1059:
1056:
1053:
1050:
1047:
1044:
1041:
1040:_binaryOperation
1038:
1035:
1032:
1029:
1026:
1023:
1020:
1017:
1014:
1011:
1008:
1005:
1002:
999:
996:
993:
990:
987:
984:
981:
978:
975:
972:
969:
966:
963:
960:
957:
954:
951:
948:
945:
942:
939:
936:
933:
930:
927:
924:
921:
918:
915:
912:
909:
906:
903:
900:
884:
883:
732:embedded systems
681:object format).
638:static libraries
593:
585:
395:machine language
375:computer program
367:computer science
355:
348:
341:
217:Notable runtimes
204:Transcompilation
51:General concepts
41:
40:
21:
3968:
3967:
3963:
3962:
3961:
3959:
3958:
3957:
3938:
3937:
3936:
3931:
3922:
3893:
3874:Word processing
3782:
3768:Virtual reality
3729:
3691:
3662:Computer vision
3638:
3634:Multiprocessing
3600:
3562:
3528:Security hacker
3504:
3480:Digital library
3421:
3372:Mathematics of
3367:
3329:
3305:Automata theory
3300:Formal language
3281:
3247:Software design
3218:
3151:
3137:Virtual machine
3115:
3111:Network service
3072:
3063:Embedded system
3036:
2969:
2958:
2953:
2921:on May 9, 2022.
2915:Short animation
2899:
2853:
2848:
2847:
2837:
2835:
2833:
2817:
2813:
2803:
2801:
2791:
2787:
2778:
2774:
2761:
2760:
2756:
2743:
2742:
2738:
2729:
2727:
2722:
2721:
2717:
2704:
2703:
2696:
2687:
2683:
2675:
2671:
2663:
2659:
2650:
2648:
2603:
2593:
2589:
2581:
2577:
2560:
2553:
2549:
2542:
2527:
2513:
2509:
2504:Wayback Machine
2494:
2490:
2482:
2478:
2469:
2467:
2459:
2458:
2454:
2434:
2433:
2424:
2414:
2412:
2401:
2400:
2396:
2361:
2357:
2346:
2342:
2338:, for instance.
2333:
2329:
2318:
2314:
2309:
2262:
2237:virtual machine
2208:
2199:
2187:
2179:execution units
2095:
2089:
2052:
2038:metaprogramming
2033:Turing-complete
1949:
1943:
1934:
1884:
1878:
1861:
1855:
1847:virtual machine
1834:
1828:
1806:virtual machine
1796:is compiled to
1790:
1784:
1779:
1770:
1742:
1741:
1738:
1735:
1732:
1729:
1726:
1723:
1720:
1717:
1714:
1711:
1708:
1705:
1702:
1699:
1696:
1693:
1690:
1687:
1684:
1681:
1678:
1675:
1672:
1669:
1666:
1663:
1660:
1657:
1654:
1651:
1648:
1645:
1642:
1639:
1636:
1633:
1630:
1627:
1624:
1621:
1618:
1615:
1612:
1609:
1606:
1603:
1600:
1597:
1594:
1591:
1588:
1585:
1582:
1579:
1576:
1573:
1570:
1567:
1564:
1561:
1558:
1555:
1552:
1549:
1546:
1543:
1540:
1537:
1534:
1531:
1528:
1525:
1522:
1519:
1516:
1513:
1510:
1507:
1504:
1501:
1498:
1495:
1492:
1489:
1486:
1483:
1480:
1477:
1474:
1471:
1468:
1465:
1462:
1459:
1456:
1453:
1450:
1447:
1444:
1441:
1438:
1435:
1432:
1429:
1426:
1423:
1420:
1417:
1414:
1411:
1408:
1405:
1402:
1399:
1396:
1393:
1390:
1387:
1384:
1381:
1378:
1375:
1372:
1369:
1366:
1363:
1360:
1357:
1354:
1351:
1348:
1345:
1342:
1339:
1336:
1333:
1330:
1327:
1324:
1321:
1318:
1315:
1312:
1309:
1306:
1303:
1300:
1297:
1294:
1291:
1288:
1285:
1282:
1279:
1276:
1273:
1270:
1267:
1264:
1261:
1258:
1255:
1252:
1249:
1246:
1243:
1240:
1237:
1234:
1231:
1228:
1225:
1222:
1219:
1216:
1213:
1210:
1207:
1204:
1201:
1198:
1195:
1192:
1189:
1186:
1183:
1180:
1177:
1174:
1171:
1168:
1165:
1162:
1159:
1156:
1153:
1150:
1147:
1144:
1142:_unaryOperation
1141:
1138:
1135:
1132:
1129:
1126:
1123:
1120:
1117:
1114:
1111:
1108:
1105:
1102:
1099:
1096:
1093:
1090:
1087:
1084:
1081:
1078:
1075:
1072:
1069:
1066:
1063:
1060:
1057:
1054:
1051:
1048:
1045:
1042:
1039:
1036:
1033:
1030:
1027:
1024:
1021:
1018:
1015:
1013:_unaryOperation
1012:
1009:
1006:
1003:
1000:
997:
994:
991:
988:
985:
982:
979:
976:
973:
970:
967:
964:
961:
958:
955:
952:
949:
946:
943:
940:
937:
934:
931:
928:
925:
922:
919:
916:
913:
910:
907:
904:
901:
898:
820:
773:
751:
630:
614:Turing complete
591:
583:
568:
539:
435:virtual machine
359:
239:(CLR) and
225:Android Runtime
121:Virtual machine
28:
23:
22:
15:
12:
11:
5:
3966:
3956:
3955:
3950:
3933:
3932:
3930:
3929:
3919:
3909:
3898:
3895:
3894:
3892:
3891:
3886:
3881:
3876:
3871:
3866:
3861:
3856:
3851:
3846:
3841:
3836:
3831:
3826:
3821:
3816:
3811:
3806:
3801:
3796:
3790:
3788:
3784:
3783:
3781:
3780:
3778:Solid modeling
3775:
3770:
3765:
3760:
3755:
3750:
3745:
3739:
3737:
3731:
3730:
3728:
3727:
3722:
3717:
3712:
3707:
3701:
3699:
3693:
3692:
3690:
3689:
3684:
3679:
3677:Control method
3674:
3669:
3664:
3659:
3654:
3648:
3646:
3640:
3639:
3637:
3636:
3631:
3629:Multithreading
3626:
3621:
3616:
3610:
3608:
3602:
3601:
3599:
3598:
3593:
3588:
3583:
3578:
3572:
3570:
3564:
3563:
3561:
3560:
3555:
3550:
3545:
3540:
3535:
3530:
3525:
3523:Formal methods
3520:
3514:
3512:
3506:
3505:
3503:
3502:
3497:
3495:World Wide Web
3492:
3487:
3482:
3477:
3472:
3467:
3462:
3457:
3452:
3447:
3442:
3437:
3431:
3429:
3423:
3422:
3420:
3419:
3414:
3409:
3404:
3399:
3394:
3389:
3384:
3378:
3376:
3369:
3368:
3366:
3365:
3360:
3355:
3350:
3345:
3339:
3337:
3331:
3330:
3328:
3327:
3322:
3317:
3312:
3307:
3302:
3297:
3291:
3289:
3283:
3282:
3280:
3279:
3274:
3269:
3264:
3259:
3254:
3249:
3244:
3239:
3234:
3228:
3226:
3220:
3219:
3217:
3216:
3211:
3206:
3201:
3196:
3191:
3186:
3181:
3176:
3171:
3165:
3163:
3153:
3152:
3150:
3149:
3144:
3139:
3134:
3129:
3123:
3121:
3117:
3116:
3114:
3113:
3108:
3103:
3098:
3093:
3088:
3082:
3080:
3074:
3073:
3071:
3070:
3065:
3060:
3055:
3050:
3044:
3042:
3038:
3037:
3035:
3034:
3025:
3020:
3015:
3010:
3005:
3000:
2995:
2990:
2985:
2979:
2977:
2971:
2970:
2963:
2960:
2959:
2952:
2951:
2944:
2937:
2929:
2923:
2922:
2912:
2906:
2898:
2897:External links
2895:
2894:
2893:
2872:10.1.1.97.3985
2852:
2849:
2846:
2845:
2831:
2811:
2785:
2772:
2754:
2736:
2715:
2694:
2681:
2669:
2657:
2621:10.1.1.87.2257
2597:Franz, Michael
2587:
2575:
2547:
2540:
2507:
2488:
2476:
2452:
2422:
2394:
2355:
2340:
2327:
2311:
2310:
2308:
2305:
2304:
2303:
2298:
2293:
2288:
2283:
2278:
2273:
2268:
2261:
2258:
2257:
2256:
2250:
2240:
2233:Virtualization
2230:
2220:
2217:glue languages
2207:
2204:
2198:
2195:
2186:
2183:
2091:Main article:
2088:
2085:
1945:Main article:
1942:
1939:
1933:
1930:
1920:, most modern
1918:.NET Framework
1909:in the 1980s.
1880:Main article:
1877:
1874:
1857:Main article:
1854:
1851:
1830:Main article:
1827:
1824:
1816:Control tables
1786:Main article:
1783:
1780:
1778:
1775:
1769:
1766:
1744:
1743:
897:
893:
892:
819:
816:
785:cross compiler
772:
769:
750:
747:
701:quadruple code
629:
626:
567:
564:
538:
535:
529:is ideally an
439:
438:
423:
409:
377:that directly
361:
360:
358:
357:
350:
343:
335:
332:
331:
330:
329:
324:
315:
306:
305:
301:
300:
299:
298:
292:
283:
273:
268:
262:
252:
243:
234:
228:
219:
218:
214:
213:
212:
211:
206:
201:
199:Precompilation
196:
195:
194:
189:
178:
169:
168:
164:
163:
162:
161:
156:
151:
146:
141:
133:
132:
128:
127:
126:
125:
124:
123:
118:
113:
108:
107:
106:
99:Runtime system
91:
85:
84:
83:
78:
77:
76:
61:
53:
52:
48:
47:
26:
9:
6:
4:
3:
2:
3965:
3954:
3951:
3949:
3946:
3945:
3943:
3928:
3920:
3918:
3910:
3908:
3900:
3899:
3896:
3890:
3887:
3885:
3882:
3880:
3877:
3875:
3872:
3870:
3867:
3865:
3862:
3860:
3857:
3855:
3852:
3850:
3847:
3845:
3842:
3840:
3837:
3835:
3832:
3830:
3827:
3825:
3822:
3820:
3817:
3815:
3812:
3810:
3807:
3805:
3802:
3800:
3797:
3795:
3792:
3791:
3789:
3785:
3779:
3776:
3774:
3771:
3769:
3766:
3764:
3763:Mixed reality
3761:
3759:
3756:
3754:
3751:
3749:
3746:
3744:
3741:
3740:
3738:
3736:
3732:
3726:
3723:
3721:
3718:
3716:
3713:
3711:
3708:
3706:
3703:
3702:
3700:
3698:
3694:
3688:
3685:
3683:
3680:
3678:
3675:
3673:
3670:
3668:
3665:
3663:
3660:
3658:
3655:
3653:
3650:
3649:
3647:
3645:
3641:
3635:
3632:
3630:
3627:
3625:
3622:
3620:
3617:
3615:
3612:
3611:
3609:
3607:
3603:
3597:
3596:Accessibility
3594:
3592:
3591:Visualization
3589:
3587:
3584:
3582:
3579:
3577:
3574:
3573:
3571:
3569:
3565:
3559:
3556:
3554:
3551:
3549:
3546:
3544:
3541:
3539:
3536:
3534:
3531:
3529:
3526:
3524:
3521:
3519:
3516:
3515:
3513:
3511:
3507:
3501:
3498:
3496:
3493:
3491:
3488:
3486:
3483:
3481:
3478:
3476:
3473:
3471:
3468:
3466:
3463:
3461:
3458:
3456:
3453:
3451:
3448:
3446:
3443:
3441:
3438:
3436:
3433:
3432:
3430:
3428:
3424:
3418:
3415:
3413:
3410:
3408:
3405:
3403:
3400:
3398:
3395:
3393:
3390:
3388:
3385:
3383:
3380:
3379:
3377:
3375:
3370:
3364:
3361:
3359:
3356:
3354:
3351:
3349:
3346:
3344:
3341:
3340:
3338:
3336:
3332:
3326:
3323:
3321:
3318:
3316:
3313:
3311:
3308:
3306:
3303:
3301:
3298:
3296:
3293:
3292:
3290:
3288:
3284:
3278:
3275:
3273:
3270:
3268:
3265:
3263:
3260:
3258:
3255:
3253:
3250:
3248:
3245:
3243:
3240:
3238:
3235:
3233:
3230:
3229:
3227:
3225:
3221:
3215:
3212:
3210:
3207:
3205:
3202:
3200:
3197:
3195:
3192:
3190:
3187:
3185:
3182:
3180:
3177:
3175:
3172:
3170:
3167:
3166:
3164:
3162:
3158:
3154:
3148:
3145:
3143:
3140:
3138:
3135:
3133:
3130:
3128:
3125:
3124:
3122:
3118:
3112:
3109:
3107:
3104:
3102:
3099:
3097:
3094:
3092:
3089:
3087:
3084:
3083:
3081:
3079:
3075:
3069:
3066:
3064:
3061:
3059:
3058:Dependability
3056:
3054:
3051:
3049:
3046:
3045:
3043:
3039:
3033:
3029:
3026:
3024:
3021:
3019:
3016:
3014:
3011:
3009:
3006:
3004:
3001:
2999:
2996:
2994:
2991:
2989:
2986:
2984:
2981:
2980:
2978:
2976:
2972:
2967:
2961:
2957:
2950:
2945:
2943:
2938:
2936:
2931:
2930:
2927:
2920:
2916:
2913:
2910:
2907:
2904:
2901:
2900:
2890:
2886:
2882:
2878:
2873:
2868:
2865:(2): 97â113.
2864:
2860:
2855:
2854:
2834:
2832:0-8247-2281-7
2828:
2824:
2823:
2815:
2800:
2796:
2789:
2782:
2776:
2768:
2764:
2758:
2750:
2749:metebalci.com
2746:
2740:
2725:
2719:
2711:
2707:
2706:"openjdk/jdk"
2701:
2699:
2691:
2685:
2678:
2673:
2666:
2661:
2647:
2643:
2639:
2635:
2631:
2627:
2622:
2617:
2613:
2609:
2602:
2598:
2591:
2584:
2579:
2572:(3): 150â152.
2571:
2568:(in German).
2567:
2564:
2559:
2551:
2543:
2541:3-327-00357-2
2537:
2531:
2526:
2522:
2518:
2511:
2505:
2501:
2498:
2492:
2486:
2480:
2466:
2462:
2456:
2448:
2444:
2443:
2438:
2431:
2429:
2427:
2410:
2409:
2404:
2398:
2391:
2387:
2383:
2379:
2375:
2371:
2370:
2365:
2359:
2351:
2344:
2337:
2331:
2325:
2323:
2316:
2312:
2302:
2299:
2297:
2294:
2292:
2289:
2287:
2286:Homoiconicity
2284:
2282:
2279:
2277:
2274:
2272:
2269:
2267:
2264:
2263:
2254:
2251:
2248:
2244:
2241:
2238:
2234:
2231:
2228:
2224:
2221:
2218:
2214:
2210:
2209:
2203:
2194:
2192:
2182:
2180:
2176:
2172:
2168:
2163:
2161:
2157:
2152:
2148:
2147:state machine
2143:
2141:
2137:
2133:
2129:
2125:
2121:
2117:
2113:
2109:
2105:
2104:state machine
2101:
2094:
2084:
2082:
2078:
2074:
2070:
2069:
2063:
2061:
2055:
2050:
2045:
2043:
2039:
2034:
2030:
2026:
2022:
2017:
2015:
2011:
2005:
2003:
1999:
1994:
1992:
1989:
1985:
1981:
1977:
1973:
1969:
1964:
1962:
1958:
1954:
1948:
1938:
1929:
1927:
1923:
1919:
1915:
1910:
1908:
1903:
1899:
1898:John McCarthy
1895:
1890:
1883:
1873:
1869:
1867:
1860:
1850:
1848:
1844:
1843:Open Firmware
1841:code used in
1840:
1833:
1832:Threaded code
1823:
1821:
1817:
1813:
1811:
1807:
1803:
1799:
1795:
1789:
1774:
1773:can execute.
1765:
1763:
1759:
1755:
1751:
895:
894:
890:
886:
885:
882:
880:
875:
871:
867:
864:
860:
856:
852:
848:
843:
841:
836:
832:
827:
825:
815:
813:
809:
805:
801:
797:
792:
788:
786:
782:
778:
768:
765:
760:
756:
746:
744:
739:
737:
733:
729:
724:
722:
721:type checking
717:
712:
710:
706:
702:
698:
697:stack machine
693:
691:
687:
682:
679:
674:
670:
665:
663:
659:
655:
651:
647:
639:
634:
625:
623:
619:
615:
611:
607:
603:
598:
596:
589:
581:
577:
573:
563:
561:
557:
556:John McCarthy
553:
549:
548:Steve Russell
545:
534:
532:
528:
524:
520:
514:
512:
508:
504:
500:
496:
492:
488:
484:
480:
476:
472:
468:
464:
460:
456:
452:
448:
444:
436:
432:
428:
424:
421:
417:
413:
410:
407:
403:
400:
399:
398:
396:
392:
388:
384:
380:
376:
372:
368:
356:
351:
349:
344:
342:
337:
336:
334:
333:
328:
325:
323:
319:
316:
313:
310:
309:
308:
307:
303:
302:
296:
293:
291:
287:
284:
281:
277:
274:
272:
269:
266:
263:
260:
256:
253:
251:
247:
244:
242:
238:
235:
232:
229:
226:
223:
222:
221:
220:
216:
215:
210:
209:Recompilation
207:
205:
202:
200:
197:
193:
190:
188:
185:
184:
182:
179:
176:
175:Ahead-of-time
173:
172:
171:
170:
166:
165:
160:
157:
155:
152:
150:
147:
145:
142:
140:
137:
136:
135:
134:
131:Types of code
130:
129:
122:
119:
117:
114:
112:
109:
105:
102:
101:
100:
97:
96:
95:
92:
89:
86:
82:
79:
75:
72:
71:
70:
67:
66:
65:
62:
60:
57:
56:
55:
54:
50:
49:
46:
43:
42:
37:
32:
19:
3859:Cyberwarfare
3518:Cryptography
3126:
2862:
2858:
2836:. Retrieved
2821:
2814:
2802:. Retrieved
2798:
2788:
2775:
2766:
2757:
2748:
2739:
2728:. Retrieved
2718:
2709:
2684:
2672:
2660:
2649:. Retrieved
2614:(1): 21â33.
2611:
2607:
2590:
2578:
2569:
2556:
2550:
2520:
2516:
2510:
2491:
2479:
2468:. Retrieved
2464:
2455:
2440:
2413:. Retrieved
2408:Ars Technica
2406:
2397:
2381:
2377:
2373:
2367:
2358:
2349:
2343:
2330:
2319:
2315:
2206:Applications
2200:
2188:
2164:
2160:microprogram
2159:
2155:
2144:
2100:machine code
2096:
2066:
2064:
2059:
2053:
2048:
2046:
2018:
2006:
1995:
1980:Donald Knuth
1976:bootstrapped
1965:
1950:
1935:
1911:
1889:machine code
1885:
1870:
1866:just-in-time
1862:
1835:
1820:control flow
1814:
1809:
1791:
1771:
1747:
861:with single
844:
840:compile time
828:
821:
812:disassembler
793:
789:
774:
771:Distribution
752:
740:
725:
715:
713:
708:
705:machine code
704:
694:
683:
673:symbol table
666:
664:to execute.
650:machine code
643:
599:
587:
584:ADD Books, 5
569:
559:
540:
515:
440:
370:
364:
181:Just-in-time
154:Machine code
115:
74:Compile time
3869:Video games
3849:Digital art
3606:Concurrency
3475:Data mining
3387:Probability
3127:Interpreter
2804:10 November
2677:Aycock 2003
2561: [
2528: [
2437:Interpreter
2364:Paul Graham
2175:word length
2151:electronics
1097:_expression
804:obfuscation
753:During the
669:object code
580:Instruction
531:abstraction
471:UCSD Pascal
420:object code
406:source code
383:programming
371:interpreter
295:Zend Engine
276:Objective-C
144:Object code
139:Source code
116:Interpreter
64:Translation
3942:Categories
3927:Glossaries
3799:E-commerce
3392:Statistics
3335:Algorithms
3132:Middleware
2988:Peripheral
2730:2022-08-06
2651:2020-12-20
2544:. 7469332.
2470:2022-09-16
2415:9 November
2307:References
2243:Sandboxing
1922:JavaScript
1810:compreters
1794:Emacs Lisp
1777:Variations
1768:Regression
1709:rightValue
1688:rightValue
1667:rightValue
1595:rightValue
1559:rightValue
1523:rightValue
1502:rightValue
1478:rightValue
1454:rightValue
1379:rightValue
1205:rightValue
870:jump table
818:Efficiency
808:decompiler
800:encryption
690:parse tree
660:) for the
429:made by a
111:Executable
3748:Rendering
3743:Animation
3374:computing
3325:Semantics
3023:Processor
2867:CiteSeerX
2638:0885-7458
2616:CiteSeerX
2253:Emulators
2229:research.
2093:Microcode
2087:Microcode
2065:The book
1972:assembler
1907:Smalltalk
1900:in 1960.
1724:exception
1553:leftValue
1535:exception
1496:leftValue
1472:leftValue
1448:leftValue
1343:leftValue
1199:leftValue
1118:_constant
1106:_variable
992:_constant
968:_variable
831:statement
796:copyright
736:NOR flash
654:assembler
606:branching
588:interpret
483:Smalltalk
412:Translate
320:and
288:and
278:and
248:and
159:Microcode
94:Execution
3907:Category
3735:Graphics
3510:Security
3179:Compiler
3078:Networks
2975:Hardware
2889:15345671
2646:14330985
2500:Archived
2260:See also
2247:security
2044:(DSLs).
1968:compiler
1798:bytecode
1788:Bytecode
1295:constant
1259:variable
1121:constant
1109:variable
859:keywords
835:run-time
824:compiled
781:portable
777:compiler
764:Makefile
709:performs
686:assembly
622:debugger
595:variable
572:commands
431:compiler
427:bytecode
391:compiled
379:executes
233:(Erlang)
149:Bytecode
69:Compiler
3917:Outline
2851:Sources
2838:Jan 17,
2799:Blogger
2439:at the
2386:IBM 704
2177:, more
2171:emulate
2010:closure
1718:default
767:files.
728:linkers
576:execute
574:it can
552:IBM 704
537:History
499:Fortran
393:into a
290:Node.js
246:CPython
104:Runtime
2887:
2869:
2829:
2710:GitHub
2644:
2636:
2618:
2538:
2336:ABC 80
2215:, and
2081:Pascal
2025:Prolog
1966:If no
1926:Matlab
1916:, the
1754:parser
1703:return
1682:return
1676:kMinus
1661:return
1631:switch
1580:kMinus
1550:return
1493:return
1469:return
1445:return
1415:switch
1403:binary
1367:binary
1280:return
1274:kConst
1265:memory
1241:return
1211:switch
1178:struct
1139:struct
1133:binary
1127:struct
1115:struct
1103:struct
1073:struct
1046:struct
1037:struct
1019:struct
1010:struct
989:struct
980:memory
965:struct
953:kMinus
917:kConst
874:PBASIC
866:tokens
678:linker
658:linker
608:, and
550:on an
521:" or "
475:linked
465:, and
463:MATLAB
459:Python
271:LuaJIT
183:(JIT)
3320:Logic
3161:tools
2885:S2CID
2642:S2CID
2604:(PDF)
2565:]
2532:]
2519:[
2077:Forth
2012:in a
1957:BASIC
1839:Forth
1655:kPlus
1640:->
1625:right
1619:unary
1610:->
1571:kPlus
1487:kMult
1463:kDiff
1424:->
1409:right
1394:->
1358:->
1328:kMult
1319:kDiff
1301:value
1286:->
1250:->
1220:->
1181:_node
1175:const
1145:unary
1094:union
1085:_kind
1076:_node
1064:right
1049:_node
1028:right
1022:_node
1001:value
947:kPlus
935:kMult
929:kDiff
905:_kind
855:BASIC
851:Lisps
592:Books
503:Cobol
495:Algol
487:BASIC
402:Parse
373:is a
369:, an
322:Clang
314:(GCC)
297:(PHP)
280:Swift
267:(JVM)
227:(ART)
177:(AOT)
3159:and
3032:Form
3028:Size
2840:2016
2827:ISBN
2806:2019
2634:ISSN
2570:1984
2536:ISBN
2447:GFDL
2417:2014
2382:eval
2378:eval
2374:eval
2191:VHDL
2079:and
2023:and
2021:Lisp
2014:Lisp
1914:Java
1894:LISP
1752:and
1697:kNot
1694:case
1673:case
1652:case
1643:kind
1589:kNot
1586:case
1577:case
1568:case
1511:kDiv
1508:case
1484:case
1460:case
1439:kSum
1436:case
1427:kind
1373:left
1337:kDiv
1334:case
1325:case
1316:case
1310:kSum
1307:case
1271:case
1235:kVar
1232:case
1223:kind
1088:kind
1082:enum
1055:left
959:kNot
941:kDiv
923:kSum
911:kVar
902:enum
887:Toy
863:byte
802:and
759:link
716:some
656:and
620:and
586:and
560:eval
544:Lisp
509:and
491:Java
489:and
467:Ruby
455:Raku
451:Perl
445:and
404:the
327:MSVC
318:LLVM
255:crt0
250:PyPy
241:Mono
231:BEAM
90:(IR)
59:Code
2877:doi
2626:doi
2390:bug
2366:in
2322:CPU
2169:to
2056:â 1
1988:TeX
1984:WEB
1896:by
1196:int
1166:int
998:int
974:int
810:or
743:IDE
662:CPU
511:C++
479:JIT
418:or
385:or
365:In
36:UML
3944::
3030:/
2883:.
2875:.
2863:35
2861:.
2797:.
2765:.
2747:.
2708:.
2697:^
2640:.
2632:.
2624:.
2612:27
2610:.
2606:.
2563:de
2530:de
2463:.
2425:^
2405:.
2162:.
2138:,
2134:,
2130:,
2126:,
2122:,
2118:,
2083:.
1993:.
1963:.
1849:.
1733:);
1628:);
1544:);
1526:==
1517:if
1412:);
1376:);
1160:};
1070:};
1034:};
1007:};
986:};
962:};
842:.
814:.
775:A
723:.
699:,
624:.
604:,
597:.
513:.
505:,
501:,
497:,
461:,
457:,
453:,
286:V8
282:'s
2968:.
2948:e
2941:t
2934:v
2891:.
2879::
2842:.
2808:.
2769:.
2751:.
2733:.
2654:.
2628::
2473:.
2419:.
2352:.
2060:N
2054:N
2049:N
1802:C
1762:C
1739:}
1736:}
1727:(
1721::
1715:}
1712:;
1706:!
1700::
1691:;
1685:-
1679::
1670:;
1664:+
1658::
1649:{
1646:)
1637:n
1634:(
1622:.
1616:.
1613:e
1607:n
1604:(
1598:=
1592::
1583::
1574::
1565:}
1562:;
1556:/
1538:(
1532:)
1529:0
1520:(
1514::
1505:;
1499:*
1490::
1481:;
1475:-
1466::
1457:;
1451:+
1442::
1433:{
1430:)
1421:n
1418:(
1406:.
1400:.
1397:e
1391:n
1388:(
1382:=
1370:.
1364:.
1361:e
1355:n
1352:(
1346:=
1340::
1331::
1322::
1313::
1304:;
1298:.
1292:.
1289:e
1283:n
1277::
1268:;
1262:.
1256:.
1253:e
1247:n
1244:*
1238::
1229:{
1226:)
1217:n
1214:(
1208:;
1202:,
1193:{
1190:)
1187:n
1184:*
1172:(
1157:;
1154:e
1151:}
1148:;
1136:;
1124:;
1112:;
1100:{
1091:;
1079:{
1067:;
1061:*
1058:,
1052:*
1043:{
1031:;
1025:*
1016:{
1004:;
995:{
983:;
977:*
971:{
956:,
950:,
944:,
938:,
932:,
926:,
920:,
914:,
908:{
889:C
517:"
507:C
437:.
354:e
347:t
340:v
259:C
257:(
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.