Bidirectional Transformation
In computer programming, bidirectional transformations (bx) are programs in which a single piece of code can be run in several ways, such that the same data are sometimes considered as input, and sometimes as output. For example, a bx run in the forward direction might transform input I into output O, while the same bx run backward would take as input versions of I and O and produce a new version of I as its output. Model transformation#Unidirectional versus bidirectional, Bidirectional model transformations are an important special case in which a model is input to such a program. Some bidirectional languages are Bijection, ''bijective''. The bijectivity of a language is a severe restriction of its power, because a bijective language is merely relating two different ways to present the very same information. More general is a lens language, in which there is a distinguished forward direction ("get") that takes a concrete input to an abstract output, discarding some information i ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Computer Programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of procedures, by writing source code, code in one or more programming languages. Programmers typically use high-level programming languages that are more easily intelligible to humans than machine code, which is directly executed by the central processing unit. Proficient programming usually requires expertise in several different subjects, including knowledge of the Domain (software engineering), application domain, details of programming languages and generic code library (computing), libraries, specialized algorithms, and Logic#Formal logic, formal logic. Auxiliary tasks accompanying and related to programming include Requirements analysis, analyzing requirements, Software testing, testing, debugging (investigating and fixing problems), imple ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Model Transformation
A model transformation, in model-driven engineering, is an automated way of modifying and creating platform-specific model from platform-independent ones. An example use of model transformation is ensuring that a family of models is consistent, in a precise sense which the software engineer can define. The aim of using a model transformation is to save effort and reduce errors by automating the building and modification of models where possible. Overview Model transformations can be thought of as programs that take models as input. There is a wide variety of kinds of model transformation and uses of them, which differ in their inputs and outputs and also in the way they are expressed. A model transformation usually specifies which models are acceptable as input, and if appropriate what models it may produce as output, by specifying the metamodel to which a model must conform. Classification of model transformations Model transformations and languages for them have been clas ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Bijection
In mathematics, a bijection, bijective function, or one-to-one correspondence is a function between two sets such that each element of the second set (the codomain) is the image of exactly one element of the first set (the domain). Equivalently, a bijection is a relation between two sets such that each element of either set is paired with exactly one element of the other set. A function is bijective if it is invertible; that is, a function f:X\to Y is bijective if and only if there is a function g:Y\to X, the ''inverse'' of , such that each of the two ways for composing the two functions produces an identity function: g(f(x)) = x for each x in X and f(g(y)) = y for each y in Y. For example, the ''multiplication by two'' defines a bijection from the integers to the even numbers, which has the ''division by two'' as its inverse function. A function is bijective if and only if it is both injective (or ''one-to-one'')—meaning that each element in the codomain is mappe ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
ACM Transactions On Programming Languages And Systems
The ''ACM Transactions on Programming Languages and Systems'' (''TOPLAS'') is a bimonthly, open access, peer-reviewed scientific journal on the topic of programming languages published by the Association for Computing Machinery. Background Published since 1979, the journal's scope includes programming language design, implementation, and semantics of programming languages, compilers and interpreters, run-time systems, storage allocation and garbage collection, and formal specification, testing, and verification of software. It is indexed in Scopus and SCImago. The editor-in-chief is Andrew Myers (Cornell University). According to the ''Journal Citation Reports'', the journal had a 2020 impact factor of 0.410. References External links * TOPLASat ACM Digital Library TOPLASat DBLP DBLP is a computer science bibliography website. Starting in 1993 at Universität Trier in Germany, it grew from a small collection of HTML files and became an organization hosting a datab ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Product Type
In programming languages and type theory, a product of ''types'' is another, compounded, type in a structure. The "operands" of the product are types, and the structure of a product type is determined by the fixed order of the operands in the product. An instance of a product type retains the fixed order, but otherwise may contain all possible instances of its primitive data types. The expression of an instance of a product type will be a tuple, and is called a "tuple type" of expression. A product of types is a direct product of two or more types. If there are only two component types, it can be called a "pair type". For example, if two component types A and B are the set of all possible values of that type, the product type written A × B contains elements that are pairs (a,b), where "a" and "b" are instances of A and B respectively. The pair type is a special case of the dependent pair type, where the type B may depend on the instance picked from A. In many languages, product ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Tagged Union
In computer science, a tagged union, also called a variant, variant record, choice type, discriminated union, disjoint union, sum type, or coproduct, is a data structure used to hold a value that could take on several different, but fixed, types. Only one of the types can be in use at any one time, and a tag field explicitly indicates which type is in use. It can be thought of as a type that has several "cases", each of which should be handled correctly when that type is manipulated. This is critical in defining recursive datatypes, in which some component of a value may have the same type as that value, for example in defining a type for representing trees, where it is necessary to distinguish multi-node subtrees and leaves. Like ordinary unions, tagged unions can save storage by overlapping storage areas for each type, since only one is in use at a time. Description Tagged unions are most important in functional programming languages such as ML and Haskell, where they are ca ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Boomerang (programming Language)
Boomerang is a programming language for writing lenses—well-behaved bidirectional transformations —that operate on ad-hoc, textual data formats. Boomerang grew out of the Harmony generic data synchronizer, which grew out of the Unison Unison (stylised as UNISON) is a Great Britain, British trade union. Along with Unite the Union, Unite, Unison is one of the two largest trade unions in the United Kingdom, with over 1.2 million members who work predominantly in public servic ... file synchronization project. References * Aaron Bohannon, J. Nathan Foster, Benjamin C. Pierce, Alexandre Pilkiewicz, and Alan Schmitt. Boomerang: Resourceful Lenses for String Data. In ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), San Francisco, California, January 2008full text * J. Nathan Foster, Alexandre Pilkiewicz, and Benjamin C. Pierce. Quotient Lenses. To appear in ACM SIGPLAN International Conference on Functional Programming (ICFP), Victoria, Brit ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Programming Language
A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually defined by a formal language. Languages usually provide features such as a type system, Variable (computer science), variables, and mechanisms for Exception handling (programming), error handling. An Programming language implementation, implementation of a programming language is required in order to Execution (computing), execute programs, namely an Interpreter (computing), interpreter or a compiler. An interpreter directly executes the source code, while a compiler produces an executable program. Computer architecture has strongly influenced the design of programming languages, with the most common type (imperative languages—which implement operations in a specified order) developed to perform well on the popular von Neumann architecture. ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Augeas (software)
Augeas is a free software configuration-management library, written in the C programming language. It is licensed under the terms of the GNU Lesser General Public License. Augeas uses programs called ''lenses'' (in reference to the Harmony Project) to map a filesystem to an XML tree which can then be parsed using an XPath syntax, using a bidirectional transformation. Writing such lenses extends the amount of files Augeas can parse. Bindings Augeas has bindings for Python, Ruby, OCaml, Perl, Haskell, Java, PHP, and Tcl. Programs using augeas * Certbot, ACME client * Puppet A puppet is an object, often resembling a human, animal or Legendary creature, mythical figure, that is animated or manipulated by a person called a puppeteer. Puppetry is an ancient form of theatre which dates back to the 5th century BC in anci ... provides an Augeas module which makes use of the Ruby bindings * SaltStack provides an Augeas module which makes use of the python bindings Re ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Bidirectionalization
In computer science, bidirectionalization refers to the process of given a source-to-view transformation (automatically) finding a mapping from the original source and an updated view to an updated source. See also * Bidirectional transformation * Inverse function * Reversible computing Reversible computing is any model of computation where every step of the process is time-reversible. This means that, given the output of a computation, it's possible to perfectly reconstruct the input. In systems that progress deterministica ... * View (database) Further reading * Janis Voigtländer, Zhenjiang Hu, Kazutaka Matsuda, and Meng Wang. Combining Syntactic and Semantic Bidirectionalization'. International Conference on Functional Programming 2010. Database management systems Database theory {{comp-sci-stub ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Reverse Computation
Reverse computation is a software application of the concept of reversible computing. Because it offers a possible solution to the heat problem faced by chip manufacturers, reversible computing has been extensively studied in the area of computer architecture. The promise of reversible computing is that the amount of heat loss for reversible architectures would be minimal for significantly large numbers of transistors. Rather than creating entropy (and thus heat) through destructive operations, a reversible architecture conserves the energy by performing other operations that preserve the system state. The concept of reverse computation is somewhat simpler than reversible computing in that reverse computation is only required to restore the ''equivalent'' state of a software application, rather than support the reversibility of the set of all possible instructions. Reversible computing concepts have been successfully applied as ''reverse computation'' in software application area ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |
|
Transformation Language
A transformation language is a computer language designed to transform some input text in a certain formal language into a modified output text that meets some specific goal. Program transformation systems such as Stratego/XT, TXL, Tom, DMS, and ASF+SDF all have transformation languages as a major component. The transformation languages for these systems are driven by declarative descriptions of the structure of the input text (typically a grammar), allowing them to be applied to wide variety of formal languages and documents. Macro languages are a kind of transformation languages to transform a meta language into specific higher programming language like Java, C++, Fortran or into lower-level Assembly language. In the model-driven engineering technical space, there are model transformation languages (MTLs), that take as input models conforming to a given metamodel and produce as output models conforming to a different metamodel. An example of such a language is the QV ... [...More Info...]       [...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]   |