Software Code

The **Software Code** (Also referred to as **Software Programming**, or just Software) is the process of writing and programming a type of software and creating a codename for the program.

## Software Development

The preparation of a computer program involves many steps. Except for the simplest of programs, the first step in developing a program is to create the design documents. These design documents includes a diagram of how the data input to the program will flow through the program, what operations will be performed on that data at each stage, and what is to be done with that data once it has been processed (e.g., stored on a disk, printed out, displayed on a computer screen). The design also includes the specifications of any database to be used (which indicates how and where the data will be stored), and the specification of any protocols that will be reflected in the final program code.

The final design document is much like a blueprint for a building. Highly trained architects, structural engineers and others spend a great deal of time and effort to insure that the design is correct, so the building can be constructed without trial and error, and the building will be structurally sound and function as promised. Once the blueprint is completed, the construction of the building is a straightforward and not particularly intellectually challenging task.

Once the design document for a computer program is completed, converting that design into computer code should be a relatively straightforward task. The program is written in a high level, human-readable code called "source code."

## Source Code

### General Edit

**Source code** is "the spelled-out program commands that humans can read."

## Overview

Programmers typically write software programs using a high-level computer language such as Basic, C++, or Java. By using the words, symbols and numbers that make up these high-level computer languages, the programmer tells the computer what to do. For instance, the command "ADD (X, Y)" instructs the computer to add the value of the variable X to the variable Y. A computer program written in this high-level language is said to be in **source code** form.

 serves two functions. First, it can be treated as comparable to text
material, and in that respect can be printed out, read and studied, and loaded into a computer’s memory, in much the same way as documents are loaded into word processing equipment. Second, the source code can be used to cause the computer to execute the program. To accomplish this, the source code is compiled. This involves an automatic process, performed by the computer under the control of a program called a compiler, which translates the source code into object code, which is very difficult to comprehend by human beings. The object code version of the program is then loaded into the computer’s memory and causes the computer to carry out the program function.

A skilled programmer can review the source code and extract the ideas and algorithms contained in it.

## Introduction

In practical terms, a **computer program** (also called simply a **program**) might include anywhere from a dozen instructions to many millions of instructions for something like a word processor or a web browser. A typical modern computer can execute billions of instructions every second and nearly never make a mistake over years of operation.

Large computer programs may take teams of programmers years to write and the probability of the entire program having been written completely in the manner intended is unlikely. Errors in computer programs are

called bugs. Sometimes bugs are benign and do not affect the usefulness of the program, in other cases they might cause the program to completely fail (crash), in yet other cases there may be subtle problems. Sometimes otherwise benign bugs may be used for malicious intent, creating a security vulnerability.

Since computers merely execute the instructions they are given, bugs are nearly always the result of programmer error or an oversight made in the program's design. However, computer hardware may fail or may itself have a fundamental problem that produces unexpected results in certain situations.

In most computers, individual instructions are stored as machine code with each instruction being given a unique number (its operation code or opcode for short). The command to add two numbers together would have one opcode, the command to multiply them would have a different opcode and so on. The simplest computers are able to perform any of a handful of different instructions, the more complex computers have several hundred to choose from — each with a unique numerical code.

Since the computer's memory is able to store numbers, it can also store the instruction codes. This leads to the important fact that entire programs (which are just lists of instructions) can be represented as lists of numbers and can themselves be manipulated inside the computer just as if they were numeric data. The fundamental concept of storing programs in the computer's memory alongside the data they operate on is the crux of the von Neumann, or stored program, architecture. In some cases, a computer might store some or all of its program in memory that is kept separate from the data it operates on.

## Levels of Programming Languages

While it is possible to write computer programs as long lists of numbers (machine language)
 and this technique was used with many early computers, it is extremely
tedious to do so in practice, especially for complicated programs.
Instead, each basic instruction can be given a short name that is indicative of its function and easy to remember — a mnemonic such as ADD, SUB, MULT or JUMP. These mnemonics are collectively known as a computer's assembly language. Converting programs written in assembly language into something the computer can actually understand (machine language) is usually done by a computer program called an assembler. Machine languages and the assembly languages that represent them (collectively termed low-level programming languages) tend to be unique to a particular type of computer.

Though considerably easier than in machine language, writing long programs in assembly language is often difficult and error-prone. Therefore, most complicated programs are written in more abstract, high-level programming languages that are able to express the needs of the programmer more conveniently (and thereby help reduce programmer error). High level languages are usually "compiled" into machine language (or sometimes into assembly language and then into machine language) using another computer program called a compiler. High level languages are sometimes [[interpret[[ed rather than compiled. Interpreted languages are translated into machine code on the fly by another program called an interpreter.

Since high level languages are more abstract than assembly language, it is possible to use different compilers to translate the same high level language program into the machine language of many different types of computers. This is part of the means by which software like video games may be made available for different computer architectures, such as personal computers and various video game consoles.

The task of developing large software systems is an immense intellectual effort. It has proven, historically, to be very difficult to produce software with an acceptably high reliability, on a predictable schedule and budget. The academic and professional discipline of software engineering concentrates specifically on this problem.

## Definitions

### Australia

A “computer program” is defined as “instructions (whether with or without related information) intended, either directly or after one or both of the following:

a) conversion to another language, code or notation;
b) reproduction in a different material form to cause a device having digital information processing capabilities to perform a particular function.”
### Brazil

A “computer program” is “the expression of a set of organized instructions in natural or codified language contained in any medium of fixation, to be used in automatic machines that process information, peripheral apparatus, instruments and equipment based on digital techniques, and to make them function in accordance with and for determined purposes.”

### Canada

A “computer program" is defined as “a set of instructions or statements, expressed fixed embodied or stored in any manner, that is to be used directly or indirectly in a computer in order to bring abut a specific result.”

### Colombia

“A ‘computer program’ shall mean the expression of an organized assembly of instructions in natural or coded language, irrespective of the media in which it may be stored, the purpose of which is to have a machine capable of processing information indicate, accomplish or obtain a specific function, task or result.”

### Indonesia

A “computer program” is defined as “a program specially developed to enable a computer to perform certain functions.”

### Japan

A“program” is defined as “an expression of combined instructions given to a computer so as to make it function and obtain a certain result.”

### Korea

A “program” is defined as “a set of instructions and commands, to be used directly or indirectly in a computer in order to bring about a certain result, which are expressed in a creative way.”

### Malawi

“Computer software” means “a set of instructions, whether expressed
in words or in schematic or other form, which is capable, when
incorporated in a machine-readable medium, of causing an electronic or other device having information processing capabilities to indicate, perform or achieve a particular function, task or result.”

### Malaysia

A “computer programme” is defined as “an expression, in any language, code or notation, of a set of instructions (whether with or without related information) intended to cause a device having a digital information processing compilation to perform a particular function
either directly or after either or both of the following: a conversion to another language, code or notation; reproduction in a different material form.”

### Nigeria

A “computer programme” is defined as a “set of statements or instructions to be used directly or indirectly in a computer in order to bring about a certain result.”

### Singapore

A “computer program” is defined as “instructions (whether with or without related information) intended, either directly or after one or both of the following:

a) conversion to another language, code or notation;
b) reproduction in a different material form to cause a device having digital information processing capabilities to perform a particular function.”
### Spain

A “computer programme” is “any sequence of instructions or indications intended for direct or indirect use on a computer system in order to carry out a function or a task or for obtaining a specific result.”

### Taiwan

A “computer program” “shall mean a set of instructions composed for the purpose of directly or indirectly causing a computer to bring about a certain result.”

### Trinidad and Tobago

“Computer software” means “a set of instructions, whether expressed in words or in schematic or other form, which is capable, when incorporated in a machine-readable medium, of causing an electronic or other device having information processing capabilities to indicate, perform or achieve a particular function, task or result.”

### United States

A **computer program** is

 “The way an algorithm is represented in a form understandable by a computer.”