Computer Programming
Computer Programming
accomplishing specific computing results), usually by designing and building executable computer
programs. Programming involves tasks such as analysis, generating algorithms, profiling algorithms'
accuracy and resource consumption, and the implementation of algorithms (usually in a
particular programming language, commonly referred to as coding).[1][2] The source code of a
program is written in one or more languages that are intelligible to programmers, rather
than machine code, which is directly executed by the central processing unit. To produce machine
code, the source code must either be compiled or transpiled. Compiling takes the source code from
a low-level programming language and converts it into machine code. Transpiling on the other hand,
takes the source-code from a high-level programming language and converts it into bytecode. This is
interpreted into machine code. The purpose of programming is to find a sequence of instructions that
will automate the performance of a task (which can be as complex as an operating system) on
a computer, often for solving a given problem. Proficient programming thus usually requires
expertise in several different subjects, including knowledge of the application domain, specialized
algorithms, and formal logic.
Tasks accompanying and related to programming include testing, debugging, source
code maintenance, implementation of build systems, and management of derived artifacts, such as
the machine code of computer programs. However, while these might be considered part of the
programming process, often the term software development is more likely used for this larger overall
process – whereas the terms programming, implementation, and coding tend to be focused on the
actual writing of code. Relatedly, software engineering combines engineering techniques and
principles with software development. Also, those involved with software development may at times
engage in reverse engineering, which is the practice of seeking to understand an existing program
so as to re-implement its function in some way.[3]