Re[4]: Задачи для собеседования.
От: m e  
Дата: 28.02.12 12:47
Оценка:
M>Мне сложно согласиться с такой посылкой.

M>Например класс log_destination который направляет (готовый) поток вывода конкретному потребителю (файл, сеть, экран...). А теперь представьте себе что этот объект мы абстрагируем с помощью шаблоного агрумента по ВСЕМУ коду программы. Разве вы не увидите недостатков такого решения , разве на основе преимуществ и недостатков нельзя попытаться сформировать правила выбора?


проблема, которая будет тут, если log_destination будет передаваться аргументом шаблона -- это то, что something<OneLogDestination> и something<OtherLogDestination> будут рассматриваться как разные типы, но она тоже решаема

зато гарантированно здесь не будет pure virtual method call

традиции предписывают делать log_destination в виде наследника абстрактного класса; впрочем, если нам придется передавать log_destination в виде значения в рантайме, то это уже не традиция, а скорее необходимость (хотя, при особом желании, можно замутить что-то подобное с шаблонным аргументом, но это будет abuse)

ME>>по преимуществам и недостаткам трех способов уже можно говорить осмысленно

M>И по ним же можно составить правила (которые не обязаны быть строгими , но легко понятными)

ну попробуй; если у тебя получится -- я порадуюсь, но по-моему ты обламаешься

плясать со стороны достоинств и недостатков куда легче, чем сочинить и/или помнить эти правила, и плясать от правил

достоинства и недостатки я (частично) описал в http://www.rsdn.ru/forum/job/4638621.1.aspx
Автор: m e
Дата: 28.02.12
Re[5]: Задачи для собеседования.
От: minorlogic Украина  
Дата: 28.02.12 13:04
Оценка:
Здравствуйте, m e, Вы писали:

ME>традиции предписывают делать log_destination в виде наследника абстрактного класса; впрочем, если нам придется передавать log_destination в виде значения в рантайме, то это уже не традиция, а скорее необходимость (хотя, при особом желании, можно замутить что-то подобное с шаблонным аргументом, но это будет abuse)


Откровенно, аргументация "такая традиция" меян бы сильно смутила. А если сущетсвуют другии критерии на основе которых многие принимают схожие решения ?
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[4]: Задачи для собеседования.
От: m e  
Дата: 28.02.12 13:08
Оценка:
M>Мне бы понравились подобные рассуждения в контексте ответа на вопрос. Видно направления мысли , опыт использования, и т.п.

ха

я чуть ли не 15 минут сидел и думал, какие такие правила ты хочешь от меня услышать

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

а вообще, конечно, хорошо было бы иметь язык, в котором эти правила бы имелись, так что твоя цель их обсуждать -- достаточно благородная
Re[6]: Задачи для собеседования.
От: m e  
Дата: 28.02.12 13:22
Оценка:
M>Откровенно, аргументация "такая традиция" меян бы сильно смутила. А если сущетсвуют другии критерии на основе которых многие принимают схожие решения ?

вот и прекрасно

давай мы не торопясь, со вкусом обсудим эту тему

да, я считаю, что "такова традиция" -- это основной или первый аргумент; далее идут аргументы, специфичные для проекта, которые могут заставить принять решение, отличающиеся от традиционного

понятно, что в любом случае фундаментальными целями является максимальная проверка правильности программы компилятором, понимабельность ее людьми и легкость выполнения людьми требований, не проверямых компилятором, но выливаться все это может в т.ч. и в нетрадиционное решение (хотя, скорее всего, редко)
Re[4]: Задачи для собеседования.
От: ArtemGorikov Австралия жж
Дата: 28.02.12 14:17
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Здравствуйте, landerhigh, Вы писали:


L>>Ты будешь смеяться, но у меня в резюме практически так и написано. На поток желающих предложить очередную "once in a lifetime opportunity" никак не повлияло, надмозгов с гномиками, сортировками, недо-брайнбенчами и прочей ересью как отрезало.


ПМ>Ну да, ни одна приличная контора таких капризных девочек приглашать не станет, потому что следующей предьявой будет "отказываюсь тестировать свой код",

Нанимай тестеров

ПМ>"отказываюсь приходить на работу вовремя"

За обоздание на 2 минуты штраф 2 доллара, норма выработки баго-форм в день?
Re: Именованные свойства в базе данных
От: os24ever
Дата: 28.02.12 15:58
Оценка:
И вот такой вопрос
Автор: os24ever
Дата: 28.02.12
. Кажется, что это ещё страшнее, чем указатели, но знатоки SQL легко пройдут этот тест — и таблицы нарисуют, и запросы напишут.

Сам не считаю себя знатоком БД, просто язык SQL люблю.
Re[2]: И ещё, и ещё...
От: os24ever
Дата: 28.02.12 16:09
Оценка:
И ещё
Автор: Handie
Дата: 24.02.12
, и ещё
Автор: os24ever
Дата: 24.02.12
, нет им числа
Re[2]: Оно же для битардов...
От: os24ever
Дата: 28.02.12 16:19
Оценка:
А вот вариант той же задачи для битардов. Лэйн Ивакура хранит Вселенную в виде S-выражений:
(Вселенная
    (Галактика
        (Звёздочка (Планета) (Планета) (Планета))
        (Звёздочка (Планета) (Планета) (Планета))
    )
    (Галактика
        (Звёздочка (Планета) (Планета) (Планета))
        (Звёздочка (Планета) (Планета) (Планета))
    )
)

Помогите ей преобразовать эту Вселенную в SQL, нарисуйте ER-диаграмму.
лэйн ивакура lain iwakura
Re[8]: Задачи для собеседования.
От: Vladek Россия Github
Дата: 28.02.12 16:21
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Здравствуйте, os24ever, Вы писали:


M>>> Пока есть положительный сдвиг , но очень малый (как по мне).


O>>Можно было бы добавить параметры: временная зона, локаль и т.д.


O>>Но задание на сеньёра, поэтому сеньёр так делать не хочет. Он помнит, что он где-то когда-то уже видел, что всё это задавалось в переменных окружения или в файлах настроек (и язык и кодировка тоже).


M>Это уже НАМНОГО ближе к идеальному с моей точки зрения ответу.


Дык время как угодно можно хранить, если требования позволяют (забить на переполнение, локали) — в твоём случае просто требования скрыты и программисту приходится гадать. Требования в исходной задачи указаны минимальные.
Re[7]: Задачи для собеседования.
От: Паблик Морозов  
Дата: 28.02.12 17:24
Оценка:
Здравствуйте, m e, Вы писали:

ME>... или московском офисе в гугля -- там тоже емнип можно приходить на работу в любое время


Но там нужно решать задачи про гномиков, тестировать код и согласовывать кучу фигнюшек, перед тем, как выпустить что-то в продакш. И еще, туда не берут "девочек", там работают только сильные, целеустремлённые программисты.
Re[5]: Задачи для собеседования.
От: Паблик Морозов  
Дата: 28.02.12 17:30
Оценка: +1 -1
Здравствуйте, ArtemGorikov, Вы писали:

ПМ>>Ну да, ни одна приличная контора таких капризных девочек приглашать не станет, потому что следующей предьявой будет "отказываюсь тестировать свой код",

AG>Нанимай тестеров

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

ПМ>>"отказываюсь приходить на работу вовремя"

AG>За обоздание на 2 минуты штраф 2 доллара, норма выработки баго-форм в день?

И на тех, которые не понимают зачем приходить на работу вовремя — тоже. Вообще не представляю, как взрослый человек может быть настолько инфантильным и безответственным.
Re[2]: Именованные свойства в базе данных
От: Паблик Морозов  
Дата: 28.02.12 17:47
Оценка:
Здравствуйте, os24ever, Вы писали:

O>Сам не считаю себя знатоком БД, просто язык SQL люблю.


Реализация EAV поверх РСУБД — это хороший детектор, позволяющий увидеть ушибленных на голову SQL-ем и недопустить их в проект.
Re[3]: Именованные свойства в базе данных
От: Lloyd Россия  
Дата: 28.02.12 17:49
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

O>>Сам не считаю себя знатоком БД, просто язык SQL люблю.


ПМ>Реализация EAV поверх РСУБД — это хороший детектор, позволяющий увидеть ушибленных на голову SQL-ем и недопустить их в проект.


Что предлагаете взамен для решения той задачи?
Re[4]: Именованные свойства в базе данных
От: Паблик Морозов  
Дата: 28.02.12 18:29
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Паблик Морозов, Вы писали:


O>>>Сам не считаю себя знатоком БД, просто язык SQL люблю.


ПМ>>Реализация EAV поверх РСУБД — это хороший детектор, позволяющий увидеть ушибленных на голову SQL-ем и недопустить их в проект.


L>Что предлагаете взамен для решения той задачи?


Первое, что я предлагаю, это rethink the whole thing. Потому что

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


это не задача, а уже набросок какого-то решения, который может быть в корне неверным. А изгаляться по-всякому можно, но надо ли?
Re[6]: Задачи для собеседования.
От: landerhigh Пират  
Дата: 29.02.12 00:33
Оценка: +1 :)
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Здравствуйте, ArtemGorikov, Вы писали:


ПМ>>>Ну да, ни одна приличная контора таких капризных девочек приглашать не станет, потому что следующей предьявой будет "отказываюсь тестировать свой код",

AG>>Нанимай тестеров

ПМ>На программистов, которые думают, что ответственность за качество кода лежит на тестеров, я бы предпочел вообще не тратить ни минуты времени.


Так ты сам таких программистов придумал. Какие-то предъявы сам себе сочинил. Рановато тебе собеседования проводить, рановато.

ПМ>>>"отказываюсь приходить на работу вовремя"

AG>>За обоздание на 2 минуты штраф 2 доллара, норма выработки баго-форм в день?

ПМ>И на тех, которые не понимают зачем приходить на работу вовремя — тоже. Вообще не представляю, как взрослый человек может быть настолько инфантильным и безответственным.


А что, для программистов апофеозом ответственности нынче считается быть на работе ровно в девять нуль-нуль, гладко выбритым и в костюме с галстуком?
www.blinnov.com
Re[3]: Оно же для битардов...
От: SkyDance Земля  
Дата: 29.02.12 01:17
Оценка:
O>
O>(Вселенная
O>    (Галактика
O>        (Звёздочка (Планета) (Планета) (Планета))
O>        (Звёздочка (Планета) (Планета) (Планета))
O>    )
O>    (Галактика
O>        (Звёздочка (Планета) (Планета) (Планета))
O>        (Звёздочка (Планета) (Планета) (Планета))
O>    )
O>)
O>

O>Помогите ей преобразовать эту Вселенную в SQL, нарисуйте ER-диаграмму.

О, кстати, отличная, я бы сказал, классическая задача. В том смысле, что в большинстве случаев сформулирована некорректно. Потому что условие не содержит объяснения, ЗАЧЕМ нужно из дерева составлять таблицы.
В более широком смысле эта задача переходит в "спроектируйте мне ORM".
Re[3]: Оно же для битардов...
От: landerhigh Пират  
Дата: 29.02.12 02:35
Оценка:
Здравствуйте, os24ever, Вы писали:

O>
O>(Вселенная
O>    (Галактика
O>        (Звёздочка (Планета) (Планета) (Планета))
O>        (Звёздочка (Планета) (Планета) (Планета))
O>    )
O>    (Галактика
O>        (Звёздочка (Планета) (Планета) (Планета))
O>        (Звёздочка (Планета) (Планета) (Планета))
O>    )
O>)
O>


А как записать систему с двойными звездами?
www.blinnov.com
Re[6]: Задачи для собеседования.
От: m e  
Дата: 29.02.12 08:42
Оценка:
M>Откровенно, аргументация "такая традиция" меян бы сильно смутила. А если сущетсвуют другии критерии на основе которых многие принимают схожие решения ?

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

традиция, скорее, состоит в том, какого объема ставить себе задачу

рассмотрим тот же log_destination

задачи можно поставить в двух объемах:

1. традиционная -- мы согласны на то ограничение, что log_destination будет конкретным потомком абстрактного класса; в случае, когда этих вариантов назначения лога будет немного (высокая вероятность), то это вполне пригодный вариант

2. расширенная -- мы хотим, чтобы log_destination был объектом любого такого класса SomeClass, для которого (почти) любой класс T имеет

template<class T> SomeClass operator << ( SomeClass, const T& )


или еще раз по русски -- если для класса SomeClass имеется вышеупомятнуый шаблонный оператор, то SomeClass *должен* быть вариантом для log_destination

вариант 2 обычно является переусложнением, но вполне могут быть обстоятельства, когда нужен именно он
Re[6]: Задачи для собеседования.
От: m e  
Дата: 29.02.12 08:56
Оценка:
так что разница в дизайне "log_destination делаем в виде классовой иерархии, а потоки в виде (условно скажем) шаблонного оператора" имеется,

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

в то время как достоинства и недостатки языковых средств весьма близки к объективным -- в особенности ответ на вопрос "проверяет ли эту хрень компилятор" на 99% объективен (оставшиеся 1% необъективности отнесен на случай возможности проверки только с помощью переусложненных шаблонов)
Re[8]: Задачи для собеседования.
От: m e  
Дата: 29.02.12 08:58
Оценка:
ME>>... или московском офисе в гугля -- там тоже емнип можно приходить на работу в любое время

ПМ>Но там нужно решать задачи про гномиков, тестировать код и согласовывать кучу фигнюшек, перед тем, как выпустить что-то в продакш. И еще, туда не берут "девочек", там работают только сильные, целеустремлённые программисты.


что-то подозрительно лексика напоминает лексику успешных менеджеров...

кстати, а кто такие "девочки" -- это те, кто отказывается приходить на работу вовремя?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.