Jump to content

Computer programming: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
transplanted demographics from Computer Science
Made the picture caption more specific
Line 1: Line 1:
[[Image:Html-source-code.png|thumb|300px|Computer code ([[HTML]] with [[JavaScript]]) in a tool that uses colors to help the developer see the function of each piece of code.]]
[[Image:Html-source-code.png|thumb|300px|[[HTML]] and [[JavaScript]] in an [[Integrated Development Enviroment|IDE]] that uses [[color coding]] to highlight various [[keyword]]s and help the developer see the function of each piece of code.]]


'''Computer programming''' (often simply '''programming''') is the craft of implementing one or more interrelated abstract [[algorithm]]s using a particular [[programming language]] to produce a concrete [[computer program]]. Programming has elements of [[art]], [[science]], [[mathematics]], and [[engineering]].
'''Computer programming''' (often simply '''programming''') is the craft of implementing one or more interrelated abstract [[algorithm]]s using a particular [[programming language]] to produce a concrete [[computer program]]. Programming has elements of [[art]], [[science]], [[mathematics]], and [[engineering]].

Revision as of 20:58, 21 January 2006

HTML and JavaScript in an IDE that uses color coding to highlight various keywords and help the developer see the function of each piece of code.

Computer programming (often simply programming) is the craft of implementing one or more interrelated abstract algorithms using a particular programming language to produce a concrete computer program. Programming has elements of art, science, mathematics, and engineering.

Programming languages

A programmer writes source code in a particular programming language.

Different programming languages support different styles of programming (called programming paradigms). Part of the art of programming is selecting one of the programming languages best suited for the task at hand. Different programming languages require different levels of detail to be handled by the programmer when implementing algorithms, often resulting in a compromise between ease of use and performance (a trade-off between "programmer time" and "computer time").

The only programming language a computer can directly execute is machine language (sometimes called "machine code"). Originally all programmers worked out every detail of the machine code, but this is hardly ever done anymore. Instead, programmers write source code, and a computer (running a compiler, an interpreter or occasionally an assembler) translates it through one or more translation steps to fill in all the details, before the final machine code is executed on the target computer. Even when complete low-level control of the target computer is required, programmers write assembly language, whose instructions are mnemonic one-to-one transcriptions of the corresponding machine language instructions.

In some languages, an interpretable p-code binary (or byte-code) is generated, rather than machine language. Bytecode is used in the popular Java programming language by Sun Microsystems as well as Microsoft's recent .NET family of languages and Visual Basic previous to the .NET version.

Software development

Software is a mass noun for computer programs and data. The accompanying documentation and software license are also considered an essential part of the software, even though they don't involve any actual coding.

Creating software involves:

  • Requirements Analysis
  • Specification
  • Design and Architecture
  • Coding
  • Compilation
  • Testing
  • Documentation
  • Integration
  • Maintenance

Demographics

In the U.S.:

  • Nearly half of all computer programmers held a bachelor’s degree in 2002; about 1 in 5 held a graduate degree. [1]
  • Education requirements range from a 2-year degree to a graduate degree. [2]
  • TechBookReport - reviews of books on all aspects of computer programming - including programming language tutorials, best practices, methodologies etc