Computer programming: Difference between revisions

Content deleted Content added
Learning to program: removed {{See also}}
Undid revision 1305143863 by 2409:40E4:1093:6A79:4197:77B:EB10:F20D (talk) unexplained removal of content
 
(9 intermediate revisions by 3 users not shown)
Line 3:
{{Use American English|date=November 2020}}
{{Software development process}}
'''Computer programming''' or '''coding''' is the composition of sequences of instructions, called [[computer program|programs]], that [[computer]]s can follow to perform tasks.<ref>{{cite web|url=http://yearofcodes.tumblr.com/what-is-coding|title=What is coding|last=Bebbington|first=Shaun|year=2014|website=Tumblr|url-status=live|archive-url=https://web.archive.org/web/20200429195646/https://yearofcodes.tumblr.com/what-is-coding|archive-date=2020-04-29|access-date=2014-03-03}}</ref><ref>{{cite web|url=http://yearofcodes.tumblr.com/what-is-programming|title=What is programming|last=Bebbington|first=Shaun|year=2014|website=Tumblr|url-status=live|archive-url=https://web.archive.org/web/20200429195958/https://yearofcodes.tumblr.com/what-is-programming|archive-date=2020-04-29|access-date=2014-03-03}}</ref> It involves designing and implementing [[algorithm]]s, step-by-step specifications of procedures, by writing [[source code|code]] in one or more [[programming language]]s. Programmers[[Programmer]]s typically use [[high-level programming language]]s that are more easily intelligible to humans than [[machine code]], which is directly executed by the [[central processing unit]]. Proficient programming usually requires expertise in several different subjects, including knowledge of the [[Domain (software engineering)|application ___domain]], details of programming languages and generic code [[library (computing)|libraries]], specialized algorithms, and [[Logic#Formal logic|formal logic]].
 
Auxiliary tasks accompanying and related to programming include [[Requirements analysis|analyzing requirements]], [[Software testing|testing]], [[debugging]] (investigating and fixing problems), implementation of [[Build automation|build systems]], and management of derived [[Artifact (software development)|artifacts]], such as programs' [[machine code]]. While these are sometimes considered programming, often the term ''[[software development]]'' is used for this larger overall process – with the terms ''programming'', ''implementation'', and ''coding'' reserved for the writing and editing of code per se. Sometimes software development is known as ''[[software engineering]]'', especially when it employs [[formal methods]] or follows an [[engineering design process]].
Line 115:
 
==Learning to program==
{{also|Computing education}}
Learning to program has a long history related to professional standards and practices, academic initiatives and curriculum, and commercial books and materials for students, self-taught learners, hobbyists, and others who desire to create or customize software for personal use. Since the 1960s, learning to program has taken on the characteristics of a ''popular movement'', with the rise of academic disciplines, inspirational leaders, collective identities, and strategies to grow the movement and make institutionalize change.<ref>{{cite book |last1=Halvorson |first1=Michael J. |title=Code Nation: Personal Computing and the Learn to Program Movement in America |date=2020 |publisher=ACM Books |___location=New York, NY |pages=3–6}}</ref> Through these social ideals and educational agendas, learning to code has become important not just for scientists and engineers, but for millions of citizens who have come to believe that creating software is beneficial to society and its members.
 
Line 142 ⟶ 143:
 
===Digital learning / online resources===
{{See also|Online integrated development environment|l1=List of online integrated development environments|List of educational software#Computer science|l2=List of educational software for computer programming}}
Between 2000 and 2010, computer book and magazine publishers declined significantly as providers of programming instruction, as programmers moved to Internet resources to expand their access to information. This shift brought forward new digital products and mechanisms to learn programming skills. During the transition, digital books from publishers transferred information that had traditionally been delivered in print to new and expanding audiences.<ref>{{cite book |last1=Halvorson |first1=Michael J. |title=Code Nation: Personal Computing and the Learn to Program Movement in America |date=2020 |publisher=ACM Books |___location=New York, NY |pages=365–368}}</ref>
 
Important Internet resources for learning to code included blogs, wikis, videos, online databases, subscription sites, and custom websites focused on coding skills. New commercial resources included [[YouTube]] videos, Lynda.com tutorials (later [[LinkedIn Learning]]), [[Khan Academy]], [[Codecademy]], [[GitHub]], [[W3Schools]], [[Codewars]], and numerous [[Coding bootcamp|coding bootcamps]].
 
Most software development systems and [[game engine|game engines]] included rich online help resources, including [[integrated development environment|integrated development environments]] (IDEs), [[context-sensitive help]], [[API|APIs]], and other digital resources. Commercial [[software development kit|software development kits]] (SDKs) also provided a collection of software development tools and documentation in one installable package.
Line 174 ⟶ 176:
*[[Competitive programming]]
*[[List of software programming journals]]
*[[List of free and open-source software packages#Programming language support|List of free and open-source software packages for programming]]
*[[Programming best practices]]
*[[Systems programming]]