Когда только начинаешь программировать, может возникнуть такой вопрос: как опытные программисты умеют писать сразу на нескольких языках?
Ответ простой: если вы освоите хотя бы один язык программирования, писать на любом другом можно начать за полчаса. Разберём, как это работает, и посмотрим на исключение из правила.
Коротко: главная метафора
Вот простая метафора всего, что будет написано ниже.
Если вы научились водить автомобиль на механике, вы можете сесть плюс-минус за любой автомобиль и поехать. Вам необязательно ездить именно за тем рулём, за которым вы учились в автошколе. Может быть, первое время вам будет непривычно в новой машине, но вы быстро освоитесь.
Но если вы хотите участвовать в гонках типа «Формулы 1», то вам нужно знать ваш болид досконально, до винтика.
То же в разработке: принципы одинаковые, а нюансы языка можно освоить быстро.
Почему сложно учить первый язык программирования
В самом начале всё может даваться с трудом:
- непонятно, как работают переменные и зачем они нужны;
- что такое циклы и почему их так много;
- сложно разобраться с классами и методами;
- откуда-то вылезли функции, и в них работают свои правила;
- неизвестно, как вообще продумать логику программы, чтобы получилось хоть что-то работающее.
Это нормально, потому что вы осваиваете что-то новое. Раньше вы этого не умели, потом решили научиться и столкнулись с трудностями.
Со временем вы заметите, что циклы работают предсказуемо, а функции — идеальный инструмент для некоторых задач. Ещё через месяц вы понимаете, как собрать каркас программы, чтобы он не ломался. Ещё через месяц классы и методы уже гораздо понятнее, и часть вещей можно делать намного удобнее.
Шаг за шагом вы осваиваете свой первый язык программирования. Изучение идёт не слишком быстро, потому что много нового.
Почему второй язык учить гораздо проще
А вот когда вы решили выучить второй язык, вам не нужно заново изучать как таковое программирование.
Вам достаточно разобраться только с «грамматикой» нового языка — как пишутся функции, какие ставятся скобки, какие есть нюансы с операторами и т. д.
Разумеется, в каждом языке есть нюансы и определённый стиль программирования, который в нём приветствуется. Но это можно изучить и наработать за месяц-другой, без отрыва от производства. А по-варварски написать код на новом для себя языке можно хоть через полчаса, если документация под рукой.
Ограничения
Всё, что написано выше, верно для базового уровня владения языком — достаточного, чтобы работать, но недостаточного, чтобы делать супердорогие высоконагруженные проекты.
Как только вы переходите в «высшую лигу», от вас требуется не просто знание принципов программирования. Вы должны знать специфику конкретного языка и даже больше того — конкретной версии языка, в которой вы работаете. Например:
- Как именно реализованы разные вспомогательные функции языка, что у них с быстродействием.
- Какие есть баги конкретно в этой версии, из-за чего ваш софт может не работать.
- Какие оптимизации есть в этом языке и как их эксплуатировать.
- Как работать с определёнными библиотеками и модулями, характерными именно для этого языка.
И многое другое. Всё-таки языки делают не дураки, и если вы хотите использовать возможности избранного вами языка на полную, нужно изучать его глубоко и внимательно.
Исключение из правила
Из этого правила со вторым языком есть одно исключение: оно не работает, если второй язык принципиально другой по своей природе. Например, если вы изучили язык высокого уровня — JavaScript, а потом захотели перейти на Ассемблер — язык низкого уровня.
Или если вы решили изучить Brainfuck. Но зачем?