02.09.2020

Types and types of modern programming languages. Choosing the type of programming What are the types of programming differences


What encoders are most in demand in our country?

If you tell an ordinary person that you work as a programmer, then in response you can hear one of the following remarks:

  • “I need to reinstall Windows. All my life I have been waiting for someone who will do this for me. And then let's go fix the toaster. ”;
  • "O! You can help me with the VBA lab! ”;
  • “How much can you make a website for my mom’s store?”;
  • "Yah! Boring and stupid profession. I just tried to figure it out with 1C ... ".

If in response to say that you have never made websites and labs in VBA, and you see Windows only in terrible dreams, then the interlocutor may be genuinely surprised and a sincere doubt about your professional suitability will be reflected on his face. Some developers get weak under this gaze and go to prove that they can do something. Because of such suckers in the mind of the layman, the word "programmer" is synonymous with the concept of "free computer help".

After all, many people do not know what programmers are actually doing and judge this by the skills of their relatives / acquaintances. But different representatives of the specialty do completely different things and you cannot speak for everyone.

This article will talk about main specializations of programmers that are most in demand on Russian market... For each type, organizations will be indicated where it can be found most often and the technologies with which it needs to be able to work.

The article will only mention the main knowledge, which is indispensable in an adequate team, where the programmer is not forced to tighten the screws, draw designs and post articles on the site.

1. Front-end web developer

If we go to the site and there are buttons that change location and color when you hover over them with the mouse, then this is the work of the front-end developer. He writes all JavaScript code that runs without reloading the client-side page.

Where does it work?

What is he doing?

Designs the dynamics of the user interface. If the company does not have a layout designer, then it also translates PSD templates into HTML code.

Technologies

  • HTML and UI frameworks (Bootstrap, Foundation, Pure);
  • CSS and preprocessors (SASS / LESS);
  • JavaScript + frameworks / libraries in this language (Jquery, ReactJS, AngularJS, BackboneJS);
  • Utilities for building projects (Grunt, Gulp, Bower).

2. Back-end developer

The person on whose shoulders lies the main burden of developing a web project. It kind of builds the foundation on which the front-end developer attaches "decorative elements".

Where does it work?

In serious companies engaged in the creation of websites and web applications. Separation of front-end and back-end is one of the signs of presence in the company a certain level development culture.

What is he doing?

Develops the "core" of the site or web application: the code executed on the server and the database architecture.

Technologies

One of the following languages ​​and frameworks / libraries for it:

  • Ruby;
  • Python;
  • Java;
  • JavaScript.
  • MySQl / PostgreSQL / NoSQL databases.

3. Full-stack web developer

A person who can make a website of any complexity "inside and out."

Where does it work?

Most often in startups and small web design studios. Large companies have a team alongside front-end and back-end developers to oversee and coordinate their work.

What is he doing?

Websites and web applications. Performs the work of the front-end and back-end developer at the same time.

See lists of the previous two types.

4. Game developer

A very broad concept that includes at least three large categories: desktop game developer, developer mobile games and MMORG developer.

Where does it work?

In game studios.

What is he doing?

Develops games.

What technologies does he want to know?

  • C # / C ++ / Java;
  • Open GL or DirectX;
  • One of the game engines (Unity, Unreal Engine, Torque and others).

5. Android application developer

Where does it work?

What is he doing?

Develops applications for the Android operating system.

What technologies does he want to know?

  • Java;
  • Android SDK;
  • OpenGL;
  • Android Studio.

6. iOS application developer

Where does it work?

In mobile app studios, startups or large companies that have decided to make for themselves mobile app on their own.

What is he doing?

Develops applications for the iOS operating system.

Technologies

  • Objective-C;
  • Xcode;
  • OpenGL;
  • Cocoa Touch;
  • CoreData;
  • CoreGraphics.

7. Programmer 1C

Many developers do not consider the language built into 1C to be a programming language, and the people who write in it are programmers. They have their own reasons for this. Nevertheless, there are a lot of people who call themselves 1C programmers and there are a lot of vacancies for them.

Where does it work?

In any company actively conducting economic activity. Often not included in the main staff, but comes a couple of times a month or less.

What is he doing?

Writes programs for automating document flow in a company.

Technologies

  • "1C: Trade Management";
  • "1c accounting";
  • "1C: Salary and Personnel";
  • T-SQL.

8. Software engineer

If you can become one of the 7 previous types by taking courses or by self-education, then only technical universities graduate software engineers. Often, these positions are occupied by people over forty years of age who were educated during the Soviet era.

Where does it work?

In production or in a scientific institution.

What is he doing?

Develops programs for managing the most different devices: from a bakery oven to a robot vacuum cleaner.

Technologies

One of the following languages:

  • Java;
  • Delphi (lived, alive and will live!);
  • Assembler.

A huge baggage of technical knowledge corresponding to the industry in which a person works.

If you look at the advertisements for hiring programmers on Russian sites, then 90% of them will fit these seven types. In the West, the job market is somewhat more diverse. Anyone interested can go to Odesk and see what kind of work is offered there.

With sadness I notice that 14-year-old Pakistanis demand from 500 rubles per hour for html-layout.

And to judge which languages ​​are now the most popular in the world can be according to the Tiobe Index. This rating is based on the number of requests in search engines with the mention of different programming languages.

P.S. Finally, a life anecdote on the topic.

If drivers were hired in the same way as programmers:
Vacancy: driver.
Requirements: professional skills in driving cars and trucks, trolleybuses, trams, subway and funicular trains, excavators and bulldozers, special vehicles on tracked chassis, infantry fighting vehicles and modern light / medium tanks in service with the CIS and NATO countries. Rally and extreme driving skills are required. Experience in driving Formula 1 cars is a plus. Knowledge and experience in the repair of piston and rotary engines, automatic and manual transmissions, ignition systems, on-board computers, anti-lock braking systems, navigation systems and car audio systems from leading manufacturers. Experience in bodywork and painting works is welcome. Applicants must have certificates from Mercedes, BMW, General Motors, as well as certificates of participation in major international competitions no more than two years ago.
Salary: determined based on the results of the interview.

OS. Types, requirements, features, functions ,.

Operating system is a whole complex of control programs that act as an interface between the components of a personal computer and ensure the efficient use of computer resources. The operating system provides interconnection and control of all computer elements and executable programs. The operating system is loaded when the computer is turned on. The next generation operating systems include: Windows XP, Windows NT, Windows Vista, OS \ 2, UNIX, LUNIX operating systems.

Each operating system has its own command language that allows the user to perform certain actions. The operating system is complex and takes up a lot of memory. Usually in random access memory The computer contains only those parts of the operating system with which the processors are currently working. Programs and their parts in RAM are called TSRs. The rest of the programs are located in external memory... Drivers interact with the operating system - these are software complexes that perform interface and control functions. Applications of any operating system are programs designed to run under that operating system.

OS Requirements:

Compatibility - means that the operating system must include the means to run applications (programs) prepared for others operating systems,

Portability - means providing the ability to port the operating system from one hardware platform to another,

Reliability and fault tolerance - involves protecting the operating system from internal and external errors, failures and failures,

Security - means that the operating system should contain means of protecting the resources of some users from others, should ensure the convenience of making subsequent changes and additions,

Performance - means that the operating system must be fast enough.

The Windows operating system is a modern and most advanced operating system, it is stored in the external memory of the computer and is constantly being developed and improved.

Features of Windows OS:

Windowed graphical interface. The window is the main field program actions,

Multitasking - the system provides work with several tasks at the same time with the possible switching between them,

The ability to use long file and directory names - up to 255 characters,

Convenient and flexible help system,

Standard - menu system, reporting form, processing operations for service and application programs,

Stability in work, security of the program and information,

Complete independence from hardware, etc.

OS functions:

Providing several types of interface (interface command line, graphical interface),

Ensuring interaction between the user and the software and hardware of the computer,

Ensuring interaction between different species software,

Support for the functioning of local computer network without special software,

Providing access to essential Internet services,

Availability of means of protection against unauthorized access, viewing and making changes, ensuring the alternating work of different users on one PC while maintaining the personal settings of the working environment of each user and others /

Programming languages. Concept, classification, types.

Even with tens of thousands of ready-made programs, users may need something that existing off-the-shelf programs do not do or do wrong. In these cases, for the development of new programs, programming systems are used - a set of programs used to automate the program development process.

Programming languages- these are languages ​​for writing computer programs. The first programming languages ​​were languages Algol, Fortran, Basic, Pascal.

Currently existing programming languages ​​can be classified into four groups. It should be noted that there is no single language that would satisfy all areas of programming and the interests of all programmers. In each case, the developer of the program has to choose such a language, based on the level of qualifications and their own preferences.

Low-level programming languages are machine languages ​​- (assembly languages). The commands of this language are more understandable to the processor than to the user. Assembly language is designed to write system programs, is used mainly by system programmers who develop programs that control the operation of a computer and automate the process of developing application programs. Since the commands of different processors are different, when using such languages, you have to learn them for each specific processor. For the same reasons, the written programs cannot be transferred to another processor. Currently, low-level languages ​​are used to write mainly device drivers and components of operating systems for a personal computer and supercomputers. Such languages ​​include assembly languages ​​and to some extent C.

Programming languages high level are non-machine languages. They are more understandable to us than to a computer, but this does not prevent us from creating almost everything on them. existing programs for personal computers... High-level programming languages ​​make the work of programmers easier, they contain important functions that would require thousands of lines of code to execute in a low-level language. The most popular language is considered Basic, developed in the 60s as a teaching language. Known versions of Visual BASIC 7 and Qbasic. The Pascal programming language was developed by N. Virt - the founder of many ideas of modern programming in the late 70s. Pascal has the ability to create large projects, but it is also successfully used to write small programs for everyday use. Delphi 2006 is by far the most powerful visual environment for Pascal.

High-level languages ​​include:

Procedural Oriented Languages... They are a means of recording procedures or information processing algorithms for a certain class of tasks. These include languages ​​- Fortran, BASIC, C (C), Pascal.

Problem-oriented languages. They appeared in connection with the constant expansion of the field of application of computer technology and the emergence of whole classes of new problems for which it was necessary to find a solution. These include languages ​​- Lisp, Prolog.

Object oriented languages... They represent the development of versions of procedural and problem languages. Programming using the languages ​​of this group is simpler and more intuitive. The languages ​​of this group include - Visual Basic, Delphi, Visual Fortran, C ++ (C), Prolog.

For the operating room Windows systems Microsoft created the Visual Basic family of languages ​​in the mid-1990s as basic software development tools for personal computers.

Web programming languages

The development of the Internet has led to the emergence of qualitatively new languages ​​- programming languages ​​for networks : HTML, Java, Javascript, PHP, Perl

The main and very first language of this class is HTML, a language for formatting a document. The vast majority of Internet languages ​​obey and depend on its rules.

Java language Is a machine-independent programming language for corporate computer networks created by Sun. Javascript language it is a language of hypertext routines (scripts) that can be executed by browsers on any personal computers that can connect to local or global network COMPUTER. This language is recognized as the international standard for scripting language for all browsers. PHP- the most popular interpreted Internet language. Many websites are based on it. It is quite simple, it allows you to create good site management systems. Perl... In terms of power, it is significantly superior to languages ​​such as C. It introduces many functions for working with strings, arrays, all kinds of data conversion tools.

Database programming languages

Relational databases are collections of tables made up of rows and columns. Each table has a fixed number of columns, specified in its description, and a variable number of rows, which can change when working with the database. Database programming languages ​​differ from other programming languages ​​in their task - to manage databases. Structured language SQL queries is the unified language for working with databases. This language is understood by any database management system (DBMS), but besides this, many DBMS also have their own unique language, focused specifically on this DBMS, and not portable to others. The main types of requests in SQL language are: creating tables and databases, retrieving information from a database, editing information in a database, administering databases.

Separation of languages ​​into universal and specialized.
All popular languages ​​can be divided into universal and specialized. Universal languages ​​are used to solve different problems. Specialized languages ​​are designed to solve problems of one, at most several, types of tasks (for example, working with databases, web programming or writing scripts for administering operating systems).

Types of specialized languages:

1.Database languages:
a) Languages ​​included in industrial client-server database management systems (DBMS) (PL-SQL in Oracle DBMS, Transact-SQL in Microsoft SQL Server)
b) Languages ​​that are part of other types of DBMS (Visual FoxPro, Microsoft Access, Paradox, etc.)

2. Languages ​​for web programming.
a) Languages ​​running on the server hosting the website (PHP, Perl, VBScript)
b) Languages ​​running on the client browser (viewer) JavaScript, JScript, VBScript

3.Languages ​​for mathematical calculations

4.Languages ​​for work automation certain software products... (VBA in Microsoft Office)

6.Specialized languages ​​of other kinds.
Common languages ​​include Visual C ++, Visual C ++. Net, Visual C # .Net, Visual J # .Net, Java, Delphi, Borland C #, Borland C ++ Builder.
Although most of the specialized languages ​​are derived from generic languages ​​such as PHP, Perl and JavaScript are derived from C ++, VBScript and VBA are derived from Visual Basic, the differences between specialized and universal languages ​​are significant.
Specialized languages ​​are most often used to write not very large programs, therefore they are optimized for writing programs quickly and reducing the size of the source code, and to a lesser extent for reducing errors, using object-oriented programming and dividing the code into modules. And universal languages, as a rule, are used to create large and very large projects, therefore everything is done in them to reduce the number of errors and facilitate the design of programs, facilitate the development of large programs.

The main difference between special languages ​​and universal languages:
1) They have less object-oriented means and means of accessing COM +, DCOM, CORBA technologies, to API functions of operating systems;
2) Less multi-threaded programming and distributed programming;
3) Used only dynamic types(i.e. the type of a variable is determined depending on its value, and not when the variable is declared), not static. The only exception is that in version 9 of Visual FoxPro, static variable types can also be used.
The structure of modern programming languages.
Universal languages ​​(and languages ​​derived from them)
I) Derived from the C ++ language
1. Based on C ++:
1.1 Borland C ++, Watcom C ++ (deprecated)
1.2 Microsoft Visual C ++
1.3 Microsoft Visual C ++ .Net
1.4 Borland C ++ Builder
1.5 Borland C ++ Builder .Net
1.6 JavaScript (specialized language for developing pages on the Internet)

2. Java based:
2.1 Java and Java2
2.2 Microsoft Visual J ++
2.3 Microsoft Visual J # .Net
3. Based on C #:
3.1 Microsoft Visual C # .Net
3.2 Borland C # Builder.Net
II) Pascal derivatives
1 Borland Pascal, Turbo Pascal (deprecated)
2 Modula, Oberon, Component Pascal, Active Oberon, Zonnon (currently unpopular)
3 Borland Delphi
4 Borland Delphi .Net
III) Derived from Basic
1 Microsoft Visual Basic
2 Visual Basic for Application
3 VBScript (specialized language for developing pages on the Internet)
4 Microsoft Visual Basic .Net
Specialized languages
I) Programming languages ​​for the Internet:
1. PHP
2. Perl
3. JavaScript
4. VBScript
II) Database programming languages
1. In local and file - server DBMS
1.1 Microsoft Visual FoxPro (In the DBMS of the same name)
1.2 Visual Basic for Application (In DBMS Access)
2. Client - server industrial DBMS
1.1 PL-SQL (In Oracle DBMS)
1.2 Transact - SQL (In Microsoft SQL Server)
Java is developed by Sun and JavaScript is developed by Nescafe, and by and large they are two different languages, but since their syntax is very similar, we will assume that JavaScript language originated from Java. There is also a JavaScript dialect developed by Microsoft and used in Internet Explorer and called Jscript.
Many programmers may say that Java did not descend from C ++ at all, and although it may be so, if you compare their syntax, you will see that their syntax is similar, so they can be considered "relatives".
In Oracle DBMS, in addition to the PL - SQL language, you can also use the Java language.

If we take the syntax of the formation of its constructions as a sign of classification, it can be conditionally divided into the following types:

    procedural,

    functional,

    logical,

    object oriented.

3.1. Procedural (algorithmic) language

A procedural programming language allows the programmer to define each step in the process of solving a problem. The peculiarity of such programming languages ​​is that tasks are broken down into steps and solved step by step. Using a procedural language, the programmer defines language constructs to perform a sequence of algorithmic steps.

Procedural languages ​​are characterized by the following features:

    the need for explicit memory management, in particular, the description of variables;

    low suitability for symbolic calculations;

    lack of a rigorous mathematical foundation;

    high efficiency of the implementation of pa traditional computers.

One of the most important classification features of a procedural language is its level. The level of a programming language is determined by the semantic capacity of its constructions and the degree of its orientation towards the programmer. The more a language is oriented towards a person, the higher its level.

Procedural languages ​​include: assembly language, C, Basic, Pascal.

3.2 Functional (applicative) language

The first such language was LISP.

Expression plays the role of the basic construct in functional (applicative) languages. Expressions include scalar constants, structured objects, functions, function bodies, and function calls.

An applicative programming language includes the following elements:

    classes of constants that functions can manipulate;

    a set of basic functions that a programmer can use without prior declaration and description;

    rules for building new functions from basic ones;

    rules for forming expressions based on function calls.

The listed properties characterize applicative languages ​​as programming languages ​​of a very high level.

3.3 Logical (relational) language

The PROLOG language was created by the French scientist A. Colmeroe in 1973. At present, other languages ​​are also known, but Prolog is the most developed and widespread logical programming language. Logic programming languages ​​are widely used in artificial intelligence systems.

Logic programming languages ​​are characterized by:

    high level;

    strict orientation towards symbolic computation;

    the possibility of inverse calculations, that is, variables in procedures are not divided into input and output;

    possible logical incompleteness, since it is often impossible to express certain logical relationships in the program, and it is also impossible to get all the correct conclusions from the program.

The constructions of the language do not correspond to mathematical formulas, but define the relations between objects and quantities, they state what result is desired by the user, without indicating how to do it.

Logical and functional languages ​​are declarative languages... These languages ​​lack the concept of "operator" ("command").

3.4 Object-oriented language

An object-oriented language creates an environment in the form of many independent objects. Each object behaves like a separate computer, they can be used to solve problems as "black boxes" without delving into the internal mechanisms of their functioning.

Object-oriented programming languages ​​have recently been very popular among programmers, since they allow using the advantages of the object-oriented approach not only at the design and construction stages of software systems, but also at the stages of their implementation, testing and maintenance.

The following methods are used in modern object-oriented (OO) languages: inheritance, encapsulation, polymorphism.

In some object-oriented languages, all class methods are virtual.

Many modern languages ​​are specifically designed to facilitate object-oriented programming. However, it should be noted that it is possible to apply OOP techniques for a non-object-oriented language and vice versa, the use of an object-oriented language does not mean that the code automatically becomes object-oriented.

Some languages ​​(sometimes called "purely object" - Java or Ruby) are entirely built around object means - in them any data is objects, any code is a method of some class, and it is impossible to write a program that does not use objects. Other languages ​​("hybrid") include an OOP subsystem in the originally procedural language. They provide the ability to program without resorting to object tools. Classic examples are C ++ and Delphi (Object Pascal).

Generations of programming languages

The need for programming arose even before programmable computers. It is known that since the 18th century, for example, there have been looms programmed with wooden planks, in which holes were made in the right places.

The development of programming was promoted by the idea of ​​John Von Neumann, published in 1945, in which he described a computer where the program itself is stored in memory along with data.

The first generation programming language is machine code. Machine code consists of instructions that a computer (processor) can execute (as well as data that belongs to those instructions). When programming in machine code, the programmer had to write his program in binary code so that the processor could understand and execute it. In essence, such programming requires a good knowledge and understanding of the hardware, because in the process of programming it is necessary to know what the processor can do, where the input-output devices are located, and also how to communicate with them. and how much time will be spent on this or that operation. Thus, machine code is very tightly coupled with the hardware on which the corresponding program will run. Today, machine code has not disappeared from computers, all actions at a low level (hardware level) still occur in machine code, i.e. Whatever programming language the program is written in, it is ultimately transformed into machine code that the hardware can understand.

Assembly languages ​​are considered second generation languages. In the case of machine code, all programming took place in binary code, and as such, reading and debugging it was very time consuming. When programming in assembly language, instructions are presented to a person in an understandable form. Programming itself is very similar to programming in machine code, because the instructions are the same as in machine code (only in a different form - in the form of words). A program written in assembly language is something like the following:

MOV AL, 19

ADD AL, 4

OUT 2

This piece of code assigns the AL register value 19 (usually the values ​​are represented by numbers in hexadecimal system), adds the number 4 to the value of the AL register and then sends the number 2 to the output. The written program is translated from assembler into machine code and after that the processor can start its execution ...

Assembly languages ​​and machine code are considered low-level languages.

The third generation programming languages ​​are already called high-level languages. Such programming languages ​​are not very hardware related. This means that the programmer no longer has to know very precisely the structure and features of the hardware, but can be relatively independent of the hardware, after which this program is converted with the help of some different tools into a form that the hardware can understand. More specifically, how this is done will be described later.

Most of the known and used programming languages ​​are among the languages ​​of the third generation, for example:

FORTRAN (The IBM Mathematical FORmula TRANslating System) is a programming language developed in the 1950s for mathematical computing and scientific purposes.

COBOL (COmmon Business Oriented Language) - Object-oriented programming language, created in 1959, mainly for writing programs that satisfy business needs.

BASIC (Beginner's All-purpose Symbolic Instruction Code) - A language developed in 1963, which was originally created so that engineers could perform various simulations on computers.

Pascal - A programming language created in the 1970s that was created to teach programming.

C - the name comes from the fact that this language was mainly based on the language called B. It was created for writing operating systems (many UNIX compatible operating systems are written in this language), has long been one of the most popular programming languages.

C ++ is object-oriented C.

Java is a programming language developed based on C ++.

Visual Basic, Delphi, Python, C # are all third generation languages. Many third generation programming languages ​​are younger (newer) than some fourth and fifth generation languages.

Generation IV programming languages ​​are designed to make them easy to learn and use. These languages ​​tend to be non-procedural focused on a single application. An example of a fourth-generation programming language is SQL (Structured Query Language). It says more about “what to do” and less about “how to do it”. Fifth-generation languages ​​have been created for the development of artificial intelligence systems and for solving problems related to this topic.

Basic types of programming languages.

Unlike generations of programming languages, base types describe how a language can be programmed. The main basic types include: procedural, functional and object-oriented programming languages.

In procedural programming languages, the programming language describes the actions and the order of their execution, and also these actions are divided into groups (subroutines). The procedures, in turn, generate code structures that can be reused. In functional programming languages, the entire solution is described using functions. In object-oriented programming languages, the problem is solved using functions and data structures described in classes (English Class). From each class, you can create an object that will have a set of properties and / or methods.

Properties are values ​​that an object can contain and that can affect the behavior of an object. For example, based on the "console window" class, you can create a "console1" object that will be visible to the user as a single console window. This object has some properties (shown, hidden, width, height, text color in the console window, background color, etc.), by changing these properties, in this particular case, you can change appearance object.

In the same example, the object may have some methods, for example, by referring to the corresponding method, you can write some text to the console window, read the text entered by the user into some variable, etc.

The second example is the class "text variable", creating an object "ProstoText" based on this class, creating one text variable, the main property of which is the stored text value, but in fact, this object has more properties (for example, the length of the stored text value ). Also, the text variable must have a certain set of methods (change the characters of the stored value to lowercase, uppercase, remove some characters, etc.).

Therefore, by describing classes and manipulating objects, it is possible to compose very complex programs and perform various actions.

Interpreted and compiled languages

Before a computer can execute a program written in a high-level language, it has to be “translated” into a language that the computer can understand, ie. machine code. This translation process is called translation, and the translator software is called a translator. Translators are divided into two classes: compilers and interpreters.

Compilation is when a program in machine code (called a compiler) converts another program written in a programming language into machine code. After that, the resulting machine code of the program is executed. Examples of compiled languages ​​include C, Fortran, Pascal.

The interpretation is that the program in machine code (interpreter) writes the program file to the internal memory and begins to execute it line by line. An example is the old BASIC language.

Interpreting a program is about 10-200 times slower than executing compiled code. In contrast, debugging (removing errors from the program) of an interpreted program is usually easier than in the case of a translated program. In some suitable cases and with the availability of tools at hand, these differences can be much smaller. A good example serves as Java with code that is optimized and compiled at an intermediate level, which is translated at runtime by the Just-in-Time compiler to match the specific hardware.

In principle, a program written in any language can be both interpreted and compiled.


2021
maccase.ru - Android. Brands. Iron. news