С какого языка программирования лучше начинать обучение?
Содержание:
- PHP
- А что с декларативом?
- Swift
- Shakespeare — самый поэтичный
- Реакция сообщества
- Kotlin (2011)
- INTERCAL — самый первый
- Как применять язык JavaScript на примерах
- Brainfuck — самый известный и минималистичный
- JavaScript
- Как появился Python
- C (1972) и C++ (1985)
- Java
- Объять необъятное: как можно остаться на обочине IT-индустрии, умея в ней всё
- Python-разработчик
- Java-разработчик
- Штраф за абстракцию
- Семантика
- C# (2000)
- Не языками едиными
- Сфера применения JavaScript
- Определите, чем вы хотите заниматься
- R
- Искать работу с первых шагов
- Python
PHP
PHP (Personal Home Page Tools, дословно переводится как «инструменты для создания персональных страниц») ― язык программирования с открытым исходным кодом или скриптовый язык. Он был создан в 1995 году и на данный момент является самым популярным среди веб-разработок.
PHP широко используется для создания веб-сайтов, серверных приложений, утилит, скриптов, мобильных приложений. Такие популярные сайты как «ВКонтакте», Avito, Facebook были созданы как раз при помощи PHP.
Вот почему этот язык программирования такой популярный:
- быстро читается;
- предназначен для веб-разработок;
- имеет широкую область применения;
- кроссплатформенный;
- легко изучить;
- востребованный, а значит, специалисту в этой области будет просто найти работу;
- в последние версии добавились новые возможности и синтаксис стал лучше.
Но, естественно, ничего не бывает совершенным, и PHP не исключение. К основным минусам языка относятся слабая типизация, неудобная стандартная библиотека и то, что он, в основном, ориентирован на веб-разработки.
В отличие от JavaScript, код у PHP прочитать самостоятельно с первого раза не удастся, для этого нужно знать основы языка, освоить которые реально за несколько часов.
Спрос на специалистов PHP высокий, но зарплата немного ниже, чем у разработчиков JavaScript. К примеру, новичок может претендовать на оплату, в среднем, 40 тысяч рублей, а профессионал с опытом – от 100 тысяч рублей. В любом случае, трудоустроиться в данной области не составит труда, главное – знать технологии работы с этим языком.
Набор инструментов для работы с PHP состоит из:
- Редактор/IDE: SublimeText, Atom, Notepad++, PhpStorm.
- Хранилища: Memcached, Redis, MongoDB.
- Сервера баз данных: PostgreSQL, Mysql.
- Отладчик: XDebug.
- Популярные фреймворки: Symfony, Yii, Laravel, Zend, Lumen, Silex, Slim.
- Профайлер: XHProf – оценивает время работы на каждом этапе и помогает вычислить, где программа выполняет свои функции медленно.
- Менеджер пакетов: Composer.
Специалисты в сфере веб-технологий будут востребованы еще много лет, поэтому смело можете выбирать для себя обучение PHP.
А что с декларативом?
Что такое языки программирования, ясно. Но в предложенном ТОПе почти не встречаются декларативные варианты. Это связано с их небольшой популярностью на фоне «аналогов». Имеются несколько наиболее влиятельных его вариантов, которые все еще встречаются в реальной жизни.
Lisp
Появился, благодаря некому Джону Маккарти. Старый высокоуровневый, активно используемый по сей день. Записи создаются при помощи систем линейных символьных списков. Встречается в промышленном программировании и веб-приложений массового применения.
SQL
Размышляя, что такое языки современного программирования, кажется, что это – нечто трудное и непонятное. К декларативному виду можно дополнительно отнести «язык баз данных». Речь идет об SQL.
Понятен юзеру и довольно прост в освоении. Подходов к написанию кодов не слишком много, так как SQL использует ограниченный набор команд и их сочетаний. Имеет несколько диалектов:
- T-SQL;
- PL/SQL;
- PL/pgSQL;
- MySQL.
Это – наиболее популярные варианты. Но ими диалекты не ограничиваются.
HTLM
Еще один вариант «общения» с компьютером – это HTML. Изучая, что такое языки программирования, стало ясно – они подходят для написания веб-страниц. HTML относятся к «разметочному».
При помощи данного варианта пишутся сайты. Преобладает использование тегов. Умеет:
- форматировать текст;
- редактировать текстовые блоки, создавая заголовки разных уровней, абзацы и так далее;
- работать с таблицами;
- вставлять объекты (звуковые и графические в том числе);
- контактировать с гиперссылками.
Но полноценное форматирование контента при помощи HTLM невозможно. Приходится подключать таблички стилей CSS.
Данная статья познакомила пользователей с основами способов «общения с ПК». Теперь ясно, что такое декларативное программирование, а также какие языки к нему относят. Но в обыденной жизни спросом пользуются другие программные разновидности. Были рассмотрены наиболее популярные из них.
Swift
Подходим к самому интересному — языкам, безупречное владение которыми поможет вам попасть в сферу мобильной разработки. Swift не вполне универсален: он еще не полностью вытеснил Objective-C из приложений для Apple, но перспективы у него блестящие.
Четвертая версия Swift вышла в 2017 году: она содержит множество улучшений для работы со строками, коллекциями; возросла надежность и многое другое. Это уже не «сырой» язык, а классический представитель верхушки рейтинга TIOBE с планомерным развитием. С помощью Swift вы можете создавать приложения для всех продуктов Apple: macOS, watchOS, iOS и любой новой системы, если она появится.
Посмотрим на код последовательности Фибоначчи:
func fib_recursion(num1 Int, num2 Int, steps Int) { if steps > { let newNum = num1 + num2 fib_recursion(num2, num2 newNum, steps steps-1) } else { print("result = \(num2)") } } fib_recursion(, num2 1, steps 10)
Shakespeare — самый поэтичный
Этот esolang маскирует код под пьесы Шекспира. Первый абзац программы — всегда эпиграф, с помощью списка персонажей объявляют количество стеков, а реплики героев — это операции ввода-вывода. Если же шекспировские персонажи задают вопросы, включается условный оператор. Отдельные блоки программы называют актами, которые, в свою очередь, разбиты на более мелкие сцены, пронумерованные римскими цифрами.
Язык получился многословным. Вот так, например, выглядит запись «Hello World». Да уж, это сплошной the time is out of joint — посмотрите, как в одном «произведении» лихо миксуются фразы Джульетты, Ромео, Гамлета и Офелии.
И пусть программировать цитатами из Шекспира — не самое комфортное занятие, зато Shakespeare отлично разминает мозг и даёт возможность развить чувство прекрасного 🙂
Где изучить Shakespeare: http://shakespearelang.sourceforge.net/.
Реакция сообщества
Релиз языка Ć активно обсуждается как на профильных сайтах, посвященных программированию, так и на ресурсах, никак не связанных с ним. Редакция CNews обнаружила посвященные ему темы на YCombinanor и на Reddit.
Smart-системы стали драйвером продажи недвижимости
Интеграция
Топик на YCombinanor был создан 9 октября 2021 г. и за это время собрал почти 300 комментариев. На Reddit существует как минимум две темы для обсуждения Ć, датированных тем же днем. В одной из них набралось около 290 ответов, в другой – 33.
Пользователи разделились на два лагеря – одни считают, что язык имеет право на существование, другие же сомневаются в его практической пользе. К примеру, пользователь Reddit под псевдонимом bladehaze написал, что Ć пригодится лишь в том случае, если писать код без использования библиотек, что не всегда представляется возможным.
Kotlin (2011)
Этот язык создала в Санкт-Петербурге компания JetBrains. Он совместим с Java, поэтому Java-проекты можно постепенно переводить на Kotlin: не переписывая всё разом, а постепенно добавляя туда Kotlin-код. И многие попробовавшие его Java-разработчики захотели к нему перейти, ощутив, что тут нет «скуки и многословности», всё выразительнее и современнее.
Пока что язык покорил одну конкретную область: разработку приложений для Android. Изначально их писали на Java, но в последние годы начался массовый переход к Kotlin, он стал новым индустриальным стандартом. Поскольку никто не хочет просто выбрасывать уже написанное раньше, сейчас во многих приложениях есть код и на Java, и на Kotlin, поэтому сегодня Android-разработчику желательно знать оба языка. Но похоже, что в будущем будет достаточно Kotlin — уже сейчас во многих Android-вакансиях упомянут только он.
JetBrains совершенно не хотят останавливаться на Android и метят с Kotlin в самые разные ниши, даже те, где не представлена Java. Каких-то успехов в этом компания добивается, с каждым годом язык становится популярнее, но от других вроде той же Java пока что сильно отстаёт, и насколько ещё ему получится вырасти — открытый вопрос. Так что, если учить Kotlin, в Android-разработке это точно очень пригодится, а в других областях — как повезёт.
INTERCAL — самый первый
INTERCAL придумали два студента Принстонского университета, Дон Вудс и Джеймс Лайон, в 1972 году. Это пародийный язык, а его название означает «язык программирования с непроизносимой аббревиатурой». На главной странице INTERCAL висит грозное предупреждение:
«Осторожно! Если вы не злостный хакер, вам лучше сразу вернуться восвояси. Ничего, кроме извращённых технических глупостей и неумолимой одержимости высасыванием мозгов, вас здесь не ждёт
Что ж, вы предупреждены».
Документация языка пестрит эпиграфами из «Алисы в Стране Чудес» и ехидными комментариями, а коды ошибок невозможно расшифровать без справочника. Например, ошибка E127 — «Говорить „абракадабра“ без волшебной палочки совершенно бесполезно» — намекает, что стандартная библиотека не подключена. А E252: «Я забыл, что хотел сказать» — на переполнение памяти во время операций ввода-вывода.
Есть и уникальные для INTERCAL ошибки — например, E079: «Программист недостаточно вежлив». Или E099: «Программист слишком вежлив». Обе появляются, когда в коде слишком много или слишком мало вхождений команды PLEASE.
Каждой команде в INTERCAL можно задать вероятность выполнения, а некоторые операторы блокируют выполнение других команд или запрещают изменять переменные.
В общем, цель языка — сделать код максимально запутанным и непонятным, «скрыть любую информацию, чтобы вас не могли уволить и заменить каким-нибудь младшим помощником старшего подмастерья». Например, вот самый простой способ сохранить значение 65536 в 32-битной переменной:
DO: 1 <— # 0 $ # 256
Не переживайте, мы тоже мало что поняли. Но, как гордо заявляют авторы: «Если это самый простой способ, то представьте, что можно сделать, намеренно пытаясь скрыть информацию!»
А так выглядит классика — «Hello World» на INTERCAL:
Всё как и обещано в документации: «INTERCAL позволяет программисту генерировать в 20 раз больше кода, чем большинство других языков. Благодаря этому разработчик становится гораздо более плодовитым, чем его коллеги, вынужденные программировать на лаконичных языках. А ещё программирование займёт у вас гораздо больше времени».
Где изучить INTERCAL: http://www.catb.org/~esr/intercal/ick.htm.
Как применять язык JavaScript на примерах
Базовых знаний JavaScript и принципов работы DOM достаточно для создания хоть и примитивных, но всё же рабочих приложений: органайзер для ведения списка дел, калькулятор, конвертер температур. Два месяца активного изучения основ JavaScript было достаточно, чтобы разобраться с простейшим приложением для списка гостей — RSVP app.
Пример кода для приложения RSVP
Другой пример — конвертер температур, написанный на ванильном JavaScript (без использования библиотеки jQuery и фреймовиков).
В приложении 3 документа: index.html, style.css и app.js
Содержание app.js — всего44 строки кода
Brainfuck — самый известный и минималистичный
Создатель Brainfuck Урбан Мюллер был одним из тех, кого вдохновил False. «Вызов принят!» — подумал Урбан и решил сделать свой язык — более запутанный и с совсем крошечным компилятором. Удивительно, но у него получилось: некоторые компиляторы для Brainfuck весят менее 200 байт.
Brainfuck переводится на русский как «мозготр*х». В нём всего восемь команд, каждая из которых обозначается одним символом — плюсом, минусом, точкой и так далее. Исходный код программы на Brainfuck состоит из последовательности этих восьми символов без разделителей и отступов.
Кодить на Brainfuck настолько сложно, что его называют языком для мазохистов. Например, в нём нет условных операторов, операций умножения и деления в привычном для нас виде.
Вот так выглядит Hello World на Brainfuck — программа состоит из 389 команд!
JavaScript
Если вы хотите разрабатывать приложения или сайты, вам стоит изучить JavaScript. Новичкам подойдет современный учебник JavaScript, в котором элементы языка разбиты на отдельные модули. У Full Stack Academy также есть бесплатные курсы. Как только вы хорошо разберетесь в основах языка, начните изучать фреймворки, которые могут упростить рабочий процесс.
Кроме того, если вы изучаете JavaScript, вам стоит узнать как можно больше о TypeScript, расширенной версии JavaScript, который только что вышел в версии 4.0. Независимо от того, считаете ли вы TypeScript самостоятельным языком программирования, нельзя отрицать, что он имеет функции, которые могут ускорить ваше программирование на JavaScript.
Согласно опросу разработчиков Stack Overflow, опубликованному в 2020 году, около 67,1% опрошенных разработчиков заявили, что им нравится TypeScript, что выше, чем у Python (66,7%) и Kotlin (62,9%).
Как появился Python
За языком Python, на котором пишут программисты всего мира, стоит один человек – нидерландский разработчик Гвидо ван Россум (Guido van Rossum). Python появился в конце 1980-х годов. Намного позже своего главного конкурента – С (дебютировал в 1972 г.).
Код Python был впервые опубликован в 1991 г., 30 лет назад, но на тот момент он существовал в версии 0.9. Полноценный релиз Python 1.0 состоялся в 1994 г.
Без этого человека не было бы и Python
Процесс развития языка не прекращается и по сей день. Версия 2.0 вышла в октябре 2000 г., а Python 3.0 появился 2008 г. Спустя 13 лет обновления до Python 4.0 до сих пор не было. Пока что язык существует в версии 3.10, распространение которой началось 4 октября 2021 г.
Сам создатель Python в настоящее время работает на Microsoft. Как сообщал CNews, он давно отошел от дел и находился на пенсии, но в ноябре 2020 г. софтверная корпорация сумела каким-то образом переманить его.
C (1972) и C++ (1985)
C++ изначально появился как развитие языка C, поэтому я объединил оба в одном пункте. Можно сказать, что это дедушка и отец остальных языков в этом списке: они здесь старше всех и очень повлияли на другие языки.
Сейчас они выглядят не точно так, как в момент появления (у C++ каждые три года принимают новый стандарт, недавно был принят C++20), и с годами всё сильнее различаются. Но идеи, заложенные ещё в начале, продолжают накладывать свой отпечаток. Когда создавался C, компьютеры были куда менее производительными, так что их ресурсы приходилось экономить куда старательнее. И тогда всё было «ближе к железу»: программирование в большей степени, чем сейчас, требовало понимать, как физически работает компьютер.
В результате теперь по сравнению с более современными языками у С и С++ репутация «хардкорных»: требовательных к программисту, зато позволяющих выжать из железа всё. И зачастую используют их как раз там, где действительно нужно выжимать как можно больше: например, в играх. Или в софте не для привычных компьютеров, а для различных других устройств, в которых зачастую маломощные процессоры — от автомобилей до банкоматов.
Раз всё сложно, в чём смысл делать подобное своим первым языком? Тут мнения разнятся. Многие считают, что действительно лучше начинать с чего-то полегче. Но есть и такая позиция: при изучении таких языков лучше понимаешь, как работает компьютер и исполняется код, а это для программиста очень полезно. В общем, можно посоветовать тем, кто не ищет лёгких путей, а хочет понять всё поглубже.
Java
Более двух десятков лет этот язык находится в списке самых востребованных, а это уже что-то значит. Сегодня он в основном ассоциируется с разработкой приложений для Android — но это лишь малая часть его возможностей. При помощи Java вы можете создавать графические виджеты для веба или писать десктопные приложения — принцип независимости от платформы и устройства в Java живет и процветает.
Кроме того, Java — великолепный язык, чтобы полноценно понять программирование: здесь реализованы все принципы ООП, организована работа с памятью и периферией, можно поупражняться с функциональным программированием.
А вот так выглядит Java-код нашей последовательности в простейшем императивном случае:
public class MainClass { public static long fib_recursion(long number) { if ((number == ) || (number == 1)) return number; else return fib_recursion(number - 1) + fib_recursion(number - 2); } public static void main(String args) { for (int counter = ; counter <= 10; counter++) System.out.printf("Fibonacci of %d is: %d\n", counter, fib_recursion(counter)); } }
Объем может показаться чрезмерным, но в действительности это не более чем базовые конструкции, обеспечивающие понятность кода и его надежность.
Для тех, кто хочет начать быстрое освоение Java, наш педагог Сергей Ирюпин подготовил цикл вводных статей, которые мы постепенно публикуем в блоге:
- Быстрый старт с Java: от знакомства до вашей первой игры
- Быстрый старт с Java: пишем «крестики-нолики
Объять необъятное: как можно остаться на обочине IT-индустрии, умея в ней всё
Предположим, вы решили стать профессиональным разработчиком на C++, Kotlin, Swift, Python, Java, Ruby, Go, Scala, C# и TypeScript с кучей фреймворков и библиотек. Первый резонный вопрос — зачем? Многие мелкие компании могут не использовать и половину из них, а в больших корпорациях разработка делится на проекты.
Даже если вы действительно владеете этими языками на крепком уровне, а не просто знаете синтаксис, то вряд ли это как-то повысит ваш ценник. Зарплаты айтишников формируются не только исходя из компетенций и ситуации на рынке, но и из объёма работы. Успевать и выдавать высокое качество везде вы не сможете просто физически.
Но давайте пофантазируем: предположим, ваших навыков хватает на целый штат региональной веб-студии. Звучит впечатляюще, но только не для грамотного руководителя. Вести бизнес за счёт одного человека — это очень плохое решение с точки зрения менеджмента. Когда из 20 человек уходит один верстальщик, нужно найти его коллегу, которого временно может подменять мидл- или сеньор-фуллстек. А вот с уходом полиглота, на котором держится вся разработка, придётся искать целую команду, что повлечёт за собой стагнацию и убытки.
Такие многозадачные специалисты, возможно, нашли бы себя в IT-гигантах, но и это спорно — корпорации и так нанимают лучших, а брать сотрудников, от которых зависит большое количество процессов невыгодно даже им. То есть, с позиции бизнеса, гораздо проще разделять задачи между целой командой. Это снижает риски застоя от потери кадров и других форс-мажорных обстоятельств.
Иными словами, 20 дополнительных языков вряд ли увеличат ваш доход хотя бы в два раза. А если вернуться в реальность, то куда более вероятно, что такая погоня за знаниями и вовсе оставит вас без работы. Владеть огромным количеством языков на профессиональном уровне просто невозможно — они постоянно развиваются и дополняются. Вы не будете, выучив один язык, осваивать второй, а потом третий. Вы будете параллельно изучать все три.
Если не практиковать и не обновлять эти знания, то через пару лет от них не будет никакого толка. С каждым новым языком придётся всё больше времени тратить на процесс обучения, а не на работу. Очень вероятно, что язык, которому вы уделяете меньше внимания, начнёт проседать, а в загрузочные недели в голове может твориться каша вроде этой:
else if JS внезапно превратилось в elif Python. Изображение: Кирилл Молоков для Skillbox Media
Python-разработчик
Что такое Python: Этот объектно-ориентированный язык программирования увидел свет в конце 1989 года, а свое название получил благодаря британскому скетч-сериалу 1970-х «Летающий цирк Монти Пайтона». Одно из ключевых достоинств Python – простой и понятный синтаксис. Данный язык не имеет коммерческой лицензии и распространяется совершенно бесплатно. Более того, разработчики могут его модернизировать, никак не информируя автора.
Чем занимается Python-разработчик: Python часто используется в разработке мобильных и десктопных приложений, а также в таких областях, как системное программирование и backend. Язык также зарекомендовал себя в проектах с Big Data и искусственным интеллектом, в разработке сайтов и мобильных игр. Таким образом, «питонисты» могут найти работу по душе практически в любой сфере.
Что нужно знать, чтобы стать Junior Python Developer
- Хорошее знание языка Python и фреймворка Django
- Основы ОС Linux(bash)
- Азы веб-программирования (HTML, CSS, JavaScript, HTTP)
- Базовое понимание ООП
- Основы SQL, БД, Git
- Английский от Intermediate и выше
Java-разработчик
Что такое Java: Развитием платформы занимается Oracle, последняя версия была выпущена 20 апреля нынешнего года. Главные преимущества этого объектно-ориентированного языка общего назначения – кроссплатформенность и аппаратная переносимость. Приложение, написанное на Java, можно запустить на любой платформе (с оговоркой: если на ней установлена среда исполнения Java).
Чем занимается Java-разработчик: Java-разработчики часто пишут банковские и промышленные программы, корпоративный софт, видеоигры, программы для работы с Big Data, клиент-серверные приложения и многое другое. Также Java по-прежнему используется как один из главных языков в разработке Android-приложений.
Что нужно знать, чтобы стать Junior Java Developer:
- Ключевые особенности Java и JavaCore (желательно знать ещё и Spring/Hibernate)
- Основные принципы ООП (объектно-ориентированного программирования) и умение применять эти знания на практике
- Практическая работа с SQL и понимание принципов построения БД
- Английский, начиная с Pre-Intermediate, а лучше – выше
Штраф за абстракцию
Языки высокого уровня предназначены для предоставления функций, которые стандартизируют общие задачи, допускают расширенную отладку и поддерживают архитектурный агностицизм; в то время как языки низкого уровня часто создают более эффективный код за счет оптимизации для конкретной системной архитектуры. Штраф за абстракцию — это цена, которую платят высокоуровневые методы программирования за невозможность оптимизировать производительность или использовать определенное оборудование, потому что они не используют преимущества определенных низкоуровневых архитектурных ресурсов. Программирование высокого уровня демонстрирует такие функции, как более общие структуры данных и операции, интерпретация во время выполнения и файлы промежуточного кода; что часто приводит к выполнению гораздо большего количества операций, чем необходимо, более высокому потреблению памяти и большему размеру двоичной программы. По этой причине код, который должен выполняться особенно быстро и эффективно, может потребовать использования языка нижнего уровня, даже если язык более высокого уровня упростит кодирование. Во многих случаях критические части программы, в основном на языке высокого уровня, могут быть вручную написаны на языке ассемблера , что приводит к гораздо более быстрой, более эффективной или просто надежно функционирующей оптимизированной программе .
Однако с ростом сложности современных микропроцессорных архитектур хорошо спроектированные компиляторы для языков высокого уровня часто создают код, сравнимый по эффективности с тем, что большинство низкоуровневых программистов могут создать вручную, а более высокая абстракция может позволить использовать более мощные методы, обеспечивающие лучшее общие результаты, чем их аналоги низкого уровня в определенных настройках. Языки высокого уровня разрабатываются независимо от архитектуры конкретной вычислительной системы. Это облегчает выполнение программы, написанной на таком языке, в любой вычислительной системе с совместимой поддержкой интерпретируемой или JIT- программы. Языки высокого уровня можно улучшать по мере того, как их разработчики разрабатывают улучшения. В других случаях новые языки высокого уровня развиваются из одного или нескольких других с целью объединения наиболее популярных конструкций с новыми или улучшенными функциями. Примером этого является Scala, который поддерживает обратную совместимость с Java, что означает, что программы и библиотеки, написанные на Java, будут по-прежнему использоваться, даже если магазин программирования переключится на Scala; это упрощает переход, а срок жизни такого высокоуровневого кода — неопределенным. Напротив, низкоуровневые программы редко выживают за пределами системной архитектуры, для которой они были написаны, без серьезной доработки. Это инженерный «компромисс» для «штрафа за абстракцию».
Семантика
Если синтаксис отвечает за техническую корректность конструкций языка, то семантика — за смысловое наполнение. В человеческом языке это сложная область: у одного слова может быть много прямых, переносных и контекстуальных значений. А еще есть фразеологизмы с особой семантикой. Кроме того, человеческие языки тесно связаны с культурой — заучить слова и правила недостаточно, нужно знакомиться с историей и традициями.
В плане семантики языки программирования устроены значительно проще. Смысл ключевого слова не изменятся в зависимости от контекста, ситуации или культурного бэкграунда программиста. Семантика ЯП — это про осмысленность языковых конструкций, а в более широком смысле — про проверку правильности программ. Точнее, она используется для формальной верификации — то есть математического доказательства, что текст программы не содержит ошибок алгоритма и соответствует целям, ради которых создавался.
C# (2000)
Когда компания Microsoft представила C#, многие назвали это «ответом Microsoft на Java». Разумеется, между этими языками хватает различий (и за прошедшие 20 лет их число лишь увеличилось), но некоторая перекличка действительно есть, и знание любого из этих языков помогает быстрее освоить другой.
Изначально самая заметная разница была не в самих языках (в синтаксисе или рантайме), а в сферах их применения. Microsoft создал C# как часть своей платформы .NET, связанной с Windows. И если нужно было сделать программу для Windows, то напрашивающимся вариантом выглядел .NET. А вот если такую программу, чтобы запускалась и на Windows, и на Linux, и на Mac — тут могла помочь Java.
Но с годами ситуация изменилась: у .NET появилась новая версия .NET Core, уже не привязанная к конкретной операционной системе, а люди стали реже устанавливать программы на компьютер и больше делать в браузере. Это отчасти сблизило сферу применения языков: если посмотреть сейчас вакансии с названием C#, там, как и у Java, часто будет написано что-то вроде «Построение бэкенда для веб-приложений».
Впрочем, это не единственный вариант. В играх на движке Unity тоже используют C#, а это самый популярный движок в мире — так что в геймдеве язык тоже активно представлен (в отличие от Java).
Не языками едиными
Кроме языков программирования, нам нужны инструменты и методологии. Где бы вы ни работали, вам наверняка пригодится git. Даже если вы не работаете в команде, заведите аккаунт на GitHub и держите там домашние проекты.
Разберитесь с непрерывной интеграцией и развёртыванием — CI/CD. Настройте автоматическую сборку своих проектов.
Научитесь писать модульные тесты. Сделайте тестирование одним из этапов сборки, чтобы ваш проект собирался только в случае, если проходят все тесты.
Доведите знание английского до уровня B2 — Upper Intermediate. Этого достаточно, чтобы воспринимать английскую речь на слух, общаться с носителями языка и писать письма.
Я учил английский в школе. Мне хватало его, чтобы читать документацию и немного писать. Но сейчас, во времена YouTube, новые знаниях приходят к нам через видео лекции и доклады. Приходится доучивать английский, чтобы не перекрывать себе этот важнейший канал.
Сфера применения JavaScript
Возможно, что по мере знакомства с программированием сфера ваших интересов изменится: вместо frontend вы сфокусируетесь на backend или захотите углубиться в мобильную разработку. JavaScript не ограничивается лишь интерактивностью сайтов и клиентской стороной.
Пример визуализации данных с D3.js. Источник
Фреймовики и библиотеки JavaScript позволяют создавать десктопные приложения (Electron), мобильные приложения (React Native), игры (Phaser), а также работать с визуализацией данных (D3.js), базами данных (mongoDB), анимацией (Three.js).
JavaScript — один из самых популярных и быстроразвивающихся языков.
Ваш первый язык программирования не обязательно будет основным, мало кто ограничивается одной технологией. Но если вы планируете сделать JavaScript профильным языком, то международное JS-сообщество вам в помощь. Согласно исследованию GitHub, крупнейшего веб-сервиса для хостинга IT-проектов, в 2017 году JavaScript был на первом месте среди 15 наиболее популярных языков.
15 наиболее популярных языков по версии GitHub
JavaScript пять лет подряд является самым популярным языком на одном из крупнейших ресурсов для программистов — StackOverflow.
Наиболее популярные языки по версии StackOverflow
JavaScript не идеален, и кто-то считает, что это слишком хаотичный, бессистемный и бесконтрольно развивающийся язык, который путает новичков. Бесполезно гуглить «какой язык программирования мне выучить первым», потому что только вы знаете, для чего вам программирование и веб-разработка.
Изучите статистику вакансий и определитесь, в каком из направлений программирования вы себя видите. Сперва поймите, какую проблему вам хочется решать. После обычный выбор средств для ее решения — это два-три языка и технологии.
Борис Горячев
backend-разработчик Meduza
Плюсы и минусы наиболее популярных языков программирования
Определите, чем вы хотите заниматься
Все эти споры, какой язык круче, бессмысленны, потому что:
- У каждого языка есть свои преимущества и недостатки.
- Один язык не может быть хорош для всего.
Новички ещё слишком мало знают, чтобы понять, что им нужно от языка. Поэтому выбирать нужно не язык, а то, чем вы хотите заниматься. Многие языки в первую очередь затачиваются под решение определённых проблем или под определённые сферы:
- Быстро создать сайт — PHP или Python.
- Создать игру — C++ или C#.
- Веб-систему для банка — Java, C# или C++.
- Красивый интерфейс для сайта — HTML, CSS и JavaScript.
- Приложение для Android — Java или Kotlin.
- Приложение для iOS или Mac OS — Objective-C или Swift.
Выбрав сферу, выясните, какие языки там используются, и выбирайте из них. Вы можете попробовать выучить несколько разных языков, чтобы определиться, какой вам больше нравится или лучше подходит для конкретной задачи.
Но даже если вы решите выбрать что-то совсем непопулярное — на чём пока не создавали крутые проекты, — это не значит, что вас ждет провал.
Выбор технологии не определяет успеха игры, сайта, приложения и чего угодно ещё.
А вот основные сильные и слабые стороны популярных языков:
Язык | Преимущества | Недостатки |
---|---|---|
С++ | • Высокая производительность• Прямой доступ к памяти• Строгая типизация | • Высокий порог входа• Низкая скорость разработки |
C# | • Строгая типизация• Сборка мусора• Кроссплатформенность• Большое количество синтаксического сахара | • Ориентированность под Windows• Нет возможности создавать кроссплатформенное GUI |
Python | • Высокая скорость разработки• Возможность быстро выучить язык• Широкий спектр применения | • Слабая типизация• Низкая производительность |
JavaScript | • Высокая скорость разработки• Возможность быстро выучить язык | • Непредсказуемость• Слабая типизация |
Java | • Кроссплатформенность• Строгая типизация• Сборка мусора | • Требуется много времени на запуск приложения• Большой объём повторяющегося кода |
PHP | • Большое сообщество• Быстрое развитие | • Слабая типизация• Небезопасный код |
Джоэл Спольски (CEO Stack Overflow) предпочитает C-подобные языки, но всё равно выбирает тот, который лучше справится с конкретной задачей.
R
R обычно используют в связке с Python. Он подходит для статической обработки данных и работы с графиками. Под R есть несколько пакетов для машинного обучения — например, benchm-ml, CARET, KernLab.
Однако R может и осложнить решение простых задач. В нём существует множество полезных функций — согласно CRAN, для R создано больше 11 тысяч пакетов, а это сотни тысяч функций. Привычной системы меню, как в Excel, нет. Новичку легко запутаться в таком количестве команд. Например, где взять функцию для проведения какого-нибудь статистического анализа? Придётся пролистать немало документации.
Искать работу с первых шагов
Отправлять резюме на подходящие вакансии нужно сразу, как только вы хотя бы поверхностно изучили предмет. У компаний разные требования к разработчикам начального уровня, а некоторые готовы обучать. В любом случае, получив даже джуниорскую позицию, вы будете обучаться программированию «в бою» на реальных проектах и уже зарабатывать своим ремеслом деньги.
Как минимум, изучение вакансий на рынке труда поможет понять стек технологий: вы будете учиться предметно, а не распыляться, пытаясь ухватить знания во всех сферах. В каждом языке есть много библиотек и фреймворков, но требуются обычно три-четыре.
Статистика распространенности языков по количеству вакансий на HeadHunter.
Поэтому просматривайте вакансии, чтобы понять, что вообще нужно учить и на что обратить внимание. Выполняя тестовые задания, вы также оцените свои силы и отследите личный прогресс
Python
Разработчики любят Python за универсальность, при этом его все активнее используют в узкоспециализированных областях — например, дата-сайенс и машинном обучении. Python регулярно занимает первые места в различных списках языков программирования. Специалист со знанием Python может получить доступ к самым разным задачам и проектам.
Кроме того, многие разработчики считают, что Python легко учить.
В интернете есть много учебных материалов по Python. Например, Python.org предлагает удобное введение в программирование и Python. У Microsoft есть видеокурс Python for Beginners с десятками уроков. Большинство из них длится менее пяти минут, и все они — не более 13 минут.