Сообщество - IT-юмор
IT-юмор
1 908 постов 34 192 подписчика
234

Сервер упал...

А - СисАдмин Т - техник


Т: Алло, админ тут сервер упал ...

А: назови его номер - сейчас зайду по консоли - гляну в чем дело.

Т: номер 1488 но ты на него не зайдёшь - он упал!

А: по IPMI точно зайду, скорее всего kernel panic - по тому и упал так сильно

Т: упал он сильно, но даже по IPMI ты не зайдёшь

А: Почему?

Т: Потому что я рукожоп...

36

Машинный перевод как способ скоротать вечер

Вступление


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


Одна из таких задачек - разработать алгоритм пути улитки, возвращающейся домой. Проще, конечно, показать:

Машинный перевод как способ скоротать вечер Юмор, IT, Длиннопост, Codewars, Скриншот, IT юмор, Google Translate

Думаю, идея понятна. Мы начинаем путь с левого верхнего угла, пока не окажемся в конечной точке в районе середины. Мы должны пройти весь этот путь (просчитать), последовательно сохранить все пройденные шаги и вернуть их в ответ программе, которая проверит корректность результата. Пример такого ответа для левой картинки: 1, 2, 3, 6, 9, 8, 7, 4, 5.


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


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


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



Планирование


Собственно, $distanceTravelled - пройденное расстояние, путь. Вроде бы все хорошо, но два момента меня смущали:

distance - слишком неопределенно. Что есть distance? метры, километры, световые годы? безобразие

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


Ну ок, какие идеи? Посовещавшись с самим собой я решил, что было бы неплохо, ежели бы переменная читалась как $пройденныеКвадраты [улиткой]. Звучит информативнее размытых пропутешествованных дистанций, мм? На том и порешили. Теперь переходим к финальной части - переводу.



Реализация


Начнем с существительного - дистанции. Коли приговорили его к замене, не будем медлить. Поскольку в нашем случае речь идет о слегка абстрактном и заточенном под задачу расстоянии, логичнее будет дистанцию измерять в squares - квадратиках (а вся доска, по коей рассекает улитка - папа-квадрат площадь, square). С этим все ясно, топаем дальше.


Следующая жертва у нас - travelled. Тут уже неоднозначнее. Улитка у нас вряд ли ходит (walked), и вряд ли кто-то видел бегающих (ran) улиток (во всяком случае без запрещенных веществ). Улитка, пожалуй, скорее ползает - creep. Однако в прошедшем времени - crept - у нас получится подкрадывающаяся улитка-ниндзя, потому гугл мне предлагает юзать crawled, что в данный контекст вполне вписывается:

Машинный перевод как способ скоротать вечер Юмор, IT, Длиннопост, Codewars, Скриншот, IT юмор, Google Translate

Ок, гугл, как скажешь. Теперь переходим к самому главному - к женитьбе существительного с глаголом.


Вбиваем первое, что приходит в сумнящуюся голову и одновременно самое очевидное:

Машинный перевод как способ скоротать вечер Юмор, IT, Длиннопост, Codewars, Скриншот, IT юмор, Google Translate

Хм, квадраты не желают быть пройденными, более того - уверены, что куда-то ползут. Попытка дубль два - спускаем вниз регистр у Crawled (гугл на это нередко живо реагирует):

Машинный перевод как способ скоротать вечер Юмор, IT, Длиннопост, Codewars, Скриншот, IT юмор, Google Translate

квадраты по-прежнему порываются от нас уползти. Вечер переставал быть томным. Попытка №3:

Машинный перевод как способ скоротать вечер Юмор, IT, Длиннопост, Codewars, Скриншот, IT юмор, Google Translate

и опять квадраты норовят прикинуться улиткой. Ладно, сжалимся над болванчиком и явно намекнем, в чем тут дело:

Машинный перевод как способ скоротать вечер Юмор, IT, Длиннопост, Codewars, Скриншот, IT юмор, Google Translate

События развивались стремительно. Квадраты мало того что ползают без спроса, так еще и улитку оседлали! Запашные от улиток нашлись тут, понимаешь. Но мы не сдаемся и продолжаем верить в искусственный интеллект:

Машинный перевод как способ скоротать вечер Юмор, IT, Длиннопост, Codewars, Скриншот, IT юмор, Google Translate

Тем временем упрямые квадраты продолжают свое вероломный поход с улиткой в качестве транспорта.


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


В принципе, уже понятно, что название переменной $squaresCrawled в контексте задачи вполне корректно отражает суть переменной, но лишняя проверка лишней не бывает, так что предпринимаем последнюю попытку найти компромисс:

Машинный перевод как способ скоротать вечер Юмор, IT, Длиннопост, Codewars, Скриншот, IT юмор, Google Translate

Подытожил напоследок гугл. И ведь не поспоришь. И еще предприимчивые.

Показать полностью 7
Мои подписки
Подписывайтесь на интересные вам теги, сообщества,
пользователей — и читайте персональное «Горячее».
Чтобы добавить подписку, нужно авторизоваться.
Отличная работа, все прочитано!