Язык программирования с какого начать
Закодируйся: как выбрать первый язык программирования
Рассказываем о плюсах и минусах JavaScript, PHP, Python, Java, CSS и HTML. Статья подготовлена на основе вебинара с Михаилом Овчинниковым.
В бэкграунде — программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.
У каждого языка веб-разработки свои особенности, достоинства и недостатки, своя сфера применения и свой список связанных технологий (он называется «стек»). Сегодня мы сравним несколько популярных языков и дадим советы, как же из всего многообразия выбрать что-то одно.
Что такое типизация
Прежде чем мы начнём разбираться в плюсах и минусах языков, стоит поговорить о типизации. Потому что от типизации зависит и как вы пишете программу, и как она потом работает.
Типизация — это разделение переменных на разные типы: например int (целое число), flow (число с десятичной частью), string (строка текста), bool (правда/неправда).
Типизация бывает явная или неявная, слабая или сильная и статическая или динамическая.
В языках со статической типизацией типы переменных устанавливаются на этапе компиляции, причём обычно переменные объявляются с указанием типа (явно).
Динамическая типизация означает, что типы определятся уже во время выполнения программы.
Сильная (строгая) типизация не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования.
Языки со слабой типизацией более гибкие, но они часто сами неявно преобразуют переменные, даже если в результате может появиться неточность или если преобразование неоднозначно.
Теперь, когда мы разобрались с типизацией, перейдём к самим языкам.
HTML и CSS
Начнем издалека — с HTML (Hypertext Markup Language) и CSS (Cascade StyleSheets). Почему с них и почему «издалека»? С них — потому что они лежат в основе веб-разработки, и ни один сайт без них не обойдётся. А издалека — потому что это не совсем языки программирования.
Они нужны, чтобы создавать содержимое веб-страницы — контент и оформление; программу вы на них не напишете. Тем не менее веб-технологии сейчас уже используются и в других сферах, в том числе в десктопных и даже мобильных приложениях, поэтому у этих «языков» хорошие перспективы.
HTML и CSS очень простые — в основах можно разобраться буквально за пару дней, даже самостоятельно. Так что если вы очень боитесь программирования и не верите, что у вас получится, попробуйте начать с них. Это под силу каждому, поможет вам плавно войти в программирование и оценить свои силы. А потом при желании можно перейти к другим языкам.
С какого языка начать изучение программирования самостоятельно
Одна из проблем новичка — какой язык программирования начать изучать первым. Отвечаем на сложный вопрос.
Pascal и Delphi — самые строгие учителя
Такое заявление вас может сильно удивить, но не спешите закрывать вкладку со статьей: это рекомендация от практикующего senior-разработчика PHP.
Почему Pascal?
Если мы говорим именно об обучении программированию с самых основ, то начинать нужно на Pascal или Delphi.
Дело в том, что Pascal — это очень структурированный и упорядоченный язык. Он учит правильному программированию. В нем есть отдельная секция для описания переменных. В целом синтаксис языка строгий: например, программист не сможет поставить запятую после последнего элемента массива.
Такие языки, как PHP и Node.js, позволяют разработчику очень много вольностей в процессе написания кода. В результате без необходимых знаний о том, как правильно программировать, вы с большой вероятностью получите «грязный» код со множеством ошибок.
Пример ужасного PHP-кода при условии, что в свойстве active передаются строки ‘true’ и ‘false’:
$len = strlen($r->active);
if ($len == 4) <
$a = true;
> else <
$a = false;
>
if ($a)<
//do something
>
А так выглядит корректный код:
Другой показательный пример, когда метод класса может принимать в качестве единственного параметра объект, массив, число или строку. Новички делают проверку метода на тип параметра и ошибаются. Для нее нужно использовать либо четыре разных метода, либо четыре класса и применить паттерн Strategy.
Pascal учит хорошему тону в разработке. Например тому, что нужно всегда объявлять переменные и правильно их называть. Многие программисты на том же PHP часто грешат тем, что забывают об этом. В итоге значение переменной не присвоено, и без него она используется во всем скрипте — неудивительно, что программа не работает так, как нужно.
Почему Delphi?
Альтернативный вариант строгого учителя программированию — язык Delphi. По эффективности и результату это тот же Pascal, только для ООП: с ним вы поймете SOLID-принципы. Вы не сделаете того, что можете реализовать средствами С или PHP, — но для человека с нулевыми знаниями и отсутствием опыта это преимущество, а не недостаток.
Если новичок решает, с какого языка программирования начать, и выбирает PHP и ему подобные, то его код будет очень «грязным», неаккуратным и трудно читаемым — потому что синтаксис позволяет так писать. И здесь ответственность за чистоту кода ложится на плечи самого разработчика. Поэтому мы и советуем начинать с технологий, которые вы назовете «древними», и будете правы.
Учебные лабораторные работы на Pascal и Delphi создают несколько рафинированное представление о коде и программировании — то есть оторванное от реальности. Ведь вы не занимаетесь техническими задачами в настоящем, работающем проекте. Они не дадут системного подхода и полной картины программирования.
Вместо решения лабораторных без практического применения попробуйте написать простую программу для работы с клиентами: не сайт, а, например, десктопное приложение для учета. Еще варианты: графический или текстовый редактор, браузер, антивирус или любая программа под свои нужды. Это будет хорошей практикой для новичка, желающего самостоятельно обучиться программированию с нуля.
Java и C#/C++ — еще один вариант
Мы предлагаем и другой путь, возможно, более понятный и приемлемый для вас, — обучение Java, C# или C++. Они тоже достаточно строги к новичкам. Это языки со статической типизацией, которые требуют понимания принципов объектно-ориентированного программирования и содержат множество нюансов, связанных с приведением типов.
А если язык понравится в ходе освоения, вы продолжите писать на нем же. Найти работу программиста на Java и C# вполне реально, в отличие от тех же Pascal и Delphi, которые можно рассматривать только в качестве «тренировочного полигона» для начинающих.
Что делать, если я не хочу изучать эти языки?
Разумеется, мы не заставляем вас целый год учить «никому не нужные» Pascal и Delphi: достаточно просто потренироваться в них какое-то время, чтобы усвоить правила хорошего тона. Наша задача — только дать совет, с какого языка лучше начать изучение программирования. С самообразованием будьте аккуратны: можно испортить себя как разработчика, едва начав карьеру.
Не исключено, что наши рекомендации покажутся вам старомодными, и вы захотите броситься на амбразуры кодинга как можно скорее с динамическими языками современного веба: PHP, Python и другими. Тогда начинайте изучение программирования с поиска ментора и прохождения онлайн-курсов. Здесь вас научат писать код по правилам те, кто уже давно умеет это и прошли боевую школу со многими другими языками и технологиями. Присутствие наставника — это очень важный фактор при изучении программирования на первых порах.
Рекомендуем курсы для начинающих под руководством ментора:
«Профессия Java-разработчик» — углубленное изучение универсального языка программирования в течение 4 месяцев.
«C#-разработчик с нуля» — практический базовый курс по C# с разработанным десктопным приложением на выходе.
«PHP-разработчик» — обширная программа, рассчитанная на все уровни знаний: от junior до senior.
Как выбрать первый язык программирования
Разбираемся, что учить новичку в программировании, даже если ты ничего не понимаешь, а вокруг одни противоречивые мнения.
Разработчики на Python хвалятся тем, как быстро пишут код. Программисты на C++ — что их код очень производительный. Те, кто используют Java, говорят, как важна кроссплатформенность.
И все торопятся друг друга обидеть: Swift — для геев (многие действительно так думают), Python — для малышей, а JavaScript, конечно же, для дураков. Разработчики готовы спорить даже о том, что лучше: табы или пробелы.
В этой статье мы рассмотрим две темы:
Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Мой личный опыт
Я начинал с 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++. А на нашем курсе всё это можно закрепить на практике.
Какие языки программирования учить в 2021 (для начинающих)
14 комментариев 5 месяцев назад обновлено 2 месяца назад
Наша редакция подготовила исчерпывающее руководство по языкам программирования в 2021 году. В статье ответим на такие вопросы:
Содержание:
Как выбирают
язык программирования?
Список востребованных языков программирования не меняется уже лет 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 и языками запросов.
Работа с API: Rest, JSON. Это нужно для работы с интеграциями с разного рода внешними сервисами и обработкой запросов от фронтенда. В must have список знаний бекендера с квалификацией выше среднего добавляется инструменты для автоматизации развёртывания, контейнеризации например Docker.
JavaScript, понадобиться, чтобы помочь на клиентской стороне. Для этого же будет полезно понимать логику работы HTML/CSS технологий.
Для любого программиста обязательно знать и уметь обращаться с системами контроля версий. Например Git.
С какого языка программирования лучше начать обучение
Учиться никогда не поздно. И второе образование или знания о новых технологиях можно получить в любом возрасте. Однако возникает вопрос, с чего начать. А если речь о программировании — какой язык выбрать. Давайте разбираться.
Сначала необходимо настроить себя на колоссальную работу, временные рамки которой значительно превышают пару месяцев. Далее необходимо определить следующие факторы:
Да, языки программирования тоже бывают мертвыми, забытыми, так как в них нет нужды.
Спрос на рынке труда
Если желание научиться программированию появилось из чистого энтузиазма или симпатии к интеллектуальным задачам — этот текст будет не менее полезным. Ведь любая интересная работа, приносящая хорошие деньги, может стать работой мечты.
Зачастую заоблачную заработную плату получают программисты, пользующиеся спросом (к слову, менее 50%) у известных компаний и знающие «экзотические» языки программирования. Языки, которые не на слуху у широкой аудитории. Согласно статистике 2019 года, наиболее высокооплачиваемые специалисты IT-сферы в России — это люди, орудующие Haskell, Clojure, Rust, когда спрос на них по всей стране — это 35, 15 и 30 свободных мест. Их заработная плата превышает 150 000р. Далее лидируют именно открытые вакансии, 12 000 мест, на людей, пользующихся SQL, 8400 вакансий — 1C, и 6500 — HTML. И совсем плохи дела у программистов на Pascal и Scratch, так как работодатель предлагает им заработную плату в размере 45 000 рублей и 38 000 рублей. Не пользуются спросом на рынке труда языки Fortan, Lisp и Elm (8, 12, 12 вакансий).
Если говорить о территориальных особенностях, то заметных закономерностей нет. В Москве, к примеру, желаемым языком программирования у работника является SQL (3700 вакансий и 130 000 рублей — средняя заработная плата), когда самый прибыльный — Scala (205 000 рублей).
IT-специалисты компании SFERA, владеющие большинством языков программирования, утверждают, что знание иностранных языков может помочь начинающим специалистам в изучении. Они имеют в виду, что большинство языков программирования базируются на лексике английского языка.
Само по себе знание языков программирования подразумевает под собой понимание записи определенных алгоритмов и работы исполнителей. Вот топ-5 языков по простоте:
Низкоуровневые программы. Создать операционную систему, чтобы почувствовать себя основателем компании Microsoft, или какой-то драйвер уже для самой OC позволит язык «СИ».
Веб-программирование. Как было упомянуто, можно написать простой сайт на HTML, однако нужно как-то задействовать скриптовую часть, что будет происходить на стороне пользователя. С этим хорошо справится JavaScript.
Бизнес. Здесь лучше использовать Java, так как он позволяет создавать программы, долго работающие без перебоев и поломок.
Игры. Python, java, C++ помогут начинающему программисту в создании 2D-, 3D-платформенных игр.
Если не бояться трудностей и вести себя сдержанно в данной сфере — можно стать востребованным специалистом. Не стоит браться за всё и сразу. Любой опытный программист посоветует как следует изучить один язык программирования, вместо того чтобы поверхностно пройтись по нескольким. Необходимы терпение и самоконтроль: эти два качества помогут достичь высот.