Pull to refresh
55
-1
Андрей Плахов @yafinder

Руководитель разработки международных проектов

Две культуры программирования: почему обе из них важны?

Ставятся внутренние репозитории с заранее одобренными пакетами и все собирается только оттуда.

"Ну вот что это такое, а? Что вы там <...> - просматриваете все исходники библиотек всех версий что ли?" (с)

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

дальше по тексту, соответственно получается так что у вас первая "культура" (C/C++?) всегда использует более правильный подход, а вторая что-то там говнокодит

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

Две культуры программирования: почему обе из них важны?

Что вы там при статической сборке - просматриваете все исходники библиотек всех версий что ли?

Есть опять же два подхода.

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

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

Ничего даже близко похожего на историю с leftpad в первом подходе произойти, мне кажется, не может. Зато второй защищен от уже исправленных известных уязвимостей старых версий и "велосипедов", потому безопасней в adversarial-смысле (по крайней мере, я много раз слышал такой аргумент)

Две культуры программирования: почему обе из них важны?

Вы не будете красить стену фломастером - вы возьмете краску и валик - разные области применения же!

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

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

Какой язык программирования больше всего любят в Яндексе? И всегда ли любовь взаимна

Скажем так, снайпер и из золотого пистолета хорошо будет стрелять.

Почему в поиске без лингвистики не обойтись?

Я знаю об этих работах, но отношусь к ним прохладно. Они иллюстрируют, что у закона Ципфа может быть статистическое основание, сама по себе эта мысль очень разумна. Но механизмы, предлагаемые что Ли Вэньтянем, что Витольдом Белевичем, никакого отношения к реальности не имеют. Язык не генерируется «с нуля» как последовательность символов (а тем более независимых и равномерно распределенных). Все известные нам языки являются результатом развития каких-то более древних; у этого процесса тоже есть свои закономерности, но они гораздо строже «случайной замены, подчиняющейся такому-то распределению» (см., например, elementy.ru/lib/430720#4, вообще очень советую почитать этот текст, если вы ещё не читали). Наконец, как я уже писал, закон Ципфа выполняется и для русского языка, и для языка запросов, слова как последовательности букв при этом одни и те же, но частоты совершенно разные: в top 3 насколько помню, вообще нет пересечений. Уже только одно это означает, что «случайная генерация последовательностей букв» — негодная модель явления. Обоснование, которое предлагал сам Ципф, мне кажется гораздо разумнее.

Почему в поиске без лингвистики не обойтись?

Конечно. Я имел в виду, что таким способом проще всего найти в интернете доказательство существования группы ##### :)

Почему в поиске без лингвистики не обойтись?

Если начать набирать ##### в поисковой строке, то в подсказках появляются запросы про эту группу, и некоторые из них таки работают (за счет дополнительных слов). Например, такой.

Почему в поиске без лингвистики не обойтись?

машина начинает «играть» словами запроса, подбирая близкие фонетически аналоги, по которым результатов в выдаче будет больше

Именно такой логики нет, она, по-моему, была бы сознательным вредительством. По симптомам похоже на работу опечаточного смешивания: если машина подозревает опечатку, но не уверена, она составит выдачу из исходной и из выдачи по «исправленному» запросу. Если опечаточник при этом ошибся, то итог будет каким-то таким.

Согласен, обидно быть грамотным человеком в мире, где пользователи пишут "смареть бесплатна расценке на аделачные работы казане", а поисковики всё это пытаются отрабатывать.

Технология «Спектр»

Попытаюсь.
Используется несколько «источников знаний», которые лучше всего показывать на примерах.

1) название «московский государственный университет» имеет вид «что-то-там университет», значит, наверное, это может быть и организация
2) «мазда сх 7» имеет «расход топлива» и бывает «с пробегом» (это мы и из пользовательских запросов знаем, и в интернете можем «прочитать»), значит, наверное, это может быть и автомобиль
3) в википедии статья «Привидение, которое не возвращается» относится к категориям «Фильмы по алфавиту» и «Фильмы 1929 года», значит, наверное, это может быть и фильм
4) в выдаче по запросу «пирожки с капустой» есть сайт kuking.net, и пользователям он по нраву, значит, они могут быть и едой
5) отношения между категориями: предположим, мы уже знаем, что «запорожец» может быть автомобилем; тогда он точно может быть и товаром
6) для некоторых категорий можно перечислить значительный процент составляющих их объектов просто фиксированным списком, который получен из какого-то внешнего источника. Такой категорией могут быть, например, станции московского метрополитена или города России.

Знание из всех этих источников комбинируется. К сожалению, ни один из них нельзя считать ни абсолютно полным, ни абсолютно точным (отсюда оговорка «может быть») — везде могут быть ложные срабатывания («закон ньютона» не в категории «право», несмотря на источник типа 1), почти всё можно накручивать и спамить. Поэтому все эти способы дополняют и исправляют друг друга; здесь я уже не буду вдаваться в подробности (не потому, что секрет, а потому что скучно). Кроме того, приходится все время держать в голове, что объект может быть и в нескольких категориях одновременно.

Надеюсь, я, если и не ответил полностью на ваш вопрос, то хотя бы снабдил информацией к размышлению :)

Технология «Спектр»

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

Технология «Спектр»

Подробнее многие вещи не описаны именно для того, чтобы максимально затруднить попытки «управлять выдачами» всякими чёрными способами (вроде спама в «справочниках»).

Вообще, какие-то детекторы попыток манипуляции встроены в Спектр загодя. Посмотрим, как скоро сигнализация начнет звенеть.

Технология «Спектр»

Нет, персональной выдачи для каждого нет.
Пока что :)

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

Технология «Спектр»

Это разные вещи. blekko использует эксплицитную информацию (слэштеги), которую следует указывать явно, а «Спектр» — имплицитную.

Технология «Спектр»

Нет, не от балды. И до «Спектра» мы разными способами пытались учитывать, чего на самом деле хотят пользователи.

Но до «Спектра» в матмодели, на основе которой строится ранжирование, принималось, что результаты ответа на любой запрос можно линейно упорядочить по их релевантности. Грубо говоря, что все пользователи хотят одного и того же. Оказывается, что для многих запросов (примерно пятая часть потока) это слишком сильное упрощение. Для одних пользователей релевантнее одно, для других — другое, а единственной цифирки, позволяющей учесть интересы каждого, не существует.

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity