в обсуждениях профессии программиста часто упоминают, как динамично развивается наша индустрия, и как для сохранения уровня квалификации нам нужно всю жизнь учиться новому. Это «всю жизнь учиться» при этом звучит как нечто непростое и сложное
как раз сейчас нашей команде приходится изучать большой и совершенно новый для нас стек технологий. Мне давно не приходилось таким заниматься, поэтому вышеупомянутые рассуждения я часто вспоминаю. Однако хочу сказать, что учиться очень легко. Совсем просто. Читаешь туториал с документацией и раскладываешь в голове вещи по полочкам. Иногда приходится осознавать новые концепции, но это не так уж и долго, да и с лихвой вознаграждается полученным удовольствием
но это касается именно учёбы. А вот когда берёшь технологию и начинаешь её натягивать на что-то, выходящее за рамки её применения, учёба заканчивается. Начинаются долгие и зачастую бесплодные поиски учебных материалов. А потом изобретение альтернатив и выбор из многих зол меньшего. И вот это уже трудно. Чувствуешь себя, как будто вместо изучения математических теорем по учебнику приходится самостоятельно заново их открывать
впрочем, мне понравились чьи-то слова, что профессионализм инженера определяется именно тем, как он будет решать задачи, которые не знает, как решать
до недавнего времени моим любимым шеллом был zsh с крутыми настройками дополнения. Однако уже несколько месяцев я использую ещё более прекрасный шелл fish. Больше всего мне в нём нравится полноценное автодополнение, потому что я им пользуюсь почти в каждой команде, но и прочие функции там прекрасны. Всё в нём как-то человечнее по сравнению с другими шеллами. Но лучше всего про это узнавать не в моём посте, а на основном сайте fish, или во введении в использование
недавно наша команда выбирала для себя новый шаблонизатор. К сожалению, ретрограды не дали нам использовать Jade. Остальные подходящие шаблонизаторы разделились на две группы по используемому синтаксису: mustache и jinja2
mustache оказался удивительным. Не только благодаря претензиям на отсутствие логики в шаблонах (они заменили if
и for
на #
и думают, что логики нет). Сильнее меня удивило, что в таком молодом синтаксисе почти всё построено на приёме, который давно считается вредным. Я имею в виду оператор with
из яваскрипта
напомню, чем плох этот оператор. Допустим, у нас есть функция, суммирующая некоторое число с одним из значений объекта, переданного в качестве параметра:
function sum(foo) {
var baz = 10;
return baz + foo.bar;
}
это можно переписать в следующем виде:
function sum(foo) {
var baz = 10;
with (foo) {
return baz + bar;
}
}
всё будет неплохо работать до тех пор, пока где-то в совершенно другом месте приложения мы не решим, что объекту foo
нужно содержать и значение baz
. В результате sum
будет прибавлять к bar
не 10, а foo.baz
и это — врождённая проблема mustache. Пара из поддерживающих этот синтакс шаблонизаторов добавляют в него возможность обойти эту проблему, но ведь базовый синтакс подталкивает к этой ловушке:
{{#people}}
Hello, {{title}} {{name}}
{{/people}}
как думаете, здесь title
это заголовок страницы или титул человека?