Выучить язык - значит понять его культуру
(В оригинале - Don't Just Learn the Language, Understand its Culture)
В университете мне пришлось изучать иностранный язык. Тогда я думал, что английского мне будет вполне достаточно, и поэтому предпочитал регулярно спать на занятиях французского все три года. Спустя несколько лет я поехал в отпуск в Тунис. Официальный язык там – арабский, а из-за французского колониального прошлого широко распространен также и французский. На английском говорят лишь в туристических местах. Из-за незнания языка я проводил много времени у бассейна, читая «Поминки по Финнегану» Джеймса Джойса, мастерскую игру слова и формы. Его игра со смешением более чем сорока языков оказалась удивительной, хотя и изнуряющей вещью. Понимание того, как переплетения иностранных слов и фраз давала автору новые возможности для самовыражения – то, что я вынес и применяю в своей программистской карьере.
В своей книге «The Pragmatic Programmer» Энди Хант и Дейв Томас убеждают нас изучать новый язык программирования каждый год. Я пытался следовать их совету и спустя несколько лет получил опыт программирования на нескольких языках. Самым главным уроком этой мультиязычности оказалось то, что для того чтобы выучить язык, недостаточно выучить его синтаксис. Нужно понять его культуру. Писать на Фортране можно на любом языке. А чтобы на самом деле изучить язык, нужно в него вникнуть. Не извиняйтесь, если ваш C# код выглядит как одна большая функция main() с несколькими статическими helper-методами, а разберитесь, зачем нужны классы. Не избегайте лямбда-выражений в функциональных языках, если они кажутся вам слишком непонятными, а найдите силы разобраться в них.
Изучив сущности нового языка, вы удивительным образом обнаружите, что стали использовать уже известный вам язык немного по-другому. Я научился эффективно использовать делегирование в C# из программирования на Ruby, освоение всего потенциала .NET generics дало мне идею, как лучше использовать Java generics, а LINQ открыл мне второе дыхание для изучения Scala.
Вы также станете лучше понимать паттерны проектирования, используя разные языки. Программисты на С находят, что C# и Java сделали полезным шаблон iterator. В Ruby и других динамических языках вы по-прежнему можете использовать шаблон visitor, но ваша реализация уже не будет выглядеть как пример из книги Банды Четырех.
Кое-кто может возразить, что «Поминки по Финнегану» невозможно читать в принципе, в то время как другие будут приводить это произведение как пример элегантности стиля. С целью сделать книгу более доступной для чтения существуют ее переводы на единственный язык. По иронии судьбы, первым таким переводом стал перевод на французский. Код в чем-то похож на все это. Если вы напишете код на Wakes (так называют язык, на котором написана «Поминки по Финнегану») с одновременным использованием Python, Java и Erlang, то ваш проект будет полным хаосом. Если вы вместо этого изучите языки, чтобы расширить свои горизонты и получить идеи, как можно делать разные вещи разными способами, ваш код, написанный на вашем старом добром и любимом языке программирования будет только хорошеть с каждым новым освоенным языком программирования.
Автор оригинала - Anders Norås