HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>23 июн 2022</li>
2 <ul><li>23 июн 2022</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><h2>С какого языка начать изучение программирования</h2>
4 </ul><h2>С какого языка начать изучение программирования</h2>
5 <p>Рассказываем о языках JavaScript, PHP, Python, Java, CSS и HTML, сравниваем их и помогаем выбрать лучший.</p>
5 <p>Рассказываем о языках JavaScript, PHP, Python, Java, CSS и HTML, сравниваем их и помогаем выбрать лучший.</p>
6 <p>Иллюстрация: Wikimedia Commons / Roungroat / Rawpixel / Annie для Skillbox Media</p>
6 <p>Иллюстрация: Wikimedia Commons / Roungroat / Rawpixel / Annie для Skillbox Media</p>
7 <p>Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей "ЛитЦех".</p>
7 <p>Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей "ЛитЦех".</p>
8 <p><strong>Содержание</strong></p>
8 <p><strong>Содержание</strong></p>
9 <ul><li><a>Что такое типизация</a></li>
9 <ul><li><a>Что такое типизация</a></li>
10 <li><a>HTML и CSS: "строительный материал" сайтов</a></li>
10 <li><a>HTML и CSS: "строительный материал" сайтов</a></li>
11 <li><a>JavaScript: главный по фронтенду</a></li>
11 <li><a>JavaScript: главный по фронтенду</a></li>
12 <li><a>PHP: слон, которого трудно не заметить</a></li>
12 <li><a>PHP: слон, которого трудно не заметить</a></li>
13 </ul><ul><li><a>Python: сын маминой подруги</a></li>
13 </ul><ul><li><a>Python: сын маминой подруги</a></li>
14 <li><a>Java: консервативный и надёжный</a></li>
14 <li><a>Java: консервативный и надёжный</a></li>
15 <li><a>Какой язык лучший?</a></li>
15 <li><a>Какой язык лучший?</a></li>
16 <li><a>Что выбрать новичку?</a></li>
16 <li><a>Что выбрать новичку?</a></li>
17 </ul><p>У каждого языка программирования свои особенности, достоинства и недостатки, своя сфера применения и свой список связанных технологий (он называется "стек"). Сегодня мы сравним несколько популярных языков веб-разработки и дадим советы, которые помогут вам сделать осознанный выбор.</p>
17 </ul><p>У каждого языка программирования свои особенности, достоинства и недостатки, своя сфера применения и свой список связанных технологий (он называется "стек"). Сегодня мы сравним несколько популярных языков веб-разработки и дадим советы, которые помогут вам сделать осознанный выбор.</p>
18 <p>Прежде чем мы начнём разбираться в плюсах и минусах языков, стоит поговорить о типизации. От неё зависит, как вы будете писать программы и как они затем будут работать.</p>
18 <p>Прежде чем мы начнём разбираться в плюсах и минусах языков, стоит поговорить о типизации. От неё зависит, как вы будете писать программы и как они затем будут работать.</p>
19 <p><strong>Типизация - это разделение переменных на разные типы:</strong>например,<em>int</em><em>(целое число),</em><em>flow (число с десятичной частью), string (строка текста), bool (правда/неправда).</em></p>
19 <p><strong>Типизация - это разделение переменных на разные типы:</strong>например,<em>int</em><em>(целое число),</em><em>flow (число с десятичной частью), string (строка текста), bool (правда/неправда).</em></p>
20 <p>Типизация бывает<strong>явная или неявная, слабая или сильная</strong>и<strong>статическая или динамическая.</strong></p>
20 <p>Типизация бывает<strong>явная или неявная, слабая или сильная</strong>и<strong>статическая или динамическая.</strong></p>
21 <p><strong>Явная типизация</strong>значит, что вы должны сами указать тип переменной, а если у языка<strong>неявная типизация</strong>, этим занимается компилятор.<strong>Явная типизация более надёжная</strong><em>(у переменной будет именно тот тип, который вам нужен)</em>, зато добавляет работы, а <strong>неявная позволяет сэкономить время</strong>, но переменная может получить не тот тип, который вы хотели.</p>
21 <p><strong>Явная типизация</strong>значит, что вы должны сами указать тип переменной, а если у языка<strong>неявная типизация</strong>, этим занимается компилятор.<strong>Явная типизация более надёжная</strong><em>(у переменной будет именно тот тип, который вам нужен)</em>, зато добавляет работы, а <strong>неявная позволяет сэкономить время</strong>, но переменная может получить не тот тип, который вы хотели.</p>
22 <p>В языках со <strong>статической типизацией</strong>типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа<em>(явно).</em></p>
22 <p>В языках со <strong>статической типизацией</strong>типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа<em>(явно).</em></p>
23 <p><strong>Динамическая типизация</strong>означает, что типы определятся уже во время выполнения программы.</p>
23 <p><strong>Динамическая типизация</strong>означает, что типы определятся уже во время выполнения программы.</p>
24 <p><strong>Сильная (строгая) типизация</strong>не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования.</p>
24 <p><strong>Сильная (строгая) типизация</strong>не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования.</p>
25 <p>Языки со <strong>слабой типизацией</strong>более гибкие, но они часто сами неявно преобразуют переменные, даже если в результате может появиться неточность или если преобразование неоднозначно.</p>
25 <p>Языки со <strong>слабой типизацией</strong>более гибкие, но они часто сами неявно преобразуют переменные, даже если в результате может появиться неточность или если преобразование неоднозначно.</p>
26 <p>Теперь, когда мы разобрались с типизацией, перейдём к самим языкам.</p>
26 <p>Теперь, когда мы разобрались с типизацией, перейдём к самим языкам.</p>
27 <p>Начнём издалека - с <strong>HTML</strong><em>(Hypertext Markup Language)</em>и <strong>CSS</strong><em>(Cascade StyleSheets)</em>. Почему с них и почему "издалека"? С них - потому что они лежат в основе веб-разработки и ни один сайт без них не обойдётся. А издалека - потому что это не совсем языки программирования.</p>
27 <p>Начнём издалека - с <strong>HTML</strong><em>(Hypertext Markup Language)</em>и <strong>CSS</strong><em>(Cascade StyleSheets)</em>. Почему с них и почему "издалека"? С них - потому что они лежат в основе веб-разработки и ни один сайт без них не обойдётся. А издалека - потому что это не совсем языки программирования.</p>
28 <p>Они нужны, чтобы создавать содержимое веб-страницы - контент и оформление;<strong>программу вы на них не напишете.</strong>Тем не менее веб-технологии сейчас уже используются и в других сферах, в том числе при создании десктопных и даже мобильных приложений, поэтому у этих "языков" хорошие перспективы.</p>
28 <p>Они нужны, чтобы создавать содержимое веб-страницы - контент и оформление;<strong>программу вы на них не напишете.</strong>Тем не менее веб-технологии сейчас уже используются и в других сферах, в том числе при создании десктопных и даже мобильных приложений, поэтому у этих "языков" хорошие перспективы.</p>
29 <p>HTML и CSS очень простые - в основах можно<strong>разобраться буквально за пару дней</strong>, даже самостоятельно. Так что<strong>если вы очень боитесь программирования и не верите, что у вас получится, попробуйте начать с них.</strong>Это под силу каждому, поможет вам плавно войти в программирование и оценить свои силы. А потом при желании можно перейти к другим языкам.</p>
29 <p>HTML и CSS очень простые - в основах можно<strong>разобраться буквально за пару дней</strong>, даже самостоятельно. Так что<strong>если вы очень боитесь программирования и не верите, что у вас получится, попробуйте начать с них.</strong>Это под силу каждому, поможет вам плавно войти в программирование и оценить свои силы. А потом при желании можно перейти к другим языкам.</p>
30 <em>Изображение: Public Domain</em><p>JavaScript сейчас везде. Это один из самых быстроразвивающихся языков современности, и он очень быстро набирает популярность. JavaScript многофункционален, на нём можно разрабатывать программы для любых платформ.</p>
30 <em>Изображение: Public Domain</em><p>JavaScript сейчас везде. Это один из самых быстроразвивающихся языков современности, и он очень быстро набирает популярность. JavaScript многофункционален, на нём можно разрабатывать программы для любых платформ.</p>
31 <p>Изначально он использовался для создания интерактивных веб-страниц, но сейчас на нём делают и серверные (привет<a>Node.js</a>), и мобильные, и десктопные приложения, и многое другое.</p>
31 <p>Изначально он использовался для создания интерактивных веб-страниц, но сейчас на нём делают и серверные (привет<a>Node.js</a>), и мобильные, и десктопные приложения, и многое другое.</p>
32 <p>Тем не менее, несмотря на широкое применение, JavaScript не волшебная таблетка. У него есть свои ограничения, из-за которых он подходит не для всех задач.</p>
32 <p>Тем не менее, несмотря на широкое применение, JavaScript не волшебная таблетка. У него есть свои ограничения, из-за которых он подходит не для всех задач.</p>
33 <p>Какие плюсы и минусы есть у этого языка:</p>
33 <p>Какие плюсы и минусы есть у этого языка:</p>
34 <em>Изображение: Skillbox Media</em><p>Что касается минусов - есть инструменты, которые помогают их компенсировать. Например,<a>TypeScript</a>и Flow делают работу с типами более безопасной, но код становится писать сложнее.</p>
34 <em>Изображение: Skillbox Media</em><p>Что касается минусов - есть инструменты, которые помогают их компенсировать. Например,<a>TypeScript</a>и Flow делают работу с типами более безопасной, но код становится писать сложнее.</p>
35 <p>Из-за этой особенности на JavaScript не разрабатываются сложные программы с высокими требованиями к надёжности. Если у вас на сайте не работает кнопка, это неприятно, но не страшно, а вот если у вас ошибка в банковском или промышленном программном обеспечении - это уже хуже.</p>
35 <p>Из-за этой особенности на JavaScript не разрабатываются сложные программы с высокими требованиями к надёжности. Если у вас на сайте не работает кнопка, это неприятно, но не страшно, а вот если у вас ошибка в банковском или промышленном программном обеспечении - это уже хуже.</p>
36 <p>По <a>данным "Хабр Карьеры"</a>, средняя зарплата JavaScript-разработчика составляет около 154 тысяч рублей. Новички зарабатывают от 40 до 100 тысяч, а профессионалы могут похвастаться зарплатой в 200 тысяч и выше.</p>
36 <p>По <a>данным "Хабр Карьеры"</a>, средняя зарплата JavaScript-разработчика составляет около 154 тысяч рублей. Новички зарабатывают от 40 до 100 тысяч, а профессионалы могут похвастаться зарплатой в 200 тысяч и выше.</p>
37 <p>Найти работу с такой специальностью не проблема: это очень популярный язык, и требуется он почти везде. Даже если в вашем городе нет больших компаний, которым нужны программисты, не расстраивайтесь. Сейчас около 40% программистов работают удалённо - так что смело ищите работу в других городах.</p>
37 <p>Найти работу с такой специальностью не проблема: это очень популярный язык, и требуется он почти везде. Даже если в вашем городе нет больших компаний, которым нужны программисты, не расстраивайтесь. Сейчас около 40% программистов работают удалённо - так что смело ищите работу в других городах.</p>
38 <p>JavaScript может выглядеть так:</p>
38 <p>JavaScript может выглядеть так:</p>
39 $("button.login").click(function(){ var login = $ ("#login") .val(); var password = $ ("#password").val(); $("#status").text("Загрузка..."); $.post("/auth/login", {login: login, password: password}, function(data) { if(data.result == false) { $("#status").text("Неправильный логин или пароль") } else { $("#status").text("Добро пожаловать, " + data.userName); } }); });<p>Этот код отвечает за авторизацию на сайте. Он читается не настолько легко, как в некоторых других языках, но если вы знаете английский, то можно догадаться, что здесь происходит. Например, в первой строке мы видим, что у нас есть кнопка (button), которая отвечает за вход в систему (login), и по ней можно кликнуть (click).</p>
39 $("button.login").click(function(){ var login = $ ("#login") .val(); var password = $ ("#password").val(); $("#status").text("Загрузка..."); $.post("/auth/login", {login: login, password: password}, function(data) { if(data.result == false) { $("#status").text("Неправильный логин или пароль") } else { $("#status").text("Добро пожаловать, " + data.userName); } }); });<p>Этот код отвечает за авторизацию на сайте. Он читается не настолько легко, как в некоторых других языках, но если вы знаете английский, то можно догадаться, что здесь происходит. Например, в первой строке мы видим, что у нас есть кнопка (button), которая отвечает за вход в систему (login), и по ней можно кликнуть (click).</p>
40 <p>Разработчику на JavaScript недостаточно освоить синтаксис языка и основные концепции. В своей работе "джаваскриптеры" используют целый арсенал инструментов.</p>
40 <p>Разработчику на JavaScript недостаточно освоить синтаксис языка и основные концепции. В своей работе "джаваскриптеры" используют целый арсенал инструментов.</p>
41 <p><strong>1. Редакторы кода или IDE:</strong></p>
41 <p><strong>1. Редакторы кода или IDE:</strong></p>
42 <ul><li><a>Notepad++</a>;</li>
42 <ul><li><a>Notepad++</a>;</li>
43 <li><a>Sublime Text</a>;</li>
43 <li><a>Sublime Text</a>;</li>
44 <li><a>WebStorm</a>.</li>
44 <li><a>WebStorm</a>.</li>
45 </ul><p><strong>2. Отладчики</strong>нужны для того, чтобы вы могли пройтись по коду вместе с компьютером, это упрощает поиск ошибок.</p>
45 </ul><p><strong>2. Отладчики</strong>нужны для того, чтобы вы могли пройтись по коду вместе с компьютером, это упрощает поиск ошибок.</p>
46 <ul><li>Chrome Web Inspector (DevTools);</li>
46 <ul><li>Chrome Web Inspector (DevTools);</li>
47 <li><a>Firebug</a>.</li>
47 <li><a>Firebug</a>.</li>
48 </ul><p><strong>3. Среда исполнения серверного ПО:</strong>Node.js.</p>
48 </ul><p><strong>3. Среда исполнения серверного ПО:</strong>Node.js.</p>
49 <p><strong>4. Средства разработки десктопных приложений:</strong></p>
49 <p><strong>4. Средства разработки десктопных приложений:</strong></p>
50 <ul><li><a>Electron</a>;</li>
50 <ul><li><a>Electron</a>;</li>
51 <li><a>AppJS</a>;</li>
51 <li><a>AppJS</a>;</li>
52 <li><a>NW.js</a>(Node-Webkit);</li>
52 <li><a>NW.js</a>(Node-Webkit);</li>
53 <li>Windows 8+.</li>
53 <li>Windows 8+.</li>
54 </ul><p><strong>5. Фреймворки для веб-разработки:</strong></p>
54 </ul><p><strong>5. Фреймворки для веб-разработки:</strong></p>
55 <ul><li>jQuery;</li>
55 <ul><li>jQuery;</li>
56 <li><a>Angular</a>;</li>
56 <li><a>Angular</a>;</li>
57 <li><a>React</a>;</li>
57 <li><a>React</a>;</li>
58 <li>Backbone;</li>
58 <li>Backbone;</li>
59 <li>Ember;</li>
59 <li>Ember;</li>
60 <li>Meteor.</li>
60 <li>Meteor.</li>
61 </ul><p><strong>6. JSON</strong><strong>-</strong>самый популярный формат передачи структурированных данных.</p>
61 </ul><p><strong>6. JSON</strong><strong>-</strong>самый популярный формат передачи структурированных данных.</p>
62 <p><strong>7.</strong><a><strong>MongoDB</strong></a><strong>-</strong>документо-ориентированная база данных. Можно создавать JS-процедуры.</p>
62 <p><strong>7.</strong><a><strong>MongoDB</strong></a><strong>-</strong>документо-ориентированная база данных. Можно создавать JS-процедуры.</p>
63 <p>Хороший JavaScript-разработчик должен знать эти технологии и уметь их использовать или хотя бы ориентироваться в них. В наше время программировать в "Блокноте" - плохой вариант.</p>
63 <p>Хороший JavaScript-разработчик должен знать эти технологии и уметь их использовать или хотя бы ориентироваться в них. В наше время программировать в "Блокноте" - плохой вариант.</p>
64 <p>PHP - чемпион по популярности в веб-разработке. Его используют в создании серверных приложений, скриптов и утилит. Вы найдёте его в бэкенде сайтов многих известных компаний - например, Avito, Badoo, "ВКонтакте", "Википедии", "Фейсбука"*.</p>
64 <p>PHP - чемпион по популярности в веб-разработке. Его используют в создании серверных приложений, скриптов и утилит. Вы найдёте его в бэкенде сайтов многих известных компаний - например, Avito, Badoo, "ВКонтакте", "Википедии", "Фейсбука"*.</p>
65 <p>Некоторые называют PHP "ужасным" языком или вовсе говорят, что он умирает. Такая оценка появилась, когда PHP только набирал популярность. В то время у языка действительно было много недостатков и ничего серьёзного на нём не писали. Некоторые специалисты его таким и запомнили, но PHP уже больше десяти лет как настоящий взрослый язык. Более того, огромное количество конструкторов и редакторов сайтов написаны именно на нём.</p>
65 <p>Некоторые называют PHP "ужасным" языком или вовсе говорят, что он умирает. Такая оценка появилась, когда PHP только набирал популярность. В то время у языка действительно было много недостатков и ничего серьёзного на нём не писали. Некоторые специалисты его таким и запомнили, но PHP уже больше десяти лет как настоящий взрослый язык. Более того, огромное количество конструкторов и редакторов сайтов написаны именно на нём.</p>
66 <p>Какие у PHP есть достоинства и недостатки:</p>
66 <p>Какие у PHP есть достоинства и недостатки:</p>
67 <em>Изображение: Skillbox Media</em><p>Как вы видите на скриншоте ниже, предложений работы для PHP-разработчиков очень много - больше, чем для других языков, - но средняя зарплата ниже, чем у JavaScript-разработчиков, - 88 тысяч рублей.</p>
67 <em>Изображение: Skillbox Media</em><p>Как вы видите на скриншоте ниже, предложений работы для PHP-разработчиков очень много - больше, чем для других языков, - но средняя зарплата ниже, чем у JavaScript-разработчиков, - 88 тысяч рублей.</p>
68 <em>Скриншот: Skillbox Media</em><p>Если вы новичок, можете рассчитывать на зарплату от 40 до 80 тысяч рублей; если у вас уже есть опыт, то от 80 до 120 тысяч; профессионалы получают 120 тысяч рублей и больше.</p>
68 <em>Скриншот: Skillbox Media</em><p>Если вы новичок, можете рассчитывать на зарплату от 40 до 80 тысяч рублей; если у вас уже есть опыт, то от 80 до 120 тысяч; профессионалы получают 120 тысяч рублей и больше.</p>
69 <p>Вот пример кода на PHP:</p>
69 <p>Вот пример кода на PHP:</p>
70 &lt;?php const NEWS_PER_PAGE = 20; $section = $_GET['section']; $page = $_GET['page']; $PDO = new PDO("mysql:dbname = testdb;host=127.0.0.1", "mysql_user", "mysql_password"); $Statement = $PDO-&gt;prepare("SELECT * FROM News WHERE section = :section LIMIT :offset, :limit"); $Statement-&gt;execute([ ":offset" =&gt; $page * NEWS_PER_PAGE, ":limit" =&gt; NEWS_PER_PAGE ]); $News = $Statement-&gt;fetchAll(); renderTemplate('templates/news_page.tpl', $News); ?&gt;<p>Это код со страницы с новостями, который открывает разные новостные разделы.</p>
70 &lt;?php const NEWS_PER_PAGE = 20; $section = $_GET['section']; $page = $_GET['page']; $PDO = new PDO("mysql:dbname = testdb;host=127.0.0.1", "mysql_user", "mysql_password"); $Statement = $PDO-&gt;prepare("SELECT * FROM News WHERE section = :section LIMIT :offset, :limit"); $Statement-&gt;execute([ ":offset" =&gt; $page * NEWS_PER_PAGE, ":limit" =&gt; NEWS_PER_PAGE ]); $News = $Statement-&gt;fetchAll(); renderTemplate('templates/news_page.tpl', $News); ?&gt;<p>Это код со страницы с новостями, который открывает разные новостные разделы.</p>
71 <p>Человек без опыта программирования, скорее всего, не сможет прочитать его так же легко, как предыдущий на JavaScript. Может показаться, что PHP - это очень сложно, но на самом деле язык простой и, чтобы начать в нём разбираться, достаточно основ, а <strong>сами основы можно освоить за несколько часов</strong>.</p>
71 <p>Человек без опыта программирования, скорее всего, не сможет прочитать его так же легко, как предыдущий на JavaScript. Может показаться, что PHP - это очень сложно, но на самом деле язык простой и, чтобы начать в нём разбираться, достаточно основ, а <strong>сами основы можно освоить за несколько часов</strong>.</p>
72 <p>Несмотря на то что освоить PHP довольно легко, к нему в придачу идёт около 20 мастхэв-технологий.</p>
72 <p>Несмотря на то что освоить PHP довольно легко, к нему в придачу идёт около 20 мастхэв-технологий.</p>
73 <p><strong>1. Редакторы кода или IDE:</strong></p>
73 <p><strong>1. Редакторы кода или IDE:</strong></p>
74 <ul><li><a>Notepad++</a>;</li>
74 <ul><li><a>Notepad++</a>;</li>
75 <li><a>Sublime Text</a>;</li>
75 <li><a>Sublime Text</a>;</li>
76 <li><a>Atom</a>;</li>
76 <li><a>Atom</a>;</li>
77 <li><a>PhpStorm</a>.</li>
77 <li><a>PhpStorm</a>.</li>
78 </ul><p><strong>2. Серверы баз данных:</strong></p>
78 </ul><p><strong>2. Серверы баз данных:</strong></p>
79 <ul><li><a>MySQL</a>;</li>
79 <ul><li><a>MySQL</a>;</li>
80 <li><a>PostgreSQL</a>.</li>
80 <li><a>PostgreSQL</a>.</li>
81 </ul><p><strong>3. Хранилища:</strong></p>
81 </ul><p><strong>3. Хранилища:</strong></p>
82 <ul><li><a>Memcached</a>;</li>
82 <ul><li><a>Memcached</a>;</li>
83 <li><a>Redis</a>;</li>
83 <li><a>Redis</a>;</li>
84 <li><a>MongoDB</a>.</li>
84 <li><a>MongoDB</a>.</li>
85 </ul><p><strong>4. Отладчик:</strong>Xdebug.</p>
85 </ul><p><strong>4. Отладчик:</strong>Xdebug.</p>
86 <p><strong>5. Профайлер:</strong>XHProf - помогает замерить, сколько времени выполняется какой участок программы, и понять, где программа замедляется.</p>
86 <p><strong>5. Профайлер:</strong>XHProf - помогает замерить, сколько времени выполняется какой участок программы, и понять, где программа замедляется.</p>
87 <p><strong>6. Популярные фреймворки:</strong></p>
87 <p><strong>6. Популярные фреймворки:</strong></p>
88 <ul><li>Symfony;</li>
88 <ul><li>Symfony;</li>
89 <li>Yii;</li>
89 <li>Yii;</li>
90 <li><a>Laravel</a>;</li>
90 <li><a>Laravel</a>;</li>
91 <li>Zend;</li>
91 <li>Zend;</li>
92 <li>Silex;</li>
92 <li>Silex;</li>
93 <li>Lumen;</li>
93 <li>Lumen;</li>
94 <li>Slim.</li>
94 <li>Slim.</li>
95 </ul><p><strong>7. Менеджер пакетов:</strong>Composer.</p>
95 </ul><p><strong>7. Менеджер пакетов:</strong>Composer.</p>
96 <p>Python тоже часто используется в веб-разработке, а ещё это один из самых популярных языков для анализа данных и в <a>Data Science</a>. Вы встретите Python в разработке веб-сайтов и утилит, в машинном обучении и в работе с нейросетями.</p>
96 <p>Python тоже часто используется в веб-разработке, а ещё это один из самых популярных языков для анализа данных и в <a>Data Science</a>. Вы встретите Python в разработке веб-сайтов и утилит, в машинном обучении и в работе с нейросетями.</p>
97 <p>Это тоже подходящий язык для новичков, его часто рекомендуют для обучения программированию. Он часто светится в первой пятёрке индекса TIOBE. Например, сейчас (в июне 2022 года) Python занимает там<a>первую строчку</a>.</p>
97 <p>Это тоже подходящий язык для новичков, его часто рекомендуют для обучения программированию. Он часто светится в первой пятёрке индекса TIOBE. Например, сейчас (в июне 2022 года) Python занимает там<a>первую строчку</a>.</p>
98 <p>Вот плюсы и минусы Python:</p>
98 <p>Вот плюсы и минусы Python:</p>
99 <em>Изображение: Skillbox Media</em><p>По данным сайтов для поиска работы (HeadHunter, SuperJob, "Работа.ру" и других), только в Москве для Python-разработчиков открыто более 4 тысяч вакансий. Средняя зарплата питониста - около 115 тысяч рублей. Для новичков - в среднем 70 тысяч, а для специалистов - от 150 до 170 тысяч. Если вы разбираетесь в нейросетях и знакомы с машинным обучением, то, скорее всего, ваша зарплата будет выше.</p>
99 <em>Изображение: Skillbox Media</em><p>По данным сайтов для поиска работы (HeadHunter, SuperJob, "Работа.ру" и других), только в Москве для Python-разработчиков открыто более 4 тысяч вакансий. Средняя зарплата питониста - около 115 тысяч рублей. Для новичков - в среднем 70 тысяч, а для специалистов - от 150 до 170 тысяч. Если вы разбираетесь в нейросетях и знакомы с машинным обучением, то, скорее всего, ваша зарплата будет выше.</p>
100 <p>Вот пример кода в Python:</p>
100 <p>Вот пример кода в Python:</p>
101 import pandas as pd from sklearn.metrics import accuracy_score from sklearn.ensemble import GradientBoostingClassifier #Sorting hat classification StudentsData = pd.read_sql("SELECT * FROM StudentsData", engine) X = pd.drop('faculty') Y = pd['faculty'] x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=42) Classifier = GradienBoostingClassifier(n_estimators=500) Classifier.fit(x_train, y_train) y_prediction = Classifier.predict(x_test) accuracy = accuracy_score(y_test, y_prediction) print("Model accuracy = " + accuracy_score)<p>Мы имитировали шляпу из "Гарри Поттера", которая распределяет студентов по факультетам. Она учится сама. Читает и делит данные о студентах прошлых лет на две группы: данные о самих студентах и данные о том, на каком они факультете. Потом шляпа учится предсказаниям с помощью модуля машинного обучения и проверяет свои способности на контрольной группе. В конце программа оценивает точность предсказания.</p>
101 import pandas as pd from sklearn.metrics import accuracy_score from sklearn.ensemble import GradientBoostingClassifier #Sorting hat classification StudentsData = pd.read_sql("SELECT * FROM StudentsData", engine) X = pd.drop('faculty') Y = pd['faculty'] x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=42) Classifier = GradienBoostingClassifier(n_estimators=500) Classifier.fit(x_train, y_train) y_prediction = Classifier.predict(x_test) accuracy = accuracy_score(y_test, y_prediction) print("Model accuracy = " + accuracy_score)<p>Мы имитировали шляпу из "Гарри Поттера", которая распределяет студентов по факультетам. Она учится сама. Читает и делит данные о студентах прошлых лет на две группы: данные о самих студентах и данные о том, на каком они факультете. Потом шляпа учится предсказаниям с помощью модуля машинного обучения и проверяет свои способности на контрольной группе. В конце программа оценивает точность предсказания.</p>
102 <p>Синтаксис Python читается довольно легко. Хотя совсем без знания языка вряд ли получится понять, что там происходит.</p>
102 <p>Синтаксис Python читается довольно легко. Хотя совсем без знания языка вряд ли получится понять, что там происходит.</p>
103 <p>У Python богатая и довольно стабильная экосистема, включающая инструменты для анализа данных, машинного обучения и популярные веб-фреймворки.</p>
103 <p>У Python богатая и довольно стабильная экосистема, включающая инструменты для анализа данных, машинного обучения и популярные веб-фреймворки.</p>
104 <p><strong>1. Редактор/IDE:</strong><a>PyCharm</a>(самый популярный).</p>
104 <p><strong>1. Редактор/IDE:</strong><a>PyCharm</a>(самый популярный).</p>
105 <p><strong>2. Для анализа данных:</strong></p>
105 <p><strong>2. Для анализа данных:</strong></p>
106 <ul><li><a>iPython/Jupyter</a>;</li>
106 <ul><li><a>iPython/Jupyter</a>;</li>
107 <li><a>Anaconda</a>;</li>
107 <li><a>Anaconda</a>;</li>
108 <li><a>Matplotlib</a>;</li>
108 <li><a>Matplotlib</a>;</li>
109 <li><a>Pandas</a>;</li>
109 <li><a>Pandas</a>;</li>
110 <li><a>NumPy</a>;</li>
110 <li><a>NumPy</a>;</li>
111 <li><a>PySpark</a>.</li>
111 <li><a>PySpark</a>.</li>
112 </ul><p><strong>3. Для машинного обучения:</strong></p>
112 </ul><p><strong>3. Для машинного обучения:</strong></p>
113 <ul><li><a>Scikit-learn</a>;</li>
113 <ul><li><a>Scikit-learn</a>;</li>
114 <li><a>Keras</a>;</li>
114 <li><a>Keras</a>;</li>
115 <li><a>TensorFlow</a>.</li>
115 <li><a>TensorFlow</a>.</li>
116 </ul><p><strong>4. Для веб-разработки:</strong></p>
116 </ul><p><strong>4. Для веб-разработки:</strong></p>
117 <ul><li><a>Django</a>;</li>
117 <ul><li><a>Django</a>;</li>
118 <li><a>Tornado</a>;</li>
118 <li><a>Tornado</a>;</li>
119 <li><a>Flask</a>.</li>
119 <li><a>Flask</a>.</li>
120 </ul><p><strong>5. Менеджер зависимостей:</strong></p>
120 </ul><p><strong>5. Менеджер зависимостей:</strong></p>
121 <ul><li>Pip;</li>
121 <ul><li>Pip;</li>
122 <li>Conda.</li>
122 <li>Conda.</li>
123 </ul><p><strong>6. Cython-синтаксис</strong> - для написания компилируемого кода.</p>
123 </ul><p><strong>6. Cython-синтаксис</strong> - для написания компилируемого кода.</p>
124 <p>Java - мультифункциональный объектно-ориентированный язык со строгой типизацией. Не путайте его с JavaScript, у них похожи только названия, но на практике они во многом противоположны друг другу.</p>
124 <p>Java - мультифункциональный объектно-ориентированный язык со строгой типизацией. Не путайте его с JavaScript, у них похожи только названия, но на практике они во многом противоположны друг другу.</p>
125 <p>На Java пишут сложное ПО: промышленные и банковские системы - как раз то, что не пишут на JavaScript. Помимо этого, огромное количество десктопных приложений, приложений на Android и серверных программ написано именно на Java.</p>
125 <p>На Java пишут сложное ПО: промышленные и банковские системы - как раз то, что не пишут на JavaScript. Помимо этого, огромное количество десктопных приложений, приложений на Android и серверных программ написано именно на Java.</p>
126 <p>Java - довольно сложный язык, поэтому его обычно выбирают люди, у которых уже есть какой-то опыт программирования и подготовка. Например, те, кто учится на программиста в университете.</p>
126 <p>Java - довольно сложный язык, поэтому его обычно выбирают люди, у которых уже есть какой-то опыт программирования и подготовка. Например, те, кто учится на программиста в университете.</p>
127 <p>Вот какие достоинства и недостатки есть у Java:</p>
127 <p>Вот какие достоинства и недостатки есть у Java:</p>
128 <em>Изображение: Skillbox Media</em><p>Java - популярный и сложный язык, поэтому для Java-разработчиков всегда достаточно вакансий, а зарплаты у них высокие. Например, средняя зарплата по Москве - 115 тысяч рублей. Даже новичок может зарабатывать от 60 до 95 тысяч.</p>
128 <em>Изображение: Skillbox Media</em><p>Java - популярный и сложный язык, поэтому для Java-разработчиков всегда достаточно вакансий, а зарплаты у них высокие. Например, средняя зарплата по Москве - 115 тысяч рублей. Даже новичок может зарабатывать от 60 до 95 тысяч.</p>
129 <em>Скриншот: Skillbox Media</em><p>Как и в случае с остальными языками программирования, пожалуй, самой популярной IDE в Java является продукт JetBrains - IntelliJ IDEA. Хотя у свободных сред разработки Eclipse и NetBeans тоже большие сообщества пользователей. Безоговорочный лидер среди фреймворков для Java - Spring. Это универсальная библиотека для быстрой разработки веб- и консольных приложений.</p>
129 <em>Скриншот: Skillbox Media</em><p>Как и в случае с остальными языками программирования, пожалуй, самой популярной IDE в Java является продукт JetBrains - IntelliJ IDEA. Хотя у свободных сред разработки Eclipse и NetBeans тоже большие сообщества пользователей. Безоговорочный лидер среди фреймворков для Java - Spring. Это универсальная библиотека для быстрой разработки веб- и консольных приложений.</p>
130 <p>Вот как примерно выглядит технический стек Java.</p>
130 <p>Вот как примерно выглядит технический стек Java.</p>
131 <p><strong>1. IDE:</strong></p>
131 <p><strong>1. IDE:</strong></p>
132 <ul><li><a>IntelliJ IDEA</a>;</li>
132 <ul><li><a>IntelliJ IDEA</a>;</li>
133 <li>Eclipse;</li>
133 <li>Eclipse;</li>
134 <li>NetBeans;</li>
134 <li>NetBeans;</li>
135 <li><a>AndroidStudio</a>.</li>
135 <li><a>AndroidStudio</a>.</li>
136 </ul><p><strong>2. Популярные фреймворки:</strong></p>
136 </ul><p><strong>2. Популярные фреймворки:</strong></p>
137 <ul><li>Spring;</li>
137 <ul><li>Spring;</li>
138 <li>Swing;</li>
138 <li>Swing;</li>
139 <li>Hibernate;</li>
139 <li>Hibernate;</li>
140 <li>RxJava.</li>
140 <li>RxJava.</li>
141 </ul><p><strong>3. Android-фреймворки:</strong></p>
141 </ul><p><strong>3. Android-фреймворки:</strong></p>
142 <ul><li>OrmLite;</li>
142 <ul><li>OrmLite;</li>
143 <li>RoboSpice;</li>
143 <li>RoboSpice;</li>
144 <li>Picasso;</li>
144 <li>Picasso;</li>
145 <li>Retrofit;</li>
145 <li>Retrofit;</li>
146 <li>ButterKnife.</li>
146 <li>ButterKnife.</li>
147 </ul><p><strong>4. Android-инструменты:</strong></p>
147 </ul><p><strong>4. Android-инструменты:</strong></p>
148 <ul><li>Android SDK Manager;</li>
148 <ul><li>Android SDK Manager;</li>
149 <li>Android Emulator;</li>
149 <li>Android Emulator;</li>
150 <li>ADB.</li>
150 <li>ADB.</li>
151 </ul><p><strong>5. Базы данных:</strong></p>
151 </ul><p><strong>5. Базы данных:</strong></p>
152 <ul><li>Oracle;</li>
152 <ul><li>Oracle;</li>
153 <li>MySQL;</li>
153 <li>MySQL;</li>
154 <li>MS SQL.</li>
154 <li>MS SQL.</li>
155 </ul><p><strong>6. Менеджер зависимостей / система сборки:</strong></p>
155 </ul><p><strong>6. Менеджер зависимостей / система сборки:</strong></p>
156 <ul><li>Gradle - для приложений на Android;</li>
156 <ul><li>Gradle - для приложений на Android;</li>
157 <li>Ant;</li>
157 <li>Ant;</li>
158 <li>Maven - самый популярный.</li>
158 <li>Maven - самый популярный.</li>
159 </ul><p><strong>7. JVM</strong> - Java Virtual Machine, среда выполнения кода.</p>
159 </ul><p><strong>7. JVM</strong> - Java Virtual Machine, среда выполнения кода.</p>
160 <p>Теперь давайте сравним все эти языки.</p>
160 <p>Теперь давайте сравним все эти языки.</p>
161 <em>Изображение: Skillbox Media</em><p><strong>HTML</strong>и <strong>CSS</strong>самые лёгкие, но платят за них тоже не так много. Если вы не уверены в своих силах, стоит начать с них.</p>
161 <em>Изображение: Skillbox Media</em><p><strong>HTML</strong>и <strong>CSS</strong>самые лёгкие, но платят за них тоже не так много. Если вы не уверены в своих силах, стоит начать с них.</p>
162 <p><strong>JavaScript</strong>уже чуть сложнее, но с ним вы точно найдёте работу.</p>
162 <p><strong>JavaScript</strong>уже чуть сложнее, но с ним вы точно найдёте работу.</p>
163 <p><strong>Java</strong>- гарантия работы и хорошей зарплаты, но язык сложный, поэтому нужно верно оценить свои силы.</p>
163 <p><strong>Java</strong>- гарантия работы и хорошей зарплаты, но язык сложный, поэтому нужно верно оценить свои силы.</p>
164 <p><strong>PHP</strong>и <strong>Python:</strong>оба языка очень популярны, но в довольно узких областях. Если эти области вам по душе - замечательный вариант!</p>
164 <p><strong>PHP</strong>и <strong>Python:</strong>оба языка очень популярны, но в довольно узких областях. Если эти области вам по душе - замечательный вариант!</p>
165 <p>Опишем краткий алгоритм выбора.</p>
165 <p>Опишем краткий алгоритм выбора.</p>
166 <ul><li>Для начала выберите не язык, а интересное вам направление. Это может быть веб-, десктопная, мобильная или серверная разработка. А может быть, вы захотите заниматься анализом данных.</li>
166 <ul><li>Для начала выберите не язык, а интересное вам направление. Это может быть веб-, десктопная, мобильная или серверная разработка. А может быть, вы захотите заниматься анализом данных.</li>
167 <li>Теперь оцените свои силы и навыки и выберите язык, подходящий вашему уровню. Если вы никогда ничего не программировали и не учились программированию ни в школе, ни в университете, начните с языков полегче (JavaScript, PHP), а если чувствуете себя увереннее и уже пробовали что-то писать, можете выбрать Java.</li>
167 <li>Теперь оцените свои силы и навыки и выберите язык, подходящий вашему уровню. Если вы никогда ничего не программировали и не учились программированию ни в школе, ни в университете, начните с языков полегче (JavaScript, PHP), а если чувствуете себя увереннее и уже пробовали что-то писать, можете выбрать Java.</li>
168 <li>Определившись с языком и изучив его синтаксис, не забудьте познакомиться со <strong>стеком технологий</strong>и популярными<strong>фреймворками -</strong>это вам точно пригодится. Не надо пытаться сразу всё досконально изучить, но важно ориентироваться в технологиях.</li>
168 <li>Определившись с языком и изучив его синтаксис, не забудьте познакомиться со <strong>стеком технологий</strong>и популярными<strong>фреймворками -</strong>это вам точно пригодится. Не надо пытаться сразу всё досконально изучить, но важно ориентироваться в технологиях.</li>
169 </ul><p>* Решением суда запрещена "деятельность компании Meta Platforms Inc. по реализации продуктов - социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности.</p>
169 </ul><p>* Решением суда запрещена "деятельность компании Meta Platforms Inc. по реализации продуктов - социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности.</p>
170 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
170 <a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>