Is it worth learning Python? Explanation of backend and frontend code. How to Learn Machine Learning

Sometimes I am visited by various ideas for self-development. These are completely different thoughts about what I should master, what I should learn, what I should understand. And at one of these moments, I thought about learning programming. I started with Pascal language, relevant at that time, and now, having already studied about 3 languages, I began to think, is it worth learning Python?

From this article you will learn:

I, Gridin Semyon, welcome all readers of my blog kip-world. Have you been thinking about starting to learn programming for a long time? Maybe you are thinking about how to choose a programming language to begin with?

Or perhaps you're just afraid to start? Or are you just a person who accidentally stumbled upon my article? In any case, here you will find answers to some of your questions!

In any of the above cases, I want to ask you the most important question: What problems will you solve using this or that language?

I have compiled a small “micro-article” for you to think about.

Is it worth learning Python?

I think it’s no secret to anyone that literally 5-6 years ago, the first language to study programming in any school was Pascal. Pascal is a wonderful language of its era, but, unfortunately or fortunately, it has outlived its usefulness and is now the first programming language smart choice for every beginning programmer!

You may now be asking yourself, “Why is it worth learning Python as your first programming language?” There is no mystery in this, just as there is no riddle.

Benefits of the Python Programming Language

Firstly, it is important to know that given language programming is now in demand in many enterprises, especially in Moscow and St. Petersburg. So if you are lucky enough to live in these cities, then with this language you can look for a very interesting and highly paid job.

Secondly, This developing language programming, various changes occur every two to three years, and this is a very good indicator for a programming language.

Fourth, many support scripting language programming. You can chat with outside world through external inputs and outputs.

Programmers simply adore this language for its brevity and simplicity of code. Where in JavaScript or C++ you would need to write two or three pages, in Python you can do it in just one!

And also very important feature Python language is that it is used for Web development. Moreover, it is not used as an ordinary language, but performs one of interesting features. Python for web development is used in cases where other languages ​​fail! This is a very interesting and curious fact. In this area, the language has its own, personal niche!

Let's summarize briefly:

  • Python is a complete and feature-rich programming language
  • This language is used in most various fields, including web programming
  • This is an ideal language to start your development as a programmer because it is clear and easy to use.
  • It is the favorite language of many professional programmers.

And if anyone still has questions: “Is it worth learning Python?”, “Is this language suitable for beginners?”, “Having learned this language, will I be able to get a job?” Good work? My answer: “Definitely yes! Learn this language, regardless of whether you are a beginner programmer or an experienced one. It will definitely be useful to you and will help you in your activities!”

On this note, I have to say goodbye to you. Subscribe to my blog, tell your friends about it - there will be a lot of interesting and important information here!

P.S. Which language do you think is best to start with? Maybe someone gave you other advice? I would be very glad to have an outside opinion in the comments!

  • Python,
  • Website development
  • If you are looking for an answer to the question: “Which programming language to choose first,” then in about 90% of all cases you will be offered Python - as the easiest language to learn. And it is obvious that a certain number of people who have not learned programming before will choose Python because of these recommendations. And here we have a problem, which will be discussed below. Of course, with a description of how I got to this life.

    About Me

    Even during my student years, I realized that my specialty was not as rosy as it seemed to me at 18 years old. So I started thinking about how to earn adequate money. And after listening to stories about how my cousin received crazy money at that time in 1C, I also decided to connect my life with IT.

    Initially, these were template sites using website builders and WordPress, then I got involved in SEO, and at one point I came across Habr, after which I decided to become a full-fledged programmer. I didn’t have higher mathematics, so I decided to choose a field where it was not required - web development.

    I had an obvious question: which language to choose - php/python/ruby. Having seen enough articles on Habré, I read some hate towards php after watching a couple of motivational videos from Yandex. I chose Python. I hope you know the advantages of language, so I won’t talk about it.

    Primary language training

    I combined language learning with my main job, so I read books, watched tutorials, and worked on small projects in the evening. In general, in a year I

    1) Studied books:

    • Mark Lutz - Learning Python
    • Mark Lutz - Python Programming
    • Chad Fowler – Programmer Fanatic
    • Bill Lubanovich - Simple Python
    2) Studied a lot of videos from Ukrainian/Bourgeois authors on Django
    3) Completed a course from codeacademy
    4) Mastered PyCharm

    Your first project

    Then I came up with the idea of ​​a small service on a very specific topic, which I decided to create in order to consolidate my knowledge of Python + Django.

    In creating the site I

    1) Studied books:

    • John Duckett - HTML and CSS. Website development and design
    • David Flanagan - JavaScript. Detailed Guide
    • Ben Forta - Learn SQL on your own.
    2) I studied the Django documentation for my tasks
    3) I studied the deployment of projects on Django Gunicorn + nginx + centOS

    My first normal project

    After the first adequate website failed, I decided to create something worthwhile, chose an idea, chose an implementation scheme, and completed it in the evenings in 3 months.

    The project has shown its viability (to this day it brings me some money, which I am incredibly happy about). And I decided to pump it up better.

    After reading the book “Percival H. - Test-Driven Development with Python,” I decided to write tests first based on Django components, then looked up the Selenium documentation, and already made external tests.

    I want to be cool

    Having opened vacancies for Python-Django developers, I looked at what else is usually required in such vacancies:
    • Django Rest Framework
    • Celery
    • Tornado/Twisted/asyncio (Choose one)
    • Class-based view Django
    • Angular/React (Choose one)
    Spent 3 months getting to know/trying these things. I also picked up the Python standard library + external parsing library beautifulSoup.

    You can't work without C/C++

    There is an opinion that without knowledge of C/C++, a programmer cannot call himself a programmer. So when I had free time, I got acquainted with the books:
    • Brian Kernighan – C Programming Language
    • Stanley B Lippman - C++ programming language. Basic course
    I read the books, tinkered with the code, looked at the compilation, looked at the code examples. In general, now I didn't big eyes when mentioning links, pointers, sorting, OOP and a bunch of different arrays with at different speeds processing an element depending on its position.

    I'm ready to fight!

    And here we come to the very important point. Having spent a total of 2 years learning all the elements of web programming that I mentioned above. I considered myself ready enough to apply for a position as a Python web developer. Of course, I didn’t know some things very well, some superficially, and some I didn’t know at all (for example, Flask), but general understanding and the skills were quite good.

    And here the problems with Python began, which people most often do not focus on. Namely, on the business demand for junior/pre-middle level Python developers.

    I entered the market with this question.

    Although at first glance it seems that there are quite a lot of vacancies in Python, when the specifics begin, everything changes dramatically.

    1. Immediately there is a large screening of vacancies where Python is exclusively an auxiliary language. Most often these are positions of Java developers, System Administrators, QA-Automation. Also, there is now a large dropout in Data Learning, which requires a math education + the R language. With Python alone you won’t be able to find this vacancy.

    2. It turned out that in my city there are no vacancies for Python, literally none at all. Having expanded the search throughout the area, I also received an unsatisfactory result. A couple of vacancies in PHP, where Python was a plus. When I opened the filter for the last 3 years, I also discovered that there were no vacancies for Python at all. Those. businesses in the provinces most often choose simpler and more popular technologies than Python.

    3. Having opened Python vacancies in a general search engine, I discovered the following trends:

    • 90%+ of vacancies are located in Moscow or St. Petersburg
    • 90%+ of vacancies require middle+ / senior level
    • ~100% vacancies for junior positions in Moscow or St. Petersburg (most often from giants)
    In other words, the situation has turned out that if you do not live in Moscow, St. Petersburg and are not going to go to “conquer” them, then you practically have nowhere to get your first job.

    Of course, there are a couple of places where Python is still used, for example, in Kazan. But most often this is one company, where the vacancies are also very middle+ / senior.

    4. The option of searching for remote work at the current level also showed that employers are not ready to take such a risk. Little experience + remote work = this is some kind of fantasy.
    Nevertheless, I was still able to find a couple of options, but already during the initial interview it became clear that this was nonsense like: “You work for us for three months, and if the client pays for your work, we will pay you too.” Not the best option.

    5. Talked to a couple of HR from large companies, they expressed this tendency. “We usually hire people with at least a year of experience in Python, plus experience in another language (3+ years). Most often php/Java." In other words, they didn't consider hiring someone with just Python at all.

    6. After talking with guys from specialized forums, it became clear that this is enough typical situation. From their stories, it became clear that people, after a futile search, either went to work on php/1c, or somehow climbed through upwork/own project/test automation.
    But again, from case to case.

    In general, it turned out that Python is excellent language, which allows you to create powerful projects. And it just so happens that their concentration is in the capitals. And since these are complex projects, then employees are required at the middle+ level. Is a person who has just learned Python ready to get such a vacancy? Difficult!

    But there is another way!

    IN currently in my city alone there are 24 vacancies for php various levels(ranging from small companies that need to maintain a current website, to e-commerce giants that offer serial expansion functionality). And about the same number of vacancies for 1C. And in about half of these vacancies they are ready to hire a person who at least knows something about programming. Most likely, these are not the most best places, but this is already the first job after which you will officially become an experienced programmer for HR.

    So in the end

    It turns out that you can learn the cool programming language Python and stay on the street. Or you can learn the “hated” php/1c and get a job. The quality of this work, of course, leaves many questions - but this is already experience.

    As for me, in my conditions (not going to Moscow/St. Petersburg), I actually spent time learning a language that is now in demand exclusively in my own projects. I was unable to find work locally or remotely. Now I’m moving towards php, since it simply has work.

    Therefore, if you do not live in Moscow, St. Petersburg, or are not a student at a technical university, then I would not advise you to teach Python first tongue. Pay attention to PHP - there are always places for it, there is work, there is experience. And the further path of development is already yours.

    P.S. As my friend told me, the situation is almost the same in Ruby. But here I can no longer speak with confidence.

    There are many areas Python applications, but in some he is especially good. Let's figure out what can be done in this language.

    Main differences:

    • Flask provides simplicity, flexibility and full control on the project. It allows the user to independently decide how to implement certain things.
    • Django is an all-inclusive service. Out of the box it already has an admin panel, database interfaces, ORM (Object Relational Mapping) and a directory structure for your projects.

    What to choose?

    • Choose Flask if you want more experience and learning opportunities. Or if you need maximum control over all components used, such as databases.
    • Choose Django if you're interested in the end product. Especially if you are working with simple applications, such as a news site, a store, a blog, and you want every task to be solved in one extremely clear way.

    In other words, Flask is perhaps the best choice for the novice developer as it contains fewer components. In addition, it is worth choosing if you need fine tuning project.

    Flask, due to its flexibility, is better suited for creating REST APIs.

    On the other hand, if your goal is to do something quickly and easily, you should probably choose Django.

    Data Science: Machine Learning, Data Analysis and Visualization

    First of all, you need to figure out what it is.

    Let's say you want to develop a program that will automatically detect what is shown in a picture.

    For example, by presenting it with this image, you want the program to identify the dog.

    And here she should see a table.

    You might be thinking that you can simply write image analysis code to solve this problem. For example, if there are a lot of light brown pixels in the picture, we conclude that it is a dog.

    Or you can learn to identify edges and boundaries in an image. Then the picture with big amount straight boundaries will probably turn out to be a table.

    However, this is a rather complex and ill-conceived approach. What should you do if the photo shows a white dog with no brown spots? Or if the picture shows a round table?

    This is where it comes into play machine learning. Typically it implements some , which allows automatic detection of a familiar pattern among the input data.

    You can feed a machine learning algorithm, say, 1000 pictures of a dog and 1000 pictures of tables. It will learn the difference between these objects. Then when you give it to him new picture with a table or a dog, he will be able to determine what exactly is depicted on it.

    • scikit-learn has several popular learning algorithms built-in out of the box;
    • TensorFlow is a lower level library. It allows you to create custom algorithms.

    For those new to machine learning, scikit-learn is a good place to start. More experienced developers who are facing efficiency issues may want to take a closer look at TensorFlow.

    How to study machine learning?

    Real analysts, such as those at Google or Microsoft, do the same thing, only their work is more complex and complex.

    They use language SQL queries to retrieve data from databases. Special tools such as Mathplotlib (for Python) or D3.js (for JavaScript) are then used for analysis and visualization.

    Ways to use Python for data analysis and visualization

    One of the most popular libraries for visualization is Mathplotlib.

    Beginners should start learning with it for two reasons:

    • low entry threshold;
    • mastering Mathplotlib will allow you to quickly understand more complex libraries based on it in the future, for example, seaborn.

    How to learn data analysis in Python?

    Recently, some companies have begun to use desktop applications JavaScript. For example, the Slack desktop app was built using the Electron JavaScript framework.

    The advantage of writing desktop applications in JavaScript is that you can reuse the code from the web version.

    Python 3 or Python 2

    Python 3 is a more modern and popular choice.

    Explanation of backend and frontend code

    Let's say you want to do something reminiscent of Instagram.

    If you are looking for an answer to the question: “Which programming language to choose first,” then in about 90% of all cases you will be offered Python - as the easiest language to learn. And it is obvious that a certain number of people who have not learned programming before will choose Python because of these recommendations. And here we have a problem, which will be discussed below. Of course, with a description of how I got to this life.

    About Me

    Even during my student years, I realized that my specialty was not as rosy as it seemed to me at 18 years old. So I started thinking about how to earn adequate money. And after listening to stories about how my cousin received crazy money at that time in 1C, I also decided to connect my life with IT.

    Initially, these were template sites using website builders and WordPress, then I got involved in SEO, and at one point I came across Habr, after which I decided to become a full-fledged programmer. I didn’t have higher mathematics, so I decided to choose a field where it was not required - web development.

    I had an obvious question: which language to choose - php/python/ruby. Having seen enough articles on Habré, I read some hate towards php after watching a couple of motivational videos from Yandex. I chose Python. I hope you know the advantages of language, so I won’t talk about it.

    Primary language training

    I combined language learning with my main job, so I read books, watched tutorials, and worked on small projects in the evening. In general, in a year I

    1) Studied books:

    • Mark Lutz - Learning Python
    • Mark Lutz - Python Programming
    • Chad Fowler – Programmer Fanatic
    • Bill Lubanovich - Simple Python
    2) Studied a lot of videos from Ukrainian/Bourgeois authors on Django
    3) Completed a course from codeacademy
    4) Mastered PyCharm

    Your first project

    Then I came up with the idea of ​​a small service on a very specific topic, which I decided to create in order to consolidate my knowledge of Python + Django.

    In creating the site I

    1) Studied books:

    • John Duckett - HTML and CSS. Website development and design
    • David Flanagan - JavaScript. Detailed Guide
    • Ben Forta - Learn SQL on your own.
    2) I studied the Django documentation for my tasks
    3) I studied the deployment of projects on Django Gunicorn + nginx + centOS

    My first normal project

    After the first adequate website failed, I decided to create something worthwhile, chose an idea, chose an implementation scheme, and completed it in the evenings in 3 months.

    The project has shown its viability (to this day it brings me some money, which I am incredibly happy about). And I decided to pump it up better.

    After reading the book “Percival H. - Test-Driven Development with Python,” I decided to write tests first based on Django components, then looked up the Selenium documentation, and already made external tests.

    I want to be cool

    Having opened vacancies for Python-Django developers, I looked at what else is usually required in such vacancies:
    • Django Rest Framework
    • Celery
    • Tornado/Twisted/asyncio (Choose one)
    • Class-based view Django
    • Angular/React (Choose one)
    Spent 3 months getting to know/trying these things. I also picked up the Python standard library + external parsing library beautifulSoup.

    You can't work without C/C++

    There is an opinion that without knowledge of C/C++, a programmer cannot call himself a programmer. Therefore, when I had free time, I got acquainted with the books:
    • Brian Kernighan – C Programming Language
    • Stanley B Lippman - C++ programming language. Basic course
    I read the books, tinkered with the code, looked at the compilation, looked at the code examples. In general, now I didn’t make big eyes when mentioning references, pointers, sorting, OOP and a bunch of different arrays with different processing speeds for an element, depending on its position.

    I'm ready to fight!

    And here we come to the most important point. Having spent a total of 2 years learning all the elements of web programming that I mentioned above. I considered myself ready enough to apply for a position as a Python web developer. Of course, I didn’t know some things very well, some superficially, and some I didn’t know at all (for example, Flask), but the general understanding and skills were quite good.

    And here the problems with Python began, which people most often do not focus on. Namely, on the business demand for junior/pre-middle level Python developers.

    I entered the market with this question.

    Although at first glance it seems that there are quite a lot of vacancies in Python, when the specifics begin, everything changes dramatically.

    1. Immediately there is a large screening of vacancies where Python is exclusively an auxiliary language. Most often these are positions of Java developers, System Administrators, QA Automation. Also, there is now a large dropout in Data Learning, which requires a math education + the R language. With Python alone you won’t be able to find this vacancy.

    2. It turned out that in my city there are no vacancies for Python, literally none at all. Having expanded the search throughout the area, I also received an unsatisfactory result. A couple of vacancies in PHP, where Python was a plus. When I opened the filter for the last 3 years, I also discovered that there were no vacancies for Python at all. Those. businesses in the provinces most often choose simpler and more popular technologies than Python.

    3. Having opened Python vacancies in a general search engine, I discovered the following trends:

    • 90%+ of vacancies are located in Moscow or St. Petersburg
    • 90%+ of vacancies require middle+ / senior level
    • ~100% vacancies for junior positions in Moscow or St. Petersburg (most often from giants)
    In other words, the situation has turned out that if you do not live in Moscow, St. Petersburg and are not going to go to “conquer” them, then you practically have nowhere to get your first job.

    Of course, there are a couple of places where Python is still used, for example, in Kazan. But most often this is one company, where the vacancies are also very middle+ / senior.

    4. The option of searching for remote work at the current level also showed that employers are not ready to take such a risk. Little experience + remote work = this is some kind of fantasy.
    Nevertheless, I was still able to find a couple of options, but already during the initial interview it became clear that this was nonsense like: “You work for us for three months, and if the client pays for your work, we will pay you too.” Not the best option.

    5. I spoke with a couple of HR from large companies, they expressed this trend. “We usually hire people with at least a year of experience in Python, plus experience in another language (3+ years). Most often php/Java." In other words, they didn't consider hiring someone with just Python at all.

    6. After talking with guys from specialized forums, it became clear that this is a fairly typical situation. From their stories, it became clear that people, after a futile search, either went to work on PHP/1c, or somehow climbed through upwork/own project/test automation.
    But again, from case to case.

    In general, it turned out that Python is an excellent language that allows you to create powerful projects. And it just so happens that their concentration is in the capitals. And since these are complex projects, then employees are required at the middle+ level. Is a person who has just learned Python ready to get such a vacancy? Difficult!

    But there is another way!

    At the moment, in my city alone there are 24 vacancies for PHP of various levels (from small companies that need to maintain the current website to e-commerce giants that offer consistent expansion of functionality). And about the same number of vacancies for 1C. And in about half of these vacancies they are ready to hire a person who at least knows something about programming. Most likely, these are not the best places, but this is the first job after which you will officially become an experienced programmer for HR.

    So in the end

    It turns out that you can learn the cool programming language Python and stay on the street. Or you can learn the “hated” php/1c and get a job. The quality of this work, of course, leaves many questions - but this is already experience.

    As for me, in my conditions (not going to Moscow/St. Petersburg), I actually spent time learning a language that is now in demand exclusively in my own projects. I was unable to find work locally or remotely. Now I’m moving towards php, since it simply has work.

    Therefore, if you do not live in Moscow, St. Petersburg, or are not a student at a technical university, then I would not advise you to learn Python as your first language. Pay attention to PHP - there are always places for it, there is work, there is experience. And the further path of development is already yours.

    P.S. As my friend told me, the situation is almost the same in Ruby. But here I can no longer speak with confidence.

    Eat English language. People communicate on it. And also in German, Filipino, Spanish, Greek and a host of others.

    And there is Python (voice of a bore about correct name). This is the language in which a person communicates with a computer. You can communicate with a computer in a bunch of languages: C, Pascal, Haskell, Go, Swift, Ruby, PHP, BASIC, Erlang, Er and many others.

    We will learn Python here. Let's start with a short overview of how it differs from other languages. You don’t need to do anything: you read, remember a couple of points and that’s it, you can brag about everything that you are in the subject (don’t do that).

    Conciseness

    Python has such a community that it does not welcome confusion in the use of the language. A coding standard is part of the language. The philosophy of writing code is also part of the language. Therefore two good programmer will write very similar code: no need to waste time on “damn, what did he mean here?...”.

    Python has such a syntax that it helps to write code very briefly. No extra parentheses, long keywords, difficult tricks and all that. Describe the logic, translate it into English, add indents and syntax - that’s it, the program is ready.

    Python has this standard library that it helps to perform a bunch of routine operations. It will help you send an email, encode a string, set up a web server, find out the time, delete a file, calculate variance, archive a file, pull data from a database, and do more in just a couple of lines.

    Python has this amount third party modules, which can save thousands of man-hours of work. Need to write a website? Teach neural network solve captcha? Download audio from VKontakte? Recognize people in photographs? Simulate the flight of a rocket? Write a bot? There are ready-made modules for all this; you just need to install and use them.

    All this makes the process of writing code very fast.

    Cool documentation

    Try googling, or, for example. The first results will contain a link to https://docs.python.org - the official documentation site.

    This is because the documentation is very detailed: it contains materials for beginners, documentation for each module, recommendations for use, underwater rocks and further reading. And this is all for each version of the language. No one has such convenient and detailed documentation.

    There is also http://stackoverflow.com/ - a site where some programmers answer questions about programming to other programmers. During its existence, all possible questions were asked there. Seriously: any question along the lines of “how to do this in Python” or “why does this code not work” has already been asked, viewed and answered.

    All this makes the process of learning and writing code quick: all necessary information is just one successful search away.

    Which of these questions is not included in the official FAQs of the official documentation?

    • Why am I getting strange results with simple arithmetic operations?
    • Why is Python installed on my machine?
    • How can I implement base abstract factory class in Python?
    • Writing C is hard; are there any alternatives?

    Strong dynamic typing

    Dynamic Typing- means, in the same variable in different time values ​​can be stored different types. Now it’s a number, then it’s a string, and everything is in one variable.

    In many languages ​​this is not possible: you created an integer variable, so store integers in it. This is convenient for the computer, but not always convenient for the programmer.

    Strong typing- this means you can’t just perform actions with objects of different types. For example, you cannot add a string with a number: first you need to turn the string into a number, and only then add it. Python itself will not do such a conversion.

    This may seem inconvenient, but in fact it protects against errors. To understand what we're talking about, just look at JavaScript, a weakly typed language:

    Automatic memory management

    Memory management is when for each pile of data in a program you need to manually allocate space in RAM. Make sure that the data does not go beyond this location. Don't forget to free this space when the data is no longer needed. In general, hellish hemorrhoids.

    In Python you don’t need to think about this: the programming language will do everything for the programmer. True, it won’t do it perfectly: you need to know how Python works with memory.

    And a lot more

    In addition to the above, Python is famous for many other things: indentation, introspection, zen, portability, GIL, name.