avva: (Default)
avva ([personal profile] avva) wrote2009-06-06 09:10 pm

мимоходом (программистское)

Три строчки кода -> работа выполняется в три раза быстре -> вместо тысячи процессов ее будут делать триста.

(мемоизация вызова тяжелой функции)

Правда, я все равно ненавижу компьютеры. И C++.

[identity profile] dmarck.livejournal.com 2009-06-06 06:28 pm (UTC)(link)
Ого. Супер результат, кстати.

[identity profile] arcbishop.livejournal.com 2009-06-06 07:06 pm (UTC)(link)
Три гвоздя -> башмаки прослужат в три раза дольше -> вместо трех недель развалятся через три месяца.

Правда, я все равно ненавижу сапоги. И обувное ремесло.

[identity profile] alta-voce.livejournal.com 2009-06-06 07:15 pm (UTC)(link)
Правда, я все равно ненавижу компьютеры. И C++.

О, наконец мы сходимся во мнениях.

[identity profile] clevernewt.livejournal.com 2009-06-06 07:20 pm (UTC)(link)
А уж как вас начальство наверное ненавидит.
Вы же им втрое поводы сократили для втирания очков их начальству.

[identity profile] lelia-br.livejournal.com 2009-06-06 07:35 pm (UTC)(link)
а кокой язык любите?

[identity profile] ygam.livejournal.com 2009-06-06 08:18 pm (UTC)(link)
Я вчера и позавчера переписал одну компоненту так, что она выполняется в разы быстрее, и при исполнении требует вдвое меньше памяти.

(Anonymous) 2009-06-06 08:48 pm (UTC)(link)
OOM killer уже выехал

(Anonymous) 2009-06-06 08:50 pm (UTC)(link)
теперь логично будет заменить процессы на потоки, и кэш сделать общим

[identity profile] dimrub.livejournal.com 2009-06-06 09:08 pm (UTC)(link)
Я плюсы раньше тоже не любил. Потом оказалось, что я их просто толком не знал. Теперь не то, чтобы очень люблю, но уважаю.

[identity profile] sobaker.livejournal.com 2009-06-06 11:20 pm (UTC)(link)
Но лучше бы это уважение уже увековечить, зафиксировав C++ в камне и поставив вооруженный караул с наказом "не подпускайте к нему детей".

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

[identity profile] huzhepidarasa.livejournal.com 2009-06-07 03:27 am (UTC)(link)
угу, только заменить нечем

[identity profile] cmm.livejournal.com 2009-06-07 09:34 am (UTC)(link)
спорно, вообще-то.

[identity profile] dimrub.livejournal.com 2009-06-07 09:37 am (UTC)(link)
Ну как-то нет у него альтернатив. Только C.

[identity profile] cmm.livejournal.com 2009-06-07 10:34 am (UTC)(link)
вот именно. :)

[identity profile] dimrub.livejournal.com 2009-06-07 10:36 am (UTC)(link)
Мне, все же, кажется, что писать много кода на C утомительно. Но я осознаю и существование альтернативной точки зрения :).

[identity profile] cmm.livejournal.com 2009-06-07 11:30 am (UTC)(link)
> писать много кода на C утомительно.

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

процитированное утверждение, к примеру, мне непонятно.  утомительно вообще или в сравнении с тем же количеством кода на C++?  или, может быть, подразумевается что C менее экспрессивен, чем C++ (в теории верно, "а так — нэт").  неясно также, какой именно аспект программирования ты находишь утомительным: я, например, чрезвычайно утомляюсь выбирать один из нескольких сравнимых по уродству но при этом взаимно несовместимых способов реализовать тривиальный кусок функциональности, а также обсуждать эти способы с коллегами, особенно когда коллеги почему-то имеют эстетические предпочтения.  ещё меня очень утомляет ментальная линеаризация control flow при необходимости разобраться в чьём-то невъебенно объектно-ориентированном коде.  ну и так далее. :)

[identity profile] dimrub.livejournal.com 2009-06-07 11:39 am (UTC)(link)
Ну, лично я немало работал с различными проектами как на плюсах, так и на C, и любой проект на С нетривиальной величины рано или поздно начинал придумывать себя как проект на плюсах, только получалось это у него плохо (обожаю таблицы указателей на функции, инициализированные хрен знает где и вызываемые через макросы). Мне кажется, что при некоторой не чрезмерной образованности и слаженности в коллективе, можно создавать большие и сложные проекты на плюсах, которые потом можно в течении длительного времени поддерживать и развивать, и что те же действия на С хоть и возможны, но требуют куда больших затрат, но, повторяю, это мое личное мнение - YMM (and probably does) V.

[identity profile] cmm.livejournal.com 2009-06-07 11:44 am (UTC)(link)
Мне кажется, что при некоторой не чрезмерной образованности и слаженности в коллективе, можно создавать большие и сложные проекты на плюсах, которые потом можно в течении длительного времени поддерживать и развивать, и что те же действия на С хоть и возможны, но требуют куда больших затрат

мой опыт с этим не согласуется, увы.

[identity profile] lazyreader.livejournal.com 2009-06-08 11:24 am (UTC)(link)
(записываю в книжечку)

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

(Anonymous) 2009-06-08 12:25 am (UTC)(link)
objective-c

(Anonymous) 2009-06-06 09:45 pm (UTC)(link)
переписал qacct. Оригинал удивительно неудобен

merrick Kennebunk

Парадокс

[identity profile] vodianoj.livejournal.com 2009-06-06 10:29 pm (UTC)(link)
Можно не любить С++, зато нельзя не любить Страуструпа.

Re: Парадокс

[identity profile] avva.livejournal.com 2009-06-06 10:35 pm (UTC)(link)
Можно, можно.

Re: Парадокс

[identity profile] migmit.vox.com (from livejournal.com) 2009-06-07 08:38 am (UTC)(link)
Причём любить часто и извращённо.

[identity profile] bujik.livejournal.com 2009-06-07 05:43 am (UTC)(link)
Правда, я все равно ненавижу компьютеры. И C++.

Правда? Так бросьте первое и второе куда подальше. В чем проблема то?

[identity profile] mudak.livejournal.com 2009-06-07 11:01 am (UTC)(link)
Придётся заняться чем-то другим, а всё остальное ещё хуже.

[identity profile] gaus.livejournal.com 2009-06-07 06:15 am (UTC)(link)
Technology sukz

?

[identity profile] greps.livejournal.com 2009-06-07 12:00 pm (UTC)(link)
А продемонстрируйте код пожалуйста. Что то я термин "мемоизация тяжелой функции" подрастерял...

Re: ?

[identity profile] avva.livejournal.com 2009-06-07 12:41 pm (UTC)(link)
ну что-то типа (немножко упрощенно)

result = foo.Bar(arg)

превращается в

iter_type cached = cache_.find(arg);
if (cached != cache_.end()) {
return cached->second;
} else {
result = foo.Bar(arg);
cache_.insert(make_pair(arg, result));
return result;
}

Re: ?

[identity profile] greps.livejournal.com 2009-06-07 12:55 pm (UTC)(link)
Ну это ведь не всегда работает, а только в тех условиях когда функция конечнозначная... или как бы ... ну ... "хит-фактор высокий"...

Re: ?

[identity profile] avva.livejournal.com 2009-06-07 12:58 pm (UTC)(link)
Конечно не всегда.
http://en.wikipedia.org/wiki/Memoization

Re: ?

[identity profile] breqwas.livejournal.com 2009-06-07 02:54 pm (UTC)(link)
А в этом умном термине есть смысл, выходящий за рамки привычного "кэшировать результат" (ну, юз-кейсы memcached'а)?

Re: ?

[identity profile] avva.livejournal.com 2009-06-07 03:10 pm (UTC)(link)
кэшировать результат - гораздо более широкое понятие, включающее действительно например и юз-кейсы memcached. memoization обычно подразумевает локальное кэширование внутри процесса вызова одной функции, у которой нет side effects. Для чего нужно отдельное слово? напр. потому, что в некоторых языках и средах мемоизацию можно делать автоматически, для всех или для частых или для тяжелых вызовов. И это может дать огромную отдачу практически "бесплатно".