The IT Law Wiki
(Redirecting to Language)
 
m (Protected "Programming language" (‎[edit=autoconfirmed] (indefinite) ‎[move=autoconfirmed] (indefinite)))
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
== Definitions ==
#redirect [[Language]]
 
  +
[[Category:Technology]][[Category:Software]]
 
  +
=== General ===
  +
  +
A '''programming language''' provides a way of writing [[program]]s for [[computer]]s to run. Unlike natural languages, programming languages are designed to permit no [[ambiguity]] and to be concise. They are purely written languages and are often difficult to read aloud. They are generally either translated into [[machine language]] by a [[compiler]] or an [[assembler]] before being [[run]], or [[translate]]d directly at run time by an [[interpreter]]. Sometimes [[program]]s are [[execute]]d by a hybrid method of the two techniques. There are thousands of different programming languages — some intended to be general purpose, others useful only for highly specialized [[application]]s.
  +
  +
=== Japan ===
  +
  +
In Japanese copyright law, a '''programming language''' is defined as "[[letter]]s and other symbols as well as their [[system]]s for use as means of expressing a [[program]]."<ref>Japan Law No. 48 of 1970, Art. 10(3)(1).</ref>
  +
  +
== Overview ==
  +
  +
There are three different types of programming languages: [[machine language]], [[assembly language]], and [[high-level language]]. [[Machine language]] [[program]]s can be [[execute]]d directly by the [[computer]], but are relatively difficult to write and understand. [[Assembly language]] [[program]]s and [[high-level language]] [[program]]s are easier to write and understand, but cannot be [[execute]]d directly by the [[computer]]. For this reason, [[program]]s are usually first written in [[assembly language]] or a [[high-level language]], and then [[translate]]d into [[machine language]] so that they can be [[execute]]d on the [[computer]].
  +
  +
[[Program]]s are typically [[distribute]]d in [[machine language]] form. [[Machine language]] [[program]]s do not have to be [[assemble]]d or [[compile]]d by the [[user]]; they are ready to be [[load]]ed into the [[computer]] and [[execute]]d. In addition, [[distribution]] in [[machine language]] form has the side effect that it is difficult for others to look at the [[program code]] and understand how the [[program]] works. This can help to keep [[secret]] those elements which give the [[program]] a [[competitive advantage]].
  +
  +
The "[[decompilation]]" issue has arisen because efforts to [[translate]] a [[machine language]] [[program]] back into a more understandable form, such as [[assembly language]] or [[high-level language]], may be a [[copyright infringement]] because the [[translation]] process would involve the making of an [[unauthorized copy]] or [[derivative work]]. Legal scholars are divided on the question of whether this activity can be excused under the provisions of [[17 U.S.C. §117|Section 117]] or [[17 U.S.C. §117|Section 107]] of the [[copyright law]].
  +
  +
Two terms are used to refer to the process of translating a machine language back into a more readable form. Disassembly is the process of translating a machine language program into an assembly language program; recompilation is the process of translating a machine language program into a high-level program. One issue in the policy debate has been the feasibility of recompilation. There are currently no commercially available decompiler. It appears that the term ‘recompilation,’ as it is used in the policy debate, encompasses disassembly and any other procedure by which a machine language program is translated into a more understandable form. There area number of disassembler programs available on the market. Translating a machine language program into assembly language is much easier than translating it back into a high-level language.
  +
  +
One view is that limits on recompilation are required in order to encourage the development of original programs. Those who take this position argue that recompilation significantly lowers the cost of implementing “clone” programs. They claim that the original program is decompiled, altered to disguise the copying, and marketed. The clone program can then be sold at a lower price, taking away market share from the original developer, and reducing incentives for the development of new programs.
  +
  +
Others argue that recompilation is a difficult and time-consuming process that does not significantly reduce the cost of developing clone programs. A large disassembled program takes a great deal of effort to understand. In addition, they emphasize that recompilation is required for a variety of other purposes, many of which have a less direct impact on the developer of the program being decompiled.
  +
  +
== References ==
  +
<references />
  +
  +
== Source ==
  +
  +
* "Overview" section: [[Finding a Balance: Computer Software, Intellectual Property, and the Challenge of Technological Change]], at 6.
  +
  +
== See also ==
  +
  +
<div style="{{column-count|2}}">
  +
  +
* [[Assembly language]]
  +
* [[Fifth generation language]]
  +
* [[First generation language]]
  +
* [[Fourth generation language]]
  +
* [[High level language]]
  +
* [[Low-level language ]]
  +
* [[Machine language]]
  +
* [[Second generation language]]
  +
* [[Third generation language]]
  +
  +
</div>
 
[[Category:Technology]]
  +
[[Category:Software]]
  +
[[Category:Japan]]

Latest revision as of 13:05, 30 August 2016

Definitions

General

A programming language provides a way of writing programs for computers to run. Unlike natural languages, programming languages are designed to permit no ambiguity and to be concise. They are purely written languages and are often difficult to read aloud. They are generally either translated into machine language by a compiler or an assembler before being run, or translated directly at run time by an interpreter. Sometimes programs are executed by a hybrid method of the two techniques. There are thousands of different programming languages — some intended to be general purpose, others useful only for highly specialized applications.

Japan

In Japanese copyright law, a programming language is defined as "letters and other symbols as well as their systems for use as means of expressing a program."[1]

Overview

There are three different types of programming languages: machine language, assembly language, and high-level language. Machine language programs can be executed directly by the computer, but are relatively difficult to write and understand. Assembly language programs and high-level language programs are easier to write and understand, but cannot be executed directly by the computer. For this reason, programs are usually first written in assembly language or a high-level language, and then translated into machine language so that they can be executed on the computer.

Programs are typically distributed in machine language form. Machine language programs do not have to be assembled or compiled by the user; they are ready to be loaded into the computer and executed. In addition, distribution in machine language form has the side effect that it is difficult for others to look at the program code and understand how the program works. This can help to keep secret those elements which give the program a competitive advantage.

The "decompilation" issue has arisen because efforts to translate a machine language program back into a more understandable form, such as assembly language or high-level language, may be a copyright infringement because the translation process would involve the making of an unauthorized copy or derivative work. Legal scholars are divided on the question of whether this activity can be excused under the provisions of Section 117 or Section 107 of the copyright law.

Two terms are used to refer to the process of translating a machine language back into a more readable form. Disassembly is the process of translating a machine language program into an assembly language program; recompilation is the process of translating a machine language program into a high-level program. One issue in the policy debate has been the feasibility of recompilation. There are currently no commercially available decompiler. It appears that the term ‘recompilation,’ as it is used in the policy debate, encompasses disassembly and any other procedure by which a machine language program is translated into a more understandable form. There area number of disassembler programs available on the market. Translating a machine language program into assembly language is much easier than translating it back into a high-level language.

One view is that limits on recompilation are required in order to encourage the development of original programs. Those who take this position argue that recompilation significantly lowers the cost of implementing “clone” programs. They claim that the original program is decompiled, altered to disguise the copying, and marketed. The clone program can then be sold at a lower price, taking away market share from the original developer, and reducing incentives for the development of new programs.

Others argue that recompilation is a difficult and time-consuming process that does not significantly reduce the cost of developing clone programs. A large disassembled program takes a great deal of effort to understand. In addition, they emphasize that recompilation is required for a variety of other purposes, many of which have a less direct impact on the developer of the program being decompiled.

References

  1. Japan Law No. 48 of 1970, Art. 10(3)(1).

Source

See also