metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-08-16 09:51 pm

Книжки и алгоритмы

Пост http://victorgr.livejournal.com/502847.html напомнил одну штуку.

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

Если по хорошему, то надо бы это дело поправить. Хотя бы для того, чтобы при необходимости реализовать что-то были базовые строительные блоки в памяти - тогда проще найти нужную ассоциацию или аналогию.
Но вообще 99% моих задач - это отчетность, вся производительность которой упирается в скорость работы БД (а алгоритмы, используемые в БД, я как раз помню лучше других), CRUD, который упирается в различные вариации на тему ORM и "как показать пользователю объект для редактирования наиболее удобным образом", или же интеграция с разного рода кромешной индусятиной, где знание алгоритмов не нужно, зато нужно умение чинить баги по фотографии.

[identity profile] falcrum.livejournal.com 2012-08-16 06:57 pm (UTC)(link)
Я бы даже по БД от сборника "100 алгоритмов, одобренных раввинатом" не отказался бы... :)

[identity profile] victorgr.livejournal.com 2012-08-16 06:59 pm (UTC)(link)
Так 90% всех задач -- это собрать что-то из готовых кубиков и соединить трубами. Обычное строительство, кирпичи ложить. Скучно же.

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

[identity profile] denisioru.livejournal.com 2012-08-16 07:09 pm (UTC)(link)
Трубы порой не сгибаются там где надо и сгибаются там где не надо. А диаметр может задаваться путем обматывания изолентой трубы снаружи, при этом (!) внутренний диаметр трубы увеличивается! Также, часто трубы идут уже заполненные монтажной пеной, которую перед использованием надо самому брать и выковыривать. Часто также, трубы идут приваренные к кубикам и болгаркой отпилить это дело не представляется возможным - в трубе сразу появляется дыра, сквозь которую ты видишь остатки монтажной пены. Иногда трубу (с кубиком, дырой от болгарки (попытка отпилить кубик) и изолентой сверху) надо закладывать кирпичами, причем кирпичи только трёх видов - маленькие (с наперсток), большие (с тумбочку размером) и в виде набора глины, воды, зажигалки и инструкции как собрать печь для обжига. И вот со всей этой пиздобратией - как-то надо жить.

[identity profile] victorgr.livejournal.com 2012-08-16 07:30 pm (UTC)(link)
Так за это и деньги платят :)

[identity profile] blackyblack.livejournal.com 2012-08-16 07:38 pm (UTC)(link)
Эм. Ну и давно ты свой алгоритм сортировки придумывал? Или хотя бы разбирался в существующей реализации?

[identity profile] metaclass.livejournal.com 2012-08-16 07:49 pm (UTC)(link)
Да хотя бы toposort с петлями портировать с хаскеля на F# - уже ебнутся можно :)

[identity profile] aamonster.livejournal.com 2012-08-16 07:55 pm (UTC)(link)
Я вот несколько лет назад с удивлением открыл для себя кучи (пирамиды). До того почем-то думал, что heap sort - это сваливание всего в двоичное дерево и вываливание обратно в массив.

[identity profile] familom.livejournal.com 2012-08-16 08:20 pm (UTC)(link)
Месяцев 9 назад разбирался с Timsort.

[identity profile] raydac.livejournal.com 2012-08-16 07:27 pm (UTC)(link)
значит тебя загомосячат на собеседованиях вопросами про сложность

[identity profile] freetiger.livejournal.com 2012-08-16 07:32 pm (UTC)(link)

[identity profile] blackyblack.livejournal.com 2012-08-16 07:35 pm (UTC)(link)
Знать алгоритмы, в общем, полезно. Можно внезапно освоить нишу рынка, просто грамотно применив нужный алгоритм. Другое дело, что работа это разовая и в развитых странах для этого применяют мозговой штурм и высокооплачиваемых консультантов™.
Если же нужно просто в работе что-нибудь заоптимизировать, без выпендрежа, то применяется поиск в гугле и реализация алгоритма оттуда же. Дешево и сердито.

[identity profile] nivanych.livejournal.com 2012-08-16 08:16 pm (UTC)(link)
Вот чиста любопытно, вот например, алгоритм Дейкстры тоже так прочитался?

[identity profile] vit-r.livejournal.com 2012-08-16 08:28 pm (UTC)(link)
Ага. Чтобы понять, какой алгоритм надо применять, надо сначала решить задачу. А потом выясняется, что улучшения и ускорения в конечном итоге ничего не дадут.

[identity profile] nicka-startcev.livejournal.com 2012-08-16 09:16 pm (UTC)(link)
Дональд Кнут, Искусство погромирования. Один из томов посвящен именно что классическим алгоритмам и их плюсам/минусам.

сортировка, ГСЧ, итп.

[identity profile] jakobz.livejournal.com 2012-08-16 09:28 pm (UTC)(link)
Кнут - пожалуй самое хреновое на рынке чтиво на эту тему. Там он какой-то свой язык изобретает долго и муторно. Потом структуры и алгоритмы все простые и известные.

Видал книжки гораздо ловчее.

[identity profile] theiced.livejournal.com 2012-08-16 09:42 pm (UTC)(link)
кнут - убогость.

[identity profile] inhate.livejournal.com 2012-08-17 06:02 am (UTC)(link)
Я прочёл первый том и расхотел программировать.

[identity profile] divine-assass1n.livejournal.com 2012-08-16 10:13 pm (UTC)(link)
На coursera.org начался курс по алгоритмам принстонского университета, недели не прошло. Вчера поимел fun с первым programming assignmet.

[identity profile] theiced.livejournal.com 2012-08-17 12:04 am (UTC)(link)
я тоже решил его посмотреть но что то мне кажется что слишком простой.

[identity profile] familom.livejournal.com 2012-08-17 05:28 am (UTC)(link)
Бери natural language processing — сделан хорошо и практические таски отличные, местами брутальные.
Курс не слишком простой и на него есть смысл тратить время.

[identity profile] divine-assass1n.livejournal.com 2012-08-17 08:09 am (UTC)(link)
пока простоват, да.

[identity profile] freiksenet.livejournal.com 2012-08-17 07:51 am (UTC)(link)
Корман - тоненькая книжка на 500 страниц. Вполне себе можете прочитать и все базовые алгоритмы у вас будут.

[identity profile] bydl0coder.livejournal.com 2012-08-17 03:59 pm (UTC)(link)
Чего? В нем 1300 страниц заполненных матаном.

[identity profile] freiksenet.livejournal.com 2012-08-17 05:08 pm (UTC)(link)
И правда больше чем 500.

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