Разработка
Skillbox
9819

Зачем программисты изучают несколько языков

Антон Жуков, автор курса «Профессия Go-разработчик» в Skillbox — о том, почему программисты не останавливаются на одном языке разработки, как их изучение влияет на принимаемые решения и при чём тут когнитивные искажения бразильских аборигенов.

В закладки

Язык программирования — такой же инструмент для разработчика, как нож для повара или молоток для плотника. Потенциально работать можно чем-то одним, но с точки зрения эффективности — это бред. Большинство программистов знают больше одного языка, а наиболее успешные практикуют разработку на нескольких одновременно, даже если специализируются только на одном.

Программист думает языком, а язык — программистом

Языки программирования мало чем отличаются от обычных разговорных языков: тот же набор ключевых слов, символов, а также правила порядка их употребления. Основная работа программиста — не написание кода, а разработка алгоритмов. Язык лишь средство выражения алгоритма в понятной для машины форме. Знание нескольких языков расширяет угол зрения для оценки задач.

Каждый язык программирования по своему уникален, это позволяет со свойственной ему уникальностью решить задачу. Язык из сферы базового образования, C++, и один из старейших языков, Lisp, можно назвать антагонистами. Их сравнение кардинально меняет восприятие разработки. Также как и сравнение языка бразильских аборигенов Пирахан меняет восприятие разговорных языков.

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

Когда программист решает задачу, то он мыслит инструментами, которые этот язык программирования способен дать. Американский предприниматель Пол Грэм отметил, что специалист с низкой квалификацией не в состоянии осознать этого из-за своей низкой квалификации. Уже в отношении разработки он наблюдает зависимость программиста от языка, которым тот пользуется. Разработчики любят «свои» языки поскольку привыкли думать на них, а языки, в свою очередь, лексикой диктуют программистам, как они должны думать о программах. Это образует парадокс, который невозможно разорвать без изучения нового языка.

Зачем нужно так много разных языков программирования

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

  • Python был создан на досуге — нужен был расширяемый скриптовый язык. Сегодня он стабильно возглавляет чарты популярности и является универсальным языком: от разработки обычных сайтов до ML.
  • PHP создавался не как язык программирования, а как препроцессор текста. В 1995 его использовали для быстрого создания своей странички в сети. Сегодня на нём работает Facebook, Yahoo и, например, Wikipedia.
  • JavaScript разработали для дизайнеров и программистов с низкой квалификацией, что «оживить» веб-сайты, сделав их динамическими. Сейчас это один из самых востребованных языков, без него невозможно представить современный интернет.
  • Golang, созданный в Google, должен был стать простой и высокоэффективной альтерантивой тяжеловесным языкам. Спустя 11 лет между словами «Go», «эффективность» и «простота» можно ставить знаки равенства.

Примеры можно перечислять и дальше. По различным оценкам существует от одной до нескольких тысяч языков программирования. Вот почему: для создания базового интернет-магазина с нуля придётся начать с абсолютного минимума — двух-трёх языков программирования и такого же количества языков семантической разметки. По мере роста нагрузки на сайт, нужно повысить его производительность. Эту задачу решают другие языки. Вместе с ростом аудитории появляется необходимость её анализировать — ещё один язык в копилку. Большие данные нужно где-то хранить и, чтобы не перегружать сервера, так называемую «горячую» часть размещают в кэше — оперативной памяти компьютера. На этом этапе в игру вступает новый протокол коммуникации. Таким образом задачи типового магазина решаются десятком различных технологий.

Темп диктует

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

После изобретения Фордом конвейера человечество стремилось добиться максимальной эффективности путём разделения труда. Производство выращивало узкопрофильных специлистов, а карьера была представлена вертикальной прямой — сотрудник рос в должности вместе с прокачкой профильных навыков. После появления интернета мир вступил в эпоху глобализации. Темпы бизнеса выросли и классическая модель вертикального роста перестала быть панацеей оптимизации. Начал формироваться спрос на альтернативных специалистов — с наличием глубокой экспертизы в своей специальности, но также обладающих обширными знаниями в смежных областях.

Первым это заметил британский математик и философ Дэвид Гест, который стал отцом-основателем «Т-образной» модели развития профессиональных качеств. Он утверждал, что решения таких работников неординарны. Они способны использовать даже минимальные знания о функционировании смежных профилей для оценки проблемы более чем с одной стороны. Популяризатором этой модели выступил дизайнер Тим Браун. Он декларировал потенциал таких специалистов как идеальных лидеров для проектов, работающих в условиях постоянных изменений. Позже Т-принципы органично вписались в метод управления проектами Scrum.

Т-модель и самоорганизация избавляют команды от целого ряда проблем разработки. Таким образом члены команды получают небольшую часть компетенций друг друга. Это позволяет действовать незамедлительно, избавляясь от бутылочных горлышек: при обсуждении задач и подготовке к реализации команда понимает, чем будет заниматься каждый отдельный специалист и как его вовлечённость отразится на общем деле. Более того, это позволяет взрастить настоящие командные отношения и совместно увидеть проблемы и их решения, в отличие от модели, где процессом управляет только менеджер.

Таким образом, способность постоянно учиться, совершенствоваться и расширять свою сферу знаний — основной фактор, определяющий успех специалиста. Чем автономнее программист, тем он ценнее. И тем он автономнее, чем больше языков знает.

Онлайн-образование от главных экспертов рынка, актуальные подходы к обучению, работа над реальными проектами, стажировки и трудоустройство в крупнейшие компании страны.
{ "author_name": "Skillbox", "author_type": "editor", "tags": [], "comments": 19, "likes": 12, "favorites": 38, "is_advertisement": false, "subsite_label": "dev", "id": 159465, "is_wide": true, "is_ugc": false, "date": "Fri, 18 Sep 2020 12:34:01 +0300", "is_special": false }
Трибуна
Как мы сделали приложение myVPN.run
В этой статье я расскажу о том, как мы сделали некоммерческое приложение и вышли в «голубой океан» на рынке…
Объявление на vc.ru
0
19 комментариев
Популярные
По порядку
Написать комментарий...
17

Программисты: постоянно совершенствуются, развитаются и учат десят языков
Те же программисты:

Ответить
0

Многовато слов в поиске у сеньора, ж даже у мидла там будет максимум "java get date") хорошо обученный Гугл уже можно писать дополнительной строчкой в резюме)

Ответить
5

Ну не работает ваш лингвистический подход. Возьмем C#, на нем можно писать веб сервис на asp.net core, а можно игру на Unity. Вопрос, кто быстрее освоит Unity: человек, который писал 5 лет веб сервисы на C# или человек, который 5 лет разрабатывал игры на Unreal engine на С++? Даст ли знание языка C# разработчику  бакенда для веба преимущество в гемдеве под Unity?

Или возьмем нарпимер Kotlin и Java, котлин более современный чем джава, а придется выбрать C++, потому что под задачу не подходит JVM.

Golang, созданный в Google, должен был стать простой и высокоэффективной альтерантивой тяжеловесным языкам.

Что такое "тяжеловесный" язык? Вы по размеру бинарника или по занимаемой оперативке  сравниваете? Ну тогда C/C++ или Rust будут более легковесными.
По кол-ву языковых конструкций? Ну тогда Brainfuck уделывает. Дженерики, шаблоны, макросы, хоть что-то еще есть в Go, кроме оператора для запуска горутин и работы с каналами с помощью "стрелочки"? То что для работы с коллекциями надо каждый раз один и тот же код (https://gobyexample.com/collection-functions) писать делает его "легковесным языком"? 

Ответить
3

членометры - на изготовку! :)

Ответить
1

ща питона потянут )

Ответить
–2

Разработчик должен знать 3 язка минимум, иначе он не разработчик

Ответить
3

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

Ответить
1

Дислайкают те, кто знает меньше.

Лайкайте мой коммент (этот), если знаете больше 3 языков программирования! Посмотрим, сколько нас!

Ответить
1

Ну даже для фронта надо знать php, js, html, css. Уметь работать с sql (аналоги и альтернативы), linux, фреймами. Для бэкэнда то же самое + java &/ python. Автор все это считает за ЯП. Хотя тут не только ЯП

Ответить
1

нужно знать для фронта

PHP

Западные эйчары с ненищенскими зарплатами сейчас в недоумении 🤔

Ответить
1

Для фронта сейчас из языков программирования достаточно знать js. Html и css - не языки программирования. PHP для фронта? Тогда это уже Fullstek.

Ответить
0

вы сейчас всех hr лишили работы. 

Ответить
1

Пираха самые счастливые люди на планете. Меньше знаешь — крепче спишь, в кодинге все так же))

Ответить
1

На севере бы они уже умерли, а как известно, толкают планету вперед именно северяне. 

Ответить
1

в 15 лет я знал 50 языков - не шучу. сейчас один, и то не очень твёрдо. так что правильный заголовок - "почему студент должен знать 50 языков"

Ответить
1

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

Ответить
0

Автор просто джун js верстальщик)

Ответить
1

Что вы привязались к языкам и их количеству? Если ты уже программист - статья не для тебя. Если еще нет - Хотя бы один выучи!

Ответить

Комментарии

null