LINUX.ORG.RU

Простота, корректность и юзабельность — это то, что требуется от программы, и, соответственно, от программиста.

quantum-troll ★★★★★
()
                                                                        __
                                                                     .'`  `.      __
                                                                    /      |  ,-'`  `'.
                                                                   ;       '-'         )
                                                                   |              _,.-'
                                                               _   |_.--.,       (_
                                                            .'` `'-'__    \        ''"'-.
                                                           /  .-"-/`  `\   ;_            \
                                                           | /   ;      ;  | `.   (`'.__.'
                                                            |   o| o    | __   \   `.
                                                      _,.---'\___.\.__.'    `'. |_   )
                                                  _.-'               _.-""-.   '-.'-'
                                                ,'                     |   \`.    `.
                                               /                       ;   |       |
               --------------------------      (_.-'""''---..           /   |      /
              /                          \                   `'-..___.-'    ;  ,.-'
              |                          |                        \ 7      ' / |
              |    КО-ИНДУКТИВНЫЕ        +---------------------   |/_  _  ; /  '
              |                                          ___- .-  /' /` j/ '   |
              |      КО-РЕКУРСИВНЫЕ                ___---     | \|  '   /  |
              |                              ___---           '  `.___.'  ;     '
              |         КО-МОНАДЫ        +---                 ;          /      |
              |                          |                     \        /       |
              \_________________________/                       `.,__,.'         '
                                                                   |             |
                                                                   ;              '
                                                                  /                |mx
                                                                 ' ___________ ...-'

anonymous
()
Ответ на: комментарий от monk

Красота, единообразие, эффективность

Лишпер штоле? Тогда перевожу:

скобки, илитарность, нонконформизм

anonymous
()

1. Размер зарплаты

2. Размер комиссий, налогов и прочих отчислений, которые нужно заплатить, чтобы получить зарплату (если заказчик в другой стране/другая валюта)

3. В каких числах выплачивается зарплата.

Подозреваю очень умного HR-менеджера.

Alve ★★★★★
()
Ответ на: комментарий от anonymous

Красота, единообразие, эффективность

скобки, илитарность, нонконформизм

При чём тут скобки? Алгоритм должен быть красив. Если нельзя сделать красиво, то хотя бы единообразно (а не как в том же CL nth и elt получают одинаковые аргумента, но в разном порядке). И если существует эффективный алгоритм, то его должно быть можно использовать (а не как умножение матриц в C++).

monk ★★★★★
()
Ответ на: комментарий от monk

Алгоритм должен быть красив

...и почти наверняка неэффективен. Но ведь лисперам насрать на это, да. Главное чтоб анафорические лямбды, пандорические захваты и квазицитирования на несколько строк.

anonymous
()
Ответ на: комментарий от anonymous

Что не так с умножением матриц в С++

То, что A * B * C вычисляется с созданием дополнительной матрицы и лишним циклом.

monk ★★★★★
()
Ответ на: комментарий от anonymous

...и почти наверняка неэффективен.

Красивый алгоритм эффективен почти всегда. Красивый математически. В лиспе красота — это динамическая компиляция. Пример: http://swizard.livejournal.com/158763.html

Пример компиляции + DSL: http://swizard.info/articles/solitaire/article.html

А «анафорические лямбды, пандорические захваты и квазицитирования на несколько строк» почти всегда выполняются на этапе компиляции и на скорость работы программы не влияют. Также как и шаблоны Александреку для C++ — красиво и эффективно.

monk ★★★★★
()

Самое главное - избегать собеседований с идиотами. Остальное вторично.

anonymous
()
Ответ на: комментарий от x0r

мне будет просто впадлу куда то ходить обедать.

Значит у тебя в городе нет служб доставки? У нас (небольшой городок на Украине ~ 0.5 млн жителей) каждый второй ресторанчик эту услугу предоставляет, впрочем, если нужно понтонуть можно просто позвонить в такси и они привезут. Поверь, большая з\п покроет и эту проблему (впадлу куда то ходить обедать).

anonymous_
()
Последнее исправление: anonymous_ (всего исправлений: 2)
Ответ на: комментарий от monk

То, что A * B * C вычисляется с созданием дополнительной матрицы и лишним циклом.

при создании дополнительной матрицы необязательно копировать содержимое, можно copy-on-write механизм задействовать

Harald ★★★★★
()
Ответ на: комментарий от anonymous_

Значит у тебя в городе нет служб доставки? У нас (небольшой городок на Украине ~ 0.5 млн жителей) каждый второй ресторанчик эту услугу предоставляет, впрочем, если нужно понтонуть можно просто позвонить в такси и они привезут. Поверь, большая з\п покроет и эту проблему (впадлу куда то ходить обедать).

Это ж самому надо напрягаться, незнакомым людям куда-то звонить, с доставщиками жрачки контактировать. Для асоциальных программистов жрачка от фирмы однозначно рулит :)

Harald ★★★★★
()
Ответ на: комментарий от anonymous_

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

x0r ★★★★★
()


1)Человеческий рабочий график и условия

2)Уровень оплаты труда

3)Профессиональный интерес к предлагаемой задаче


последний может компенсировать неполное соответсвие второму.

TheMixa ★★★
()
Ответ на: комментарий от Harald

при создании дополнительной матрицы необязательно копировать содержимое, можно copy-on-write механизм задействовать

Не понял. В C++ произведение трёх матриц будет вычисляться как (T = A * B, T * C). При этом под T будет выделяться память через new (и тут же освобождаться по окончании вычислений). Или ты про то, что если сделать не operator+(const matrix &, const matrix &), а operator+(matrix, matrix) то ещё и пачку копирований получим? Так это уже можно считать ошибкой программиста, а не алгоритма.

В красивой реализации умножения матриц надо делать что-то типа mult(A, B, C) и сразу вычислять размерность результата.

В идеале, реализация должна уметь перемножать любой число параметров.

monk ★★★★★
()
Ответ на: комментарий от monk

Подробнее, пожалуйста. Где ты видишь лишний цикл? Предложи более эффективный подход. Что мешает тебе его реализовать в C++? Кроме того, в C++ нет матриц и их умножения, следовательно никто тебя не заставляет использовать неэффективные реализации — используй эффективные реализации.

anonymous
()
  • продуманная архитектура проекта
  • чистый и документированный код
  • офис на берегу океана :)
unfo ★★★★★
()
Ответ на: комментарий от monk

Как я и предпологал ты ошибся при расчете эффективности.

Пусть A — n×m матрица, B — m×k матрица, C — k×t матрица. Если считать T=A*B,T*C, то количество слогаемых составит n*m*k+n*k*t=n*k*(m+t). Если же считать mult(A, B, C) без создания промежуточной матрицы, то 1) число слогаемых составит n*m*k*t, что при m>1 и t>1 неменьше n*k*(m+t); 2) каждое слогаемое содержит на один множитель больше.

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

Опять же не понимаю, что тебе мешает в C++ реализовать оператор умножения матриц, который вместо фактического умножения матриц создает и возвращает объект некоторого типа содержащий ссылки на перемножаемые матрицы и реализующий оператор неявного преобразования в матрицу.

anonymous
()

Жаль нельзя постить картинки.
**КЕМ ВЫ ВИДИТЕ СЕБЯ В НАШЕЙ КОМПАНИИ ЧЕРЕЗ 5 ЛЕТ?**

anonymous
()
Ответ на: комментарий от Harald

Это ж самому надо напрягаться, незнакомым людям куда-то звонить, с доставщиками жрачки контактировать

Мне это типлицу напоминает, хотя нет, аквариум с планктоном.

anonymous_
()
Ответ на: комментарий от anonymous

И как ответить на этот вопрос? Я хз. Рок звездой.
Сидеть на одном месте больше 3-4 лет - это жесть. Одно и тоже, одни и те же лица, бррр...

nerdogeek
() автор топика
Ответ на: комментарий от anonymous

число слагаемых составит n*m*k*t, что при m>1 и t>1 неменьше n*k*(m+t);

Упс... считал для (1, 3) * (3, 3) * (3, 1)... на практике встретилось, тогда просто написал mult(a,b,c) — стало быстрей.

Правда, для общего случая, всё равно лучше видеть все матрицы одновременно (их размерность), так как вычислительная сложность очень сильно зависит от порядка вычислений. При прямом вычислении n*m*(k+t), при обратном (сначала BC) — m*t(k+n). Если n > k, то выгодней считать сначала BC.

что тебе мешает в C++ реализовать оператор умножения матриц, который вместо фактического умножения матриц

Ничего не мешает. Это и было бы красивым решением (бы, потому что никем, AFAIK, не реализовано). Но почти везде так не сделано. Например it++: http://itpp.sourceforge.net/current/classitpp_1_1Mat.html#af16d43ceaf7d535b12...

P.S. Нашёл, где сделано. http://arma.sourceforge.net/ Правда, судя по коду только до 4 матриц оптимизирует. И оптимизация моим вариантом — A*B*C*D превращается в mult(A,B,C,D). Зато эффект: http://arma.sourceforge.net/speed.html

monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от qulinxao

Анафем . идея Книги как наказания.
Книга(в Анафеме) была доступна каждому, однако была инструментом наказания.

what the FUCK? Ты про Стивенсона?

anonymous
()
Ответ на: комментарий от monk

P.S. Нашёл, где сделано. http://arma.sourceforge.net/ Правда, судя по коду только до 4 матриц оптимизирует. И оптимизация моим вариантом — A*B*C*D превращается в mult(A,B,C,D). Зато эффект: http://arma.sourceforge.net/speed.html

Судя по их пояснению к примеру с умножением 4-х матриц они оптимизируют порядок выполнения умножений матриц.

anonymous
()
Ответ на: комментарий от anonymous

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

qulinxao ★★☆
()

Трол штоле?

1. Тезис Чёрча

2. Тачка Тьюринга

3. P vs NP

anonymous
()

чтобы денег не жалели
чтобы времени было достаточно
чтобы тз не меняли

anonymous
()
Ответ на: комментарий от vurdalak

Клавиатура, монитор, интернет

когда родители купят системный блок — возвращайся

anonymous
()

Краткость. Красивые отступы. Эффективность.

Deleted
()

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.