en.wikipedia.org, 2020-12-31 | Main page
---------------------------------------------------------------------------------------
Saved from web.archive.org, with Lynx.
---------------------------------------------------------------------------------------
   #alternate Edit this page Wikipedia (en)

Source code

   From Wikipedia, the free encyclopedia
   Jump to navigation Jump to search
   Collection of computer instructions written using some human-readable
   computer language
   This article is about the software concept. For the film, see Source
   Code.
   This article needs additional citations for verification. Please help
   improve this article by adding citations to reliable sources. Unsourced
   material may be challenged and removed.
   Find sources: "Source code" - news . newspapers . books . scholar .
   JSTOR (August 2010) (Learn how and when to remove this template
   message)

   Simple C-language source code example, a procedural programming
   language. The resulting program prints "hello, world" on the computer
   screen. This first known "Hello world" snippet from the seminal book
   The C Programming Language originates from Brian Kernighan in the Bell
   Laboratories in 1974.^[1]
           Program execution
           General concepts
     * Code
     * Translation
          + Compiler
               o Compile-time
          + Optimizing compiler
     * Intermediate representation (IR)
     * Execution
          + Runtime system
               o Runtime
          + Executable
          + Interpreter
          + Virtual machine

             Types of code
     * Source code
     * Object code
     * Bytecode
     * Machine code
     * Microcode

        Compilation strategies
     * Just-in-time (JIT)
          + Tracing just-in-time
     * Ahead-of-time (AOT)
     * Transcompilation
     * Recompilation

           Notable runtimes
     * Android Runtime (ART)
     * Common Language Runtime (CLR) & Mono
     * crt0
     * HHVM
     * Java virtual machine (JVM)
     * Objective-C
     * V8
          + Node.js
     * PyPy
     * Zend Engine

    Notable compilers & toolchains
     * GNU Compiler Collection (GCC)
     * LLVM
          + Clang

     * v
     * t
     * e

   In computing, source code is any collection of code, with or without
   comments, written using^[1] 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 might then be stored for execution at a later time.
   Alternatively, source code may be interpreted and thus immediately
   executed.

   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.
   [ ]

Contents

     * 1 Definitions
     * 2 History
     * 3 Organization
     * 4 Purposes
     * 5 Legal aspects
          + 5.1 Licensing
     * 6 Quality
     * 7 See also
     * 8 References
          + 8.1 Sources
     * 9 External links

Definitions[edit]

   The Linux Information Project defines source code as:^[2]

     Source code (also referred to as source or code) is the version of
     software as it is originally written (i.e., typed into a computer)
     by a human in plain text (i.e., human readable alphanumeric
     characters).

   The notion of source code may also be taken more broadly, to include
   machine code and notations in graphical languages, neither of which are
   textual in nature. An example from an article presented on the annual
   IEEE conference and on Source Code Analysis and Manipulation:^[3]

     For the purpose of clarity "source code" is taken to mean any fully
     executable description of a software system. It is therefore so
     construed as to include machine code, very high level languages and
     executable graphical representations of systems.^[4]

   Often there are several steps of program translation or minification
   between the original source code typed by a human and an executable
   program. While some, like the FSF, argue that an intermediate file "is
   not real source code and does not count as source code",^[5] others
   find it convenient to refer to each intermediate file as the source
   code for the next steps.

History[edit]

   The earliest programs for stored-program computers were entered in
   binary through the front panel switches of the computer. This
   first-generation programming language had no distinction between source
   code and machine code.

   When IBM first offered software to work with its machine, the source
   code was provided at no additional charge. At that time, the cost of
   developing and supporting software was included in the price of the
   hardware. For decades, IBM distributed source code with its software
   product licenses, until 1983.^[6]

   Most early computer magazines published source code as type-in
   programs.

   Occasionally the entire source code to a large program is published as
   a hardback book, such as Computers and Typesetting, vol. B: TeX, The
   Program by Donald Knuth, PGP Source Code and Internals by Philip
   Zimmermann, PC SpeedScript by Randy Thompson, and uC/OS, The Real-Time
   Kernel by Jean Labrosse.

Organization[edit]

   The source code which constitutes a program is usually held in one or
   more text files stored on a computer's hard disk; usually these files
   are carefully arranged into a directory tree, known as a source tree.
   Source code can also be stored in a database (as is common for stored
   procedures) or elsewhere.
   A more complex Java source code example. Written in object-oriented
   programming style, it demonstrates boilerplate code. With prologue
   comments indicated in red, inline comments indicated in green, and
   program statements indicated in blue.

   The source code for a particular piece of software may be contained in
   a single file or many files. Though the practice is uncommon, a
   program's source code can be written in different programming
   languages.^[7] For example, a program written primarily in the C
   programming language, might have portions written in assembly language
   for optimization purposes. It is also possible for some components of a
   piece of software to be written and compiled separately, in an
   arbitrary programming language, and later integrated into the software
   using a technique called library linking. In some languages, such as
   Java, this can be done at run time (each class is compiled into a
   separate file that is linked by the interpreter at runtime).

   Yet another method is to make the main program an interpreter for a
   programming language,^[citation needed] either designed specifically
   for the application in question or general-purpose, and then write the
   bulk of the actual user functionality as macros or other forms of
   add-ins in this language, an approach taken for example by the GNU
   Emacs text editor.

   The code base of a computer programming project is the larger
   collection of all the source code of all the computer programs which
   make up the project. It has become common practice to maintain code
   bases in version control systems. Moderately complex software
   customarily requires the compilation or assembly of several, sometimes
   dozens or maybe even hundreds, of different source code files. In these
   cases, instructions for compilations, such as a Makefile, are included
   with the source code. These describe the programming relationships
   among the source code files and contain information about how they are
   to be compiled.

Purposes[edit]

   Source code is primarily used as input to the process that produces an
   executable program (i.e., it is compiled or interpreted). It is also
   used as a method of communicating algorithms between people (e.g., code
   snippets in books).^[8]

   Computer programmers often find it helpful to review existing source
   code to learn about programming techniques.^[8] The sharing of source
   code between developers is frequently cited as a contributing factor to
   the maturation of their programming skills.^[8] Some people consider
   source code an expressive artistic medium.^[9]

   Porting software to other computer platforms is usually prohibitively
   difficult without source code. Without the source code for a particular
   piece of software, portability is generally computationally
   expensive.^[citation needed] Possible porting options include binary
   translation and emulation of the original platform.

   Decompilation of an executable program can be used to generate source
   code, either in assembly code or in a high-level language.

   Programmers frequently adapt source code from one piece of software to
   use in other projects, a concept known as software reusability.

Legal aspects[edit]

   See also: History of free and open-source software

   The situation varies worldwide, but in the United States before 1974,
   software and its source code was not copyrightable and therefore always
   public domain software.^[10]

   In 1974, the US Commission on New Technological Uses of Copyrighted
   Works (CONTU) decided that "computer programs, to the extent that they
   embody an author's original creation, are proper subject matter of
   copyright".^[11]^[12]

   In 1983 in the United States court case Apple v. Franklin it was ruled
   that the same applied to object code; and that the Copyright Act gave
   computer programs the copyright status of literary works.

   In 1999, in the United States court case Bernstein v. United States it
   was further ruled that source code could be considered a
   constitutionally protected form of free speech. Proponents of free
   speech argued that because source code conveys information to
   programmers, is written in a language, and can be used to share humor
   and other artistic pursuits, it is a protected form of
   communication.^[13]^[14]^[15]

Licensing[edit]

   Main article: Software license
   Copyright notice example:^[16]

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License"); you may
   not use this file except in compliance with the License. You may obtain
   a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
   implied. See the License for the specific language governing
   permissions and limitations under the License.

   An author of a non-trivial work like software,^[12] has several
   exclusive rights, among them the copyright for the source code and
   object code.^[17] The author has the right and possibility to grant
   customers and users of his software some of his exclusive rights in
   form of software licensing. Software, and its accompanying source code,
   can be associated with several licensing paradigms; the most important
   distinction is open source vs proprietary software. This is done by
   including a copyright notice that declares licensing terms. If no
   notice is found, then the default of All rights reserved is implied.

   Generally speaking, software is open source if the source code is free
   to use, distribute, modify and study, and proprietary if the source
   code is kept secret, or is privately owned and restricted. One of the
   first software licenses to be published and to explicitly grant these
   freedoms was the GNU General Public License in 1989; the BSD license is
   another early example from 1990.

   For proprietary software, the provisions of the various copyright laws,
   trade secrecy and patents are used to keep the source code closed.
   Additionally, many pieces of retail software come with an end-user
   license agreement (EULA) which typically prohibits decompilation,
   reverse engineering, analysis, modification, or circumventing of copy
   protection. Types of source code protection--beyond traditional
   compilation to object code--include code encryption, code obfuscation
   or code morphing.

Quality[edit]

   Main article: Software quality

   The way a program is written can have important consequences for its
   maintainers. Coding conventions, which stress readability and some
   language-specific conventions, are aimed at the maintenance of the
   software source code, which involves debugging and updating. Other
   priorities, such as the speed of the program's execution, or the
   ability to compile the program for multiple architectures, often make
   code readability a less important consideration, since code quality
   generally depends on its purpose.

See also[edit]

     * Bytecode
     * Code as data
     * Coding conventions
     * Computer code
     * Legacy code
     * Machine code
     * Markup language
     * Obfuscated code
     * Object code
     * Open-source software
     * Package (package management system)
     * Programming language
     * Source code repository
     * Syntax highlighting
     * Visual programming language

References[edit]

    1. ^ ^a ^b "Programming in C: A Tutorial" (PDF). Archived from the
       original (PDF) on 23 February 2015.
    2. ^ The Linux Information Project. "Source Code Definition".
    3. ^ SCAM Working Conference, 2001-2010.
    4. ^ Why Source Code Analysis and Manipulation Will Always Be
       Important by Mark Harman, 10th IEEE International Working
       Conference on Source Code Analysis and Manipulation (SCAM 2010).
       Timisoara, Romania, 12-13 September 2010.
    5. ^ "gnu.org". www.gnu.org.
    6. ^ Martin Goetz (8 February 1988). "Object-code only: Is IBM playing
       fair?". Computerworld. Vol. 22 no. 6. p. 59. "It was in 1983 that
       IBM reversed its 20-year-old policy of distributing source code
       with its software product licenses."
    7. ^ "Extending and Embedding the Python Interpreter".
       docs.python.org.
    8. ^ ^a ^b ^c Spinellis, D: Code Reading: The Open Source Perspective.
       Addison-Wesley Professional, 2003. ISBN 0-201-79940-5
    9. ^ "Art and Computer Programming" ONLamp.com, (2005)
   10. ^ P., Liu, Joseph; L., Dogan, Stacey (2005). "Copyright Law and
       Subject Matter Specificity: The Case of Computer Software". New
       York University Annual Survey of American Law. 61 (2).
   11. ^ Apple Computer, Inc. v. Franklin Computer Corporation Puts the
       Byte Back into Copyright Protection for Computer Programs in Golden
       Gate University Law Review Volume 14, Issue 2, Article 3 by Jan L.
       Nussbaum (January 1984)
   12. ^ ^a ^b Lemley, Menell, Merges and Samuelson. Software and Internet
       Law, p. 34.
   13. ^ "Info" (PDF). cr.yp.to. Retrieved 27 December 2019.
   14. ^ Bernstein v. US Department of Justice on eff.org
   15. ^ EFF at 25: Remembering the Case that established Code as Speech
       on EFF.org by Alison Dame-Boyle (16 April 2015)
   16. ^ "License". www.apache.org. Retrieved 27 December 2019.
   17. ^ Hancock, Terry (29 August 2008). "What if copyright didn't apply
       to binary executables?". Free Software Magazine. Retrieved 25
       January 2016.

Sources[edit]

     * (VEW04) "Using a Decompiler for Real-World Source Recovery", M. Van
       Emmerik and T. Waddington, the Working Conference on Reverse
       Engineering, Delft, Netherlands, 9-12 November 2004. Extended
       version of the paper.

External links[edit]

   Look up code or source code in Wiktionary, the free dictionary.
   Wikimedia Commons has media related to Source code.
     * Source Code Definition by The Linux Information Project (LINFO)
     * "Obligatory accreditation system for IT security products".
       MetaFilter.com. 22 September 2008. "will introduce rules requiring
       foreign firms to disclose secret information about digital
       household appliances and other products from May next year, the
       Yomiuri Shimbun said, citing unnamed sources. If a company refuses
       to disclose information, China would ban it from exporting the
       product to the Chinese market or producing or selling it in China,
       the paper said."

     Same program written in multiple languages

     Javascript Obfuscator

   Authority control Edit this at Wikidata
     * BNF: cb15918046v (data)
     * GND: 4488209-9
     * LCCN: sh90003519
     * SUDOC: 12859683X

   Retrieved from
   "https://en.wikipedia.org/w/index.php?title=Source_code&oldid=996209215
   "

   Categories:
     * Source code
     * Text

   Hidden categories:
     * Articles with short description
     * Short description matches Wikidata
     * Articles needing additional references from August 2010
     * All articles needing additional references
     * Use dmy dates from January 2016
     * All articles with unsourced statements
     * Articles with unsourced statements from May 2008
     * Articles with unsourced statements from October 2008
     * Commons category link from Wikidata
     * Wikipedia articles with BNF identifiers
     * Wikipedia articles with GND identifiers
     * Wikipedia articles with LCCN identifiers
     * Wikipedia articles with SUDOC identifiers

Navigation menu

Personal tools

     * Not logged in
     * Talk
     * Contributions
     * Create account
     * Log in

Namespaces

     * Article
     * Talk

   [ ]

Variants

Views

     * Read
     * Edit
     * View history

   [ ]

More

Search

   ____________________ Search Go

Navigation

     * Main page
     * Contents
     * Current events
     * Random article
     * About Wikipedia
     * Contact us
     * Donate

Contribute

     * Help
     * Learn to edit
     * Community portal
     * Recent changes
     * Upload file

Tools

     * What links here
     * Related changes
     * Upload file
     * Special pages
     * Permanent link
     * Page information
     * Cite this page
     * Wikidata item

Print/export

     * Download as PDF
     * Printable version

In other projects

     * Wikimedia Commons

Languages

     * Afrikaans
     * a+l+e+r+b+y+tm
     * Asturianu
     * Az@rbaycanca
     *
     * Ban-lam-gu
     * Belaruskaya
     * Belaruskaya (tarashkeviica)
     * B"lgarski
     * Bosanski
     * Catal`a
     * Cestina
     * Cymraeg
     * Dansk
     * a+l+d+a+r+g+tm
     * Deutsch
     * Eesti
     * Ellynika'
     * Espanol
     * Esperanto
     * Euskara
     * f+a+r+s+
     * Franc,ais
     * Galego
     * /Hak-ka-ngi
     *
     *
     *
     * Hrvatski
     * Ilokano
     * Bahasa Indonesia
     * Italiano
     * E+B+R+J+T+
     *
     * azasha
     * Kiswahili
     * Kyrgyzcha
     * Latviesu
     * Lietuviu
     * Magyar
     *
     * Bahasa Melayu
     * M`ing-de<?>ng-ngu--:
     * Mirandes
     * Mongol
     *
     * Nederlands
     *
     * Norsk bokmaal
     * Norsk nynorsk
     * Olyk marij
     * Paelzisch
     * Polski
     * Portugues
     * Romana
     * Runa Simi
     * Russkij
     * Simple English
     * Slovencina
     * Slovenscina
     * Srpski / srpski
     * Srpskohrvatski / srpskohrvatski
     * Suomi
     * Svenska
     *
     * Toik
     * Tuerkc,e
     * Ukrayins'ka
     * a+r+d+w+
     * Veneto
     * Tie>'ng Vie>-.t
     *
     *
     *

   Edit links

     * This page was last edited on 25 December 2020, at 04:32 (UTC).
     * Text is available under the Creative Commons Attribution-ShareAlike
       License; additional terms may apply. By using this site, you agree
       to the Terms of Use and Privacy Policy. Wikipedia(R) is a
       registered trademark of the Wikimedia Foundation, Inc., a
       non-profit organization.

     * Privacy policy
     * About Wikipedia
     * Disclaimers
     * Contact Wikipedia
     * Mobile view
     * Developers
     * Statistics
     * Cookie statement

     * Wikimedia Foundation
     * Powered by MediaWiki
---------------------------------------------------------------------------------------
Saved from web.archive.org, with Lynx.
 
Main page
 
© 2022 Matei. No cookies®