Category: общество

glider

Зависимые типы

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

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

upd. Материалы по теме:
* А про зависимые типы - это примерно так
* Зависимые типы и метапрограммирование
* Решительно непонятно, как можно программировать без dependent types
glider

онсайт собеседование с гуглом, часть вторая

Первая часть

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

1. За обедом у нас зашла речь об энвайронменте разработки. Поддерживая разговор о средах разработки, моя компаньонка сказала, что вообще не использует IDE. К этому я был готов и с надеждой спросил: "Неужели Emacs?". После недавного опыта с емаксом у меня есть желание разобраться, но я не знаю с чего начать, поэтому особенно ценной была бы возможность пообщаться с живым адептом этого таинственного тула.

Здесь меня постигло разочарование и удивление одновременно - моя собеседница сказала, что использует всего лишь какую-то несложную тулу для редактирования текста (нет, не vi), а больше ей ничего и не надо. Поиск и навигация по коду в ее воркфлове отделены от редактирования и осуществляются в некоем веб-туле аля Google Code Search. Здесь у меня три вопроса:
* Насколько близки возможности этого тула к публичному code search? Вот, я открыл случайный C#-проект в code search. Панелька навигации отображает структуру проекта и даже выделяет семантические элементы внутри файла. Это хорошо, но где гиперлинки в стиле "go to definition"?
* Можно ли поставить этот или аналогичный тул локально и индексировать свои личные проекты?
* Народ, ну как вы обходитесь без интегрированных в редактор кода рефакторингов?!

2. Я не смог удержаться и спросил одного из интервьюеров, а также и девушку за обедом про то, как народ использует 20% времени, которые политикой гугла отводятся на личные проекты. По рассказам (которые также коррелируют и с тем, что мне рассказала Дженни) получается, что можно замутить что-нибудь интересное, представить это что-то широкое публике и при успехе презентации ожидать приток свежих сил на мини-проектик. При особой пользе личного проекта для Мирового Разума, может предоставиться возможность заниматься им фулл-тайм (здесь мне рассказали историю некоего Кости, который сгенерил тул, умеющий в полуавтоматическом режиме искать data races; сейчас, при написании поста я нагуглил немного больше деталей). Звучит отлично, поэтому очень интересно было бы узнать детали.

3. Стала неожиданностью позиция народа относительно альтернативных языков программирования. Как я понял, в гугле есть четыре языка, на которых пишут большинство кода в продакшен - Java, C++, Python и Go. Мои вчерашние собеседники пишут исключительно на Java/C++ и иногда мелкие скрипты на питоне. Go считается мистической экзотикой, которую никто из них не пробовал, но, по слухам, это что-то классное. На провокационные вопросы типа: "а никогда не хотелось заюзать какой-нибудь другой ЯП?" или "согласись, приятно покодить в функциональном стиле?" никто не поддался. А самый первый мой интервьюер даже не слышал, что такое Scala. Отражает ли эта выборка мнений общую картину?

На пока что все. В следующем посте я попробую описать тематику вопросов (вчера было пять собеседований, по 1-3 задачки в каждом) и выскажу соображения по поводу подготовки на основе полученного опыта. К сожалению, тексты задачек я привести не смогу (NDA я не подписывал, но явно высказанной просьбе отказывать не хочу), но, надеюсь, будет интересно.
glider

Обратная сторона творчества

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

Когда сабжи случаются, у меня возникает состояние, которое можно назвать "творческим кризисом". Но мне кажется, что эти загоны не являются индикацией объективных проблем, а порождаются ловушками, которые ставит сам себе мозг и которые можно и нужно нейтрализовывать по возникновению.

Для меня характерны: 1) нацеленность на рождение креативов (ибо слишком велика разница в настроении между моментами вдохновения и "серой" действительностью - похоже на наркотическую зависимость), 2) самосовершенствование (оно нужно для того, чтобы еще больше получать кайфа от пункта 1, а это невозможно без осознания своих недостатков и недостатков своих работ), 3) завышенные требования к себе (прямое следствие пункта 2).

***

Загон №1. "Вокруг столько людей, которые занимаются делом и рождают такие интересные креативы, а вот я...". Первая (длинная) часть фразы здесь не несет смысловой нагрузки, а является лишь усилением второй. То есть, вернее, первая часть фразы - эмпирическое наблюдение, которое, вкупе с временным недостатком креативов (то есть ломкой от недостатка вдохновения), запускает самоедство, а последнее, собственно, и является главным посылом цитаты.

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

Загон №2. "Целый день потратил на ремонт квартиры, а делом так и не занялся...". Грустно, что быт и здоровье вытягивают силы, которые можно было бы направить на творчество. Мне это очень знакомо - недавно я сломал себе руки и половину августа, а также весь сентябрь, не смог делать то, что мне нравится. Мало того - даже маленьких мыслишек в голове не было, ибо походу организм настолько усердно восстанавливался. Впрочем, после этих полутора месяцев я снова вернулся к творчеству и начал очень яркий проект.

Способ борьбы. Принять все, как есть, и знать, что когда-нибудь все пройдет и креативность вернется (последнее это факт, ибо случалось со мной не раз). Тут ничего не поделаешь - надо просто ждать и не терять присутствие духа.

Загон №3. "То, что я делаю - слишком примитивно и никому не нужно...". Обычно у меня такое возникает как следствие загонов №1 и №2. Когда моск осознает проблему, то начинает искать какую-то причину. Почему-то обязательно первая мысль - обвинить себя.

Способ борьбы. Этот загон исчезает вместе с загонами, его породившими. Ну, а, как только начинаешь снова творить, мысли о своей никчемности обычно не возникают - не до этого становится =)

***

Из внешней литературки хочу посоветовать потсы из одного программерского блога. Что удивительно - инфа там подходит для всех творческих людей: Taming Doubt, Taming Perfectionism. А для вдохновения рекомендую почитать книгу Джека Лондона "Мартин Иден". Upd. Еще вот написал пост про acceptance: http://xeno-by.livejournal.com/8538.html.