Какой язык программирования выбрать новичку
Какой язык программирования выбрать новичку
Как выбрать первый язык программирования, гайд желающим начать программировать
Кратко для введения: я являюсь профессиональным разработчиком игр и мне есть что сказать себе 15 лет назад. Я решил оформить статью с рекомендациями тем, кто находится в самом начале пути к программированию. Статья в основном направлена на школьников (и их родителей), студентов и может быть джунов. Для людей более старшего возраста, но желающих стать программистами, думаю, также будет интересно.
Сначала приведу несколько постулатов, которые просто примем за истину, как аксиомы:
Самое важное состоит в том что сменить язык и технологию многократно проще чем выучить первую, а множество навыков языконезависимы. Поэтому из сложного пути стоит выкинуть всё сложное что не является необходимым, всё что можно добрать потом, а взять в дорогу всё что вам поможет.
На протяжении всего времени, до того как вы сможете зарабатывать какие-то деньги при помощи программирования, вам придётся идти на голом энтузиазме. На пути вы встретите множество проблем которые на определённом этапе развития могут казаться непреодолимыми. И чтобы сюжет с КДПВ не состоялся, в этот момент у вас должно быть достаточно воли и желания этот период преодолеть. Поэтому управление собственной мотивацией я считаю наиболее важной частью процесса обучения. А утверждение что там много потом будут платить, как правило, не является хорошей мотивацией
Поэтому первый язык и технологию я рекомендую выбирать строго по любви. Во всех технологиях к которым вы сейчас свободно найдёте бесплатные онлайн курсы есть заработки, просто полностью исключите вопрос «сколько я заработаю» и «насколько данный язык/технология востребованы в моём городе» из критериев выбора. Также я считаю что бесплатных образовательных материалов сейчас неимоверно много и я не вижу особого смысла покупать платные онлайн курсы. Из платного образования кружки с программированием и роботостроением для детей я считаю хорошней идеей, также любые технические лицеи, гимназии, университеты, т.е. классическое образование, если вы находитесь в возрасте приемлемом для такого образования.
Курсы вида «мы сделаем из вас фронтендера за 2 месяца» я не рекомендую. В основном потому что за мой многолетний опыт я ни разу не видел состоявшегося программиста с таким бекграундом. Один раз прыгнуть выше головы может и получится, удержаться в полёте — нет. Из всех правил, конечно, бывают исключения, но готовы ли вы поставить столько времени и денег на лотерею где выигрыш зависит не от вас? А от вас он не зависит потому что вы не стоите в этот момент на ногах и следовательно не управляете ситуацией.
Тут отдельно для родителей: школа с углублённой технической программой многократно лучше обычной. Если уклон только в информатику, то это не так хорошо. Хорошо, когда углублены математика, физика, информатика, английский язык. Чем больше удастся впихать математики в обычный период стандартного обучения школа-вуз, тем легче будет с программированием, но без фанатизма, пережимать тоже нельзя. Проблема в том что базовая математическая подготовка, во-первых очень сильно развивает мозг, а во-вторых, к сожалению, практически не может быть освоена потом.
Про вузы похоже на школы: Диплом потом не нужен, вообще, совсем. Кроме момента эмиграции. Для получения рабочей визы в другой стране диплом очень поможет, но и это решаемо. В университет имеет смысл идти только за навыками. И это матанализ, линейная алгебра, дифференциальные уравнения, дискретная математика, теория вероятностей, матстатистика. Какие модные технологии сегодня есть в университете абсолютно не важно. Хорошо, когда вокруг университета бегают HR крупных компаний, всякие Яндекс, Intel, IBM, Касперский и другие. Туда вполне реально попасть, и они, как правило, содержат всякие лаборатории и спецкурсы, которые очень хороши.
Если вы взрослый человек и у вас нет математического бекграунда, то ничего страшного, не пытайтесь его создать прямо сейчас, просто спектр ваших направление несколько уже, что не отменяет продвижения в рамках доступных технологий. Если будет очень надо — онлайн образование в помощь, это тяжело, но возможно.
Итак, алгоритм как я советую выбрать язык программирования
Идёте и гугл, яндекс или чем вы пользуетесь и забиваете там запрос: «бесплатные онлайн курсы программирования» и выбираете просто по описаниям 5 разных языков. Почитайте про разные, может что-то зацепит. Если что-то зацепило, всё выбор сделан, берите это.
По каждому языку идёте в википедию и читаете про этот язык. Что-то не понравится, то выкидывайте. Останется 2-3 языка. Если что-то зацепило, всё выбор сделан, берите это.
Определитесь с предметной областью, что вам интересно: например модифицировать игры и писать для них скрипты или писать игры целиком, сделать сайт, телеграм бота, сделать финансовый расчёт, смоделировать что-нибудь типа эпидемии, управлять роботом, или ещё что-нибудь. Важно взять то, что лично вам интересно, а не что кто-то считает важным.
Поищите курсы про интересную вам специфику на разных языках.
Пробуйте всё что нравится.
Ключевой момент поймать желание в этом закопаться. И как только вы это желание поймали, начинайте любой онлайн курс. Если возникли сложности и проблемы, попробуйте другой курс или другой язык. Не бойтесь попробовать разное. Огонь в глазах должен быть вашим ориентиром и путеводной звездой.
Если выбрать направление в котором потенциальная зарплата больше, а фана нет, то риск не дойти многократно увеличивается. Поэтому первую технологию нужно выбирать только по любви. А по расчёту выбирать будете уже следующие технологии, когда будет некий бекграунд. Обычно это даже не второй а третий-четвёртый язык программирования. А менять технологии всё равно придётся, потому что всё меняется очень быстро. И даже такой консервативный язык как C++ качественно меняется и программирование на нём требует новых подходов.
Технологии которые сейчас можно изучать сильно устареют и изменятся, когда вы дойдёте до того чтобы применять их на работе. Технологии которые я сейчас использую в работе и хобби в принципе не существовали, когда я учился программировать. Поэтому вообще расслабьтесь и делайте то, что штырит и прёт, а не то что модно или кому-то нужно. Более того знать несколько языков и разных технологий крайне полезно для опыта и общего развития в отрасли. Можно сравнивать разные подходы и совершенствовать свой стиль и путь.
Несколько очень частых вопросов
Нужен ли английский?
Чтобы начать прямо сейчас — нет. Но вообще хорошо бы. Если можно сконцентрироваться на этом в школе и университете, то это неплохо. Но не стоит откладывать по принципу «выучу, потом займусь программированием».
Нужна ли высшая математика?
Чтобы начать прямо сейчас — нет. Но вообще хорошо бы. Если можно сконцентрироваться на этом в школе и университете, то это неплохо. Но не стоит откладывать по принципу «выучу, потом займусь программированием».
Нужна ли высшее образование?
Чтобы начать прямо сейчас — нет. Но вообще хорошо бы. Если можно сконцентрироваться на этом в школе и университете, то это неплохо. Но не стоит откладывать по принципу «выучу, потом займусь программированием».
Чтобы начать прямо сейчас — нет. Точно не стоит откладывать по принципу «выучу, потом займусь программированием». Ну вы поняли 🙂
В начале, когда вы учитесь ходить нужно учиться именно ходить, с любой скоростью и в любом направлении, направление выберете потом. Тоже самое с обучением плаванию, езде на велосипеде, автомобиле. Сначала вы учитесь правильно бегать, тренируетесь а потом бежите марафон. Список этих аналогий можно продолжать бесконечно. Сначала вы осваиваете инструмент и воспитываете в себе навыки, потом уже выбираете направление движения и интересные вам направления развития в рамках навыка. Вот с программированием ровно также. Просто начните с следуйте за удовольствием.
Какой язык программирования мне выбрать?
Программный директор SkillFactory.
При выборе профессии лучше всего ориентироваться на популярность, востребованность языка среди работодателей, сложность изучения и, конечно же, отрасли. Некоторые языки и наборы языков свойственны даже вполне определенным профессиям: например, Android-разработчику необходимы Java и Kotlin, а чтобы написать приложение на iOS, вам понадобится Swift. Вместе с программным директором SkillFactory Евгением Картавцом разбираем самые популярные языки программирования.
Как оценивают популярность языка программирования?
Почти всем известен индекс TIOBE, компании по разработке софта. Этот рейтинг основан на проценте запросов в поисковиках конкретного языка от запросов по всем языкам и ежемесячно составляется на основе данных из Google, Baidu, Wikipedia, Amazon и Ebay (внимание: Яндекс тут не учитывается). Он не показывает, какой язык лучше, а скорее помогает программистам проверить, насколько актуальные языки они используют.
Индекс TIOBE — не единственный в своем роде. Вот еще несколько рейтингов, на которые можно опираться:
PYPL (Popularity of Programming Language index) — рейтинг GitHub оценивает по Google Trends, к каким языкам чаще всего ищут уроки;
Stack Overflow — сервис вопросов и ответов по теме программирования проводит масштабные исследования рынка и опросы разработчиков.
IEEE — Институт инженеров электротехники и электроники ежегодно публикует на своем сайте рейтинг языков программирования, основанный на 11 параметрах и восьми источниках, включающих соцсети и GitHub.
Подробнее о популярности языков и причинах их роста мы писали на Habr.
Если вы планируете изучать язык, чтобы потом найти работу с его применением, мы советуем оценивать его популярность по количеству вакансий в вашем городе. Заходите на hh.ru, набираете в поиске Python или С++, и видите количество вакансий с упоминанием языка.
Какие языки проще, а какие сложнее?
Трудно объективно определить, какой язык проще, а какой сложнее, потому что это зависит не только от его особенностей, но и от вашего бэкграунда, желания разбираться в документации и т.д.
Относительно универсальный критерий сложности — близость языка к программированию на машинном коде. Чем ближе к нему язык, тем более он низкоуровневый. Высокоуровневые языки, наоборот, лучше адаптированы для использования программистом.
У высокоуровневых языков есть крупные стандартные библиотеки, а значит, большое количество разработанных доступных решений. Низкоуровневые языки предполагают работу с процессором, памятью и другими аппаратными ресурсами: можно контролировать всю изнанку, но из-за этого легче запутаться в синтаксисе. Впрочем, и такая классификация условна: на тему того, какой язык отнести к высокому, а какой к низкому уровню, ведутся споры.
«В целом, сложность языка — довольно субъективный вопрос. Для изучения с нуля лучше всего подходят Python и JavaScript. PHP, Swift и Kotlin — немного сложнее. Java и C# — еще сложнее. C++, на мой взгляд, самый сложный. Go — достаточно простой язык, но у него сложная сфера применения, поэтому проще всего на него переходить с другого языка».
Kotlin
Сложность: поскольку одной из целей создания языка было упростить Java, синтаксис Kotlin — интуитивно понятный и лаконичный.
Продукты: Uber, Pinterest, Basecamp.
Российская компания JetBrains представила язык Kotlin в 2016 году как альтернативу Java. Благодаря официальной поддержке Google он стал языком разработки приложений на Android. При этом он совместим с Java: код обоих языков можно использовать в одном и том же проекте. Помимо разработки Android, Kotlin используют и в серверных, и в клиентских приложениях для веб-разработок и backend.
Сообщество Kotlin живое, хоть и немногочисленное, многие общаются на форумах или в Slack. Язык развивается не очень быстро, несмотря на открытость исходного кода.
Swift
Сложность: философия языка — простота и производительность, так что у него понятный, логичный и удобный синтаксис. В нем легко разбираться, если у вас уже есть база из высокоуровневых языков, но и без нее все не так сложно.
Продукты: Safari, Procreate, Kickstarter, VSCO
На Swift создают продукты для экосистемы Apple: приложения для iOS, Mac, Apple Watch, Apple TV. В этом его преимущество и недостаток. С одной стороны, разработчики на iOS востребованы, их немного, поэтому можно будет быстро найти работу. С другой стороны, приложения сильно завязаны на своей экосистеме, и на других платформах они работают с трудом, на костылях. При этом делать функциональные и красивые приложения на Swift — проще. Разрабатывая их, вы будете сталкиваться и с UI-дизайном, и с дополненной реальностью. Swift многое взял из языка Objective-C, поэтому не лишним будет знакомство и с ним, чтобы в дальнейшем развиваться в направлении разработок для iOS.
Обычно продукты Apple закрыты для сообщества, но у Swift открытый исходный код, что полезно как языку, так и комьюнити.
Сложность: синтаксис Golang минимален, а широкая стандартная библиотека позволяет быстро разобраться в управлении командами.
Продукты: YouTube, архитектура Ozon, backend Wildberries
Go разработали инженеры Google. Это (так же, как Swift и Kotlin) — компилируемый язык, который выступает альтернативой С++ для высоконагруженных приложений. На нем можно писать сетевые приложения на промышленном уровне, поэтому на Go все чаще обращают внимание крупные ритейлеры (вроде Ozon).
По сравнению с остальными языками, этот — очень молодой (2009 год), но у него достаточно быстро растущее комьюнити, которое взаимодействует по Google-рассылке.
Сложность: по синтаксису PHP близок к С и Java. Но не стоит пугаться: на самом деле это относительно легкий, гибкий и доступный новичку язык. При базовых представлениях об HTML и CSS можно сразу написать простой одностраничный сайт.
Продукты: WordPress, Facebook, VK, Wikipedia.
PHP — серверный язык веб-разработок, он подходит для создания одностраничных или комплексных высоконагруженных сайтов. Он «оживляет» статичные HTML-страницы, поэтому на нем оптимально разрабатывать динамические сайты вроде соцсетей, форумов, интернет-магазинов и блогов. Мощный и высокопроизводительный PHP подходит и для проектирования баз данных тех же магазинов. Его можно использовать на многих операционных системах: язык ладит с Windows, Unix, Linux. При работе с ним нужно быть крайне внимательным, потому что из-за гибкости языка легко ошибиться в коде, а найти проблему потом бывает непросто.
У PHP бесчисленное количество сообществ. На официальном сайте структурировали основные информационные рассылки. Почти в любой соцсети можно оперативно найти живое сообщество и обратиться за помощью.
JavaScript
Сложность: можно выучить JavaScript быстро, главное — отрабатывать теорию на практике в тренажерах (подборка хороших интерактивов и обучалок). Уже за полгода можно освоить документацию, поскольку логика у него простая и гибкая. Язык мощный, а его инструменты просты и доступны.
Профессии: Frontend-разработчик / Fullstack-разработчик / Веб-девелопер.
Продукты: Frontend сайтов программируют только на Javascript, так что он используется на большинстве сайтов.
JavaScript — язык веб-разработок. Изначально на нем можно было программировать только frontend сайтов, но сейчас, благодаря Node.js, который выступает в роли веб-сервера, можно писать и серверные приложения. Язык делает сайты интерактивными и высокопроизводительными. А чтобы эффективно использовать возможности языка для создания красочных сайтов, нужно уметь пользоваться инструментами верстки HTML и CSS, знать один из популярных фреймворков (React, Vue или Angular).
В веб-разработках сообщество большое, так как fullstack- и frontend-разработчики нужны всем. Сайтов огромное количество, мы пользуемся ими каждый день, и их всегда нужно улучшать. Кроме того, такие проекты можно вести самому с нуля вплоть до самого релиза, что тоже очень ценно, если вам привычнее инди-разработка.
Сложность: C# изначально перенял синтаксические конструкции языков С++ и Java, так как его разработали специально, чтобы упростить последние. У него хороший набор фреймворков (.Net, Xamarin) и библиотек.
Профессии: Разработчик игр / Fullstack-разработчик / Backend-разработчик.
Продукты: Это универсальный язык программирования. На нем можно писать серверную часть сайтов, десктопные приложения, серверные приложения и даже игры. На российском рынке популярен движок Unity 3D, который позволяет на языке C# писать игры для любых платформ: для PC, мобильных устройств, приставок или VR.
На нем удобно писать оконные приложения и веб-приложения или даже корпоративное программное обеспечение (например банковское обслуживание). Так как язык входит в пятерку самых популярных, он узнаваем, и в целом из-за обширной синтаксической семьи C# его сообщество масштабное и активное. Вы можете быть как инди-разработчиком, так и работать в команде — у вас всегда найдутся единомышленники и помощники.
Сложность: синтаксис у С++ устроен сложнее, чем у тех же Python или C#. Однако использование языковых средств и концепций этого языка даст лучшее понимание теории программирования и может облегчить изучение других языков в дальнейшем.
Продукты: на нем написан движок REDengine, на котором создали «Ведьмака» и Cyberpunk 2077, CCleaner, продукты Adobe, Autocad, Telegram, Microsoft 365
С++ — это один из фундаментальных языков программирования. Он быстрый, на нем вы можете заниматься оптимизацией, архитектурой ПО, решать задачи по автоматизации процессов, создавать системы моделирования. На нем можно писать с нуля программы, антивирусы, драйверы — все, что ближе к железу. Продукты, которые требуют более глубокого понимания основ программирования (роботы, нейросети), лучше создавать на С++.
Из-за сложности языка сообщество программистов более сплоченное: активнее делится кодами и библиотеками языка. Можно даже наткнуться на горячие споры: кто-то считает, что С++ идеален в качестве первого языка, а другие относятся к языку со скепсисом и не видят смысла изучать его первым.
Python
Сложность: подходит для неподготовленного новичка. Обилие готовых библиотек (многие из которых предназначены для работы с big data) и фреймворков, а также простой синтаксис позволяют практически сразу начать программировать.
Профессии: Fullstack-разработчик / Data scientist / Data engineer / Data analyst.
Продукты: Sims 4, YouTube, Instagram, Dropbox, Bittorrent.
Преимущество Python — в его многогранности и широком применении. Его можно использовать как в веб-разработке (фреймворк Django, например, достаточно прост для того, чтобы новичок быстро разобрался в основах его использования) и работе с данными, так и в написании скриптов. Вы можете заниматься анализом данных для банковских систем, автоматизацией простых задач, разрабатывать приложения, совершенствовать голосовые помощники или обучать нейросеть (для этого, кстати, есть веб-сервисы типа Google Colaboratory, где можно бесплатно пользоваться мощным процессором TPU).
Python сейчас все активнее набирает популярность среди программистов. Из-за простоты кода его часто используют в командных проектах, что облегчает разработчикам жизнь: можно не тратить время на разбор чужого материала.
Сложность: Сложнее, чем Python, но проще, чем C++. Довольно сильно похож на C# как по синтаксису, так и по сложности освоения. А большое количество обучающих материалов разного уровня доступно бесплатно.
Профессии: Тестировщик ПО / Android-разработчик/ Java-разработчик.
Продукты: архитектура Netflix, Spotify, Uber, веб-приложение Twitter
Java стал вездесущим из-за своей универсальности и надежности. Про него слышали даже те, кто далек от программирования, потому что на языке написаны продукты, которыми мы пользуемся каждый день (Android-приложения, игрушки, десктопные ПО, банковские системы). Он кроссплатформенный, благодаря JVM (Java Virtual Machine) его можно запускать везде. Его чаще используют в компаниях, а не в инди-проектах.
У Java одно из самых мощных сообществ. Вы сможете найти много разных проектов с открытым исходным кодом, обратиться за помощью и использовать готовые решения для своих кодов, развивая и совершенствуя их.
Какой способ лучше всего подходит, чтобы начать изучать программирование?
Актуальность
Профессия программиста не нуждается в рекламе. Никто даже не задумывается, что один терминал самообслуживания может сократить количество сотрудников банка. Выдать наличку и принять оплату вполне может и «робот». А чем больше таких терминалов, тем больше работы у программистов.
Сегодня начать карьеру в программировании может каждый — даже совсем далекий от этой сферы человек, достаточно просто уметь пользоваться компьютером на базовом уровне. Пандемия ускорила переход бизнеса в онлайн. Поэтому IT-специалисты уверенно смотрят в будущее и не боятся остаться без работы.
Крупные IT-компании создают настолько привлекательные условия труда, что уже стали законодателями мод среди работодателей. Сфера IT развивается так быстро, что заставляет постоянно учиться. Всегда есть выбор: развиваться в профессии дальше или изменить специализацию, ведь в программировании много направлений.
Многие школьники начинают изучать программирование ещё в раннем возрасте, если хотят, чтобы их профессия была связана с этой темой, но часто они бросают эту затею, так как по началу очень сложно самому разобраться в этом вопросе. И для того, чтобы не тратить большое количество времени, я решил выявить самый лучший способ из всех.
Выявить плюсы и минусы различных способов изучения языков программирования, найти самый эффективный и наиболее удобный.
Какой язык выбрать?
Изучение программирования — не то, чем можно заниматься между делом. Но не нужно тратить всю жизнь, чтобы понять основы. Есть множество способов облегчить себе обучение.
Нередко бывает, что новички начинают учиться, уже зная что-то о программировании. Сначала всё идёт хорошо, но по мере дальнейшего изучения начинаются проблемы. Почему? Новички быстро пробегают вступительную часть, думая, что и так всё знают, но на деле это бывает редко. Они знают часть материала, но этого недостаточно, чтобы хорошо понять основы.
В то же время нельзя прекращать развиваться. Вы можете двигаться медленно или быстро, но не пропускайте ни одну тему. Осваивая больше материалов, вы создаёте себе фундамент для будущего.
Если вы ищете своё призвание и вам интересно программирование, вы наверняка задавались вопросом, с чего начать погружение в эту сферу. Один из возможных путей в IT — изучение языков программирования. Так вы освоите первый инструмент будущей профессии: HTML и CSS для вёрстки страниц, Java и Swift для мобильной разработки, SQL для работы с базами данных, а JavaScript и Python — для веб-разработки и не только.
Языки программирования можно освоить самостоятельно — нужно лишь большое желание, целеустремлённость и наличие времени.
Чтобы выбрать лучший язык для начинающих, я создал таблицу сравнения самых популярных языков по 10-ти бальной системе.
Как выбрать первый язык программирования
Разбираемся, что учить новичку в программировании, даже если ты ничего не понимаешь, а вокруг одни противоречивые мнения.
Разработчики на Python хвалятся тем, как быстро пишут код. Программисты на C++ — что их код очень производительный. Те, кто используют Java, говорят, как важна кросс-платформенность.
И все торопятся друг друга обидеть: Swift — для геев (многие действительно так думают), Python — для малышей, а JavaScript, конечно же, для дураков. Разработчики готовы спорить даже о том, что лучше — табы или пробелы.
В этой статье мы рассмотрим две темы:
Мой опыт
Я начинал с PHP и каждый день видел прогресс: какой-то новый подход, массивы вместо переменных, супермассивы, базы данных и так далее. Освоив PHP на более или менее сносном уровне, я двинулся дальше и приступил к JavaScript. Разобравшись с ним, я попробовал C++, потому что хотел заниматься играми. Скачал учебник, который все рекомендовали, позанимался по нему — и бросил программирование на несколько лет. М-да.
Сейчас я программирую на PHP, JS, Java, Python, C# и C++. С каждым новым языком я постоянно возвращался к основам и узнавал что-то новое о работе компьютера: как устроена память, как работает процессор, какой код будет работать быстро, а какой — нет. И, самое главное — почему. Если бы я сразу начал с C++, то, скорее всего, решил бы, что это не моё — слишком много информации.
Определите, чем вы хотите заниматься
Все эти споры, какой язык круче, бессмысленны, потому что:
Новички ещё слишком мало знают, чтобы понять, что им нужно от языка. Поэтому выбирать нужно не язык, а то, чем вы хотите заниматься. Многие языки в первую очередь затачиваются под решение определённых проблем или под определённые сферы:
Выбрав сферу, выясните, какие языки там используются, и выбирайте из них. Вы можете попробовать выучить несколько разных языков, чтобы определиться, какой вам больше нравится или лучше подходит для конкретной задачи.
Но даже если вы решите выбрать что-то совсем непопулярное — на чём пока не создавали крутые проекты, — это не значит, что вас ждет провал.
Выбор технологии не определяет успеха игры, сайта, приложения и чего угодно ещё.
А вот основные сильные и слабые стороны популярных языков:
Язык | Преимущества | Недостатки |
---|---|---|
С++ | • Высокая производительность • Прямой доступ к памяти • Строгая типизация | • Высокий порог входа • Низкая скорость разработки |
C# | • Строгая типизация • Сборка мусора • Кросс-платформенность • Большое количество синтаксического сахара | • Ориентированность под Windows • Нет возможности создавать кросс-платформенное GUI |
Python | • Высокая скорость разработки • Возможность быстро выучить язык • Широкий спектр применения | • Слабая типизация • Низкая производительность |
JavaScript | • Высокая скорость разработки • Возможность быстро выучить язык | • Непредсказуемость • Слабая типизация |
Java | • Кросс-платформенность • Строгая типизация • Сборка мусора | • Требуется много времени на запуск приложения • Большой объём повторяющегося кода |
PHP | • Большое сообщество • Быстрое развитие | • Слабая типизация • Небезопасный код |
Джоэл Спольски (CEO Stack Overflow) предпочитает C-подобные языки, но всё равно выбирает тот, который лучше справится с конкретной задачей.
Например, если вы хотите создавать игры, то какие? Посмотрите, на каком движке сделаны ваши любимые игры, и начните осваивать его. Если это Unity, то вам нужен C#. Если Unreal Engine 4, то С++.
Нужно ли начинать с простого языка
Если вы, как и я, выбрали геймдев, то перед вами встаёт дилемма: какой из языков выбрать. Оба достаточно крутые, на них написано большое количество известных игр. Допустим, вам всё же больше понравился C++.
Но тут возникает проблема: среди популярных сегодня языков C++ — один из самых сложных. Что делать?
Есть мнение, что если ваш первый язык будет слишком простым, то вы не сможете стать хорошим программистом.
Всё из-за того, что простые языки не требуют от вас знаний, как устроен компьютер, как данные хранятся в памяти, как процессор выполняет операцию деления и так далее.
Тот же Джоэл Спольски писал, что начинать погружение в программирование нужно с C (ещё сложнее, чем C++), потому что так вы освоите главные принципы и сможете писать более эффективные программы. Даже если они будут не на C.
С другой стороны, очень просто потерять мотивацию, когда изучаешь язык и подолгу останавливаешься на каждом термине. Несколько дней на изучение переменных, потом ещё недельку на массивы, месяц — на функции и так далее. За это же время другие успеют выучить Python на достаточном уровне, чтобы создавать простые блоги.
Так что я считаю нормальным начинать с чего-то простого. Вы будете расти — ступенька за ступенькой. Причём с большей эффективностью.
Вывод
Обсуждать можно бесконечно, но вот совет: начните уже изучать хоть что-то, сопоставив первый язык со сферой ваших интересов. И не переживайте, если вам понравился сложный язык. Сейчас обо всём можно найти понятные и подробные руководства. Например, в своей новой серии статей я максимально просто объяснил сложные понятия в C++. А на курсе Skillbox всё это можно закрепить на практике.
Старт карьеры в IT — какой язык программирования выбрать
Представляем обзор языков программирования для новичков. Как найти себя в мире разработки, в какой сфере эффективнее развиваться.
Начните с HTML и CSS
Часто их называют языками программирования, но это не верно. Это язык разметки и таблица стилей, с помощью которых верстается страница. Все сайты используют HTML и CSS. Прелесть технологий — в их простоте: их легко освоить на среднем уровне за 2-3 недели. Если вам интересно работать в интернете — попробуйте.
JavaScript
Один из самых популярных языков для работы с сайтами. До сих пор использование этой технологии — едва ли не единственный способ сделать страницу интерактивной, заставить сайт реагировать на действия пользователя. Изначально JS создавали специально для веб-разработки, но сейчас с его помощью можно делать очень многое:
Этот язык быстро развивается, востребован на фрилансе. Часто именно JS рекомендуют в ответ на вопрос, какой язык программирования выбрать для быстрого старта. Его легко освоить.
Начинающий разработчик на JavaScript может рассчитывать на 30 тысяч рублей в месяц. Средний — 45–90 тысяч и больше. C опытом от трех лет — на 135 тысяч и больше.
Особенности:
Разрабатывать удобно в редакторе кода — он подсвечивает синтаксис и подсказывает нужное написание. Отладка, или пошаговое исполнение программы, в JS происходит в DevTools браузера, дополнительное ПО необязательно.
Не забывайте о библиотеках и фреймворках. Это компоненты, из которых собирается программа. Для упрощения понимания: представьте строительство дома. Вы не создаете с нуля каждый кирпич, не делаете сами молоток, а пользуетесь готовыми инструментами и материалами. В случае с программированием — делаете программу из компонентов библиотеки или фреймворка.
Не торопитесь вникнуть во все технологии сразу. Начинаете с нуля — используйте чистый язык и разбирайтесь в принципах программирования.
Дополнительно пригодится:
На этом языке делают серверную часть в вебе. Он абсолютный чемпион — 80% сайтов написано с помощью PHP. На нем сделаны популярные CMS: Битрикс, WordPress, Joomla.
Когда отправляете фото в «Инстаграм*» или другие данные на любой сайт, сервер должен их принять, обработать и вернуть обратно результат. Именно этим и занимается PHP.
Для Junior зарплаты начинаются от 35 тысяч рублей. Middle может рассчитывать на ценник от 80 тысяч рублей. Для Senior предлагают зарплату от 95 тысяч. Средняя зарплата — 88 тысяч рублей.
Особенности:
Недостатки:
Прогресс будет быстрее, если вы найдете ментора или курсы. Как и в любом языке, в PHP есть сложные для освоения тонкости, которые лучше постигать с поддержкой.
Синтаксис этого языка легко освоить, есть подробная документация с описаниями решений популярных задач, поэтому его часто выбирают в качестве первого языка. Новичку будет проще с поиском работы: на фрилансе и сайтах с вакансиями много предложений для соискателей с минимальным опытом.
Python
Это популярный язык, на котором можно писать сайты, — и в этом он соперничает с PHP. Но намного интереснее с помощью Python заниматься анализом данных и машинным обучением. Хотите развивать искусственный интеллект — попробуйте его.
Для начинающего — от 35 тысяч рублей. Средний уровень — от 80 тысяч. Специалист с опытом от трех лет — 90–210 тысяч рублей. Если понимать в математике и разбираться в нейросетях, доход будет выше.
Язык легко освоить, у него удобный и понятный синтаксис, масса полезных библиотек и готовых решений.
Особенности:
Недостатки:
Обратите внимание: разработчики часто спорят, нужна ли для программирования математика. Разбираться в ней полезно. Но обязательна она только там, где вы разрабатываете что-то для математиков. Если вы создаете сайт, например, про собак, то формулы вам вряд ли пригодятся — скорее, лучше выучить JavaScript с PHP и узнать побольше о собаках.
Консервативный и надежный язык, который подходит для разработки под любые платформы. Пожалуйста, не путайте его с JavaScript — это абсолютно разные технологии, и между ними нет ничего общего.
На Java разрабатывают десктопные программы, приложения под Android, серверные конструкции и масштабные промышленные и банковские системы. Достаточно сложный в освоении язык.
Новички могут рассчитывать на 35–60 тысяч рублей. Специалисты среднего уровня — на 50–100 тысяч. Высокий уровень — на доход 135–270 тысяч рублей.
Синтаксис простой и понятный. Методология языка — классическое
объектно-ориентированное программирование. Работает на всех операционных системах. На Java можно написать ПО любой сложности — от небольшой утилиты до комплекса с миллионами строк. Кстати, если хотите писать для Android — приложения на нем делают только на Java.
Особенности:
Может показаться, что для сложного языка нужен особый талант. На самом деле ключевое — ваше желание, интерес и усердие. Никто не ценит способности в вакууме. Важно, насколько далеко вы продвинулись в обучении за последний месяц или год. Если есть интерес и желание, всё получится.
Как выбрать, в чем лучше развиваться
Если вас тошнит от любой технологии и не можете себя заставить написать код или разобраться с задачкой — остановитесь и займитесь чем-то еще. Если же у вас горят глаза и вы не можете уснуть, потому что хотите написать программу, — продолжайте. Попробуйте все языки, остановитесь на том, который интереснее. Если получится понять один, разобраться в синтаксисе другого уже не проблема. Главное — продолжайте учиться, больше пишите кода, систематизируйте знания на курсах. Вы сможете.
* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности.
Как выбрать первый язык программирования, гайд начинающим от профессионала
Кратко для введения: я являюсь профессиональным разработчиком и мне есть что сказать себе 15 лет назад. По результатам стрима я решил оформить статью с рекомендациями тем, кто находится в самом начале пути к программированию. Статья в основном направлена на школьников (и их родителей), студентов и может быть джунов. Для людей более старшего возраста но желающих стать программистами, думаю также будет интересно.
Сначала приведу несколько постулатов, которые просто примем за истину, как аксиомы:
— Путь в серьёзное программирование долгий и сложный
— Программирование требует полного погружения и «безбашенно ворваться»
— Технологии и подходы меняются очень быстро
— Алгоритмы и основы практически не меняются а только дополняются
— Освоить новую технологию если вы уже специалист в какой то технологии многократно проще
— Кроме технических навыков, soft skills также важны и они не меняются от смены техи
Эти постулаты можно оспаривать и много обсуждать, но это не цель данной статьи.
Самое важное состоит в том что сменить язык и технологию многократно проще чем выучить первую, а множество навыков языконезависимы. Поэтому из сложного пути стоит выкинуть всё сложное что не является необходимым, а взять в дорогу всё что вам поможет.
На протяжении всего времени, до того как вы сможете зарабатывать какие-то деньги при помощи программирования вам придётся идти на голом энтузиазме. На пути вы встретите множество проблем которые на определённом этапе развития могут казаться непреодолимыми. И в этот момент у вас должно быть достаточно воли и желания этот период преодолеть. Поэтому управление собственной мотивацией я считаю наиболее важной частью процесса обучения.
Поэтому первый язык и технологию я рекомендую выбирать строго по любви. Во всех технологиях к которым вы сейчас свободно найдёте бесплатные онлайн курсы есть заработки, просто полностью исключите вопрос «сколько я заработаю» из критериев выбора. Также я считаю что бесплатных образовательных материалов сейчас неимоверно много и я не вижу особого смысла покупать платные онлайн курсы. Из платного образования кружки с программированием и роботостроением для детей я считаю хорошней идеей, также любые технические лицеи, гимназии, университеты, т.е. классическое образование, если вы находитесь в возрасте приемлемом для такого образования.
Тут отдельно для родителей: школа с углублённой технической программой многократно лучше обычной. Если уклон только в информатику, то это не так хорошо. Хорошо когда углублены математика, физика, информатика, английский язык. Чем больше удастся впихать математики в обычный период стандартного обучения школа-вуз, тем легче будет с программированием, но без фанатизма.
Итак, алгоритм как я советую выбрать язык программирования:
Идёте и гугл, яндекс или чем вы пользуетесь и забиваете там запрос: «бесплатные онлайн курсы программирования» и выбираете просто по описаниям 5 разных языков. Почитайте про разные, может что-то зацепит. Если что-то зацепило, всё выбор сделан, берите это.
По каждому языку идёте в википедию и читаете про этот язык. Что-то не понравится, то выкидывайте. Останется 2-3 языка. Если что-то зацепило, всё выбор сделан, берите это.
Определитесь с предметной областью, что вам интересно, например модифицировать игры и писать для них скрипты, или писать игры целиком, или сдеать финансовый расчёт, смоделировать что-нибудь типа эпидемии, управлять роботом, или ещё что-нибудь, важно взять то что лично вам интересно, а не что кто-то считает важным.
Поищите курсы про интересную вам специфику на разных языках.
Ключевой момент поймать желание в этом закопаться. И как только вы это желание поймали, начинайте любой онлайн курс. Если возникли сложности и проблемы, попробуйте другой курс или другой язык. Не бойтесьпопробовать разное.
Если выбрать направление в котором потенциальная зарплата больше, а фана нет, то риск не дойти многократно увеличивается. Поэтому первую технологию нужно выбирать только по любви. А по расчёту выбирать будете уже следующие техи когда будет некий бекграунд. Обычно это второй/третий язык программирования. А менять технологии всё равно придётся, потому что всё меняется очень быстро. И даже такой консервативный язык как C++ качественно меняется и программирование на нём требует новых подходов.
Технологии которые сейчас можно изучать сильно устареют и изменятся когда вы дойдёте до того чтобы применять их на работе. Поэтому вообще расслабьтесь и делайте то, что штырит и прёт, а не то что модно или кому-то нужно. Более того знать несколько языков и разных тех крайне полезно для опыта и общего развития в отрасли. Можно сравнивать разные подходы и совершенствовать свой стиль и путь.
Несколько очень частых вопросов:
Нужен ли английский?
Нужна ли высшая математика?
Нужна ли высшее образование?
В начале, когда вы учитесь ходить нужно учиться именно ходить, с любой скоростью и в любом направлении, направление выберете потом. Тоже самое с обучением плаванию, езде на велосипеде, автомобиле. Сначала вы осваиваете инструмент и воспитываете в себе навыки, потом уже выбираете направление движения и интересные вам напрвления развития в рамках навыка. Вот с программированием ровно также. Просто начните с следуйте за удовольствием.
И на последок: пара прикольных игр которые я считаю полезными: https://lightbot.com/ https://www.euclidea.xyz/ru/
Больше 20-и лет в профессии, а ничего столь удивительного не видел.
Господи, ну наконец-то что-то адекватное.
Да, забыл ещё один важный момент. Когда я учился, того языка прораммирования и тех технологий в которых я сейчас работаю вообще не существовало. А некоторые вещи популярные тогда ныне мертвы. Поэтому также то с чего конкретно вы начнёте имеет меньшее значение чем кажется.
Сейчас изучаю Java с прицелом на моб. разработку и чтобы сформировать ОПП мышление.
Буду благодарен за какие-нибудь мысли по моей ситуации, нужен взгляд со стороны.
С какого языка начать изучение программирования
Рассказываем о языках JavaScript, PHP, Python, Java, CSS и HTML, сравниваем их и помогаем выбрать лучший.
Иллюстрация: Wikimedia Commons / Roungroat / Rawpixel / Annie для Skillbox Media
У каждого языка программирования свои особенности, достоинства и недостатки, своя сфера применения и свой список связанных технологий (он называется «стек»). Сегодня мы сравним несколько популярных языков веб-разработки и дадим советы, которые помогут вам сделать осознанный выбор.
Что такое типизация
Прежде чем мы начнём разбираться в плюсах и минусах языков, стоит поговорить о типизации. От неё зависит, как вы будете писать программы и как они затем будут работать.
Типизация — это разделение переменных на разные типы: например, int (целое число), flow (число с десятичной частью), string (строка текста), bool (правда/неправда).
Типизация бывает явная или неявная, слабая или сильная и статическая или динамическая.
Явная типизация значит, что вы должны сами указать тип переменной, а если у языка неявная типизация, этим занимается компилятор. Явная типизация более надёжная (у переменной будет именно тот тип, который вам нужен), зато добавляет работы, а неявная позволяет сэкономить время, но переменная может получить не тот тип, который вы хотели.
В языках со статической типизацией типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа (явно).
Динамическая типизация означает, что типы определятся уже во время выполнения программы.
Сильная (строгая) типизация не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования.
Языки со слабой типизацией более гибкие, но они часто сами неявно преобразуют переменные, даже если в результате может появиться неточность или если преобразование неоднозначно.
Теперь, когда мы разобрались с типизацией, перейдём к самим языкам.
HTML и CSS: «строительный материал» сайтов
Начнём издалека — с HTML (Hypertext Markup Language) и CSS (Cascade StyleSheets). Почему с них и почему «издалека»? С них — потому что они лежат в основе веб-разработки и ни один сайт без них не обойдётся. А издалека — потому что это не совсем языки программирования.
Они нужны, чтобы создавать содержимое веб-страницы — контент и оформление; программу вы на них не напишете. Тем не менее веб-технологии сейчас уже используются и в других сферах, в том числе при создании десктопных и даже мобильных приложений, поэтому у этих «языков» хорошие перспективы.
HTML и CSS очень простые — в основах можно разобраться буквально за пару дней, даже самостоятельно. Так что если вы очень боитесь программирования и не верите, что у вас получится, попробуйте начать с них. Это под силу каждому, поможет вам плавно войти в программирование и оценить свои силы. А потом при желании можно перейти к другим языкам.
JavaScript: главный по фронтенду
JavaScript сейчас везде. Это один из самых быстроразвивающихся языков современности, и он очень быстро набирает популярность. JavaScript многофункционален, на нём можно разрабатывать программы для любых платформ.
Изначально он использовался для создания интерактивных веб-страниц, но сейчас на нём делают и серверные (привет Node.js), и мобильные, и десктопные приложения, и многое другое.
Тем не менее, несмотря на широкое применение, JavaScript не волшебная таблетка. У него есть свои ограничения, из-за которых он подходит не для всех задач.
Какие плюсы и минусы есть у этого языка:
Что касается минусов — есть инструменты, которые помогают их компенсировать. Например, TypeScript и Flow делают работу с типами более безопасной, но код становится писать сложнее.
Из-за этой особенности на JavaScript не разрабатываются сложные программы с высокими требованиями к надёжности. Если у вас на сайте не работает кнопка, это неприятно, но не страшно, а вот если у вас ошибка в банковском или промышленном программном обеспечении — это уже хуже.
Зарплата специалистов и востребованность языка
По данным «Хабр Карьеры», средняя зарплата JavaScript-разработчика составляет около 154 тысяч рублей. Новички зарабатывают от 40 до 100 тысяч, а профессионалы могут похвастаться зарплатой в 200 тысяч и выше.
Найти работу с такой специальностью не проблема: это очень популярный язык, и требуется он почти везде. Даже если в вашем городе нет больших компаний, которым нужны программисты, не расстраивайтесь. Сейчас около 40% программистов работают удалённо — так что смело ищите работу в других городах.
Синтаксис JavaScript
JavaScript может выглядеть так:
Этот код отвечает за авторизацию на сайте. Он читается не настолько легко, как в некоторых других языках, но если вы знаете английский, то можно догадаться, что здесь происходит. Например, в первой строке мы видим, что у нас есть кнопка ( button), которая отвечает за вход в систему ( login), и по ней можно кликнуть ( click).
Какие технологии используют с JavaScript
Разработчику на JavaScript недостаточно освоить синтаксис языка и основные концепции. В своей работе «джаваскриптеры» используют целый арсенал инструментов.
1. Редакторы кода или IDE:
2. Отладчики нужны для того, чтобы вы могли пройтись по коду вместе с компьютером, это упрощает поиск ошибок.
3. Среда исполнения серверного ПО: Node.js.
4. Средства разработки десктопных приложений:
5. Фреймворки для веб-разработки:
6. JSON — самый популярный формат передачи структурированных данных.
7. MongoDB — документо-ориентированная база данных. Можно создавать JS-процедуры.
Хороший JavaScript-разработчик должен знать эти технологии и уметь их использовать или хотя бы ориентироваться в них. В наше время программировать в «Блокноте» — плохой вариант.
PHP: слон, которого трудно не заметить
PHP — чемпион по популярности в веб-разработке. Его используют в создании серверных приложений, скриптов и утилит. Вы найдёте его в бэкенде сайтов многих известных компаний — например, Avito, Badoo, «ВКонтакте», «Википедии», «Фейсбука»*.
Некоторые называют PHP «ужасным» языком или вовсе говорят, что он умирает. Такая оценка появилась, когда PHP только набирал популярность. В то время у языка действительно было много недостатков и ничего серьёзного на нём не писали. Некоторые специалисты его таким и запомнили, но PHP уже больше десяти лет как настоящий взрослый язык. Более того, огромное количество конструкторов и редакторов сайтов написаны именно на нём.
Какие у PHP есть достоинства и недостатки:
Зарплаты и востребованность
Как вы видите на скриншоте ниже, предложений работы для PHP-разработчиков очень много — больше, чем для других языков, — но средняя зарплата ниже, чем у JavaScript-разработчиков, — 88 тысяч рублей.
Если вы новичок, можете рассчитывать на зарплату от 40 до 80 тысяч рублей; если у вас уже есть опыт, то от 80 до 120 тысяч; профессионалы получают 120 тысяч рублей и больше.
Синтаксис PHP
Вот пример кода на PHP:
Это код со страницы с новостями, который открывает разные новостные разделы.
Человек без опыта программирования, скорее всего, не сможет прочитать его так же легко, как предыдущий на JavaScript. Может показаться, что PHP — это очень сложно, но на самом деле язык простой и, чтобы начать в нём разбираться, достаточно основ, а сами основы можно освоить за несколько часов.
Какие технологии используют с PHP
Несмотря на то что освоить PHP довольно легко, к нему в придачу идёт около 20 мастхэв-технологий.
1. Редакторы кода или IDE:
2. Серверы баз данных:
4. Отладчик: Xdebug.
5. Профайлер: XHProf — помогает замерить, сколько времени выполняется какой участок программы, и понять, где программа замедляется.
6. Популярные фреймворки:
7. Менеджер пакетов: Composer.
Python: сын маминой подруги
Python тоже часто используется в веб-разработке, а ещё это один из самых популярных языков для анализа данных и в Data Science. Вы встретите Python в разработке веб-сайтов и утилит, в машинном обучении и в работе с нейросетями.
Это тоже подходящий язык для новичков, его часто рекомендуют для обучения программированию. Он часто светится в первой пятёрке индекса TIOBE. Например, сейчас (в июне 2022 года) Python занимает там первую строчку.
Вот плюсы и минусы Python:
Зарплаты и востребованность
По данным сайтов для поиска работы (HeadHunter, SuperJob, «Работа.ру» и других), только в Москве для Python-разработчиков открыто более 4 тысяч вакансий. Средняя зарплата питониста — около 115 тысяч рублей. Для новичков — в среднем 70 тысяч, а для специалистов — от 150 до 170 тысяч. Если вы разбираетесь в нейросетях и знакомы с машинным обучением, то, скорее всего, ваша зарплата будет выше.
Синтаксис
Вот пример кода в Python:
Мы имитировали шляпу из «Гарри Поттера», которая распределяет студентов по факультетам. Она учится сама. Читает и делит данные о студентах прошлых лет на две группы: данные о самих студентах и данные о том, на каком они факультете. Потом шляпа учится предсказаниям с помощью модуля машинного обучения и проверяет свои способности на контрольной группе. В конце программа оценивает точность предсказания.
Синтаксис Python читается довольно легко. Хотя совсем без знания языка вряд ли получится понять, что там происходит.
Какие технологии используют с Python
У Python богатая и довольно стабильная экосистема, включающая инструменты для анализа данных, машинного обучения и популярные веб-фреймворки.
1. Редактор/IDE: PyCharm (самый популярный).
2. Для анализа данных:
3. Для машинного обучения:
4. Для веб-разработки:
5. Менеджер зависимостей:
6. Cython-синтаксис — для написания компилируемого кода.
Java: консервативный и надёжный
Java — мультифункциональный объектно-ориентированный язык со строгой типизацией. Не путайте его с JavaScript, у них похожи только названия, но на практике они во многом противоположны друг другу.
На Java пишут сложное ПО: промышленные и банковские системы — как раз то, что не пишут на JavaScript. Помимо этого, огромное количество десктопных приложений, приложений на Android и серверных программ написано именно на Java.
Java — довольно сложный язык, поэтому его обычно выбирают люди, у которых уже есть какой-то опыт программирования и подготовка. Например, те, кто учится на программиста в университете.
Вот какие достоинства и недостатки есть у Java:
Зарплаты и востребованность
Java — популярный и сложный язык, поэтому для Java-разработчиков всегда достаточно вакансий, а зарплаты у них высокие. Например, средняя зарплата по Москве — 115 тысяч рублей. Даже новичок может зарабатывать от 60 до 95 тысяч.
Какие технологии используют с Java
Как и в случае с остальными языками программирования, пожалуй, самой популярной IDE в Java является продукт JetBrains — IntelliJ IDEA. Хотя у свободных сред разработки Eclipse и NetBeans тоже большие сообщества пользователей. Безоговорочный лидер среди фреймворков для Java — Spring. Это универсальная библиотека для быстрой разработки веб- и консольных приложений.
Вот как примерно выглядит технический стек Java.
2. Популярные фреймворки:
6. Менеджер зависимостей / система сборки:
7. JVM — Java Virtual Machine, среда выполнения кода.
Какой язык лучший?
Теперь давайте сравним все эти языки.
HTML и CSS самые лёгкие, но платят за них тоже не так много. Если вы не уверены в своих силах, стоит начать с них.
JavaScript уже чуть сложнее, но с ним вы точно найдёте работу.
Java — гарантия работы и хорошей зарплаты, но язык сложный, поэтому нужно верно оценить свои силы.
PHP и Python: оба языка очень популярны, но в довольно узких областях. Если эти области вам по душе — замечательный вариант!
Что выбрать новичку?
Опишем краткий алгоритм выбора.
* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности.
Какой язык программирования стоит выучить первым? (ʇdıɹɔsɐʌɐɾ: ɯǝʚɯо ņıqнqvиʚɐdu)
Многие начинают путь к изучению программирования, открыв поздним вечером Google. Обычно ищут что-то вроде «Как выучить…». Но как тот, кто ищет подобное, решает, какой именно язык программирования выбрать?
Кто-то, начитавшись сайтов и блогов крупнейших компьютерных компаний, рассуждает так: «В Кремниевой долине что ни слово – то Java. Думаю, это – то, что мне нужно». Бывает и так: «Haskell. Он ведь на пике популярности. Страшно подумать, что будет дальше. Определённо – Haskell». И даже так: «Этот суслик на логотипе Go – такая няшка. Хочу знать Go».
Некоторые, движимые стремлением научиться программировать, ищут вот что: «Какой язык программирования выучить первым?».
Бывают вопросы, которые задают так часто, что, для ответа на них создают целые схемы. Вот, например, одна из них, посвящённая выбору первого языка программирования, подготовленная командой этого сайта.
Если рассмотреть эту схему, окажется, например, что Ruby подходит тем, кто ребёнком любил лепить из пластилина.
Выбор первого языка программирования может стать увлекательным занятием, как полусерьёзные опросники, вроде: «Кто вы из героев Квентина Тарантино?».
Но, прежде чем вы уйдёте с головой в изучение Ruby, причём, только потому, что в детстве жить не могли без пластилина, позвольте обратить ваше внимание на то, что первый язык программирования – это очень и очень важно. Слишком многое от него зависит.
Для того, чтобы хотя бы в общих чертах разобраться с выбранным языком, понадобятся сотни часов практики. Поэтому симпатичные логотипы и хитроумные схемы не должны сбивать вас с толку.
Выбирая первый язык стоит трезво оценить следующие факторы:
Когда дело касается выбора первого языка программирования, вам придётся столкнуться с целой лавиной вариантов. Для того, чтобы немного сузить поиск, вот анализ поисковых запросов в Google за последние 12 лет, касающихся изучения программирования.
Из анализа поисковых запросов можно выяснить, что у Java были взлёты и падения. А, например, рейтинг Python постепенно рос, он стал чуть ли не самым популярным языком программирования. Есть здесь и один язык, простой, но обладающий замечательными возможностями, график интереса к которому год от года медленно растёт, хотя и находится в самом низу. Это – JavaScript.
Прежде чем говорить об этих языках программирования, позвольте кое-что уточнить.
Основы информационных технологий и обучение программированию
В вузах обычно учат программировать в рамках предметов по информационным технологиям, которые часто выглядят как дополнения к математическим курсам, либо привязаны к некоей основной специальности, скажем, к электротехнике.
Наверняка вы знакомы с этим высказыванием Эрика Рэймонда: «Образование в сфере компьютерных технологий точно так же не сделает из вас отличного программиста, как изучение кистей и красок не сделает вас прекрасным художником».
Сегодня, так же, как и раньше, большинство учебных заведений ставят знак равенства между программированием и информационными технологиями, а информационные технологии приравнивают к математике.
В результате множество вводных курсов по программированию построено вокруг достаточно низкоуровневых абстракций таких языков, как C, или языков, используемых в математических пакетах вроде MATLAB.
И те, кто принимают решения о том, чему учить на курсах по программированию, обычно придерживаются всяческих официальных источников, регулярно публикующих отчёты с рейтингами языков. Среди таких отчётов, например, TIOBE Index. А вот — таблица лидеров по версии IEEE.
Такие вот «таблицы лидеров» выглядят практически точно так же, как десять лет назад. Однако, всё меняется, даже в академических кругах.
Так, в 2014-м году Python обошёл Java, став самым популярным языком программирования в ведущих курсах по информационным технологиям в США.
И я уверен, что ещё одно изменение обязательно произойдёт, да что там говорить – это уже происходит.
Посмотрев на языки, которыми пользуются программисты, выполняющие реальные проекты, мы увидим совсем другую картину.
Вот результат опроса, который проводился на Stack Overflow в 2016-м году. В нём участвовало 49397 разработчиков. Более половины из них используют JavaScript.
Без JavaScript невозможна разработка веб-интерфейсов, а в последнее время, благодаря Node.js, растёт актуальность JavaScript в серверном коде. Этот язык стремительно распространяется и в другие области, такие, как разработка игр и интернет вещей.
Среди программистских вакансий JavaScript упоминается чаще, чем другие языки, если не брать в расчёт Java. Вот данные с крупнейшего агрегатора вакансий Indeed.com.
Неслучайно и то, что мы, на freecodecamp.com, собрали сообщество разработчиков, занятых проектами на JavaScript с открытым исходным кодом. За прошедшие два года более 5000 человек воспользовались Free Code Camp для того, чтобы найти свою первую работу в роли программиста.
Я, кстати, не ратую за JavaScript только потому, что обучаю на нём программировать. Всё, как раз, наоборот. Я обучаю этому языку именно потому что знание JavaScript – это верная дорога к первой работе программиста.
Но подходит ли JavaScript именно вам? Стоит ли ему становиться вашим первым языком программирования? Рассмотрим подробнее те факторы выбора языка, о которых я говорил выше.
Фактор №1: рынок труда
Если вы учитесь программировать из чистого любопытства и любви к интеллектуальным развлечениям, можете этот раздел пропустить. Но если вы, как и огромное количество других людей, изучаете программирование для того, чтобы с помощью приобретённых знаний и навыков найти работу, вам стоит обратить внимание на то, о чём здесь пойдёт речь.
Как я уже говорил, в объявлениях о вакансиях чаще всего упоминается Java. На втором же месте стоит JavaScript.
Но в случае с JavaScript надо учесть одну важную вещь. Хотя язык существует уже два десятка лет, лишь сравнительно недавно он превратился в серьёзный инструмент, с помощью которого гиганты вроде Netflix, Walmart и PayPal создают полноценные приложения.
В результате множество компаний нанимают JavaScript-разработчиков, но разработчиков этих не так уж и много.
Вот данные с Indeed.com, здесь показано соотношение вакансий и соискателей.
Итак, что мы видим. На одно место Java-разработчика приходится 2.7 программиста. В сфере вакансий, где требуется знание PHP, а также в среде iOS-разработки, складывается похожая ситуация.
Если же взглянуть на данные по JavaScript, то окажется, что на одну вакансию приходится всего 0.6 программиста. Для JavaScript-разработчиков это, определённо, рынок продавца.
Фактор №2: долгосрочные перспективы
JavaScript-проекты на GitHub получают, в среднем, в два раза больше pull-запросов, чем проекты на Java, Python или Ruby. И, кроме этого, JavaScript растёт быстрее, чем любой другой популярный язык.
Вот соответствующие данные GitHub Octoverse:
На экосистему JavaScript, кроме того, благотворно влияют серьёзные инвестиции, как финансовые, так и выражающиеся в человеческом капитале талантливых инженеров, от таких компаний, как Google, Microsoft, Facebook и Netflix.
Например, вклад в язык программирования с открытым исходным кодом TypeScript (расширенная версия JavaScript со статической типизацией) внесли более 100 разработчиков. Многие из них – сотрудники Microsoft и Google, которые получают зарплату за эту работу.
Подобную форму совместной работы компаний в среде Java найти сложнее. Например, Oracle, которая фактически владеет Java, поглотив Sun Microsystems, часто судится с компаниями, которые пытаются работать над этим языком.
Фактор №3: сложность изучения языка
Вот карикатура о сложности языков программирования от XKCD.
Большинство программистов согласится с тем, что высокоуровневые скриптовые языки сравнительно легки в изучении. JavaScript подпадает под эту категорию, вместе с Python и Ruby.
И даже, хотя в учебных заведениях языками, с которых начинают учить программировать, всё ещё являются такие, как Java и C++, разобраться в них значительно сложнее.
Фактор №4: проекты, которые можно создать, используя полученные знания
Вот здесь JavaScript нет равных. Он может работать на любом устройстве, на котором имеется браузер. Да вот хотя бы прямо здесь, где вы это читаете. В принципе, с помощью JavaScript можно создать практически всё, что угодно и распространить это по всему миру с уверенностью в том, что работать это будет практически на всём, что напоминает компьютер или мобильный телефон.
Повсеместное распространение JavaScript привело к такому знаменитому высказыванию Джефа Этвуда, сооснователя Stack Overflow: «Любое приложение, которое можно написать на JavaScript, будет в итоге написано на JavaScript».
С течением времени это высказывание, которое ещё называют «Законом Этвуда», не утрачивает актуальности.
В среде других языков можно наблюдать несколько иные тенденции. Например, однажды обещали, что Java будет работать буквально везде. Помните Java-апплеты? В начале этого года Oracle официально от них отказалась.
Python страдает от похожих проблем. Вот что по этому поводу написал Джеймс Хэг в статье о том, что пришла пора отказаться от Python, как от основного языка, используемого при обучении программированию. Ученик спрашивает: «Как мне дать эту вот игру, которую я написал, друзьям? Или, это будет даже лучше, можно ли как-нибудь записать её на мой телефон, чтобы я мог показать её всем в школе, а им не пришлось бы её устанавливать?». Учителю же, если речь идёт о Python, остаётся лишь хмыкнуть. В двух словах тут и не ответишь.
Если же говорить о JavaScript, то вот живые ответы на вышеупомянутый вопрос. Это – приложения, которые написали члены сообщества Free Code Camp в CodePen, пользуясь браузером.
Вот игра «Simon», созданная в стиле 1970-х.
Вот – реализация математической игры Джона Конвея «Жизнь».
Вот – страница поиска для Wikipedia, стилизованная под «Звёздные войны».
А вот – игра-«рогалик» с традиционным подземельем.
Первый язык: пройтись по верхам, или копнуть поглубже?
Сначала как следует изучите один язык. Затем принимайтесь за следующий.
Если вы будете прыгать от одного языка к другому, нигде толком не задерживаясь, далеко вам не уйти. Для того, чтобы продвинуться заметно дальше «Hello World», нужно как следует изучить ваш первый язык. После этого со вторым и последующим языками будет разобраться гораздо проще.
Хорошо освоив первый язык, вы сможете расширять познания, изучая другие языки и развиваясь как программист. Вот пара слов о языках, которые стоит рассмотреть после достойного освоения JavaScript.
Так, а теперь хочу сделать невозможное. Собираюсь попытаться представить себе возражения некоторых читателей, критику JavaScript и моих идей, которая может появиться в комментариях, и на эту критику ответить.
Возражение №1. JavaScript – язык медленный
JavaScript, для большинства практических целей, так же быстр, как языки, которые традиционно считают высокопроизводительными.
JavaScript (речь идёт о Node.js) на порядки быстрее, чем Python, Ruby и PHP. Его быстродействие приближается к C++, Java и Go. Вот результаты одного весьма серьёзного теста производительности для различных языков программирования.
Возражение №2. В JavaScript нет статической типизации
Как Python и Ruby, JavaScript – это язык с динамической типизацией. И это, с одной стороны, удобно, а с другой – способно завести разработчика в лабиринт ошибок. Вот, например, здесь мне хочется, чтобы переменная exampleArray была массивом. Я записываю в массив значения, проверяю его длину, то есть – количество содержащихся в массиве элементов. Выглядит это так:
Затем я случайно записываю в переменную строку, при этом, что ещё хуже, благодаря особенностям строкового типа данных в JavaScript, я вполне могу получить длину того, что считаю массивом, обратившись к свойству length:
Ошибка на ошибке, одним словом. Подобные вещи постоянно возникают в языках с динамической типизацией. Большинство разработчиков справляются с ними, выполняя проверки в опасных местах и создавая тесты для своего кода.
Если же вам, в первом языке программирования, совершенно необходима статическая типизация, я всё равно рекомендую начать с JavaScript. После этого вы сможете быстро освоить TypeScript. Вот что говорит на эту тему Алекс Эверлоф: «Для того, чтобы освоить TypeScript, нужно время, но, если вы уже знаете JavaScript, всё будет гораздо быстрее и проще».
Возражение №3. Я очень хочу создавать мобильные приложения, поэтому JavaScript не для меня
Даже если так, я всё равно советую сначала изучить JavaScript. И, кстати, он вполне подходит для разработки мобильных приложений, причём, как их клиентской, так и серверной частей. А именно:
Для начала, хотя мобильными приложениями пользуются буквально все, по данным опроса Stack Overflow, в котором приняли участие 49525 программистов, практически половина из них занята в сфере веб-разработки. И лишь немногим более восьми процентов занимаются мобильными приложениями.
Мечты о том, что мобильные пользователи будут охотно работать с великим множеством специализированных приложений, не сбылись. Вместо этого владельцы смартфонов перестали загружать новые приложения.
Безусловно, программами они пользуются. В основном это Facebook, Google Maps и некоторые другие. Их не так уж и много. В результате основной спрос на разработчиков мобильных приложений сконцентрирован в нескольких крупных компаниях.
Сложно предвидеть перспективы развития рабочих мест для мобильных программистов. При этом многие задачи, касающиеся разработки, поддержки и распространения приложений для смартфонов и планшетов легче всего решаются с помощью JavaScript. В результате компании, вроде Facebook и Google, обеспечивают мощную поддержку лучшим JavaScript-инструментам для мобильной разработки.
По состоянию на 2016-й год, практически вся работа программистов сосредоточена на веб-проектах. Всё так или иначе связано с этой огромной платформой, со «Всемирной паутиной». И грядущее поколение бытовых приборов, с которыми можно будет разговаривать, и автомобили, которые будут сами забирать детей из школы – всё это тоже будет частью веба.
Из вышесказанного следует простой вывод: учите JavaScript.
Возражение №4: Разве JavaScript это не игрушечный язык, который был создан за десять дней?
Когда слышу подобное, сразу на ум приходит этот твит. А вообще, у JavaScript, конечно, необычная история. Это провоцирует. Наверняка вам доводилось читать и слышать, как кто-то отпускает шутки об этом языке.
Кстати, некоторым невероятно нравится критиковать C++. Но, как и JavaScript, C++ преуспел несмотря ни на что. Теперь он, точно так же, практически повсюду.
JavaScript – это ни разу не игрушка.
Удачной учёбы!
В итоге хочу сказать вот что. Если кто-нибудь станет вас доставать только потому, что вы изучаете JavaScript, а не «хит сезона», просто вспомните знаменитые слова Бьёрна Страуструпа, человека, который создал C++: «Существует лишь два вида языков программирования: те, которые постоянно ругают, и те, которыми никто не пользуется».
Удачи в изучении вашего первого языка программирования!
Какие языки программирования учить в 2022 (для начинающих)
18 комментариев 04.12.2020 обновлено 7 месяцев назад
Наша редакция подготовила исчерпывающее руководство по языкам программирования в 2022 году. В статье ответим на такие вопросы:
Содержание:
Как выбирают
язык программирования?
Список востребованных языков программирования не меняется уже лет 20. Тот же С, который был изобретен в 1972 году в 2019 стал лидером согласно индексу TIOBE. Но смотреть на индексы, когда выбираете язык программирования для изучения – не самая лучшая стратегия. Вы рискуете так и не стать программистом, потому что на каком-то этапе может стать понятно, что это не ваше.
Некоторые пытаются оценить сам язык с позиции синтаксиса и удобства. Но для человека, который только выбирает язык программирования для изучения, будет бесполезной информация о том, что в Python применяется динамические ограничения видимости.
Важный критерий – скорость изучения. Самые интуитивно понятные языки: Python и JavaScript. Но они могут подойти не для любой задачи.
Те, у кого цель как можно быстрее начать зарабатывать – начинают с оценки, какие специалисты востребованы на рынке. Но программисты, среднего и высокого уровня подготовки, получают плюс-минус одинаковые деньги, а в ТОП, в том числе по заработной плате, выбиваются лучшие.
Чтобы стать лучшим, нужно любить свою работу. Поэтому наша редакция настоятельно рекомендует: выбирайте не язык программирования, а сферу, в которой вы в будущем хотите работать.
Какой язык программирования
тебе выбрать?
Смотрите инфографику ниже. Она поможет с выбором:
Чтобы выбрать язык программирования, определитесь, какие задачи вы хотите решать, а с чем точно не захотите связываться. Оцените, какие дополнительные навыки потребуются, какие личностные черты важны.
Если вы не хотите работать с визуальным компонентом, вам точно не подойдет Frontend, мобильная разработка. Если вы пойдете в одну из этих сфер, то вам придется работать с графическими редакторами, с дизайнерами которые будут настаивать практически попиксельному соответствию макету. Но у вас будет возможность показать результат роботы в виде веб-страницы или приложения которые будут понятны человеку который далёк от программирования.
Если все же хочется работать с вебом, но без соприкосновения с графикой, то ваш путь в Backend разработку. Дополнительные навыки здесь – администрирование серверов на Linux, организация и работа с базами данных.
Определились с профессией? Теперь давайте выберем, какой язык изучать.
Виды направлений
и языков программирования
В мире насчитывается по разным источникам до 25 000 языков. Но наиболее востребованными остаются 15-20: Java, JavaScript, Python, PHP, С, С++, С# и другие.
Устоялись и сферы их применения. С и С++ используется для ресурсоемких технологий или решения задач на устройствах с маленькой производительностью: авто, банкоматы.
PHP и JavaScript – для создания сайтов.
Когда вы изучили один язык, следующий будет выучить проще. Поэтому, если вы еще до конца не определились, чем именно хотите заниматься, начните изучать один из популярных языков Python или JavaScript.
В то же время, распыляться не стоит, лучше углублять свои знания, чтобы стать программистом высокого класса. Настоятельно рекомендуем не менять язык во время изучения. Вы должны овладеть хотя бы одним языком программирования на достаточном уровне.
Backend разработка
Чем занимается backend разработчик?
Разрабатывает «невидимую», серверную часть веб-приложений: сайтов, многопользовательских онлайн игр, мобильного банкинга и других продуктов сфер, в которых данные приложения обрабатываются на удаленной машине, а не на устройстве пользователя.
Бекенд разработчик отвечает за развертывание сервера, создание/доработку движка сайта, занесение информации в базы данных и извлечение ее оттуда.
Он программирует логику работы алгоритмов выдачи в социальных сетях, порядок прохождения курса на учебных платформах, списание-начисление средств в системах лояльности и подобные задачи.
Какие языки программирования используют в backend?
Backend developer должен знать один или несколько серверных языков. Какой именно — зависит от назначения сервера. Если это типичный веб, то подойдет PHP, Python. Для RPG игр подойдет производительный С++.
Java для сайтов с большими базами данных и сложными задачами, аналогичных Uber или Airbnb. Чтобы разработка шла быстро пригодятся знания фреймворков: например, Django для Python, Laravel для PHP.
Разработчику потребуются навыки настройки Nginx или Apache, если нужно будет развернуть веб-сервер. Обязательны навыки работы с базами данных MySql, PostgreSQL, MongoDB и языками запросов. Обратите внимание на рекомендации по обучению и курсы SQL.
Работа с API: Rest, JSON. Это нужно для работы с интеграциями с разного рода внешними сервисами и обработкой запросов от фронтенда. В must have список знаний бекендера с квалификацией выше среднего добавляется инструменты для автоматизации развёртывания, контейнеризации например Docker.
JavaScript, понадобиться, чтобы помочь на клиентской стороне. Для этого же будет полезно понимать логику работы HTML/CSS технологий.
Для любого программиста обязательно знать и уметь обращаться с системами контроля версий. Например Git.
Frontend разработка
Чем занимается frontend разработчик?
Его деятельность находится на пересечении верстки, UX/UI проектирования, дизайна, программирования. Frontend разработчик превращает картинку в работающий сайт, верстает, программирует логику взаимодействия пользователя с сайтом, интерактивные элементы, слайдеры и т.п.
Он отвечает за кросс-браузерное отображение сайта, адаптивность, работу калькуляторов, отправку форм, скорость загрузки страниц на машине пользователя.
Какие языки программирования, технологии в frontend?
Frontend developer в 2020 должен знать CSS3, HTML5, JavaScript. Чтобы применить эти знания нужно разбираться в: принципах работы браузера, DOM архитектуре, спецификациях и требованиях, например, W3C, БЭМ.
Фронтенд разработчик использует фреймворки и библиотеки: React, Vue.js, AngularJS, Bootstrap, jQuery. Репроцессоры: LESS, SASS.
Чтобы упростить разработку и минимизировать рутины, пользуется системами сборки типа WebPack, Gulp. Знаком с работой инструментария для контроля версий, чтобы обеспечить стабильность проекта.
Также понадобятся минимальные знания графических редакторов, навыки работы с базами данных и понимание принципов работы backend. Еще нужно разбираться в популярных системах управления контентом: WordPress, OpenCart и т.п.
Мобильная разработка
Чем занимается мобильный разработчик iOS и Android?
Мобильный разработчик создает приложения для телефонов, планшетов и устройств на их основе. Это могут быть небольшие программы, типа калькулятора, игры или более серьезные приложения для обычных пользователей, например, подсчет финансов. А могут быть программы научного или медицинского назначения. Например, для отслеживания миграции птиц, регистрации сейсмической активности, сбор и передача жизненных показателей от пациента.
Кроме непосредственного написания интерфейса приложения, мобильный разработчик отвечает за разработку его внутренней логики, тестирование.
Также в задачу может входить отрисовка отдельных элементов, написание технической документации, оптимизация производительности и ресурсоемкости приложения.
Какие языки программирования используют в iOS разработке?
Чтобы начать путь mobile application developer необходимо освоить хотя бы один язык и среду разработки под него. Создавать мобильные приложения можно практически на любом языке. Но Apple рекомендует для своих приложений Swift, хотя Objective-C тоже подойдет. Среда разработки для Swift: Xcode или AppCode. Чтобы упростить и ускорить разработку стоит познакомиться с несколькими фреймворками.
Стандарты дизайна для iOS жесткие, мобильному разработчику придется их изучить. Например, приложение с овальной кнопкой вообще не будет принято к рассмотрению.
Чтобы сложить окончательно впечатление, прочтите рассказ iOS разработчика о пути в профессию.
проверяйте так же отзывы об университете Скилбокс перед покупкой курсов.
А какие в Android?
Разработчики Android используют среду Android Studio, которая поставляется в пакете Android SDK. В качестве официальных языков используются Java и Kotlin, но на других тоже можно писать приложения под андроид. Чтобы начать работу, стоит ознакомиться с гайдом от Google.
Для хранения и воспроизведения данных нужны знания о базах данных. Чтобы связываться с удаленным сервером – библиотека RxJava, Retrofit для работы с Rest-API.
Сертификат разработчика от Google станет плюсом при трудоустройстве. Детальнее, как его получить, описано в статье.
Что выбрать iOS или Android?
Доля Android по данным IDC Smart существенно выше, чем iOS – 85% против 15%, и продолжит расти. При этом аудитория Apple более платежеспособная.
На рынке востребованы оба направления, поэтому выбирайте, то что нравится лично вам: если вы фанат яблочной продукции, не стоит тратить время на более распространенный по всему миру Android.
Разработка игр
Чем занимается программист в Game Dev?
Разрабатывает игры для различных устройств: ПК, консолей, мобильных устройств, браузерные игры. Чем масштабнее задача, тем чаще можно столкнуться с разделением функций.
Одни геймдев девелоперы создают архитектуру игры, другие программируют уровни, третьи отвечают за анимацию и др.
Примеры более конкретных задач, которые решает Game Dev:
Кроме игр к Game Dev относится создание объектов виртуальной (VR) и дополненной (AR) реальности.
Какие языки программирования используют в Game Dev?
Game Developer разбирается в объектно-ориентированном программировании, понимает принципы 3D моделирования, хорошо знает С++ или С#. Работает на игровом движке Unreal Engine или Unity.
Нужно не только уметь кодить на С++ или С#, но и понимать специфику программирования на конкретном языке в привязке к движку. Каждый программист выбирает среду разработки, удобную для себя, например, MS Visual Studio.
Отметим, что для разработчика игр важно знать линейную алгебру, теорию вероятностей, разбираться в тригонометрии. Математика лежит в основе программирования передвижений, физических параметров объектов и т.д. Как и программистам других отраслей — нужно уметь работать с системой контроля версий, например, SVN или Git. Знание алгоритмов будет плюсом.
Разработка desktop
приложений
Чем занимается программист desktop приложений?
Десктоп программист разрабатывает приложения для компьютера на операционной системе Windows, macOS, Linux. Это и служебные приложения, такие как браузеры, редакторы текста/видео/аудио, среды разработки. Это и программы для сложных математических расчетов, CRM системы и др.
Кроме разработки, Desktop программист может дорабатывать существующие решения с открытым кодом.
Какие языки программирования использует разработчик desktop приложений?
Программировать приложения можно практически на любом языке. Зависит от архитектуры, функций и требований к приложению.
Например, C++ подойдет для сложных задач, но писать на нем долго, а внесение даже небольших изменений займет много времени, больше подходит для низкоуровневых операций например для работы с памятью.
Java проще, но требует больше ресурсов от железа, но значительно упрощает процесс портирования на другую платформу, плюс многопоточные приложения в некоторых случаях могут работать эффективней.
Еще один востребованный вариант – Python. Относительно прост и подходит для небольших и кроссплатформенных приложений.
Поэтому, нужно взвешивать, что важнее: скорость реализации проекта или итоговая производительность. А еще нужно учитывать для какой платформы ведется разработка. Например, если это macOS, то лучше использовать Swift и Objective-C. Конечно, Desktop программист умеет работать со средой разработки, базами данных, баг-трекерами и системами контроля версий.
Data Science разработка
Чем занимается программист data science?
Программирует прогнозные модели, учит машину искать закономерности, анализировать данные и делать предположения на основе этого. Другая сторона работы заключается в программировании приложений, которые будут собирать эти данные и передавать на сервер.
Примеры реализации этих задач:
Какие языки и технологии использует?
Data Scientist понимает принципы математической статистики, знаком с методами машинного обучения, deep learning. Понимает, как работают базы данных, умеет записывать и извлекать информацию. Языки, используемые в анализе Big Data – Python, R, SAS.
R – язык, который часто используется в науке для статистического анализа и визуализации данных исследований.
В Python есть библиотеки для машинного обучения Scikit-learn и анализа данных Pandas.
SAS менее производителен, чем R, плюс не востребован в РФ, но хорош для аналитических и прогностических задач.
Embed разработчик
Чем занимается?
Embedded-разработка лежит на стыке инженерии и программирования, то есть предполагает работу и с кодом, и с железом. Embedded Developer пишет ПО, которое помогает работать телевизорам, квадрокоптерам, предметам умного дома, медицинскому оборудованию и даже IQOS.
Какие языки программирования и технологии использует?
Embedded Developer хорошо знает физику и электронику, программирует на С или С++. Инженер встроенного ПО знает язык ассемблера и разбирается в электронных схемах, микроконтроллерах, микропроцессорах.
Он знаком с методами встроенного программирования, цифровой безопасности, моделях передачи данных между устройствами. Умеет управлять конфигурацией программного обеспечения на основе систем контроля версий. Иногда не лишним будет умение паять и создавать компоненты железа самостоятельно.
Automation QA программист
Чем занимается такой разработчик?
Профессия на стыке программирования и тестирования. Automation QA engineer продумывает логику автоматизированных тестов для ПО и посредством программирования реализовывает ее на практике. То есть, пишет программы, которые будут искать баги в других программах, сайтах, выполнять нагрузочные, интеграционные тесты и т.п.
Для этого программист разрабатывает сценарии, описывает тест-кейсы, создает фреймворки, обеспечивает интеграцию тестов с сервисами автоматического запуска.
Какие языки программирования и технологии использует Automotion QA?
Java – один из самых популярных языков для Automation QA. Но используется и Python, JavaScript и другие языки.
ООП Специалисту, который планирует работать с вебом, важно учить язык в связке с инструментами для автоматизации действий браузера, таких как Selenium WebDriver, например.
Знает несколько unit frameworks для быстрого создания модульных тестов, умеет работать с базами данных. Но прежде всего, Automation QA engineer понимает теорию тестирования, умеет проводить его вручную.
DevOps программист
Чем занимается программист в DevOps?
DevOps engineer – это специалист, который объединяет работу программистов, создающих продукт, тестировщиков, команды интеграции продукта и защищает от перебрасывания ответственности за работающий готовый продукт между ними.
DevOps в целом – это методология, которая позволяет сделать разработку и внедрение ПО максимально быстрой, эффективной и безопасной.
Для этого DevOps engineer:
Какие языки программирования и технологии использует?
В качестве языка программирования чаще используется Python. Он довольно простой в изучении и подходит для требований автоматизации и управления инфраструктурой. Если принципиально он вам не подходит, можно изучить Go или Ruby.
Также DevOps engineer знает:
Программист 1с
Чем занимается?
1С программист занимается автоматизацией бизнес-процессов. На практике это включает в себя:
Какие языки программирования и технологии использует?
На территории бывшего СНГ 1С является самым распространенным пакетом программ для бухгалтерского, налогового и управленческого учета. У этих программ собственный язык и среда разработки.
Кроме языка программирования программист 1С знает умеет работать с базами данных, владеет основами настройки работы принтеров, компьютеров. Обязательно разбираться в азах бухучета и бизнес процессов.
Сам 1С написан на C++. Компанию часто ругают за внутренний проприетарный язык. Но отметим, что зарубежный конкурент 1С, SAP, также реализован на внутреннем языке ABAP/4.
Больше о программировании 1С читайте в нашей статье.
С чего начать изучение
языков программирования?
Напомним. Определитесь, чем вы хотите заниматься. В рамках этого выберите язык, который вам ближе.
Учите синтаксис, читайте гайдланы. Это можно делать самостоятельно по учебникам, видеоурокам. Если тяжело с самоорганизацией – проходите онлайн курсы.
Теоретическое изучение не даст толку. Воспроизводите то, о чем читаете в книге. Разбирайте примеры чужого кода, но не копируйте: вдохновляйтесь и воспроизводите по-своему. Разберитесь с алгоритмами.
Обучение от проблемы самое эффективное. Это когда вы решаете конкретную коммерческую задачу. Поэтому ищите заказы или идите на работу. В компаниях нередко есть вакансии trainee или интерна.
Общайтесь в сообществах профессионалов. Изучите фреймворк под вашу специализацию. Следите за обновлениями в вашей сфере и продолжайте углублять навыки.
Рейтинг и статистика
по языкам программирования
В статьях о выборе лучшего языка программирования часто упоминают индекс TIOBE. Пятерка по состоянию на ноябрь 2020 выглядит следующим образом:
Отметим, что это не самый корректный критерий для определения востребованности языков программирования. Он рассчитывается на основе частоты, с которой встречается название языка в поисковых запросах наиболее авторитетных сайтов, типа Google, Wikipedia, Amazon и др. Понятно, что он отображает определенные тренды в мире, но подвергается критике за то, что может быть накручен и не отображает полезность.
Другой известный индекс PYPL
Эта методология строится на количестве запросов туториалов того или иного языка и, конечно, критикуется не меньше, чем TIOBE.
Обратимся к рейтингу GitHub
Сравним оплату труда. По данным glassdor.com разработчики, программирующие на конкретном языке, получают:
Программист на языке | Среднегодовая заработная плата |
Python | $76 526 |
C# | $76 526 |
Java | $79 137 |
Swift | $76 526 |
PHP | $81 872 |
Ruby | $76 526 |
SQL | $81 622 |
На портале payscale.com можно проанализировать среднюю оплату труда для соискателей обладающих знаниями того или иного языка не зависимо от должности:
Знания языка | Среднегодовая заработная плата |
Python | $91 289 |
C, C++ | $90 176 |
Java | $91 094 |
Kotlin | $98 348 |
PHP | $70 476 |
SQL | $97 098 |
Если нас интересует рейтинг по специализациям, обратимся к Stack Overflow
Языки программирования распределились следующим образом:
Часто задаваемые вопросы
Компьютер понимает двоичный код (0 и 1), а не человеческий язык. Чтобы объяснить ему, что именно нужно делать на аппаратном уровне, какой транзистор включить, а какой выключить – существует набор правил. Этот набор правил и есть высокоуровневый язык программирования. Он позволяет перевести с человеческого на машинный четкие инструкции, выполнение которых приведет к решению поставленной задачи.
Выучить синтаксис можно за пару недель, но это не означает научиться программировать. Чтобы писать сайты, создавать приложения – нужно 6-12 месяцев с нуля до уровня Junior, считает Даниил Пилипенко из Skillbox. А Яндекс Практикум говорит о том, что программирование на Python можно освоить за 9 месяцев обучения тратя по 15 часов в неделю. На наш взгляд, это адекватные цифры.
Чтобы перейти с уровня Junior на Middle потребуется 1-2 года, достижения следующего уровня, Senior, потребует 2-3 года. Если вы планируете тратить на изучение меньше часа в день, то, вероятно, не стоит браться за эту задачу.
Можно. Сейчас есть много бесплатных лекций, самоучителей, интерактивных сервисов. Тернистый путь и не для всех. Потребуется упорство, самоорганизация. Вы можете столкнуться с тем, что нужна подсказка, а попросить ее не у кого. Вот несколько примеров тех, кто учился сам: первый, второй.
Для максимально быстрого вхождения в профессию лучше найти наставника или пойти на курсы с домашними заданиями и обратной связью.
Компьютер или ноутбук с установленной на нем средой разработки. Книга или видео-уроки, по которым вы будете изучать язык программирования. Много упорства и терпения. А вот математика не обязательна. Для веба, мобильной разработки, администрирования – она не понадобится. И даже для тех специализаций, где важно знать математику на начальном этапе освоения языка программирования, можно обойтись без нее.
Уверенное знание теории – обязательно. Нужен ли практически опыт, или получится устроиться без него – зависит от требований к позиции Junior’а в конкретной компании.
Как скоро вы сможете претендовать на эту позицию зависит от вашего бэкграунда. Если вы уже программист, но хотите сменить направление, при упорном подходе за пару недель вы освоите стандарты нового языка. Если вы работали в IT сфере системным администратором или тестировщиком, то обучение займет 2-3 месяца. Для обучения с нуля 6-18 месяцев.
Автор, редактор videoinfographica, старший маркетинг-специалист
Насколько я понимаю, можно изучить несколько языков программирования и работать с ними? К примеру если хочешь создавать прилы для андроид и ios?
Артур для приложений на Android — одни языки, для IOs —другие. Для начала — сконцентрируйте свое внимание на одном языке, как освоитесь — смело учите другие. В инфографике на этой странице мы указали основные языки на этих платформах.
Очень интересная статья. Программирование в наши дни очень востребованная сфера деятельности. Знаю мужчину, который в 45 лет решил научится программированию и сейчас реализовал себя как хороший разработчик андроид-приложений. Ещё мне кажется будущее за виртуальной реальностью. Как Думаете, какой движок для обучения выбирать, чтобы в дальнейшем реализовать себя в сфере VR?
С VR хайп нормально так поутих и будущее весьма туманно у данной технологии. Изучайте Unreal Engine или Unity. Эти знания будут востребованы не только в VR.
Здравствуйте!! Спасибо за отличную статью. Мне по душе мобильная разработка… Я хотел спросить а как на счет кросплатформенного… Я про Flutter и языка Dart?
Ps: Я немного начал Java… Но наткнулся на иныу про Flutter…
Если у тебя самые серьезные намерения — учи конечно. Язык набирает популярность. Растет в рейтинге на Github. Позволяет разрабатывать приложения для андроид и айос. Обещают, что можно будет и для десктопа писать. Возможно гугл переключит разработку с Java, Kotlin на Dart/Flutter. Вакансии периодически появляются так же, как и проекты на фрилансе. Так, что только в путь.
Очень крутая статься, спасибо вам большое ))
очень круто, что есть такие люди )
Зашёл сюда, дабы узнать какой язык выбрать для лёгкого изучения. Java или Python,но первая же картинка дала ответ)
Спасибо зе действительно хорошую стать, не продажную не курсы там на миг бренчаний и прочую воду, жму вам руку
Помогите, пожалуйста, определиться. Мне интересен фронтенд и java-разработка. Я немного изучал вёрстку, сделал пару страниц. В java мне нравится стабильность, высокие зарплаты при работе в офисе. Но сейчас я узнал, что фронтендеры на фрилансе зарабатывают намного больше — некоторые по 100$ в час. Помогите определиться, чтобы не разочароваться в дальнейшем из-за упущенных возможностей.
Выбирайте, то что вам не надоест делать спустя 1-2-3-4 года работы.
Здравствуйте! Спасибо за отличную статью!
Вот я знаю Python(junior), но не могу определиться стать разработчиком или data since.
Получают они примерно одинаково.
Разработчику будет легче найти работу.
Data Science, если с математикой отлично дружишь.
Еще на ютубчике достаточно информативных видео, которые помогут определиться. 🙂
ПРОЧЕЛ И ПОНЯЛ СТЕПЕНЬ ОТВОДА РЕШЕНИЕ ОДНО ВЫУЧИТЬ ВСЕ И ЕЩЕ НЕМНОГО БОЛЬШЕ ЧЕМ ВСЕ ЧТО ЕЩЕ МОЖНО ПОМЕСТИТЬ
Привет. Я очень давно собираюсь изучить python, мне нравится эстетика этого языка. На нём приятно писать.
Однако я не знаю в какую из трёх областей податься.
В мобильные приложения? (если у ты можешь сделать мобильное приложение для своей задачи это всегда круто)
В бэк энд? (но наверное найти работу проще в бэк энде в уже чужом проекте)
Или во фронтэнд?
Фронтэнд нравится мне меньше всего, так как я не люблю дизайнить, мне приятнее продумывать логику, чем внешний вид.
Но мне хочется сделать проект веб приложения для хостела, в которой будет система бронирования номеров, взаимодействие с букингком и айрнби, а так же в идеале всё это должно работать с мобильным приложением, которое будет позволять делать бронирование и ещё одним приложением, которое будет электронным гидом клиентов хостела по туристическим местам.
И получается, чтобы такой проект реализовать нужно иметь навыки фулстек разработчика +, например, котлин под андроид.
Это очень много чего учить.
С одной стороны разумнее учить Java Script + Node.js для таких задач + какой-то фреймфорк, который бы позволил писать мобильное приложение на JS.
Но так давно хотелось выучить питон, что родилась идея выучить питон + джанго и попытаться зафронтэндить свой проект на питоне.
Однако теперь после инфографики сомневаюсь.
Стоит ли браться за столь разнообразную и масштабную задачу, как единоличное написание экосистемы хостела?
Какая область всё же более перспективна с точки зрения фриланса и работы на себя бэкэнд разработка или мобильная разработка?
Какая даст более стабильный доход?
Есть ли с моими желаниями учить сперва python+джанго, а затем JavaScript и Kotlin или, лучше сразу выучить JavaScript и делать проект на нём?
Но я же не хочу слишком завязываться с фронтэндом, мне бы всё же после реализации проекта хотелось сосредоточиться на бэкэнде или на мобильной разработке.
Здравствуйте! Спасибо, что ознакомились с нашей краткой схемой по миру разработки.
Как вы правильно заметили, современные реалии таковы, что для выпуска законченного продукта требуются знания из различных областей.
Если вас интересует именно «как изучить поменьше языков программирования и сделать мобильное приложение», можно взять Java для бакенда и самого приложения, но в этом случае вы будете ограничены экосистемой Android.
Со своей стороны могу сказать, что «выучить новый ЯП», если вы уже знаете 1-2 похожих (а кто бы что бы не говорил, но C++, Java, Python, JavaScript, Go, Swift с точки зрения именно языковых конструкций не так уж фундаментально различаются) несложно. Самое сложное и «непересекающееся» — это разобраться с инфраструктурой и фреймворками, предлагаемым каждым языком. Но здесь вполне себе работает принцип «снежного кома»: ранее накопленные знания помогут быстрее и эффективнее осваивать новые средства разработки.
Так что выбирайте то, что вам нравится, а дальше нарабатывайте опыт и все у вас получится! Главное, чтобы это приносило удовольствие, иначе это будет так же сложно и безблагодарно, как, например, «вкатываться с нуля в квантовую механику»
Здравствуйте, а стоит ли учить C++ в 2021/2022?
Краткий ответ: «Скорее стоит, чем нет». Это связано с тем, что очень многое из того, что представлено в языке C++ (особенно в современном, начиная с C++11) в той или иной форме есть в прочих языках (лямбды, полиморфизм), а это облегчит овладение новыми технологиями, если таковая необходимость возникнет.
Более развернутый вариант может не понравиться: «В зависимости от поставленных целей». Можно не прикасаться к плюсам и при этом творить востребованные вещи и получать за это конкурентную зарплату. И можно то же самое делать, используя C++. Тут могу посоветовать только отталкиваться от вашей ситуации: вакансии junior C++ developer могут отсутствовать в вашем регионе, или же уровень дохода не соответствовать ожиданию, или же начинать что-то делать надо уже сейчас, а погружение в плюсы «с нуля без какого-либо опыта» может быть слишком долгим — все весьма индивидуально.