A computer program is an executable program that performs a particular computation (generally achieves a specific computing result). Analysis, generation, profiling algorithms’ accuracy, resource usage, and implementing algorithms (usually in a chosen programming language). A Computer Programmer source code is written in one or more languages that programmers understand rather than CPU-executable machine code. In programming, instructions are used to automate a task’s performance on a computer (which can be as complex as an operating system). Formal logic, domain knowledge, and specialized algorithms are all required for proficient programming.
Programming is associated with testing, debugging, source code maintenance, building systems, and managing derived artifacts, such as machine code. Software development is often used for this more extensive process, with programming, implementation, or coding reserved for writing Code. Engineering and software development are combined in software engineering. Designers, analysts, and programmers use reverse engineering to understand and reimplement existing programs.
It has been centuries since programmable devices have existed. The Persian Banu Musa brothers invented the automated mechanical flute player from Ingenious Devices as early as the 9th century. Using pegs and cams, Arab engineer Al-Jazari created a programmable drum machine in 1206, which played different rhythms and drum patterns. Changing the “program” – pasteboard cards punched with holes – produced other weaves.
For centuries, code-breaking algorithms have existed. In A Manuscript on Deciphering Cryptographic Messages, cryptographic algorithms were described by Al-Kindi, an Arab mathematician.
He described the first code-breaking algorithm by frequency analysis. The mathematician Ada Lovelace published an algorithm that could be used to calculate Bernoulli numbers in 1843, to be used by Charles Babbage’s Analytical Engine. Program decks were once used to organize and store data and instructions on external punched cards.
The language of machines:
The language of early programs was machine code, which writes in the machine’s instruction set in the binary notation of the instruction set of the device. Assembly languages were developed that let programmers specify instructions in A text format (e.g., ADD X, TOTAL), with abbreviations and meaningful names and addresses. Because an assembly language is nothing more than a different notation for a machine language, additional instructions also have other assembly languages.
Languages for compilers:
As a result of high-level languages, creating a program became much more straightforward, understandable, and less dependent upon the underlying hardware. Grace Hopper, who coined the term ‘compiler,’ developed the first compiler-related tool in 1952. In 1957, FORTRAN became the first high-level language with a functional implementation, and many other languages followed, including COBOL for commercial data processing and Lisp for computer research.
Programmers can write syntactically richer and more abstract programs using compiled languages, making it easier to target varying machine instruction sets via compilation declarations and heuristics. Using infix notation, compilers made programming easier by letting programmers specify calculations through formulas.
Most programs were enter using punched cards or paper tape. Programs could run on inexpensive data storage devices and computer terminals written directly into computers by the late 1960s. The development of text editors made making changes and corrections much easier than punched cards.
A modern approach:
Requirements for quality
The final development program must satisfy some fundamental properties regardless of what the approach to development may be. In terms of properties, the following are some of the most important:
A program’s reliability is define as the frequency with which the program’s results are correct. Algorithm conceptual correctness and minimization of programming errors, Resource management errors (e.g., buffer overflows and race conditions), and logic errors (e.g., division by zero errors) are critical.
A program’s robustness is determine by how well it anticipates problems that may arise due to errors (not bugs). Among these factors are incorrect, inappropriate, or corrupt data, the inability to access Memory, operating system services, network connections, user error, and unexpected power outages.
A user can use a product using a program for its intended or unanticipated purposes. Several factors can make or break a company’s success, regardless of the other factors. An interface design entails a wide range of textual, graphical, and sometimes hardware elements that work together to enhance the clarity, intuitiveness, cohesiveness, and completeness of a user’s experience with a program.
In platforms for computer hardware and operating systems, a program’s source code can compiled/interpreted. Different platforms provide different programming facilities, including hardware and managing system resources, expected behavior of the hardware and operating system, and platform-specific compilers (and libraries) for each language.
It refers to the ease with which a program can modified by its developers to make improvements, customize it, fix bugs and security holes, or adapt it to new environments. A good development process during the initial stages of the project makes a massive difference in this area. Even though the end user may have yet to be aware of this quality, it can significantly impact a program’s life.
Source code readability:
A source code’s readability refers to how easily a human can understand its purpose, control flow, and operation. Maintainability affects the quality aspects above, including portability and usability.
Programmers spend more time reading, understanding, reusing, and modifying existing source code than writing new Code. Unreadable Code is often prone to bugs, inefficiencies, and duplicated Code. The results of a study found that the reading of the Code could be drastically reduce by performing a few simple readability transformations.
Following a consistent programming style can make your Code more readable. There is more to readability than just programming style, however. Many factors have little to do with the computer’s ability to compile and execute the Code efficiently, which contributes to how readable the Code is. Among these factors are the following:
- A variety of indent styles (whitespace) are available
- A few comments:
- The decomposition process
- Using naming conventions for objects (variables, classes, functions, procedures, etc.)
Source code editors usually handle the presentation aspects of this (such as indents, line breaks, and color highlighting), but the content comes from the programmer.
Complexity of algorithms
Academics and engineers focus on Identifying and implementing efficient algorithms. This is accomplish by expressing resource use, such as execution time or memory consumption, as a function of input size. An expert programmer knows a variety of well-established algorithms and their respective complexities and uses this knowledge to choose the best algorithms.
The language of programming:
Different programming languages support different programming paradigms. Choosing a language is influence by many factors, such as company policy, task suitability, availability of third-party packages, or individual preference. Languages should chosen according to the task at hand. It involves finding enough programmers who know the language to build a team, finding compilers for the language, and the efficiency of programs written in that language. “Low-level” languages tend to be more machine-oriented and faster to execute, whereas “high-level” languages are more abstract and easier to use but perform less quickly. “High-level” languages are usually easier to code than “low-level” ones. Software development requires programming languages. They are the building blocks from the simplest to the most sophisticated applications.
The How To Think Like A Computer Scientist:
Languages vary in detail, but a few basic instructions are universal:
- Gather data from the keyboard, a file, or another device.
- Display data on the screen or send it to a file.
- Addition and multiplication are basic arithmetic operations.
- If certain conditions execute the appropriate statement sequence.
- Performing the same action repeatedly.
Many computer languages call shared libraries as long as they follow the appropriate runtime conventions (e.g., passing arguments).