<BackChoosing a programming language
3/17/2023We have already figured out the directions of development: frontend, backend and fullback. If you want to refresh your memory, then here is the link.
In this article we will talk about choosing a programming language to study. But before moving on to programming languages, let's get acquainted with a few definitions.
A compiled programming language is a programming language in which the source code of a program is converted into machine code for direct execution by the central processor.
An interpreted programming language is a programming language in which the source code of a program is not converted into machine code, but is executed using a special interpreter program.
A multi—paradigm programming language is a programming language that supports several programming paradigms, that is, different ways of describing and solving problems. For example, such a language can combine elements of imperative, functional, logical and object-oriented programming. I will devote a separate article to this topic.
Cross-platform applications are applications that are written in the same programming language, but they work on several operating systems and devices at once.
Levels of programming languages
I distinguish three levels of programming languages:
1. Low. These are programming languages that are similar in syntax to the processor's machine code, but mnemonic notation is used instead of binary instructions.
Programs written in languages of this level need to be adapted to different processor architectures. Each architecture has its own set of instructions.
Such languages are designed for direct interaction with the hardware of the device.
2. Borderline. Such languages allow flexible control of computer resources. They have an intuitive syntax, but require knowledge from the developer in the field of OS synchronization primitives, memory devices and other system components.
3. High. These programming languages hide the details of the computer from the developer and allow you to write code in a more natural and understandable way. For example, a programmer does not need to worry about how memory is allocated and released during the operation of the program.
Programming languages
In this section I will look at the main programming languages and their capabilities. The division of languages will be according to the levels that I described above.
High-level programming languages
Python
It is an interpreted programming language. It is possible to write programs on it both in a procedural style and according to the principles of OOP. The syntax of programs is close to natural language, so it is easy to learn, especially if you are familiar with English.
Initially, this language did not assume strict typing, but in recent versions it was added, but it is not mandatory.
This language is widely used in scientific computing, machine learning, data analysis, web development and other fields.
Java
It is a compiled programming language with strict static typing.
It is based on the concept of object-oriented programming (OOP).
It supports multithreading and cross-platform solutions can be written on it.
This language is widely used for the development of enterprise applications, web services and other IT solutions.
JavaScript
It is a multi-paradigm programming language that is used to create dynamic and interactive web pages, mobile applications and other software products.
It supports object-oriented, imperative and functional programming styles, as well as the ability to work with various application objects.
This language can work not only on the client side, but also on the server side. An environment was created for this Node.js .
Swift
It is a multi-paradigm compiled general-purpose programming language.
Created by Apple to develop native iOS and macOS applications.
Kotlin
It is a modern programming language that was created by JetBrains as an alternative to Java.
It runs on the Java Virtual Machine (JVM) platform and is compatible with Java code.
Kotlin has a number of advantages, such as static typing, object orientation, functional programming and multi-paradigm support.
This language is widely used for Android application development, as well as for web development, scientific computing and other fields.
C#
It is a compiled general-purpose programming language.
He is a part of .NET Framework, which provides a rich set of libraries and tools for developing applications of various types: web applications, mobile applications, games, scientific computing, etc
Borderline programming languages
C
It is a compiled general-purpose programming language with weak static data typing.
It allows you to work directly with computer memory and manage hardware resources.
The language has a simple and concise syntax that is easy to read and write.
It is widely used for the development of operating systems, device drivers, system software and embedded systems.
C++
It is a compiled, statically typed general-purpose programming language.
It was designed as an extension of the C language with the addition of object-oriented and generalized programming capabilities.
C++ is widely used to develop high-performance and reliable applications such as operating systems, databases, games, graphical interfaces and control systems.
It supports many programming paradigms, such as procedural, object, functional, and metaprogramming.
It has a rich standard library that provides many useful components.
Rust
It is a multi-paradigm compiled general-purpose programming language that combines the capabilities of functional and procedural approaches with an object system based on types.
It is suitable for system programming, in particular, it is considered as a promising language for developing operating system kernels.
You can create highly efficient web applications on it.
Rust is comparable in speed and capabilities to C++/C, but it provides greater security when working with memory, which is provided by the ownership and borrowing mechanisms built into the language.
Low-level programming languages
There are several low-level languages, but, in my opinion, Assembler is the leader among them.
Assembly language is a low—level imperative language that is used to represent processor commands in a human-readable form.
It allows the programmer to access directly the registers, memory and I/O ports of the machine.
This language has advantages in the speed and efficiency of program execution, but also has disadvantages in the complexity of writing and debugging code, as well as limited portability between different processor architectures.
There are 2 areas in which you just have to know this language:
1. development of operating systems;
2. Reverse application development (Reverse Engineering).
Choosing a language
The choice of language depends on your desires.
If you want to enter the world of AI, then choose Python. It is simple, a huge number of libraries have been written for it, both for machine learning and data analysis, and for full-fledged web development.
If you want to develop web and cross-platform mobile applications, then choose JavaScript. Here you will make a backend on Node.js, and a web application on React.js, for which a large number of frameworks have been developed. When you master React.js, then you can switch to ReactNative and develop cross-platform mobile applications.
If you want a universal language, then take a closer look at Rust. It is a young, but very rapidly developing programming language. He has an active community and excellent documentation. He absorbed all the advantages of C, C++ and other languages, but saved programmers from unnecessary headaches. At the moment, Rust has a weak frontend. Gui libraries are under active development. But in the near future, this situation will change and stable GUI Frameworks written in Rust will appear.
If you want to develop games, then start by learning C++ or C#, in which the main game engines are written.
Conclusion
It is important to understand that a programming language is a tool that is chosen for solving a specific task. You can start by learning one language, and after 5 years you will use several languages at once. This is absolutely normal. No need to get hung up on a specific language.
PS: If you need a mentor on the way to becoming a programmer, then I am always at your service.
Lates
Composition of the IT development team
7/6/2023In this article we will look at the composition of the IT solution development team
About graphs, simply.
12/18/2022In this article, we will begin our acquaintance with graphs, get acquainted with the breadth-first search algorithm (BFS) and implement the graph in the Rust programming language.
What is the difference between outsourcing development and outstaffing an IT employee for development?
10/17/2022In this article we will understand what outsourcing and outstaff development are.
UI/UX design: The creation process
4/9/2023In this article we will talk about the main steps in the process of creating UI/UX design.
UI/UX design: Introduction
3/29/2023In this article, we begin to get acquainted with UI / UX design. This is the most important stage in the development of any visual application interface.
Agile, Six Sigma and No Principle
9/14/2023In the last article, we started diving into the development process. The first stage of this process is planning. At this stage, the project manager, together with other team members, forms a pool of tasks in accordance with some kind of project management methodology.
Meet the Pentest
8/22/2022We are beginning to consider one of the main methods of assessing the security of computer systems and networks for potential vulnerabilities - penetration testing
Reducing the implementation period of MVP
12/8/2022Let's figure out the timing of the implementation of the MVP.
Testing an MVP concept
1/9/2023We will figure out how not to waste the budget on MVP development in vain
Application Architecture Design: Introduction
3/6/2023In this article, we will talk about the process of creating the architecture of an IT solution.
The terms of references: Structure
2/17/2023In this publication we will consider the universal structure of ToR
Incorrect estimation of the cost of IT contractor services
9/10/2022Today we will talk about the incorrect assessment of the cost of developing IT solutions. This pain is one of the main ones for enterprises and startups, including IT contractors themselves.
Introduction to Design Patterns in Software Development
10/3/2022In this article, we will begin to dive into the world of optimizing application architecture using design patterns.
Choosing the direction of development for programming training
2/5/2023In this article, you will find out what areas of IT development there are, how they differ and in which they pay more
OSI Model Levels
9/6/2022In this article, we will take a closer look at each of the levels of the OSI model
Main types of application architecture
3/7/2023In this publication, we will look at what application architectures are
10 ways to use Rust Cargo
2/11/2023In this short article I have collected 10 ways to use the build system and package manager of the Rust programming language
Documenting code in the Rust programming language
8/24/2022In this article, we will look at how documentation takes place in Rust and consider a very useful opportunity - writing tests through documentation.
Introduction to the OSI model
8/19/2022In this article we begin to consider the fundamental model of network interaction - OSI
CSS animation ripple
8/31/2022A simple example of how to implement ripple animation using HTML and CSS
What is the purpose of an ER-diagram in the development process?
4/28/2023Let's discuss in general terms what an ER diagram is and what it is used for.
From concept to MVP
11/18/2022In this article, you will learn, by example, how to move from a concept to an MVP without unnecessary complications in the functionality of the product
What are UML diagrams used for?
5/23/2023In this article we will talk about what UML diagrams are, what they are and where they are used
Introduction to writing the terms of references
1/31/2023The Terms of Reference are an important part of the development process. In this article, we will begin to dive into this issue.
Introduction to software development
10/10/2022Today, most companies are faced with IT development and often do not get what they want. In this article, we begin to dive into the process of creating IT solutions.
From idea to concept
10/27/2022In this publication, we will talk about how the idea differs from the concept. Let's do this with an example of a specific goal
Weighted graphs
12/26/2022In this article, we will get acquainted with weighted graphs, Dijkstra's algorithm, and its implementation in the Rust programming language.
Development Process: Planning
8/16/2023In this publication, we will begin to consider the development process. Let's start with the planning process.