Разработчик-полиглот: о преимуществах знания нескольких языков программирования

1
626
views

Перевод статьи «The Polyglot Developer».

Photo by freestocks on Unsplash

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

Основной и вспомогательный языки

Давайте сразу проясним термины, которыми будем оперировать в этой статье.

Я совершенно уверен, что в любой отдельный момент времени у каждого разработчика есть какой-то один язык, которому он отдает предпочтение. Этот язык я называю основным. Любые языки помимо основного я буду называть вспомогательными.

Конечно, на протяжении своей карьеры разработчик может менять свой основной язык (и не раз). Я видел множество примеров таких изменений и думаю, что это вполне нормально.

Экспертиза

В дискуссиях о разработчиках-полиглотах часто приводят довод, что за знание второго языка разработчику приходится «расплачиваться». Некоторые люди убеждены, что изучение каждого нового языка уменьшает вашу экспертизу в основном. Сторонники этой идеи исходят из того, что на изучение каждого нового языка тратится время, и это время вы уже не сможете потратить на приобретение знаний о своем основном языке.

Мне этот ход умозаключений кажется ошибочным. У меня вообще напрашивается другая аналогия: спорт. Известно, что занятие одним видом спорта улучшает ваши достижения в другом. Разумеется, речь не идет о том, что вы сможете выиграть золотые медали в обоих видах, да и дартс вряд ли сделает вас лучшим пловцом. С другой стороны, если вы скалолаз, то йога поможет вам развить гибкость и умение удерживать равновесие. Таким образом, занятия йогой сделают вас лучшим скалолазом, чем вы были бы без них.

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

Более широкий набор инструментов

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

Возьмем пример из повседневности. Если вы когда-либо пользовались отверткой, вы знакомы с крестообразными головками винтов. На первый взгляд все винты с крестообразными головками одинаковы и кажется, что их все можно закручивать одной отверткой. Да, бывает, что вам сложно затянуть или открутить какой-то винт, но в целом одной отвертки вам хватает.

Но вот однажды вы заходите в магазин с инструментами, разглядываете все эти прекрасные отверточки и обнаруживаете, что крестообразные отвертки бывают разные. Вы видите, что та отвертка, которая у вас уже есть, это Philips (PH), и решаете купить ее сестру-двойняшку Pozidriv (PZ). И тут внезапно оказывается, что для каких-то винтов лучше подходит одна, а для каких-то — другая. Они выглядят одинаково, но они не взаимозаменяемы. (Если вам было любопытно, что означают буквы PH и PZ на ваших отвертках — теперь вы это знаете).

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

То же самое касается и языков программирования.

Вам не придется расплачиваться за дополнительные знания

Итак, лично я не вижу ценника на изучении дополнительного языка программирования. Будете ли вы одинаково превосходно знать оба языка? Вероятно, нет, но вряд ли вы ставите перед собой такую цель. Узнаете ли вы что-то новое о своем основном языке? Я абсолютно уверен в этом. Изучение нового языка заставит вас обращать внимание на разницу между ним и вашим основным языком. А это, в свою очередь, пробудит ваше любопытство. Вам станет интересно, почему что-то в новом языке делается по-другому и что это дает.

В заключение приведу пример из жизни. Я пользовался одним инструментом командной строки, написанным на Python. Каждый раз при установке этого инструмента на новой машине возникали проблемы, и с каждым обновлением количество проблем возрастало.

Если в вашем наборе инструментов есть язык Go, вы сразу заметите его преимущество в описанном сценарии. Go позволяет компилировать его артефакты в автономный двоичный файл. Вы можете быть уверены, что после компиляции двоичный файл будет работать на каждой машине, для которой вы его скомпилировали. Поэтому я портировал Python CLI на Go. С этой новой версией мне больше не нужно было беспокоиться об изменении среды выполнения или о сторонних зависимостях.

Это прекрасный пример выбора наиболее подходящего инструмента для выполнения задачи. А чтобы иметь возможность выбирать, нужно стать разработчиком-полиглотом.

1 КОММЕНТАРИЙ

  1. Автор приводит много аналогий, но не факт, что эти аналогии не являются ложными. Логического обоснования необходимости изучения нескольких яхыков программирования (разумеется без надобности), я не увидел.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here