BEAM (Erlang Virtual Machine)
   HOME
*





BEAM (Erlang Virtual Machine)
BEAM is the virtual machine at the core of the Erlang Open Telecom Platform (OTP). BEAM is part of the Erlang Run-Time System (ERTS), which compiles Erlang source code into bytecode, which is then executed on the BEAM. BEAM bytecode files have the .beam file extension. Originally BEAM was short for ''Bogdan's Erlang Abstract Machine'', named after Bogumil "Bogdan" Hausman, who wrote the original version, but the name may also be referred to as ''Björn's Erlang Abstract Machine'', after Björn Gustavsson, who wrote and maintains the current version. Both developers worked on the system while at Ericsson. The predecessor of the BEAM was JAM (Joe's Abstract Machine), which was the first virtual machine for the Erlang language and was written by Joe Armstrong. See also * Comparison of application virtual machines * Register machine In mathematical logic and theoretical computer science a register machine is a generic class of abstract machines used in a manner similar to a Turi ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Virtual Machine
In computing, a virtual machine (VM) is the virtualization/emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination. Virtual machines differ and are organized by their function, shown here: * '' System virtual machines'' (also termed full virtualization VMs) provide a substitute for a real machine. They provide functionality needed to execute entire operating systems. A hypervisor uses native execution to share and manage hardware, allowing for multiple environments which are isolated from one another, yet exist on the same physical machine. Modern hypervisors use hardware-assisted virtualization, virtualization-specific hardware, primarily from the host CPUs. * Process virtual machines are designed to execute computer programs in a platform-independent environment. Some virtual machine emulators, such as QEMU and video ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Erlang (programming Language)
Erlang ( ) is a general-purpose, concurrent, functional programming language, and a garbage-collected runtime system. The term Erlang is used interchangeably with Erlang/OTP, or Open Telecom Platform (OTP), which consists of the Erlang runtime system, several ready-to-use components (OTP) mainly written in Erlang, and a set of design principles for Erlang programs. The Erlang runtime system is designed for systems with these traits: *Distributed *Fault-tolerant * Soft real-time * Highly available, non-stop applications *Hot swapping, where code can be changed without stopping a system. The Erlang programming language has immutable data, pattern matching, and functional programming. The sequential subset of the Erlang language supports eager evaluation, single assignment, and dynamic typing. A normal Erlang application is built out of hundreds of small Erlang processes. It was originally proprietary software within Ericsson, developed by Joe Armstrong, Robert Virding, an ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Open Telecom Platform
OTP is a collection of useful middleware, libraries, and tools written in the Erlang programming language. It is an integral part of the open-source distribution of Erlang. The name OTP was originally an acronym for Open Telecom Platform, which was a branding attempt before Ericsson released Erlang/OTP as open source. However neither Erlang nor OTP is specific to telecom applications. The OTP distribution is supported and maintained by the OTP product unit at Ericsson, who released Erlang/OTP as open-source in the late 90s, to ensure its independence from a single vendor and to increase awareness of the language. It contains: *an Erlang interpreter (which is called '' BEAM''); *an Erlang compiler; *a protocol for communication between servers (nodes); *a CORBA Object Request Broker; *a static analysis tool called Dialyzer; *a distributed database server (Mnesia); and *many other libraries. History Early days Originally named Open System, it was started by Ericsson in late 1995 ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Runtime System
In computer programming, a runtime system or runtime environment is a sub-system that exists both in the computer where a program is created, as well as in the computers where the program is intended to be run. The name comes from the compile time and runtime division from compiled languages, which similarly distinguishes the computer processes involved in the creation of a program (compilation) and its execution in the target machine (the run time). Most programming languages have some form of runtime system that provides an environment in which programs run. This environment may address a number of issues including the management of application memory, how the program accesses variables, mechanisms for passing parameters between procedures, interfacing with the operating system, and otherwise. The compiler makes assumptions depending on the specific runtime system to generate correct code. Typically the runtime system will have some responsibility for setting up and managin ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Source Code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source code. The source code is often transformed by an assembler or compiler into binary machine code that can be executed by the computer. The machine code is then available for execution at a later time. Most application software is distributed in a form that includes only executable files. If the source code were included it would be useful to a user, programmer or a system administrator, any of whom might wish to study or modify the program. Alternatively, depending on the technology being used, source code may be interpreted and executed directly. Definitions Richard Stallman's definition, formulated in his 1989 seminal li ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Bytecode
Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (normally numeric addresses) that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects. The name bytecode stems from instruction sets that have one-byte opcodes followed by optional parameters. Intermediate representations such as bytecode may be output by programming language implementations to ease interpretation, or it may be used to reduce hardware and operating system dependence by allowing the same code to run cross-platform, on different devices. Bytecode may often be either directly executed on a virtual machine (a p-code machine, i.e., interpreter), or it may be further compiled into machine code for better performance. Since bytecode instructions ar ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Ericsson
(lit. "Telephone Stock Company of LM Ericsson"), commonly known as Ericsson, is a Swedish multinational networking and telecommunications company headquartered in Stockholm. The company sells infrastructure, software, and services in information and communications technology for telecommunications service providers and enterprises, including, among others, 3G, 4G, and 5G equipment, and Internet Protocol (IP) and optical transport systems. The company employs around 100,000 people and operates in more than 180 countries. Ericsson has over 57,000 granted patents. Ericsson has been a major contributor to the development of the telecommunications industry and is one of the leaders in 5G. The company was founded in 1876 by Lars Magnus Ericsson and is jointly controlled by the Wallenberg family through its holding company Investor AB, and the universal bank Handelsbanken through its investment company Industrivärden. The Wallenbergs and the Handelsbanken sphere acquired their v ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Joe Armstrong (programmer)
Joseph Leslie Armstrong (27 December 1950 – 20 April 2019) was a computer scientist working in the area of fault-tolerant distributed systems. He is best known as one of the co-designers of the Erlang programming language. Early life and education Armstrong was born in Bournemouth, England in 1950. At 17, Armstrong began programming in Fortran on his local council's mainframe. Armstrong graduated with a B.Sc. in Physics from University College London in 1972. He received a Ph.D. in Computer Science from the Royal Institute of Technology (KTH) in Stockholm, Sweden in 2003. His dissertation was titled ''Making reliable distributed systems in the presence of software errors''. He was a professor at KTH from 2014 until his death. Career After briefly working for Donald Michie at the University of Edinburgh, Armstrong moved to Sweden in 1974 and joined the Ericsson Computer Science Lab at Kista in 1984. Peter Seibel wrote: Originally a physicist, he switched to com ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Comparison Of Application Virtual Machines
Application virtualization software refers to both application virtual machines and software responsible for implementing them. Application virtual machines are typically used to allow application bytecode to run portably on many different computer architectures and operating systems. The application is usually run on the computer using an interpreter or just-in-time compilation (JIT). There are often several implementations of a given virtual machine, each covering a different set of functions. Comparison of virtual machines :JavaScript machines not included. See List of ECMAScript engines to find them. The table here summarizes elements for which the virtual machine designs are intended to be efficient, not the list of abilities present in any implementation. Virtual machine instructions process data in local variables using a main ''model of computation'', typically that of a stack machine, register machine, or random access machine often called the memory machine. Use of ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Register Machine
In mathematical logic and theoretical computer science a register machine is a generic class of abstract machines used in a manner similar to a Turing machine. All the models are Turing equivalent. Overview The register machine gets its name from its use of one or more " registers". In contrast to the tape and head used by a Turing machine, the model uses multiple, uniquely addressed registers, each of which holds a single positive integer. There are at least four sub-classes found in literature, here listed from most primitive to the most like a computer: * Counter machine – the most primitive and reduced theoretical model of a computer hardware. Lacks indirect addressing. Instructions are in the finite state machine in the manner of the Harvard architecture. *Pointer machine – a blend of counter machine and RAM models. Less common and more abstract than either model. Instructions are in the finite state machine in the manner of the Harvard architecture. *Random-access mach ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Programming Language Implementation
In computer programming, a programming language implementation is a system for executing computer programs. There are two general approaches to programming language implementation: *'' Interpretation:'' The program is read as input by an interpreter, which performs the actions written in the program. *''Compilation:'' The program is read by a compiler, which translates it into some other language, such as bytecode or machine code. The translated code may either be directly executed by hardware, or serve as input to another interpreter or another compiler. Interpreter An interpreter is composed of two parts: a parser and an evaluator. After a program is read as input by an interpreter, it is processed by the parser. The parser breaks the program into language components to form a parse tree. The evaluator then uses the parse tree to execute the program. Virtual machine A virtual machine is a special type of interpreter that interprets bytecode. Bytecode is a portable low-level ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]