The ABC 80 (Advanced BASIC Computer 80) was a personal computer engineered by the Swedish corporation Dataindustrier AB (DIAB) and manufactured by Luxor in Motala, Sweden in the late 1970s and early 1980s.
In computer science, an abstract syntax tree (AST), or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language.
Abstraction in its main sense is a conceptual process where general rules and concepts are derived from the usage and classification of specific examples, literal ("real" or "concrete") signifiers, first principles, or other methods.
Adaptive optimization is a technique in computer science that performs dynamic recompilation of portions of a program based on the current execution profile.
Ars Technica (a Latin-derived term that the site translates as the "art of technology") is a website covering news and opinions in technology, science, politics, and society, created by Ken Fisher and Jon Stokes in 1998.
Artificial intelligence (AI, also machine intelligence, MI) is intelligence demonstrated by machines, in contrast to the natural intelligence (NI) displayed by humans and other animals.
An assembly (or assembler) language, often abbreviated asm, is a low-level programming language, in which there is a very strong (but often not one-to-one) correspondence between the assembly program statements and the architecture's machine code instructions.
BASIC (an acronym for Beginner's All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use.
In computer science, bootstrapping is the technique for producing a self-compiling compiler — that is, compiler (or assembler) written in the source programming language that it intends to compile.
In computer programming, a branch table or jump table is a method of transferring program control (branching) to another part of a program (or a different program that may have been dynamically loaded) using a table of branch or jump instructions.
The byte is a unit of digital information that most commonly consists of eight bits, representing a binary number.
Bytecode, also termed portable code or p-code, is a form of instruction set designed for efficient execution by a software interpreter.
C (as in the letter ''c'') is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations.
A central processing unit (CPU) is the electronic circuitry within a computer that carries out the instructions of a computer program by performing the basic arithmetic, logical, control and input/output (I/O) operations specified by the instructions.
In computing, channel I/O is a high-performance input/output (I/O) architecture that is implemented in various forms on a number of computer architectures, especially on mainframe computers.
In programming languages, a closure (also lexical closure or function closure) is a technique for implementing lexically scoped name binding in a language with first-class functions.
A command language is a language for job control in computing.
A command-line interface or command language interpreter (CLI), also known as command-line user interface, console user interface and character user interface (CUI), is a means of interacting with a computer program where the user (or client) issues commands to the program in the form of successive lines of text (command lines).
In computer science, compile time refers to either the operations performed by a compiler (the "compile-time operations"), programming language requirements that must be met by source code for it to be successfully compiled (the "compile-time requirements"), or properties of the program that can be reasoned about during compilation.
A compiled language is a programming language whose implementations are typically compilers (translators that generate machine code from source code), and not interpreters (step-by-step executors of source code, where no pre-runtime translation takes place).
A compiler is computer software that transforms computer code written in one programming language (the source language) into another programming language (the target language).
A computer program is a collection of instructions for performing a specific task that is designed to solve a specific class of problems.
Computer science deals with the theoretical foundations of information and computation, together with practical techniques for the implementation and application of these foundations.
Cybersecurity, computer security or IT security is the protection of computer systems from theft of or damage to their hardware, software or electronic data, as well as from disruption or misdirection of the services they provide.
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated.
Control tables are tables that control the control flow or play a major part in program control.
Copyright is a legal right, existing globally in many countries, that basically grants the creator of an original work exclusive rights to determine and decide whether, and under what conditions, this original work may be used by others.
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running.
Dartmouth BASIC is the original version of the BASIC programming language.
A decompiler is a computer program that takes an executable file as input, and attempts to create a high level source file which can be recompiled successfully.
In computer science, denotational semantics (initially known as mathematical semantics or Scott–Strachey semantics) is an approach of formalizing the meanings of programming languages by constructing mathematical objects (called denotations) that describe the meanings of expressions from the languages.
Development speed describes how fast a programmer can program.
Digital data, in information theory and information systems, is the discrete, discontinuous representation of information or works.
A digital signal processor (DSP) is a specialized microprocessor (or a SIP block), with its architecture optimized for the operational needs of digital signal processing.
A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler.
The disk controller is the controller circuit which enables the CPU to communicate with a hard disk, floppy disk or other kind of disk drive.
A domain-specific language (DSL) is a computer language specialized to a particular application domain.
Donald Ervin Knuth (born January 10, 1938) is an American computer scientist, mathematician, and professor emeritus at Stanford University.
Dynamic compilation is a process used by some programming language implementations to gain performance during program execution.
Electronics is the discipline dealing with the development and application of devices and systems involving the flow of electrons in a vacuum, in gaseous media, and in semiconductors.
Emacs Lisp is a dialect of the Lisp programming language used as a scripting language by Emacs (a text editor family most commonly associated with GNU Emacs and XEmacs).
An embedded system is a computer system with a dedicated function within a larger mechanical or electrical system, often with real-time computing constraints.
In computing, an emulator is hardware or software that enables one computer system (called the host) to behave like another computer system (called the guest).
In cryptography, encryption is the process of encoding a message or information in such a way that only authorized parties can access it and those who are not authorized cannot.
Execution in computer and software engineering is the process by which a computer or a virtual machine performs the instructions of a computer program.
In computer engineering, an execution unit (also called a functional unit) is a part of the central processing unit (CPU) that performs the operations and calculations as instructed by the computer program.
A finite-state machine (FSM) or finite-state automaton (FSA, plural: automata), finite automaton, or simply a state machine, is a mathematical model of computation.
Flash memory is an electronic (solid-state) non-volatile computer storage medium that can be electrically erased and reprogrammed.
Forth is an imperative stack-based computer programming language and environment originally designed by Charles "Chuck" Moore.
A graphics processing unit (GPU) is a specialized electronic circuit designed to rapidly manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device.
Hackers & Painters: Big Ideas from the Computer Age is a collection of essays from Paul Graham discussing hacking, programming languages, start-up companies, and many other technological issues.
In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer.
The IBM 704, introduced by IBM in 1954, is the first mass-produced computer with floating-point arithmetic hardware.
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development.
An Intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code.
An interpreted language is a type of programming language for which most of its implementations execute instructions directly and freely, without previously compiling a program into machine-language instructions.
In computer science, an interpreter is a computer program that directly executes, i.e. performs, instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program.
Java is a general-purpose computer-programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.
Java is a set of computer software and specifications developed by James Gosling at Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a system for developing application software and deploying it in a cross-platform computing environment.
John McCarthy (September 4, 1927 – October 24, 2011) was an American computer scientist and cognitive scientist.
In computing, just-in-time (JIT) compilation, (also dynamic translation or run-time compilation), is a way of executing computer code that involves compilation during execution of a program – at run time – rather than prior to execution.
In computer science, lexical analysis, lexing or tokenization is the process of converting a sequence of characters (such as in a computer program or web page) into a sequence of tokens (strings with an assigned and thus identified meaning).
In computing, a linker or link editor is a computer utility program that takes one or more object files generated by a compiler and combines them into a single executable file, library file, or another 'object' file.
Lisp (historically, LISP) is a family of computer programming languages with a long history and a distinctive, fully parenthesized prefix notation.
Machine code is a computer program written in machine language instructions that can be executed directly by a computer's central processing unit (CPU).
In software development, Make is a build automation tool that automatically builds executable programs and libraries from source code by reading files called Makefiles which specify how to derive the target program.
MATLAB (matrix laboratory) is a multi-paradigm numerical computing environment and proprietary programming language developed by MathWorks.
In computing, a meta-circular evaluator or meta-circular interpreter is an interpreter which defines each feature of the interpreted language using a similar facility of the interpreter's host language.
In computer engineering, microarchitecture, also called computer organization and sometimes abbreviated as µarch or uarch, is the way a given instruction set architecture (ISA), is implemented in a particular processor.
A microcontroller (MCU for microcontroller unit, or UC for μ-controller) is a small computer on a single integrated circuit.
A network interface controller (NIC, also known as a network interface card, network adapter, LAN adapter or physical network interface, and by similar terms) is a computer hardware component that connects a computer to a computer network.
A network processor is an integrated circuit which has a feature set specifically targeted at the networking application domain.
Obfuscation is the obscuring of the intended meaning of communication by making the message difficult to understand, usually with confusing and ambiguous language.
In computing, object code or object module is the product of a compiler.
Open Firmware, or OpenBoot in Sun Microsystems parlance, is a standard defining the interfaces of a computer firmware system, formerly endorsed by the Institute of Electrical and Electronics Engineers (IEEE).
Operational semantics is a category of formal programming language semantics in which certain desired properties of a program, such as correctness, safety or security, are verified by constructing proofs from logical statements about its execution and procedures, rather than by attaching mathematical meanings to its terms (denotational semantics).
A parse tree or parsing tree or derivation tree or concrete syntax tree is an ordered, rooted tree that represents the syntactic structure of a string according to some context-free grammar.
Parsing, syntax analysis or syntactic analysis is the process of analysing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar.
In computing, partial evaluation is a technique for several different types of program optimization by specialization.
Pascal is an imperative and procedural programming language, which Niklaus Wirth designed in 1968–69 and published in 1970, as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named in honor of the French mathematician, philosopher and physicist Blaise Pascal. Pascal was developed on the pattern of the ALGOL 60 language. Wirth had already developed several improvements to this language as part of the ALGOL X proposals, but these were not accepted and Pascal was developed separately and released in 1970. A derivative known as Object Pascal designed for object-oriented programming was developed in 1985; this was used by Apple Computer and Borland in the late 1980s and later developed into Delphi on the Microsoft Windows platform. Extensions to the Pascal concepts led to the Pascal-like languages Modula-2 and Oberon.
Paul Graham (born 13 November 1964) is an English born computer scientist, entrepreneur, venture capitalist, author, and essayist.
PBASIC is a microcontroller-based version of BASIC created by Parallax, Inc. in 1992.
Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages, Perl 5 and Perl 6.
A programming language is a formal language that specifies a set of instructions that can be used to produce various kinds of output.
Prolog is a general-purpose logic programming language associated with artificial intelligence and computational linguistics.
Python is an interpreted high-level programming language for general-purpose programming.
In a computer language, a reserved word (also known as a reserved identifier) is a word that cannot be used as an identifier, such as the name of a variable, function, or label – it is "reserved from use".
Ruby is a dynamic, interpreted, reflective, object-oriented, general-purpose programming language.
In computer science, run time, runtime or execution time is the time during which a program is running (executing), in contrast to other program lifecycle phases such as compile time, link time and load time.
In computer security, a sandbox is a security mechanism for separating running programs, usually in an effort to mitigate system failures or software vulnerabilities from spreading.
Scheme is a programming language that supports multiple paradigms, including functional programming and imperative programming, and is one of the two main dialects of Lisp.
A scripting or script language is a programming language that supports scripts: programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator.
Self-hosting is the use of a computer program as part of the toolchain or operating system that produces new versions of that same program—for example, a that can compile its own source code.
In computer science, self-modifying code is code that alters its own instructions while it is executing – usually to reduce the instruction path length and improve performance or simply to reduce otherwise repetitively similar code, thus simplifying maintenance.
Smalltalk is an object-oriented, dynamically typed, reflective programming language.
A software bug is an error, flaw, failure or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unintended ways.
In software engineering, a software development process is the process of dividing software development work into distinct phases to improve design, product management, and project management.
In computing, source code is any collection of code, possibly with comments, written using a human-readable programming language, usually as plain text.
In computer science, computer engineering and programming language implementations, a stack machine is a type of computer.
In computer programming, a statement is a syntactic unit of an imperative programming language that expresses some action to be carried out.
Stephen "Steve" Russell (born 1937) is an American computer scientist most famous for creating Spacewar!, one of the earliest video games.
Structure and Interpretation of Computer Programs (SICP) is a textbook aiming to teach the principles of computer programming, such as abstraction in programming, metalinguistic abstraction, recursion, interpreters, and modular programming.
TeX (see below), stylized within the system as TeX, is a typesetting system (or "formatting system") designed and mostly written by Donald Knuth and released in 1978.
In computability theory, a system of data-manipulation rules (such as a computer's instruction set, a programming language, or a cellular automaton) is said to be Turing complete or computationally universal if it can be used to simulate any Turing machine.
Typesetting is the composition of text by means of arranging physical typesDictionary.com Unabridged.
UCSD Pascal was a Pascal programming language system that ran on the UCSD p-System, a portable, highly machine-independent operating system.
In coding theory a variable-length code is a code which maps source symbols to a variable number of bits.
In computing, a virtual machine (VM) is an emulation of a computer system.
In computing, virtualization refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources.
WEB is a computer programming system created by Donald E. Knuth as the first implementation of what he called "literate programming": the idea that one could create software as works of literature, by embedding source code inside descriptive text, rather than the reverse (as is common practice in most programming languages), in an order that is convenient for exposition to human readers, rather than in the order demanded by the compiler.
In computing, a word is the natural unit of data used by a particular processor design.
.NET Framework (pronounced dot net) is a software framework developed by Microsoft that runs primarily on Microsoft Windows.
Abstract syntax tree interpreter, Bytecode interpreter, Code interpretation, Code interpreter, Compiler-interpreter, Compreter, Evaluator, Interpreter (computer science), Interpreter (computer software), Interpreter (programming), Interpreter (software), Interpreter computing, Metainterpreter, Runtime interpreter, Self-interpreter.