outline of computer programming the following outline is provided as an overview of and topical guide to computer programming computer programming process that leads from an original formulation of a computing problem to executable computer programs programming involves activities such as analysis developing understanding generating algorithms verification of requirements of algorithms including their correctness and resources consumption and implementation commonly referred to as coding of algorithms in a target programming language source code is written in one or more programming languages the purpose of programming is to find a sequence of instructions that will automate performing a specific task or solving a given problem history history of computer science history of computing hardware history of computing hardware 1960spresent history of programming languages timeline of programming languages computer programming in the punched card era operating systems timeline platforms further information computing platform computer computer hardware analog computer analytical engine digital computer vacuum tube computer list of vacuum tube computers transistor computer list of transistorized computers mainframe minicomputer microcomputer home computers ibm pc compatible personal computer desktop computer laptop computer mobile computer personal digital assistant pda smartphone tablet computer wearable computer server supercomputer virtual machine hardware virtualization runtime system paradigms further information programming paradigm agentoriented aspectoriented automatabased datadriven declarative as opposed to imperative programming constraint constraint logic concurrent constraint logic dataflow flowbased fbp reactive functional functional logic purely functional logic abductive logic answer set concurrent logic functional logic inductive logic eventdriven timedriven expressionoriented featureoriented functionlevel as opposed to valuelevel programming generic imperative as opposed to declarative programming literate procedural inductive programming languageoriented lop natural language programming intentional nonstructured as opposed to structured array nondeterministic processoriented roleoriented semanticoriented sop structured as opposed to nonstructured programming blockstructured modular concurrent computing relativistic programming objectoriented oop classbased concurrent oop prototypebased subjectoriented tacit valuelevel as opposed to functionlevel programming probabilistic concept writing programs pseudocode methodology further information programming style array programming enduser development metaprogramming automatic programming reflection attributeoriented programming aop homoiconicity template metaprogramming policybased design serviceoriented architecture serviceoriented modeling recursion separation of concerns threaded coding algorithms further information algorithm list of algorithms list of algorithm general topics list of importantpublications in theoretical computer science algorithms algorithm characterizations introduction to algorithms theory of computation computational complexity theory analysis of algorithms empirical algorithmics big o notation algorithmic efficiency algorithmic information theory algorithmic probability algorithmically random sequence search algorithm sorting algorithm merge algorithm string algorithms greedy algorithm reduction sequential algorithm parallel algorithm distributed algorithm deterministic algorithm randomized algorithm quantum algorithm programming languages programming language formal constructed language designed to communicate instructions to a machine particularly a computer programming languages can be used to create programs to control the behavior of a machine or to express algorithms generational list of programming languages list of programming languages by type alphabetical list of programming languages compiled language interpreted language scripting language comparison of programming languages programming language dialect programming language theory formal semantics of programming languages assembly language macro types of programming languages further information programming paradigm array programming language aspectoriented programming language classbased programming language concatenative programming language concurrent programming language datastructured language dataflow programming language declarative programming language domainspecific language dynamic programming language esoteric programming language eventdriven programming language extensible programming language functional programming language highlevel programming language imperative programming language interpreted language logic programming language lowlevel programming language machine programming language metaprogramming programming language multiparadigm programming language nonenglishbased programming language objectbased language objectoriented programming language offside rule programming language pipeline programming language procedural programming language prototypebased programming language reflective programming language rulebased programming language synchronous programming language very highlevel programming language visual programming language popular languages the top 20 most popular programming languages as of march2016 java c c c python php visual basic net javascript perl ruby delphiobject pascal assembly visual basic swift objectivec r groovy matlab plsql d anatomy of a programming language syntax lexical grammar semicolons values types operators program structures variables expressions statements keywords and reserved words control structures subroutines also known as functions anonymous functions loops for loops while loops conditionals ifthen ifthenelse case and switch statements control flow data structures objects arrays regular expressions comparisons of programming languages programming language comparisons general comparison basic syntax basic instructions exception handling enumerated types anonymous functions conditional expressions functional instructions arrays associative arrays string operations string functions list comprehension objectoriented programming objectoriented constructors while loops for loops evaluation strategy list of hello world programs languages with dependent types comparison of type systems comparisons of individual languages java and net platforms algol 58s influence on algol 60 algol 60 comparisons with other languages comparison of algol 68 and c algol 68 comparisons with other languages compatibility of c and c comparison of pascal and borland delphi comparison of object pascal and c comparison of pascal and c comparison of java and c comparison of c and java comparison of c and visual basic net comparison of visual basic and visual basic net compilation further information compiler programmer source code parsing compilation preprocessing translation assembly linking compiler optimization compilation error software further information computer software computer program hello world a common form of example program for learning programmers application software software suite database management system programming software programming tool text editor source code editor integrated development environment ide assembler compiler interpreter linker debugger system software components instruction library application programming interface api software development software development software development process debugging human error software development methodology agile software development extreme programming software engineering software engineering implementation execution software architecture software reliability software quality software testing software maintenance software optimization software brittleness outline of computers outline of computing outline of computer science outline of artificial intelligence outline of cryptography outline of the internet outline of google outline of software types of software outline of free software outline of search engines outline of software development outline of software engineering outline of computer programming programming languages outline of c outline of perl computer programmingat wikipedias sister projects definitions from wiktionary media from wikimedia commons news from wikinews quotations from wikiquote texts from wikisource textbooks from wikibooks resources from wikiversity how to think like a computer scientist by jeffrey elkner allen b downey and chris meyers vteoutlinesgeneral reference culture and the arts geography and places health and fitness history and events mathematics and logic natural and physical sciences people and self philosophy and thinking religion and belief systems society and social sciences technology and applied sciences 