Здравствуйте, samius, Вы писали:
S>>>Сэкономишь время b-3>>Кандидат развернётся и убежит со словами "как вы смеете! я никогда не ошибаюсь! А думать — так это вообще не моё" ? S>В случае когда ты собеседователь, лучше для кандидата будет убежать. Любому. Вне зависимости от знаний и умений. ИМХО.
Может, напишите конкретные аргументы, чтобы я их мог передать своему работодателю? А то, понимаешь, отвлекают от отладки кода с цикломатической метрикой "двадцать одна", заставляют в какой-то болтологии участвовать
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, samius, Вы писали:
S>>>>Сэкономишь время b-3>>>Кандидат развернётся и убежит со словами "как вы смеете! я никогда не ошибаюсь! А думать — так это вообще не моё" ? S>>В случае когда ты собеседователь, лучше для кандидата будет убежать. Любому. Вне зависимости от знаний и умений. ИМХО. b-3>Может, напишите конкретные аргументы, чтобы я их мог передать своему работодателю? А то, понимаешь, отвлекают от отладки кода с цикломатической метрикой "двадцать одна", заставляют в какой-то болтологии участвовать
Аргументы пусть ищет работодатель. А я лишь могу привести факты, которые привели меня к такому мнению и цепочку предположений
1) неумеренный и необоснованный пафос в случае нерешения задачи ganjustas-а
2) бредовые лозунги в голове по поводу линка и иммутабельности, мешающие делать адекватную оценку применения технологии
Это приводит к мысли что единственный шанс чего-то добиться под твоим началом — скомпрометировать тебя в глазах твоего начальства при условии адекватности оного. Но адекватность твоего начальства скомпрометирована тем что ты ведущий.
Отсюда и вывод, что при наличии выбора следует делать выбор не в пользу работы в твоей конторе.
Здравствуйте, samius, Вы писали:
S>Аргументы пусть ищет работодатель. А я лишь могу привести факты, которые привели меня к такому мнению и цепочку предположений S>1) неумеренный и необоснованный пафос в случае нерешения задачи ganjustas-а
Т.е. необоснованного пафоса ganjustas-а Вы предпочитаете в упор не замечать?
Я вот тоже пытаюсь, но иногда существование мира программистов-отчётописателей, презирающих метод assert, оператор switch и цикл for, заставляет меня выступить с речью, напоминающей киркоровское "меня раздражает ваша розовая кофточка, ваши (O)(O) и ваш микрофон!" .
Выглядит, конечно, это не очень красиво — кому, казалось бы, та розовая кофточка мешала. Но обсуждать эту тему иногда всё же надо, иначе такие люди окружат тебя и будут тебе подсовывать на рабочий стол тушь и прокладки программы, сканирующие 10000 тыщ файлов для выполнения запроса на Linq S>2) бредовые лозунги в голове по поводу линка и иммутабельности, мешающие делать адекватную оценку применения технологии
Ну, Вы найдёте там ещё много "бредовых лозунгов", например что не любое приложение должно строиться вокруг релятивистской базы данных. О ужас, скажете Вы, как же можно вручную писать model layer. Нет model layer без ORM-а, и Linq2Sql пророк его. Ещё можно про rich модель поспорить с ganjustas-ом, это его любимая тема, не делаю так только потому, что с ним принципиально согласен — но троллинг на RSDN на эту тему меня задевает. Ну и так далее.
Считаю, что вместе должны работать совместимые люди
S>Это приводит к мысли что единственный шанс чего-то добиться под твоим началом — скомпрометировать тебя в глазах твоего начальства при условии адекватности оного. Но адекватность твоего начальства скомпрометирована тем что ты ведущий. Отсюда и вывод, что при наличии выбора следует делать выбор не в пользу работы в твоей конторе.
Похоже, моя фирма осталась без консультаций на тему подбора кадров
Забанен с формулировкой "клинический дисидент".
Re[7]: Задача на собеседовании - обращение списка.
просмотрел, правда по-диагонали, но списков не нашел. Обычные задачи на обычные знания. Если человек их не умеет решать, его из школы не надо выпускать, не то что на работу брать.
J>>Далеко не все программисты не то что не закончили программистский факультет, но и вообще имеют высшее образование. ПМ>Ну то, что в IT полно каких-то непонятных людей с улицы, без образования, фундаментальных знаний и навыков написания программ мне и так известно. Таких и следует отсеивать.
я не их имел в виду. А хороших программистов, которые просто АТД "список" не изучали и которые вам в ответ напишут List.Reverse, имея в виду List из библиотеки с которой они постоянно работают.
J>>А первокурсник без опыта и знания подводных камней может вам нагородить таких SQL запросов... ПМ>Человек, который не соображает, еще быстрее нагородит фигни.
он не "не соображает", он никогда не слышал о списке. Если вы ему вводную лекцию прочитаете, он легко решит вашу задачу.
ПМ>Написание SQL-запросов — это типичная задачка на логику.
э... вы уверены что вам нужна таблица из миллиона элементов, выдаваемая "логичным" запросом из теоретического курса по реляционным отношениям из базы не оптимизированной к запросам?
Re[8]: Задача на собеседовании - обращение списка.
Здравствуйте, jhfrek, Вы писали:
J>он не "не соображает", он никогда не слышал о списке. Если вы ему вводную лекцию прочитаете, он легко решит вашу задачу.
Вводную лекцию читаю и подсказки даю. Не помогает.
J>э... вы уверены что вам нужна таблица из миллиона элементов, выдаваемая "логичным" запросом из теоретического курса по реляционным отношениям из базы не оптимизированной к запросам?
Нет, не уверен, вообще не вижу никакой логической связи.
Re[27]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Ты вообще-то можешь не продолжать отстаивать свою точку зрения, так как уже признал что она является лишь капризом, а не необходимостью.
ПМ>Нет, умение писать алгоритмы хотя бы на уровне старшеклассника является необходимостью для человека, который работает программистом. Неумение программировать — профнепригодность.
Практика показывает что много программистов не умеют писать сложные алгоритмы без гугла и пишут отличный код.
Re[35]: Задача на собеседовании - обращение списка.
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, gandjustas, Вы писали:
b-3>>>Подразумеваю набор убеждений разработчика, который влияют на его результат. Ты его уже замечательно поскипал: b-3>>>должен быть только один способ сделать это b-3>>>если можно сделать иммутабельно — делай иммутабельно b-3>>>ФП лучше всего, а linq — почти ФП, нафиг думать, пишем на linq! b-3>>>могу всё это хорошо расширить, добавив cюда kiss, но это нужно начинать отдельную тему G>>Так это ты сам придумал. Ты уверен что кто-то придерживается такой философии? b-3>Так это я не сам придумал, а регулярно вижу на практике. Даже мой визави ganjustas этим грешен и пишет свои Sharepoint solutions, по слухам, приблизительно так.
Я бы радовался если бы можно было в шарике нормаьно linq писать. Но он к сожалению полн кода из дремучего 2003 года, который является оберткой еще более дремучего нативного кода из 2001 года.
Linq там реализован крайне криво и использовать его нельзя.
Но это лирика. А то что ты видишь на практике заключается как раз в незнании linq. Глупо говорить что X — плохо, когда некоторая группа людей не знает X.
b-3>>>Прочитай ветку, которую мы обсуждаем, на примере B2B — сервиса и видеоплеера) Если ты считаешь, что ради сокращения подобного кода до .sort или .orderby можно делать 10 тыщ запросов к вебсервису или сканировать список из дохрена файлов — ты будешь прав далеко не всегда) G>>Не понял, почему для сортировки 20 элементов может понадобиться 10000 запросов к вебсервису? Объясни этот момент, я не понимаю какую проблему ты пытаешься описать. b-3>Задача простая: есть коллекция (скажем, набор фильмов, или данные веб-сервиса), нужно выбрать 20 элементов, которые чаще всех других обрабатываются. Счётчики к элементам приделывать можно. Перечислять всю коллекцию или загружать её в память — нельзя.
Если перечислять нельзя при чем тут linq? Он на не-ienumerable не работает.
Решение: сделать свою коллекцию пар счетчик-количество обращений. Положить в базу, сделать индексы, запросом получать первые 20 по индексу.
Коллекцию можно как локально, так и удаленно хранить в зависимость от того что можно модифицировать.
О linq не сказал ни слова. Можно реализацию как с linq делать, так и без оного.
b-3>Мутабельным решением, без linq, является массив из 20 наиболее часто используемых (т.е. с наибольшими значениями счётчика), в который делается (или не делается) вставка при открытии очередного элемента коллекции.
А где коллекция хранится между запусками?
b-3>Решением на linq является... Да, собственно ничего не является, заведение СУБД (в видеоплеере, LOL!) или загрузка всей коллекции в память (дофига дисковых операций или запросов к веб-сервису).
А хранить коллекцию где? В реестре? А как потом top20 получить? Это меньше дисковых операций потребует?
b-3>Собственно всё
Ага, ты сам себе противоречить начал. Получается что в твоей задаче linq и приткнуть некуда.
А если приткнуть, то это СУБД и поднимать все в память.
А если linq не притыкать, то тоже самое получится.
Re[36]: Задача на собеседовании - обращение списка.
Здравствуйте, gandjustas, Вы писали:
G>А хранить коллекцию где? В реестре? А как потом top20 получить? Это меньше дисковых операций потребует?
Да никак не получать. Нигде не хранить. Сразу же формировать top20. Без баз данных, без linq, без всей фигни, без чистых функций, без перспективной потокобезопасности, зато о ужас — с циклом, сортировку напоминающем. Потому что в простом видеоплеере, например, база данных не нужна, да и в библиотеке-адаптере вебсервиса тож.
G>Ага, ты сам себе противоречить начал. Получается что в твоей задаче linq и приткнуть некуда.
Да. Именно так. Linq в этой задаче не нужен, лучше написать вместо него простой код. А человеку, который на такое не способен и на собеседовании это делать отказывается — ну, с чистой совестью искать работу, где пишут по принципу "не изобретайте ничего — есть только один способ сделать это".
Забанен с формулировкой "клинический дисидент".
Re[2]: Задача на собеседовании - обращение списка.
V>Углубимся. Контекст данных веток — собеседование. Посылка: каждый собеседующий берет на работу людей, которые мыслят схожим V>с ним образом. Даже не так, каждый ДОЛЖЕН брать людей, которые мыслят схожим с ним образом. Иначе они тупо не сработаются — это V>очевидно. Именно поэтому методы ПМ и gj должны быть разными (хотя и могут пересекаться). Именно поэтому "задавание задачек" V>на собеседовании для ПМ — один из работающих инструментов, а для gj — бессмысленная херня.
Не передергивай. Я не говорю что задавание задачек — херня. Я говорю что задавание задачек на переворачивание списка и гномов в шапках — херня.
Я даю задачи, которые ближе к реальной работе.
А задачи на шапки гномов и переворачивание списков на собеседовании — херня полнейшая, потому что в 90% случаев она решается предварительным гуглением, а не соображалкой.
V>философия. Какой подход лучше? Ответа нет. Да, подход ПМ потенциально может решить бОльшее количество задач, с более широким спектром. V>С другой стороны, подход gj выигрывает в краткосрочной перспективе и в среднем дает больше денег для исполнителя. Но есть еще V>другие ниши — медицина/авиация/космос, даже обычная промышленность, где gj отфильтруются по определению.
Рассказываю тайну — нету "других ниш", все ПО пишется одинаково. Где-то больше код проверяется, где-то меньше, где-то больше объемы данных, где-то меньше, где-то навороченные фреймворки, где-то надо и сортировку вручную писать. Но сути это не меняет.
Кстати больше говнокода, чем в АСУТП я в жизни не видел. Вот тебе и "промышленность".
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, samius, Вы писали:
S>>Аргументы пусть ищет работодатель. А я лишь могу привести факты, которые привели меня к такому мнению и цепочку предположений S>>1) неумеренный и необоснованный пафос в случае нерешения задачи ganjustas-а b-3>Т.е. необоснованного пафоса ganjustas-а Вы предпочитаете в упор не замечать?
У него пафоса значительно меньше и он гораздо более обоснован.
b-3>Я вот тоже пытаюсь, но иногда существование мира программистов-отчётописателей, презирающих метод assert, оператор switch и цикл for, заставляет меня выступить с речью, напоминающей киркоровское "меня раздражает ваша розовая кофточка, ваши (O)(O) и ваш микрофон!" . b-3>Выглядит, конечно, это не очень красиво — кому, казалось бы, та розовая кофточка мешала. Но обсуждать эту тему иногда всё же надо, иначе такие люди окружат тебя и будут тебе подсовывать на рабочий стол тушь и прокладки программы, сканирующие 10000 тыщ файлов для выполнения запроса на Linq
тут не с программистами обсуждать надо. Может для начала отдыхать больше, или работу сменить...
S>>2) бредовые лозунги в голове по поводу линка и иммутабельности, мешающие делать адекватную оценку применения технологии b-3>Ну, Вы найдёте там ещё много "бредовых лозунгов", например что не любое приложение должно строиться вокруг релятивистской базы данных. О ужас, скажете Вы, как же можно вручную писать model layer. Нет model layer без ORM-а, и Linq2Sql пророк его. Ещё можно про rich модель поспорить с ganjustas-ом, это его любимая тема, не делаю так только потому, что с ним принципиально согласен — но троллинг на RSDN на эту тему меня задевает. Ну и так далее.
Срочно выгружать лозунги из головы. Они не помогают решать задачи, а отвлекают на борьбу с ними и за них.
b-3>Считаю, что вместе должны работать совместимые люди
Считаю, что нужно прилагать усилия над собой, что бы быть совместимым. Хотя бы пока есть надежда на взаимность.
S>>Это приводит к мысли что единственный шанс чего-то добиться под твоим началом — скомпрометировать тебя в глазах твоего начальства при условии адекватности оного. Но адекватность твоего начальства скомпрометирована тем что ты ведущий. Отсюда и вывод, что при наличии выбора следует делать выбор не в пользу работы в твоей конторе. b-3>Похоже, моя фирма осталась без консультаций на тему подбора кадров
Я переживу это
Re[37]: Задача на собеседовании - обращение списка.
Здравствуйте, b-3, Вы писали:
b-3>Здравствуйте, gandjustas, Вы писали:
G>>А хранить коллекцию где? В реестре? А как потом top20 получить? Это меньше дисковых операций потребует? b-3>Да никак не получать. Нигде не хранить. Сразу же формировать top20.
Каким образом? Откуда данные взять?
G>>Ага, ты сам себе противоречить начал. Получается что в твоей задаче linq и приткнуть некуда. b-3>Да. Именно так. Linq в этой задаче не нужен, лучше написать вместо него простой код.
Linq и есть простой код.
Хотя можешь свой "простой код" написать для такой задачи, посмотрим что проще будет.
Re[28]: Задача на собеседовании - обращение списка.
Здравствуйте, gandjustas, Вы писали:
G>А задачи на шапки гномов и переворачивание списков на собеседовании — херня полнейшая, потому что в 90% случаев она решается предварительным гуглением, а не соображалкой.
Моя практика говорит об обратном. А у тебя такой практики нет, так что твое заявление высосано из чьего-то пальца.
Re[29]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Практика показывает что много программистов не умеют писать сложные алгоритмы без гугла и пишут отличный код.
ПМ>Тут идёт речь об алгоритме, доступному школьнику.
Алгоритм наименьшей подпоследовательности тоже доступен школьнику, однако его ты написать не можешь.
Re[30]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>А задачи на шапки гномов и переворачивание списков на собеседовании — херня полнейшая, потому что в 90% случаев она решается предварительным гуглением, а не соображалкой.
ПМ>Моя практика говорит об обратном. А у тебя такой практики нет, так что твое заявление высосано из чьего-то пальца.
Твоя практика показывает что ты не способен решить задачу в том же духе с которой до этого не сталкивался. При этом я уверен что у тебя уровень повыше чем у большинства кандидатов.
Re[5]: Задача на собеседовании - обращение списка.
Здравствуйте, Паблик Морозов, Вы писали:
ПМ>Здравствуйте, gandjustas, Вы писали:
G>>Алгоритм наименьшей подпоследовательности тоже доступен школьнику, однако его ты написать не можешь.
ПМ>Это ты из чьего пальца высосал?
Ты не представил опровержения. Даже намеков не было. Так что вполне могу считать именно так.