Skip to content Skip to sidebar Skip to footer

What Other Areas of Art Has or Could Coding Make an Entrance Into?

Process to create executable figurer programs

Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), commonly past designing/building an executable calculator program. Programming involves tasks such as analysis, generating algorithms, profiling algorithms' accurateness and resource consumption, and the implementation of algorithms (unremarkably in a called programming linguistic communication, ordinarily referred to as coding).[1] [2] The source code of a program is written in i or more languages that are intelligible to programmers, rather than motorcar code, which is directly executed past the central processing unit. The purpose of programming is to observe a sequence of instructions that will automate the performance of a job (which can be as complex as an operating system) on a calculator, often for solving a given problem. Proficient programming thus usually requires expertise in several unlike subjects, including cognition 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 every bit the automobile lawmaking of estimator programs. These might exist considered role of the programming procedure, but often the term software evolution is used for this larger process with the term programming, implementation, or coding reserved for the bodily writing of code. Software engineering combines technology techniques with software development practices. Reverse engineering is a related procedure used by designers, analysts, and programmers to understand and re-create/re-implement.[3]

History [edit]

Programmable devices accept existed for centuries. As early equally the 9th century, a programmable music sequencer was invented by the Persian Banu Musa brothers, who described an automatic mechanical flute player in the Book of Ingenious Devices.[4] [five] In 1206, the Arab engineer Al-Jazari invented a programmable pulsate car where a musical mechanical automaton could be made to play different rhythms and drum patterns, via pegs and cams.[6] [seven] In 1801, the Jacquard loom could produce entirely different weaves past changing the "program" – a series of pasteboard cards with holes punched in them.

Lawmaking-breaking algorithms accept besides existed for centuries. In the 9th century, the Arab mathematician Al-Kindi described a cryptographic algorithm for deciphering encrypted lawmaking, in A Manuscript on Deciphering Cryptographic Messages. He gave the first description of cryptanalysis by frequency analysis, the earliest lawmaking-breaking algorithm.[8]

The first computer programme is mostly dated to 1843, when mathematician Ada Lovelace published an algorithm to summate a sequence of Bernoulli numbers, intended to be carried out past Charles Babbage's Analytical Engine.[9]

Information and instructions were once stored on external punched cards, which were kept in lodge and arranged in program decks.

In the 1880s Herman Hollerith invented the concept of storing data in machine-readable form.[ten] After a command panel (plug board) added to his 1906 Type I Tabulator allowed it to be programmed for different jobs, and past the late 1940s, unit tape equipment such as the IBM 602 and IBM 604, were programmed past control panels in a similar way, as were the first electronic computers. Withal, with the concept of the stored-program computer introduced in 1949, both programs and data were stored and manipulated in the same manner in calculator retentivity.[eleven]

Machine language [edit]

Machine code was the language of early on programs, written in the pedagogy set of the item machine, often in binary notation. Assembly languages were shortly adult that let the programmer specify instruction in a text format (e.m., ADD X, TOTAL), with abbreviations for each operation lawmaking and meaningful names for specifying addresses. However, considering an assembly language is little more than a dissimilar notation for a machine language, ii machines with dissimilar instruction sets too accept different assembly languages.

Compiler languages [edit]

High-level languages made the process of developing a plan simpler and more understandable, and less leap to the underlying hardware. The first compiler related tool, the A-0 Organization, was developed in 1952[12] past Grace Hopper, who likewise coined the term 'compiler'.[thirteen] [14] FORTRAN, the first widely used high-level language to have a functional implementation, came out in 1957,[xv] and many other languages were before long developed—in detail, COBOL aimed at commercial data processing, and Lisp for estimator inquiry.

These compiled languages allow the programmer to write programs in terms that are syntactically richer, and more capable of abstracting the code, making information technology easy to target for varying machine didactics sets via compilation declarations and heuristics. Compilers harnessed the power of computers to make programming easier[xv] by allowing programmers to specify calculations past entering a formula using infix notation.

Source code entry [edit]

Programs were mostly entered using punched cards or paper tape. By the late 1960s, data storage devices and computer terminals became cheap enough that programs could be created past typing directly into the computers. Text editors were also developed that allowed changes and corrections to be made much more hands than with punched cards.

Modern programming [edit]

Quality requirements [edit]

Whatsoever the approach to evolution may be, the final program must satisfy some primal backdrop. The following backdrop are amongst the most important:[xvi] [17]

  • Reliability: how often the results of a programme are correct. This depends on conceptual definiteness of algorithms and minimization of programming mistakes, such as mistakes in resource management (e.one thousand., buffer overflows and race weather condition) and logic errors (such every bit division by zero or off-by-1 errors).
  • Robustness: how well a program anticipates bug due to errors (not bugs). This includes situations such as incorrect, inappropriate or decadent data, unavailability of needed resources such as retentivity, operating system services, and network connections, user error, and unexpected power outages.
  • Usability: the ergonomics of a program: the ease with which a person tin can use the programme for its intended purpose or in some cases fifty-fifty unanticipated purposes. Such issues can make or break its success fifty-fifty regardless of other issues. This involves a wide range of textual, graphical, and sometimes hardware elements that improve the clarity, intuitiveness, cohesiveness and completeness of a program's user interface.
  • Portability: the range of calculator hardware and operating system platforms on which the source code of a plan tin can exist compiled/interpreted and run. This depends on differences in the programming facilities provided by the unlike platforms, including hardware and operating arrangement resource, expected behavior of the hardware and operating system, and availability of platform-specific compilers (and sometimes libraries) for the language of the source code.
  • Maintainability: the ease with which a program can exist modified past its present or future developers in order to make improvements or to customize, set up bugs and security holes, or adjust it to new environments. Good practices[18] during initial development make the difference in this regard. This quality may not exist directly apparent to the cease user simply information technology can significantly touch on the fate of a program over the long term.
  • Efficiency/performance: Mensurate of system resources a plan consumes (processor time, memory infinite, irksome devices such as disks, network bandwidth and to some extent even user interaction): the less, the meliorate. This too includes careful management of resource, for instance cleaning upwardly temporary files and eliminating memory leaks. This is often discussed under the shadow of a chosen programming language. Although the language certainly affects operation, even slower languages, such as Python, can execute programs instantly from a homo perspective. Speed, resource usage, and operation are important for programs that bottleneck the system, but efficient use of programmer fourth dimension is also important and is related to cost: more than hardware may be cheaper.

Readability of source code [edit]

In calculator programming, readability refers to the ease with which a human reader tin comprehend the purpose, control flow, and operation of source code. It affects the aspects of quality above, including portability, usability and most chiefly maintainability.

Readability is of import because programmers spend the majority of their fourth dimension reading, trying to empathize, reusing and modifying existing source lawmaking, rather than writing new source lawmaking. Unreadable code often leads to bugs, inefficiencies, and duplicated lawmaking. A report establish that a few simple readability transformations fabricated code shorter and drastically reduced the time to understand information technology.[19]

Post-obit a consequent programming mode ofttimes helps readability. Still, readability is more just programming style. Many factors, having piffling or nothing to do with the ability of the computer to efficiently compile and execute the lawmaking, contribute to readability.[20] Some of these factors include:

  • Different indent styles (whitespace)
  • Comments
  • Decomposition
  • Naming conventions for objects (such as variables, classes, functions, procedures, etc.)

The presentation aspects of this (such as indents, line breaks, color highlighting, and then on) are often handled by the source code editor, just the content aspects reflect the developer's talent and skills.

Various visual programming languages take also been developed with the intent to resolve readability concerns by adopting non-traditional approaches to code structure and brandish. Integrated evolution environments (I.D.Es) aim to integrate all such help. Techniques like Code refactoring tin raise readability.

Algorithmic complexity [edit]

The academic field and the engineering exercise of computer programming are both largely concerned with discovering and implementing the most efficient algorithms for a given class of issues. For this purpose, algorithms are classified into orders using and so-called Large O annotation, which expresses resource use, such every bit execution time or retentivity consumption, in terms of the size of an input. Expert programmers are familiar with a variety of well-established algorithms and their respective complexities and use this cognition to choose algorithms that are best suited to the circumstances.

Chess algorithms as an instance [edit]

"Programming a Computer for Playing Chess" was a 1950 paper that evaluated a "minimax" algorithm that is part of the history of algorithmic complexity; a form on IBM'due south Deep Blue (chess computer) is role of the computer science curriculum at Stanford University.[21]

Methodologies [edit]

The first step in about formal software development processes is requirements analysis, followed by testing to determine value modeling, implementation, and failure elimination (debugging). There exist a lot of unlike approaches for each of those tasks. I approach pop for requirements analysis is Use Case assay. Many programmers utilise forms of Active software development where the various stages of formal software development are more integrated together into brusque cycles that take a few weeks rather than years. There are many approaches to the Software development process.

Popular modeling techniques include Object-Oriented Analysis and Pattern (OOAD) and Model-Driven Compages (MDA). The Unified Modeling Language (UML) is a notation used for both the OOAD and MDA.

A similar technique used for database design is Entity-Relationship Modeling (ER Modeling).

Implementation techniques include imperative languages (object-oriented or procedural), functional languages, and logic languages.

Measuring language usage [edit]

It is very difficult to make up one's mind what are the almost pop modern programming languages. Methods of measuring programming linguistic communication popularity include: counting the number of chore advertisements that mention the language,[22] the number of books sold and courses instruction the language (this overestimates the importance of newer languages), and estimates of the number of existing lines of code written in the linguistic communication (this underestimates the number of users of business languages such as COBOL).

Some languages are very pop for item kinds of applications, while some languages are regularly used to write many different kinds of applications. For instance, COBOL is still potent in corporate information centers[23] oft on large mainframe computers, Fortran in applied science applications, scripting languages in Web development, and C in embedded software. Many applications apply a mix of several languages in their structure and use. New languages are generally designed around the syntax of a prior language with new functionality added, (for instance C++ adds object-orientation to C, and Java adds memory management and bytecode to C++, but as a result, loses efficiency and the ability for low-level manipulation).

Debugging [edit]

The first known actual bug causing a problem in a estimator was a moth, trapped inside a Harvard mainframe, recorded in a log book entry dated September 9, 1947.[24] "Bug" was already a common term for a software defect when this bug was found.

Debugging is a very important task in the software development process since having defects in a program can have significant consequences for its users. Some languages are more prone to some kinds of faults because their specification does not require compilers to perform equally much checking as other languages. Use of a static lawmaking analysis tool can help detect some possible problems. Normally the first step in debugging is to attempt to reproduce the problem. This can be a non-petty task, for example as with parallel processes or some unusual software bugs. As well, specific user surroundings and usage history tin can make it hard to reproduce the problem.

After the issues is reproduced, the input of the programme may demand to be simplified to make information technology easier to debug. For example, when a problems in a compiler can make information technology crash when parsing some big source file, a simplification of the examination example that results in just few lines from the original source file can be sufficient to reproduce the same crash. Trial-and-fault/divide-and-conquer is needed: the programmer will try to remove some parts of the original test case and bank check if the problem still exists. When debugging the trouble in a GUI, the programmer can try to skip some user interaction from the original problem description and check if remaining actions are sufficient for bugs to appear. Scripting and breakpointing is also part of this process.

Debugging is ofttimes done with IDEs. Standalone debuggers like GDB are too used, and these oft provide less of a visual environment, unremarkably using a command line. Some text editors such as Emacs allow GDB to be invoked through them, to provide a visual environs.

Programming languages [edit]

Different programming languages support different styles of programming (called programming paradigms). The choice of language used is field of study to many considerations, such every bit visitor policy, suitability to task, availability of 3rd-party packages, or private preference. Ideally, the programming linguistic communication best suited for the task at hand will exist selected. Merchandise-offs from this ideal involve finding plenty programmers who know the linguistic communication to build a squad, the availability of compilers for that language, and the efficiency with which programs written in a given language execute. Languages form an approximate spectrum from "low-level" to "high-level"; "low-level" languages are typically more machine-oriented and faster to execute, whereas "high-level" languages are more abstract and easier to use but execute less quickly. It is commonly easier to code in "loftier-level" languages than in "low-level" ones.

Allen Downey, in his book How To Retrieve Like A Computer Scientist, writes:

The details expect different in different languages, but a few bones instructions appear in but nearly every language:
  • Input: Gather data from the keyboard, a file, or some other device.
  • Output: Display data on the screen or send data to a file or other device.
  • Arithmetic: Perform basic arithmetical operations similar addition and multiplication.
  • Provisional Execution: Check for sure atmospheric condition and execute the appropriate sequence of statements.
  • Repetition: Perform some activity repeatedly, usually with some variation.

Many computer languages provide a mechanism to telephone call functions provided by shared libraries. Provided the functions in a library follow the appropriate run-time conventions (e.g., method of passing arguments), and so these functions may be written in any other linguistic communication.

Programmers [edit]

Computer programmers are those who write calculator software. Their jobs usually involve:

  • Prototyping
  • Coding
  • Debugging
  • Documentation
  • Integration
  • Maintenance
  • Requirements analysis
  • Software architecture
  • Software testing
  • Specification

Although programming has been presented in the media every bit a somewhat mathematical subject field, some enquiry shows that good programmers have potent skills in natural human being languages, and that learning to code is similar to learning a strange language.[25] [ ameliorate source needed ]

See also [edit]

  • ACCU
  • Association for Computing Machinery
  • Figurer networking
  • How-do-you-do world programme
  • Establishment of Analysts and Programmers
  • National Coding Week
  • Object hierarchy
  • System programming
  • Calculator programming in the punched card era
  • The Art of Estimator Programming
  • Women in computing
  • Timeline of women in calculating

References [edit]

  1. ^ Bebbington, Shaun (2014). "What is coding". Tumblr. Archived from the original on April 29, 2020. Retrieved March 3, 2014.
  2. ^ Bebbington, Shaun (2014). "What is programming". Tumblr. Archived from the original on April 29, 2020. Retrieved March iii, 2014.
  3. ^ Eliam, Eldad (2005). Reversing: Secrets of Reverse Engineering science. Wiley. p. 3. ISBN978-0-7645-7481-8.
  4. ^ Koetsier, Teun (2001), "On the prehistory of programmable machines: musical automata, looms, calculators", Mechanism and Machine Theory, Elsevier, 36 (five): 589–603, doi:ten.1016/S0094-114X(01)00005-2.
  5. ^ Kapur, Ajay; Carnegie, Dale; Murphy, Jim; Long, Jason (2017). "Loudspeakers Optional: A history of non-loudspeaker-based electroacoustic music". Organised Audio. Cambridge University Press. 22 (2): 195–205. doi:10.1017/S1355771817000103. ISSN 1355-7718.
  6. ^ Fowler, Charles B. (October 1967). "The Museum of Music: A History of Mechanical Instruments". Music Educators Periodical. 54 (2): 45–49. doi:10.2307/3391092. JSTOR 3391092. S2CID 190524140.
  7. ^ Noel Sharkey (2007), A 13th Century Programmable Robot, Academy of Sheffield
  8. ^ Dooley, John F. (2013). A Brief History of Cryptology and Cryptographic Algorithms. Springer Science & Business organization Media. pp. 12–3. ISBN9783319016283.
  9. ^ Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage and the Creation of the 1843 'notes'". IEEE Annals of the History of Computing. 25 (4): 16. doi:10.1109/MAHC.2003.1253887.
  10. ^ da Cruz, Frank (March 10, 2020). "Columbia Academy Computing History – Herman Hollerith". Columbia Academy. Columbia.edu. Archived from the original on April 29, 2020. Retrieved Apr 25, 2010.
  11. ^ "Memory & Storage | Timeline of Estimator History | Reckoner History Museum". www.computerhistory.org . Retrieved June 3, 2021.
  12. ^ Ridgway, Richard (1952). "Compiling routines". Proceeding ACM '52 Proceedings of the 1952 ACM National Coming together (Toronto). ACM '52: ane–five. doi:10.1145/800259.808980. ISBN9781450379250. S2CID 14878552.
  13. ^ Maurice 5. Wilkes. 1968. Computers And so and Now. Journal of the Association for Calculating Mechanism, xv(1):1–7, January. p. three (a comment in brackets added by editor), "(I practise not think that the term compiler was then [1953] in general use, although it had in fact been introduced by Grace Hopper.)"
  14. ^ [1] The World'southward Get-go COBOL Compilers Archived 13 Oct 2011 at the Wayback Machine
  15. ^ a b Bergstein, Brian (March 20, 2007). "Fortran creator John Backus dies". NBC News. Archived from the original on Apr 29, 2020. Retrieved April 25, 2010.
  16. ^ "NIST To Develop Cloud Roadmap". InformationWeek. November five, 2010. Calculating initiative seeks to remove barriers to deject adoption in security, interoperability, portability and reliability.
  17. ^ "What is it based on". ComputerWorld. April ix, 1984. p. 13. Is it based on ... Reliability Portability. Compatibility
  18. ^ "Programming 101: Tips to get a proficient programmer - Wisdom Geek". Wisdom Geek. May 19, 2016. Retrieved May 23, 2016.
  19. ^ Elshoff, James Fifty.; Marcotty, Michael (1982). "Improving computer plan readability to aid modification". Communications of the ACM. 25 (8): 512–521. doi:ten.1145/358589.358596. S2CID 30026641.
  20. ^ Multiple (wiki). "Readability". Docforge. Archived from the original on April 29, 2020. Retrieved January 30, 2010.
  21. ^ Piech, Chris. "Deep Blue". In 1950, Claude Shannon published ... "Programming a Computer for Playing Chess", ... "minimax" algorithm
  22. ^ Enticknap, Nicholas (September 11, 2007). "SSL/Computer Weekly IT salary survey: finance boom drives It job growth".
  23. ^ Mitchell, Robert (May 21, 2012). "The Cobol Brain Drain". Calculator World. Retrieved May 9, 2015.
  24. ^ "Photograph courtesy Naval Surface Warfare Center, Dahlgren, Virginia, from National Geographic Sept. 1947". July fifteen, 2020.
  25. ^ Prat, Chantel S.; Madhyastha, Tara G.; Mottarella, Malayka J.; Kuo, Chu-Hsuan (March 2, 2020). "Relating Tongue Aptitude to Private Differences in Learning Programming Languages". Scientific Reports. 10 (1): 3817. Bibcode:2020NatSR..10.3817P. doi:10.1038/s41598-020-60661-viii. ISSN 2045-2322. PMC7051953. PMID 32123206.

Sources [edit]

  • Ceruzzi, Paul Due east. (1998). History of Computing . Cambridge, Massachusetts: MIT Printing. ISBN9780262032551 – via EBSCOhost.
  • Evans, Claire 50. (2018). Broad Band: The Untold Story of the Women Who Made the Cyberspace. New York: Portfolio/Penguin. ISBN9780735211759.
  • Gürer, Denise (1995). "Pioneering Women in Estimator Science" (PDF). Communications of the ACM. 38 (1): 45–54. doi:10.1145/204865.204875. S2CID 6626310.
  • Smith, Erika E. (2013). "Recognizing a Collective Inheritance through the History of Women in Computing". CLCWeb: Comparative Literature & Culture: A WWWeb Periodical. fifteen (1): 1–9 – via EBSCOhost.

Further reading [edit]

  • A.K. Hartmann, Practical Guide to Computer Simulations, Singapore: World Scientific (2009)
  • A. Hunt, D. Thomas, and W. Cunningham, The Pragmatic Programmer. From Journeyman to Master, Amsterdam: Addison-Wesley Longman (1999)
  • Brian Westward. Kernighan, The Practice of Programming, Pearson (1999)
  • Weinberg, Gerald G., The Psychology of Calculator Programming, New York: Van Nostrand Reinhold (1971)
  • Edsger W. Dijkstra, A Discipline of Programming, Prentice-Hall (1976)
  • O.-J. Dahl, E.Due west.Dijkstra, C.A.R. Hoare, Structured Programming, Academic Press (1972)
  • David Gries, The Science of Programming, Springer-Verlag (1981)

External links [edit]

larsonduad1986.blogspot.com

Source: https://en.wikipedia.org/wiki/Computer_programming

Post a Comment for "What Other Areas of Art Has or Could Coding Make an Entrance Into?"