Гид по выбору первого языка программирования
Содержание:
- Выбор между визуальным и текстовым программированием для детей
- Семантика
- Вступление
- JavaScript
- Swift
- Синтаксис
- Зарабатывать много денег
- Ошибки синтаксиса
- Обращаем внимание на рынок труда
- Я хочу стать программистом. Где учиться?
- Сложные языки программирования: Java, C#, C++
- Языки программирования для работы с веб-ресурсами
- C#
- Резюме
- Визуальный – не значит «упрощенный до нуля»
- PHP
- По деньгам
- По перспективам
- Что нужно знать и уметь
- Kotlin
- Мой личный опыт
- В чём проблемы
- 📈 Востребованность языков программирования
- Python
- JavaScript
- Популярные языки программирования
Выбор между визуальным и текстовым программированием для детей
Говорят, что дети должны начинать с визуальных языков программирования, таких как Скретч (Scratch), а затем переходить к текстовым, например Python или JavaScript. Я считаю, что это просто смешно, особенно если учитывать, что большую часть карьеры я работал над созданием визуальных языков, позволяющих сделать разработку программного обеспечения более доступной для тех взрослых, которые обладают предметными знаниями, но не опытом программирования. Я также потратил много времени на разработку программного обеспечения с использованием визуальных языков (зачастую включающих текстовые фрагменты).
В этой статье рассказаны все подробности. Сразу подведу итог для родителей, которые интересуются, нужно ли их ребенку переходить к языкам на основе текста:
Не важно, визуальный язык или текстовый.
Важно, позволяет ли вашему ребенку определенный язык добиться того, что он хочет, и так, чтобы это было одновременно эффективно и приятно.
Вначале узнайте, что дети хотят сделать, и подберите хороший язык для решения конкретной задачи, который бы соответствовал их уровню знаний, опыту и способу мышления.
Миф, что взрослые не используют визуальные языки. Используют.
Семантика
Если синтаксис отвечает за техническую корректность конструкций языка, то семантика — за смысловое наполнение. В человеческом языке это сложная область: у одного слова может быть много прямых, переносных и контекстуальных значений. А еще есть фразеологизмы с особой семантикой. Кроме того, человеческие языки тесно связаны с культурой — заучить слова и правила недостаточно, нужно знакомиться с историей и традициями.
В плане семантики языки программирования устроены значительно проще. Смысл ключевого слова не изменятся в зависимости от контекста, ситуации или культурного бэкграунда программиста. Семантика ЯП — это про осмысленность языковых конструкций, а в более широком смысле — про проверку правильности программ. Точнее, она используется для формальной верификации — то есть математического доказательства, что текст программы не содержит ошибок алгоритма и соответствует целям, ради которых создавался.
Вступление
Дорогой читатель! В интернетах можно увидеть прорву дискуссий, где опытные разработчики спорят, какой язык лучше всех. Не надо вестись на это: лучшего нет. Разные лучше подходят для разных задач и людей.
Поэтому для начала надо понять свои задачи
Из-за чего вообще встал вопрос выбора языка? Захотелось делать что-то конкретное (игры, сайты, мобильные приложения)? Или важно как можно скорее получить работу в IT любой ценой, что бы ни пришлось кодить? Или хочется просто попробовать «посмотрим, интересно ли мне окажется, а там как пойдёт»?. Если хочется заниматься чем-то определённым — тогда важнее не теоретические сравнения языков, а то, какие используются конкретно в этой области
Часть информации об этом можно получить из текста ниже, но есть смысл и погуглить «what languages are used for %интересующая_область%»
Если хочется заниматься чем-то определённым — тогда важнее не теоретические сравнения языков, а то, какие используются конкретно в этой области. Часть информации об этом можно получить из текста ниже, но есть смысл и погуглить «what languages are used for %интересующая_область%».
Если важно как можно скорее пройти путь до получения работы, тогда тоже важнее текстов-сравнений может оказаться другая вещь. Стоит посмотреть на сайте вроде HeadHunter вакансии Junior-разработчиков своего города: какие языки чаще всего упоминаются в них?. А если нет ни спешки, ни определённого запроса, тогда спрошу так: есть ли потребность делать что-то такое, что пользователь видит глазами? Работа над веб-сервисами делится на фронтенд и бэкенд
Грубо говоря, фронтенд — это «что видно в браузере», а бэкенд — это «что выполняется далеко на сервере, чтобы фронтенду было что показывать». Когда пользователь нажимает на кнопку, её поведение прописал фронтендер — но если это кнопка «перейти к диалогу» и надо показать историю переписки, то дальше бэкенд извлечёт сообщения из базы данных на сервере
А если нет ни спешки, ни определённого запроса, тогда спрошу так: есть ли потребность делать что-то такое, что пользователь видит глазами? Работа над веб-сервисами делится на фронтенд и бэкенд. Грубо говоря, фронтенд — это «что видно в браузере», а бэкенд — это «что выполняется далеко на сервере, чтобы фронтенду было что показывать». Когда пользователь нажимает на кнопку, её поведение прописал фронтендер — но если это кнопка «перейти к диалогу» и надо показать историю переписки, то дальше бэкенд извлечёт сообщения из базы данных на сервере.
Так что разработчикам-фронтендерам при работе над кодом приходится задумываться о том, как выглядит пользовательский интерфейс, а вот бэкендерам — только непосредственно о коде. Кому-то близка визуальная сторона и хочется показывать пальцем «смотри, мама, вот это добавил я» (для этого подходит фронтенд или мобильная разработка), кому-то больше нравится иметь дело с внутренней логикой, чем с «кнопочками». Так что если уже есть понимание, что ближе, это может помочь с выбором.
А вот теперь можно читать про конкретные языки и решать, какой из них соотносится с личными целями. Расположил популярные языки по хронологии, в порядке их появления:
JavaScript
Сложность: можно выучить JavaScript быстро, главное — отрабатывать теорию на практике в тренажерах (подборка хороших интерактивов и обучалок). Уже за полгода можно освоить документацию, поскольку логика у него простая и гибкая. Язык мощный, а его инструменты просты и доступны.
Профессии: Frontend-разработчик / Fullstack-разработчик / Веб-девелопер.
Продукты: Frontend сайтов программируют только на Javascript, так что он используется на большинстве сайтов.
JavaScript — язык веб-разработок. Изначально на нем можно было программировать только frontend сайтов, но сейчас, благодаря Node.js, который выступает в роли веб-сервера, можно писать и серверные приложения. Язык делает сайты интерактивными и высокопроизводительными. А чтобы эффективно использовать возможности языка для создания красочных сайтов, нужно уметь пользоваться инструментами верстки HTML и CSS, знать один из популярных фреймворков (React, Vue или Angular).
В веб-разработках сообщество большое, так как fullstack- и frontend-разработчики нужны всем. Сайтов огромное количество, мы пользуемся ими каждый день, и их всегда нужно улучшать. Кроме того, такие проекты можно вести самому с нуля вплоть до самого релиза, что тоже очень ценно, если вам привычнее инди-разработка.
Курс
Frontend-разработчик
Цель специализации — дать полный набор скилов, необходимых для погружения в реалии разработки визуальной части веб-приложений. Дополнительная скидка 5% по промокоду BLOG.
Узнать больше
Swift
Раньше разработчики, работавшие в экосистеме Apple, могли программировать только на Objective-C. Спустя три десятилетия в Apple решили, что пришло время для чего-то нового. В 2014 году Apple запустила собственный язык программирования Swift.
Swift пригодится тем, кому интересно создавать приложения и сервисы для iOS, iPadOS, macOS, watchOS и всего остального, что Apple может запустить в течение следующих нескольких лет (например, ОС с дополненной реальностью)
Также знание iOS важно, если вы делаете продукты, которые взаимодействуют с мобильными приложениями и сервисами. . Если вы изучаете элементы Swift, познакомьтесь с функциями, циклами, наборами, массивами и строками, а также со структурами и классами
Swift Playgrounds, хотя и ориентирована на детей, полезна для начинающих программистов Swift всех возрастов.
Если вы изучаете элементы Swift, познакомьтесь с функциями, циклами, наборами, массивами и строками, а также со структурами и классами. Swift Playgrounds, хотя и ориентирована на детей, полезна для начинающих программистов Swift всех возрастов.
Синтаксис
Но заучить слова мало — надо еще усвоить принципы, по которым они образуют языковые конструкции. Такие правила называются синтаксисом — он определяет структуру и форму языка.
В английском вопросительные предложения отличаются от повествовательных обратным порядком слов: «Mark will go to the park» и «Will Mark go to the park?». Только корректная конструкция даст вашему собеседнику понять, сообщаете вы ему новую информацию или ждете ответа от него.
Чтобы компьютер понял, чего вы от него хотите, надо знать синтаксис языка программирования. Неправильные синтаксические конструкции приводят к ошибкам при компиляции (если язык компилируемый) или при исполнении (если интерпретируемый). А еще — к неправильным результатам вычислений или ошибочным действиям. Простой и универсальный пример — скобки в математических расчетах, которые повышают приоритет части выражения.
result := a + (b * 2) / c
и
result := (a + (b * 2)) / c
Эти выражения дают разные результаты при одинаковых значениях переменных a, b и c.
Усвоить синтаксис — одна из самых сложных задач при изучении языка программирования с нуля. Вероятно, большую часть времени, затраченного на создание программы, вы будете исправлять ошибки компилятора, вызванные некорректным синтаксисом.
В человеческих языках много устоявшихся за века иррациональных конструкций. А компьютерные изначально проектировались так, чтобы исключить такие сложности. Ни в одном популярном ЯП вы не встретите ситуации, когда два ключевых слова используются в одинаковых ситуациях по разным синтаксическим правилам. Если в конце инструкции следует ставить точку с запятой, то так же надо поступать во всех инструкциях и во всех случаях. Каким бы сложным ни был программный код, какие бы редкие и особенные ключевые слова ни использовались в нем — завершать инструкцию будет всегда точка с запятой, а не другие символы.
Зарабатывать много денег
Если ваша цель — сразу на старте получать большую зарплату, нужно отбирать языки по востребованности прямо сегодня. Мы уже изучали рынок зарплат программистов в России, и вот картинка из этого материала:
Самые высокооплачиваемые ЯП в России по данным Моего круга на конец 2018 года.
Сразу видно, что максимум денег приносят Elixir, Golang и Scala, потом идут Objective-C и Ruby. Не боитесь сложностей — учите Scala, хотите быть в тренде — Golang вам в помощь, любите простоту и ООП — начинайте с Ruby.
Важно: одно только знание языка не гарантирует сразу высоких зарплат (да и вообще ничего не гарантирует) — для этого нужно владеть инструментом на уровне мидла или сеньора. Но на старте зарплата у таких программистов обычно немного выше, чем у разработчиков на других языках
Ошибки синтаксиса
Ошибки в синтаксисе – огромная проблема детей и взрослых. Кто хочет тратить дни, считая скобки, исправляя опечатки или выискивая пропущенное двоеточие, которое точно должно где-то быть?
Да, хорошие редакторы могут помочь вам обнаружить эти ошибки, но даже лучшие редакторы не позволяют сделать синтаксическую ошибку и не исправить ее. В Scratch вы работаете непосредственно с концепцией программирования вместо того, чтобы разбивать ее на отдельные фрагменты задач. (Это иногда разочаровывает, если, например, вы хотите поменять местами повторения в бесконечном цикле. Но это просто работа, сделать ее не сложно. – Вся сложность в том, чтобы упростить полученное решение.)
Обращаем внимание на рынок труда
В том случае, если вы решили подучить язык программирования лично для себя, интереса ради, то на этом пункте можно не заострять внимание. Он важен исключительно для людей, которые собираются профессионально реализовать себя в сфере разработки ПО
Итак, следует знать, что лидером по количеству вакансий является Java, а второе место занимает JavaScript. Однако мы должны учитывать, что JavaScript, несмотря на то, что он существует уже два десятка лет, активно используется лишь в последнее время. Именно с его помощью создаются ресурсы и вспомогательное ПО таких компаний как PayPal, Walmart и Netflix.
При этом, анализируя рынок труда, можно с уверенностью сказать, что сейчас наблюдается ощутимый недостаток в JavaScript-девелоперах. Например, на каждую такую вакансию приходится всего 0,6 соискателя. Для сравнения, на одно место Java-разработчика претендует целых 2,7 специалиста.
Я хочу стать программистом. Где учиться?
Можно самостоятельно учиться программированию, записаться на онлайн-курсы и даже учиться очно — плюсы есть у каждого варианта.
Самообразование не требует серьезных затрат, понадобятся только усидчивость и умение добывать нужную информацию. При правильном подходе уже через несколько месяцев после начала обучения получится написать простую программу.
С другой стороны, грамотно составленный курс обучения даст новичку полное представление о профессии и позволит быстро освоить разные инструменты на практике.
Обучение онлайн по сравнению с очным требует меньше времени, а хорошие онлайн-школы сопровождает своих учеников до первого трудоустройства, помогает с составлением резюме и портфолио. Например, в SkillFactory помощью в трудоустройстве занимается специальный карьерный центр.
Самостоятельное обучение: блоги, приложения, книги, бесплатные курсы и видеоуроки
Плюс: дает возможность попробовать себя в новой сфере деятельности без вложений.
Минус: отсутствие опытного наставника и структуры работы. Кроме этого, бесплатные курсы бывают поверхностными, поэтому с их помощью редко получается стать опытным специалистом.
Поступление в вуз или колледж
Плюс: профессиональное образование помогает расширить кругозор. Помимо фундаментальных знаний по специальности, выпускники получают общие знания в других сферах: экономике, культуре, политике и естественных науках.
Минус: IT-индустрия развивается быстро, современные государственные программы не успевают под нее адаптироваться, и выпускники рискуют выйти в большой мир разработки с неактуальными или неполными знаниями.
Онлайн-курсы
Плюс: главный плюс онлайн-обучения на курсах программистов — это поддержка ментора и формирование профессионального сообщества. Все вопросы можно обсудить с коллегами по цеху. Также онлайн-школы предоставляют ученикам доступ к большим методическим базам.
Минус: сам процесс обучения может занимать от полугода до двух лет, потребуется мотивация, чтобы его закончить.
Сложные языки программирования: Java, C#, C++
Если у вас уже есть опыт, связанный с IT или вы хотите поиграть в более продвинутой “песочнице”, или же вы не стремитесь выучить программирование быстро, то пробуйте следующее:
Java
Отменный компилируемый язык программирования для решения целого спектра задач – от написания настольных приложений до создания серверных программ для веб-сайтов. Имеет мощную аудиторию поклонников, богатую историю и множество библиотек для практически любой задачи (тут можно рассказать про то, что GoIT учит Java с нуля).
Как стать разработчиком Java: Пошаговая инструкция для Java Junior
568
С#
Язык программирования от компании Microsoft универсального назначения. Подходит, если Java для вас это слишком просто. Имеет практически идентичный с Java синтаксис, но отличается расширенном набором функций и производимых операций. WPF для оконных приложений, ASP.NET для разработки сайтов и прочие высококачественные фреймворки для всех типов задач. Такой себе инструмент на все случаи жизни.
C++
Разработка систем рендеринга для игр, низкоуровневая работа с памятью, высокая производительность и огромный (бесконечный) набор библиотек… С++ — это наиболее оптимизированный и быстрый язык программирования из всех существующих. Но его изучение потребует особенной усидчивости и трудолюбия. На текущий момент нельзя полностью его изучить, так как возможности его практически безграничны).
Языки программирования для работы с веб-ресурсами
Разработка и наполнение сайтов требует знаний специфики работы с динамическими страницами и гиперссылками. Как правило, программисты, которые специализируются на веб-разработке, не выходят за рамки своей специализации, ведь переключиться с создания веб-страниц на написание, например, приложений или работу с базами данных крайне сложно.
JavaScript |
HTML |
Позволяет создавать и наполнять динамические веб-страницы | Самый востребованный в рамках разработки веб-страниц |
Большая библиотека модулей | Позволяет создать интересный многоуровневый сайт |
Большое количество обучающих материалов, огромное сообщество пользователей |
Минимальное количество алгоритмов позволяет быстро освоить язык |
Низкая нагрузка на сервер при высокой скорости работы приложения |
|
Простой синтаксис |
Обратите внимание! Такие языки программирования как JavaScript и Java – не одно и то же: второй считается одним из наиболее сложных языков программирования, а его изучение с нуля практически невозможно, особенно без помощи профессионала
C#
C# – язык программирования, который был разработан корпорацией Microsoft в 2010 году. Это объектно‑ориентированный язык программирования (ООП), который используется для разработки программного обеспечения, десктопных и веб‑приложений. ООП означает, что в языке используется методология, основанная на разбивке сложных, больших программ, на небольшие объекты с атрибутами. Программирование на языке C# широко распространено не только в веб‑разработке, но и в разработке программного обеспечения и приложений, поэтому спрос на C# программистов остаётся стабильно высоким.
С# является относительно несложным языком, который поможет развить общие навыки программирования, что в дальнейшем поможет разобраться в работе языков сверхвысокого уровня.
Резюме
Текстовое программирование – не приоритет в обучении дошкольников и детей младшего школьного возраста.
Программирование в Scratch и других визуальных языках может не только послужить ступенькой для дальнейшего изучения Python и Java. Изучение Scratch полезно само по себе, и некоторые дети продолжат использовать визуальную среду, но уже «взрослую».
Цель обучения – дать детям навыки создания цифровых проектов и профессиональные знания, которые можно применить независимо от языка программирования.
Конечно, некоторые дети станут разработчиками программного обеспечения и должны будут изучать языки, которые используются в коммерческой разработке. Но они должны будут выучить текстовый язык потому, что это подходящий инструмент для разработки их проекта; потому, что они заинтересованы и/или это принесет пользу их профессиональному мастерству. И переходить к этим языкам нужно, когда они достаточно улучшат навыки печати. До тех пор больше пользы принесут визуальные языки программирования.
Я предпочел бы научить ребенка программировать в Scratch, чтобы он мог с энтузиазмом создавать фантастические проекты, а не заставлять того же ребенка бороться с синтаксисом в текстовом редакторе. Ведь так он больше узнает о вычислительном мышлении и будет иметь лучшее представление о мире технологий вокруг.
Визуальный – не значит «упрощенный до нуля»
Профессиональные разработчики программного обеспечения часто предполагают, что такие языки, как Scratch являются «упрощенной дальше некуда» версией программирования.
Но все не совсем так. Что реально делает Scratch, так это удаляет лишние детали, которые на самом деле лишь мешают детям быстро пройти путь от зарождения идеи до запуска кода.
Вместо того, чтобы тратить дни и обнаруживать, что в конце строки пропущено двоеточие, дети могут провести больше времени в размышлениях о логике своего проекта. Они реально тратят больше времени на вычислительное мышление и меньше на то, чтобы осчастливить компьютер.
Scratch может быть сложным настолько, насколько это необходимо. Вы можете рисовать в нем фрактальные деревья и решать сложные проблемы синхронизации.
PHP
Логотип PHP
Если с помощью JavaScript пишутся скрипты для лицевой части сайта (front-end), то с помощью PHP пишется серверная часть. Этот блог и все остальные блоги на WordPress, написаны с помощью этого языка. Кроме того, исходя из заявлений W3Techs, php используют 79% сайтов из опрошенных. Учитывая то, что подавляющее число блогов создается на WordPress, то php еще очень долго будет жить.
Платформа | Серверная часть |
Обучение | Лёгок в освоении |
Популярность | Популярен. №6 в списке PYPL. |
Средняя зарплата (мес) | 1700$ |
Преимущества | Знание языка = знание структуры большей части сайтов в интернете. Лёгок в учебе и легко найти работу. |
Недостатки | Популярность падает, маленькими шагами, но падает. Особенно на фоне новых языков, таких как Python. |
По деньгам
Деньги на разных рынках принципиально разные. Например, в Кремниевой долине в разы выше. Много достойных вакансий для тех, кто пишет на Java (разработкой под Android) и Java Script; на С/С++, а также на Objective-С и Swift (разработка под iOS).
Глобально, на порядки больше денег приносят работа в компаниях-мейджорах и такие языки, как F#, Clojure, Groovy, Perl, Erlang, Rust, Scala, Go. Кстати, в этом же ряду популярный простой и лаконичный Ruby. А Rust любят многие в IT-комьюнити. Менее популярные языки часто изучают в дополнение к своему основному, широко используемому на рынке.
Доступные и популярные языки, такие как Java или JavaScript (JS), а также языки, дающие фундаментальные знания (С/С++), приносят хорошие деньги и позволяют быстро находить работу в России, на аутсорсе или с релокацией в другие страны.
По перспективам
JavaScipt, C/С++, Python, Swift, Java. (После Java легче изучать перспективные Go и Scala. Scala используется в таких компаниях, как Twitter, Asana, Soundcloud, Hootsuite, Groupon.com, Foursquare, Tumblr и Coursera, но как первый язык его брать не рекомендуют, лучше подготовиться). Есть прогнозы о том, что Go, Scala, R, Rust, Kotlin, Elixir, Clojure и Haskell будут набирать популярность, но начинать лучше с мейнстримового языка.
Отдельно стоит тут сказать про C/С++: немного сложнее в изучении, но если вы хотите сделать карьеру в IT, то это хороший выбор для старта. Вы будете глубже понимать программирование, а не только иметь навыки. Тут нужны баланс, правильные стратегия и тактика, об этом подробнее поговорим чуть позже. Чтобы зарабатывать и скорее войти на рынок, нужны навыки, причем именно те, которые описывают в своих вакансиях работодатели. А для того, чтобы стать архитектором, ведущим разработчиком, нужно еще и глубокое понимание в дополнение к стеку разработчика.
Что нужно знать и уметь
Работу программиста не назовешь простой и понятной. Для освоения этой профессии понадобится немаленький багаж знаний и умений. Сотрудник должен иметь способности к многозадачности, уметь находить контакт с коллегами, знать иностранный язык и язык программирования.
В остальном же краткий перечень требований выглядит следующим образом:
- Уметь писать собственные и читать чужие коды.
- Иметь математические способности и логическое, аналитическое мышление.
- Интересоваться информационными технологиями, иметь глубокие знания в этой сфере и постоянно их обновлять.
- Знать английский язык.
- Иметь способности к многозадачности.
- Уметь автоматически переводить решения бизнес-задач на машинный язык.
- Знать, как вносить, обрабатывать, хранить информацию при помощи разработанных программ.
- Создавать, настраивать и внедрять в производство программные продукты.
- Уметь автоматизировать повторяющиеся процессы.
- Тестировать разработанный продукт и уметь исправлять выявленные ошибки.
- Понимать технические задания и самому их составлять.
- Уметь пользоваться инструментами программирования, фреймворками и вспомогательными программами.
И это лишь часть того, что должен уметь делать программист.
Kotlin
Хотя Kotlin используется меньше, чем Java и Python, он быстро завоевал популярность — особенно после того, как Google назвал его первоклассным языком разработки для Android.
Google настолько стремится сделать Kotlin популярным языком, что теперь предлагает онлайн-курс Android Basics in Kotlin, который является отличной отправной точкой для начинающих. Есть также дополнительные курсы от Google: Kotlin Bootcamp for Programmers, Android Kotlin Fundamentals, Advanced Android in Kotlin.
Большинство разработчиков Kotlin используют этот язык для создания мобильных приложений, но он все чаще используется для десктопных приложений, бэкенда и интернета вещей (IoT). Даже если вы не заинтересованы в создании приложений для Android, этот язык стоит изучить.
Мой личный опыт
Я начинал с PHP и каждый день видел прогресс: какой-то новый подход, массивы вместо переменных, супермассивы, базы данных и так далее. Освоив PHP на более-менее сносном уровне, я двинулся дальше и приступил к JavaScript. Разобравшись с ним, я попробовал C++, потому что хотел заниматься играми. Скачал учебник, который все рекомендовали, позанимался по нему — и бросил программирование на несколько лет. М-да.
Сейчас я программирую на PHP, JS, Java, Python, C# и C++. С каждым новым языком я постоянно возвращался к основам и узнавал что-то новое о работе компьютера: как устроена память, как работает процессор, какой код будет работать быстро, а какой — нет. И, самое главное — почему. Если бы я сразу начал с C++, то, скорее всего, решил бы, что это не моё — слишком много информации.
В чём проблемы
Тексты «какие языки учить» зачастую такие слабые, что опытные разработчики разнесли бы их в пух и прах, но опытные разработчики их просто не открывают. Их открывают новички, у которых нет компетенции, чтобы заметить подвох. В результате новички доверяют всякой ерунде, а проблемы в текстах остаются незамеченными и процветают. Что именно это за проблемы?
Проблема первая: отсутствие содержания. Похоже, иногда эти тексты пишут люди, не имеющие о программировании никакого представления, и они ухитряются писать целые абзацы, в которых не сказано вообще ничего.
Пример: «На сегодняшний день многие студенты выбирают JavaScript в качестве проводника в мир технологий. И правильно делают, ведь человек, знающий JavaScript, вряд ли останется без дела. Популярность и практичность этого языка позволяют ему занять одно из лидирующих мест в списке языков, необходимых к изучению.
Однако также стоит учесть, что JavaScript – это один из наиболее популярных языков программирования. А это значит, что на него существует как достаточный спрос, так и огромное количество предложений. Поэтому если вы изучаете или хотите изучить этот язык, то постарайтесь максимально в нем разобраться и стать отличным специалистом».
Проблема вторая: закидывание читателя мелочами без объяснения главного.
Представьте, что человек захотел впервые купить автомобиль. Он ещё не вполне понимает, какие есть варианты кузовов, приводов и коробок передач. А ему с ходу вываливают список из десяти машин, где смешано в кучу всё: внедорожники, малолитражки, грузовики. И вместо пояснений о том, в чём их принципиальные различия, пишут набор разрозненных фактов вроде «у этого автомобиля есть защита картера». Сильно ли это поможет человеку?
А с текстами о языках происходит именно так. Похоже, когда кому-то ставят задачу написать про них, зачастую автор гуглит по пять случайных фактов про каждый и уверенно идёт за гонораром.
Пример: «Go использовался для создания Ethereum». Что, серьёзно, вот это самая важная информация про язык (когда речь идёт не о Solidity)? Вот она поможет сделать правильный выбор?
Проблема третья: сообщают вещи, которые начинающим попросту ничего не скажут.
Пример: «Недостатки Python: нет таких модификаторов доступа, как protected, private и public».
Так и представляется картина маслом. Школьница Василиса Пупкина, ещё почти ничего не понимающая в программировании, пытается выбрать себе первый язык. Читает такое описание и говорит: «а, ну раз нет модификатора protected, конечно, я предпочту C#». Ну камон, неужели не ясно, что подобная информация даст Василисе только ощущение «всё это программирование непонятная хрень, лучше послушаю песню «Валенки»»?
Проблема четвёртая: бездумное следование рейтингам популярности языков. «А-а-а, Go поднялся в индексе TIOBE на несколько строчек, срочно учим его!» Ну слушайте, а ещё по TIOBE получается, что обучающий язык Scratch обошёл Dart — и что теперь, дартовикам надо срочно перейти на детский язык, что ли?
Все эти пузомерки очень условные: результат зависит от того, какую метрику использовать. Поэтому не надо молиться на конкретные места в рейтингах, будто это какая-то спущенная свыше истина. Да, популярность языка имеет значение (по популярным больше справочного материала и вакансий), но не требуется разбираться «какой самый главный в мире», из ряда самых известных подойдёт любой. А чтобы найти эти «самые известные», не требуется лезть в рейтинги, они и так на слуху.
Пример: «В некоторых списках Python фигурирует на 5-ом месте, в других его ставят на 2-ое».
Проблема пятая: за всем перечисленным порой забывают про области применения, а для новичков это может быть важнее всего. Представим, что школьница Василиса, которая каждый день пользуется кучей мобильных приложений, захотела сделать своё собственное. Какая ей тогда разница, какие модификаторы доступа у Python, кто кого обошёл в рейтингах и на чём написан Ethereum? Всё, что ей надо знать — на чём пишут для iOS и для Android.
Поэтому вот текст, который пробует от всего этого уйти:
📈 Востребованность языков программирования
Исходя из статистики, представленной порталом habr.com, и отражающей запросы в открытых вакансиях программистов, наиболее востребованными языками программирования выступают JavaScript и SQL. За ними следуют языки 1С, PHP и Java.
Сегодня на биржах фриланса представлен большой выбор заданий для программистов, связанных с написанием тех или иных программ. Их создание требует владения языками программирования, при помощи которых разработанное человеком техническое задание к программе превращается в четкий алгоритм действий.
Для новичков, не обладающих большим объемом знаний, на первом этапе характерно стремление к использованию максимально простых и доступных решений, не допускающих неоднозначности трактовки. Здесь можно проследить сходство с поведением на дороге начинающих водителей, предпочитающих дороги с менее загруженным движением и отсутствием сложных перекрестков.
Более опытные программисты, уже имеющие за плечами определенный багаж знаний, могут применять более сложные решения, но в процессе обучения и они начинали с наиболее простых и доступных для восприятия языков программирования, позволяющих начать работу в новой для себя профессии. С чего же лучше всего начать?
Python
Python — пожалуй, самый простой язык программирования из нашего списка. Здесь минимум служебных символов, динамическая типизация, максимально понятный синтаксис. И если вы мало что поняли из прошлого предложения — это повод начать обучение именно с Python.
Несмотря на визуальную простоту, этот язык — один из мощнейших. С его помощью с одинаковой легкостью можно и работать с текстом, и строить нейронные сети. Посмотрите:
В этом коде мы создали собственную функцию для вычисления последовательности Фибоначчи, а потом вывели ее на экран. Всего 6 строк потребовалось, чтобы описать достаточно сложное математическое действие.
Стоит упомянуть, что на данный момент актуальны две версии: Python 2 и Python 3. Вам за основу лучше брать последнюю, так как поддержка Python 2, а значит — и активная разработка на ней, прекратится совсем скоро.
Кстати, для тех, кто решился изучать Python, мы подготовили список полезных и практичных советов.
JavaScript
Согласно ежегодному опросу разработчиков на , более 67% всех разработчиков используют JavaScript. Он универсален, может применяться практически в любой области программного обеспечения и является одним из основных интерфейсных языков всего интернета. JavaScript в основном используется для создания интерактивных веб-страниц.
JavaScript является мультипарадигмальным языком и поддерживает множество стилей программирования от объектно-ориентированного до функционального. У него также есть огромное, быстро растущее число библиотек.
Язык настолько популярен, что у него даже есть фреймворки в областях, где он является не самым лучшим вариантом для использования, например, в разработке игр и виртуальной реальности.
Популярные языки программирования
Java, C, C++, C#, Python, PHP, JavaScript, Ruby, Objective-C, Swift — одни из самых востребованных языков программирования уже на протяжении многих лет, но это не полный список всех языков, их есть намного больше. Рассмотрим сферы применения вышеуказанных языков программирования.
Python, Ruby, PHP | Cерверная часть в создании сайтов и мобильных приложений. Python используют такие популярные сервисы, как YouTube, Instagram, DropBox. PHP используют: WordPress, Wikipedia, Facebook. |
Objective-C, Swift | Создание приложений под iOS. |
HTML, CSS, JavaScript | Клиентская часть в создании сайтов. Работают в связке: HTML является «каркасом» сайта, CSS — оформление/внешний вид, а JavaScript — интерактивность (анимация, эффекты). JavaScript также уже стал платформой для создания многих фреймворков. |
Java | Программирование под Android (Java). Также серверная часть сайтов. Java используется в Gmail, Minecraft, Android-приложениях. |
C, C++, C# | Используются в операционных системах (Windows, Linux) и при создании ресурсоемких программ/игр. |
Примечание: HTML и CSS — это не языки программирования. HTML является языком гипертекстовой разметки, а CSS — это каскадные таблицы стилей. По сравнению с другими языками программирования, HTML и CSS являются первой ступенькой в веб-программировании, на изучение которых требуется в разы меньше времени и усилий.
И что из этого учить? Всё зависит от того, как вы хотите зарабатывать деньги. Плохие новости — учить что-то одно из списка не получится. Хорошие новости — не нужно учить всё и вся.
Если деньги не в приоритете, то можно начинать в таком порядке: HTML, CSS, JavaScript, Python. Также пригодятся навыки работы с базами данных — это MySQL.