Modern information technologies are far from machine codes. Modern system programming is not about processor instructions and not about controlling its operation. The history of programming languages is the development of meaning and syntax, but the conceptual foundations of computer science in our age are no different from those of the past: data and operators. All the same constructions of the cycle, conditions and choice.
System programming is accumulated experience in a modern retrospective: the software and hardware component of an information system must work stably and continuously, and a proper individual approach must be provided to each user.
Programming and systems
A programming language is syntax and semantics as the developer understands them. Assembler is a unique programming language, a simple sequential pipeline of commands. Say its syntax is determined by the processor andthe logic of the motherboard is possible, but it is easier to determine: system programming and an assembler program are the beginning of the beginning.
Systems have many definitions, but in the most primitive sense that is hard to disprove: a system is data and its functionality as a whole. A system can be composed of elements and be part of a higher order structure.
Systems programming is not about making systems (literally). In the last century, system programmers focused more on the processor, programming in machine languages. In this century, they pay more attention to the user of information systems and their applications.
Applied programming is the solution of real problems, which do not include software and hardware controls. In this context, systems programming is the predecessor and companion of systems administration.
Creating systems equally applies to all programming options, among which there are many areas: hypertext, parsing, recognition, data migration, virtualization, search and analytics, … Building a model and programming it is a continuous process of systematizing knowledge on the problem being solved. a task in which it is almost always possible to distinguish between system and application components.
Prestige and responsibility
A characteristic feature of programming in the last century - system and application programming are, first of all, different languages. There was a gradation into lower and upper levels. Fortran, Cobol, or PL/1 was fundamentally different from the code of operating systems, compilers, and interpreters. But even in high-level languages it was allowed to write machine code (C/C++, Pascal).
The fact that high-level languages allowed assembler inserts says that not everything was foreseen by the compiler (interpreter) developer. The fact that modern languages have the ability to create and execute a command while the program is running is a legacy of the past on a higher level.
The prestige of the profession of system administrator or system programmer was determined by the requirement for the stability of the computer, operating system or application. Liability was "minimal". Today, the volume of data and the functionality of application software are so extensive that the level of responsibility has objectively transformed to a much higher level.
The center of gravity has shifted to the area of distributed information processing through web resources. Conventional programming (C/C++, C, Pascal, …) has retained its value. There are also local issues. However, the bulk of the tasks "left" to the Internet and system programming moved to the next level: installing servers, setting up networks and communication protocols, optimizing hosting, maintaining virtual machines.
On the one hand, the scope of system administration has expanded, on the other hand, without writing special control and management scripts, many software and hardware systems will not work, and in case of failure, they willit will be impossible to recover.
The functionality of information systems has significantly increased, the amount of data to be processed has increased, a dozen virtual machines can now work on one computer at the same time. The price of a system programmer's mistake is the life of a company that uses an information system.
System programming languages in the modern world are an abstract concept. It used to be simple: assembler or machine code language. High-level language: syntactic constructions in natural language words. Today, two or three bootloader commands can be considered a system programming language, and not every system administrator will be able to correctly configure the installation process of a complex hardware and software system.
Example. Installing Debian & Proxmox VE is not just a checklist of specific steps. This is a real need to "subprogram" something in a particular situation. First of all, these are network configuration protocols, and then point by point, depending on the purpose of each virtual machine, its functionality and rules of interaction.
A special category of system languages are customization files. In fact, these are ordinary text files. As a rule, you need to correctly write two or three positions in one construction, but there may be several of the first, and many options for the second.
A qualified system programmer will set up the classic triad: Apache, PHP and MySQL in 30 minutes. An ordinary programmer will look for errors and will not be able to getworking result for the whole day. The price of knowledge determines the time spent, but many of them come with experience. Externally, this is not programming, but each configuration file controls a specific product at the system level.
In fact, system software is now a specific area of system tasks. How the specific task will be solved is not important. It does not matter that the program does not need to be written, but the task must be solved, the information system must work stably and continuously on a specific system foundation.
System programmer style
To know and be able is not enough, you need to make everything clear. Commenting in the field of systems programming has changed significantly. It used to be considered the norm of things to explain what a particular command does in one or two words. Today, one command can be explained with a page of dense text.
The developer of a modern operating system or application software management tool provides numerous comments and guidance. In a particular situation, this will not be enough. In rare cases, a system product such as Proxmox VE will fail on the first try and not disrupt the network. In most cases, you will have to look for additional information and understand related issues of system programming and management: file system, communication protocols, monitoring, logging, security policies, etc.
Qualified systemthe programmer (administrator) will without fail record his actions, describe the commands used and monitor all events. The ideal work style of a specialist is when a colleague can replace him at any time.
System Programming and Users
Before, system programming was interested in the processor, today the user is in its competence. User management is system programming of a high order, significant responsibility, and prestigious in terms of pay.
A specialist who manages access to information resources is a system programmer "equipped" with knowledge of psychology, sociology and legal aspects of a particular company. There is no assembler, no machine code. There are several commands and the ability to write special access scripts.
An error in the user's script - violation of the security perimeter, intruder penetration and system crash or information theft.
Working with a processor is much simpler: it simply executes a sequence of instructions. It is difficult to work with a person: he can change the algorithm of his behavior, act in several directions and distribute his actions over time.
System and applied
Modern information system is rarely written from scratch. Most often, a system programmer (administrator) is given an indication of what needs to be installed and what should be the result.
As a result of the operation of the systemprogrammer (administrator), a software and technical structure is obtained in which applications (application software) and users can work.
A well-constructed building and a well-tuned service are the ideal solution for any nuances in companies of different profiles. It does not matter that you do not have to write commands in assembler, it is important that the written commands provide stable and continuous operation.