Программист-одиночка, любящий свою работу, может позволить себе выбирать язык, который лучше всего подходит для задачи. Но у большинства работающих программистов небольшой выбор языка, с которым они работают. Обычно за них это решают руководители, которые больше принимают политическое, а не технологическое решение. Часто руководителям не хватает смелости использовать нетрадиционный инструмент, даже если они знают, иногда по собственному опыту, что менее распространенный инструмент лучше. В других случаях преимущество того, что большая часть команды и иногда более широкого общества владеет инструментом, делает невозможным выбор иного языка со стороны отдельного программиста. Часто менеджеры руководствуются необходимостью нанимать программистов с опытом с определенным языком. Вне сомнений они делают то, что считают лучшим для компании или проекта, и их стоит уважать за это. Однако, я лично считает этот подход одним из самых бесполезных и ошибочных, которые можно только встретить.
Но конечно, все не так однозначно. Даже если основной язык обязателен, и вы не можете изменить его, часто случается, что некоторые инструменты или сторонние программы можно и нужно написать на других языках. Если язык должен быть встроен в систему (и вам всегда следует рассмотреть такую возможность), то его выбор во многом будет зависеть от пользователей системы. Из таких случаев следует извлекать выгоду и выбирать лучший язык для компании или проекта. Заодно это делает работу намного интереснее.
Языки программирования в действительности стоит называть нотациями, поскольку выучить один из них не так трудно, как естественный язык. Для начинающих или непосвященных "выучить новый язык программирования" кажется сложной задачей, но после трех языков это всего лишь вопрос знакомства с доступными библиотеками. Некоторые склонны думать о большой системе, в которой компоненты написаны на трех-четырех языках, как о беспорядочной солянке, но я утверждаю, что такая система во многих случаях превосходит систему, написанную на одном языке:
- Между компонентами, написанными на разных языках, нет тесной связи, они лучше изолированы друг от друга (хотя они могут иметь не совсем понятные интерфейсы)
- Вы можете легко внедрить новый язык или платформу, переписав индивидуально по очереди каждый компонент
- Один язык может не подходить для всех задач системы. Имея несколько языков для компонентов, вы можете выбирать наиболее подходящий для конкретной задачи
Некоторые из этих преимуществ чисто психологические, но психология тоже важна. В конце концов, издержки языковой тирании перевешивают любые преимущества, которые она дает.
Следующее: Правильные компромиссы. Как справляться с давлением графика