From Wikipedia, the free encyclopedia
Programming is the process and art of creating computer programs and/or software using programming languages. Programming combines elements of art, fundamental sciences (primarily mathematics) and engineering.
In the narrow sense of the word, programming is seen as coding – the implementation of one or more interconnected algorithms in some programming language. Programming can also be understood as the development of a logic circuit for an FPGA (Programmable Logic Integrated Circuit (English programmable logic device , PLD) – an electronic component used to create digital integrated circuits), as well as the process of writing information to ROM. In a broader sense, programming is the process of creating programs, that is, developing software.
- Design – development of the algorithm
- Coding and Compiling – writing the source code of a program and converting it into executable code using a compiler
- Testing and debugging – identifying and fixing bugs
Most of the work of a programmer is related to writing source code in one of the programming languages.
Different programming languages support different programming styles (so-called programming paradigms). Part of the art of programming is choosing one of the languages that best suits the given task. Different languages require the programmer to have different levels of attention to detail when implementing an algorithm, often resulting in a trade-off between simplicity and performance (or between programmer time and user time ).
The only language directly executed by the processor is machine language (also called machine code ). Initially, all programmers worked out every little thing in machine code, but now this difficult work is no longer done. Instead, programmers write the source code, and the computer (using a compiler, interpreter, or assembler) translates it, in one or more steps, fine-tuning all the details, into machine code ready to run on the target processor. Even if full low-level control over the system is required, programmers write in assembly language, whose mnemonic instructions are translated one-for-one into the corresponding instructions in the target processor’s machine language.
In some languages, instead of machine code, an interpreted “virtual machine” binary code, also called bytecode ( byte-code ), is generated. This approach is used in Forth, some implementations of Lisp  , Java, Perl, Python, and the Microsoft .NET platform languages.
- computer program
- Programming language
- Software development
- Extreme Programming
- Programming Olympiads
- block diagram
- see Lisp 1.5 in Russia
- Programming in DMOZ
- Program code library ( offline )
- Community of software developers
- Association ISDEF
- Theoretical minimum in computer science: Fundamentals of programming (courses and teaching materials)
- Robert V Sebesta “Basic Concepts of Programming Languages”, 5th edition: Per. from English. – M.: 2001. – 672 pages with illustrations, “Williams”
- Ian Sommerville “Software Engineering”, 6th edition: Per. from English. – M.: 2002. – 624 pages with illustrations, “Williams”
- M.V. Mozgovoy – Entertaining programming
- Ian Graham “Object-Oriented Methods. Principles and Practice”, 3rd edition: Per. from English. – M.: 2004. – 880 pages with illustrations, “Williams”
- Steve McConnel, “Perfect Code” (Steve McConnel. Code Complete . Microsoft Press, 1993)
Design is the process of creating a project, prototype, prototype of an alleged or possible object, state.
In engineering – the development of design, engineering and other technical documentation intended for the implementation of construction, the creation of new types and samples. During the design process, technical and economic calculations, diagrams, graphs, explanatory notes, estimates, calculations and descriptions are carried out.
A project is a set of specified documentation and materials (of a certain property). The project of any object can be individual or typical. When developing individual projects, standard or standard design solutions are widely used.
Executable code = machine code .
Machine code (the terms native code, or platform-oriented code, or native code, or native code are also used – from English native code) – a system of commands (language) of a particular computer (machine language), which is interpreted directly by the microprocessor or firmware of this computing machine.
A translator is a program that takes as input a program in one language (in this case it is called the source language, and the program is called source code), and converts it into a program written in another language (respectively, the target language and object code).
The two most common types of translators are:
· Compilers – output the result as an executable file (in this case, we assume that linking is included in the compilation). This file:
o broadcast once – can be launched independently
o does not require the presence on the machine of the compiler that created it
Interpreters – execute the program after parsing (in this case, the internal representation of the program by the interpreter acts as the object code). It is executed line by line. In this case, the program
o is translated (interpreted) on each run (if the object code is cached, options are possible)
o requires an interpreter and source code on the machine for execution
A compiler is a translator that translates the entire source program into an equivalent resulting program in the language of machine instructions (microprocessor or virtual machine).
Interpreter (programming language) – a program for interpretation, i.e. direct execution of programs (production of calculations prescribed by these programs) from the source code in a certain language.
Assembler (from the English assembler – assembly worker) is a computer program, a compiler of the source code of a program written in assembly language, into a program in machine code.
System programming (or systems programming ) is a kind of activity that consists in working on system software. The main distinguishing feature of system programming compared to application programming is that the latter results in the release of software that offers certain services to users (for example, a word processor). while the result of system programming is the release of software that offers services for interacting with hardware (for example, defragmenting a hard disk), which implies a strong dependence of such programs on hardware. In particular, we highlight the following:
The programmer must take into account the specifics of the hardware and other properties of the system in which the program operates, use these properties, for example, using an algorithm specially optimized for this architecture.
Usually a low-level programming language or a dialect of a programming language is used that
o allows operation in an environment with a limited set of system resources
o works as efficiently as possible and has a minimum delay in completion time
o has little or no runtime library (RTL)
o allows direct control (direct access) to memory and control logic
o allows you to do assembler inserts into the code
· Debugging a program can be difficult if it cannot be run in the debugger due to resource constraints, so computer simulations can be used to solve this problem.
Systems programming differs significantly from applied programming, which usually leads to a programmer specializing in one of them.
Often, a limited set of tools are available for system programming. The use of automatic garbage collection is quite rare and debugging is usually difficult. The runtime library, if available, is often less capable and performs fewer checks. Due to these limitations, the most commonly used for monitoring and recording data are operating systems.
Initially, programmers wrote variant-free in assembly language. Experiments with hardware support in high-level languages (1960s) led to the emergence of such as BLISS and BCPL. However, the C programming language, which played a significant role in the creation of UNIX, gained great popularity and spread everywhere by the 1980s.
Currently (2006) there is some use for embedded C++. The implementation of the main parts in the operating system and when using networks needs system software developers. For example, the implementation of paging (via virtual memory) or device drivers.
The term System Programming is directly related to the term System Programmer . This is a programmer working (creating, debugging, diagnosing, etc.) on system software.