Перейти к основному содержимому

5. Языки - о разделе


О разделе

Мы изучили, как пишут программы, теперь пора посмотреть, на чём пишут. Что используется для фронтенда, что для бэкенда - какие инструменты и технологии нужны в разных областях.

Технически, языки по большей части универсальны. Они обычно появляются с определённой целью (JavaScript для оживления страниц, C/C++ для системного программирования, а Java чтобы обезопасить и упростить разработку), но в дальнейшем развиваются, получая новый функционал, новые фичи и возможности.

В интернете часто можно найти громкие заголовки вроде "Какой язык программирования выбрать?" И почти всегда вы встретите от года в год одно и то же - Python лучше всех, JavaScript и Java нужны везде, а C# никому не нужен. Но не всё так просто.

Вообще, лучше воспользуйтесь содержанием или перейдите к Базе знаний. Но для удобства, я размещу здесь ссылки на основные главы раздела:


JavaScript


Python


Java


Платформа .NET


C#


C++


PHP


Smalltalk


Kotlin


Go


TypeScript


Ruby


Groovy


Rust


Swift


Lua и Luau


Старые языки


Cobol


Fortran


Lisp


Pascal


visual-basic


Ассемблер


Си


Haskell


Scala


Elixir


Zig


Nim


Dart


R


Julia

Будут также и другие языки. Пока ещё проектирую.

Во-первых, выберите один язык для старта, пройдите его до первой рабочей программы и базового фреймворка — затем переходите дальше: второй язык, смежный стек или углубление в выбранное направление. Прошло то время, когда достаточно было знать только синтаксис одного языка; на работе нужны ещё фреймворки, инструменты и понимание runtime. Но учить всё сразу на первой неделе — значит смешать несовместимые модели (GC и borrow checker, async в разных экосистемах) и выгореть.

Представьте, что вы изначально решили, что нужен только Python (ведь он легче и популярнее, как пишут везде?), выбрали, но… как оказалось, таких же специалистов миллионы, и конкурировать сложно. Зато под руку попалась вакансия .NET-разработчика, а вы даже не погружались в эту тему. Поэтому после первого языка полезно расширять кругозор — не обязательно становиться экспертом во всём, но понимать, где какой инструмент применяют. Карта выбора — Какой язык программирования выбрать.

Во-вторых, нужно понимать, что значит "знать язык". Если человек говорит "я умею программировать на Java", это не значит, что он знает его синтаксис и правила, нет. Это означает, что он умеет работать со Spring Boot, знаком хотя бы с несколькими фреймворками и библиотеками.

Как-то раз я затарился целым набором книг по программированию (около сотни), посвященной языкам JavaScript, Java, C#, Python. После прочтения, я понял, что ни в одной из них не погрузились так глубоко, как это нужно профессионалу - без фреймворков, без конкретных решений. JavaScript то и дело крутился вокруг DOM-дерева, C# вообще не рассказывает про MAUI, ASP.NET, WPF, и можно сказать контент везде одинаковый - это типы данных, операторы, циклы, исключения, коллекции, и основы ООП. Не хватало погружения в веб-сервисы, паттерны, десктопные/мобильные приложения, работу с памятью и потоками, и даже ORM. А ведь работать придётся именно с этим!

У вас не спросят, как работает switch, у вас спросят, какие поколения Garbage Collector-а вы знаете. И всё в таком духе. Поэтому, на собственном горьком опыте, я пишу, стараясь охватить то, что нужно.

Хотелось бы отметить, что если вам показалось, что какая-то деталь недостаточно раскрыта, это означает то, что вам нужно в неё погрузиться дополнительно, ведь о любом базовом классе или библиотеке можно писать килотоннами текста. Допустим, если вам понадобилось более углублённо изучить Angular, Spring или Swift, то придётся не просто искать литературу, а обратиться к англоязычной официальной (и "фанатской") документации. Я буду давать ссылки на ключевые источники, которые важно изучить. Будьте внимательны!

Данную книгу можно использовать как шпаргалку для программирования, чтобы уточнить способы реализации, определения и алгоритмы. К тому же, она должна оказать значительную поддержку на собеседованиях уровня от джуниора до синьора.

И да, не забудьте, что после изучения синтаксиса определённого языка, в идеале нужно попробовать написать несколько разных проектов с разными технологиями и подходами.