Мегасрач у belnetmon
На 500+ комментариев:
http://belnetmon.livejournal.com/1024560.html
Для непрограммистов объясняю суть: при собеседовании на работу программиста человеку предлагается пройти тест: написать реальную простенькую программу и посмотреть, получится ли у него.
Казалось бы, что в этом требовании такого странного? Реакция, однако, забавная. В тему набежало некоторое количество мутных личностей, которые стали писать о том, что предлагаемые задачи недостаточно простые или недостаточно стандартные.
Мне кажется, что суть проблемы такова: некоторые мои коллеги учатся не столько программировать, сколько красиво гнуть пальцы. Человек помнит огромное количество всяких продуктов, языков и систем. Но знания кандидата по каждому пункту укладываются в 1-2 абзаца. Это значит, что на собеседовании он легко может поддержать беседу о данной системе, но вот написать что-то реальное - фиг.
Я называю этот типаж "эрудитом".
Если попросить эрудита написать программу типа описанной в тесте, то он будет
- Два дня читать документацию
- Два дня гуглить
- Два дня шариться по форумам
- К началу следующей недели он найдет-таки на каком-то форуме подходящую программу, скопипастит ее, и она заработает.
При этом эрудит будет страшно горд теми фактами, что:
1. Он не изобрел велосипед (ибо изобретать велосипед неправославно).
2. Он использовал проверенный, работающий код - ибо все, что опубликовано в инете, в понимании эрудита работает идеально. В отличие от сделанного руками (см п.1)
3. Он сэкономил работодателю кучу бабок, так как см. пункт 1.
Особо продвинутый эрудит способен обернуть найденную копипасту в "паттерн". Как правило, результат от этого потеряет в качестве. Но эрудит будет убежден, что результат, напротив, приобретет дополнительные магические свойства типа "расширяемость +5". Просто потому как в книжках про "паттерны" много говорится про такие вещи. Поэтому всякий паттерн - это сразу большой плюс, а любой код, в котором эрудит сходу не увидит один из 20-30 знакомых паттернов, есть неправославный велосипед и должен вместе с афтаром гореть в аду.
Например, преобразование int в строку - это не паттерн...
http://belnetmon.livejournal.com/1024560.html
Для непрограммистов объясняю суть: при собеседовании на работу программиста человеку предлагается пройти тест: написать реальную простенькую программу и посмотреть, получится ли у него.
Казалось бы, что в этом требовании такого странного? Реакция, однако, забавная. В тему набежало некоторое количество мутных личностей, которые стали писать о том, что предлагаемые задачи недостаточно простые или недостаточно стандартные.
Мне кажется, что суть проблемы такова: некоторые мои коллеги учатся не столько программировать, сколько красиво гнуть пальцы. Человек помнит огромное количество всяких продуктов, языков и систем. Но знания кандидата по каждому пункту укладываются в 1-2 абзаца. Это значит, что на собеседовании он легко может поддержать беседу о данной системе, но вот написать что-то реальное - фиг.
Я называю этот типаж "эрудитом".
Если попросить эрудита написать программу типа описанной в тесте, то он будет
- Два дня читать документацию
- Два дня гуглить
- Два дня шариться по форумам
- К началу следующей недели он найдет-таки на каком-то форуме подходящую программу, скопипастит ее, и она заработает.
При этом эрудит будет страшно горд теми фактами, что:
1. Он не изобрел велосипед (ибо изобретать велосипед неправославно).
2. Он использовал проверенный, работающий код - ибо все, что опубликовано в инете, в понимании эрудита работает идеально. В отличие от сделанного руками (см п.1)
3. Он сэкономил работодателю кучу бабок, так как см. пункт 1.
Особо продвинутый эрудит способен обернуть найденную копипасту в "паттерн". Как правило, результат от этого потеряет в качестве. Но эрудит будет убежден, что результат, напротив, приобретет дополнительные магические свойства типа "расширяемость +5". Просто потому как в книжках про "паттерны" много говорится про такие вещи. Поэтому всякий паттерн - это сразу большой плюс, а любой код, в котором эрудит сходу не увидит один из 20-30 знакомых паттернов, есть неправославный велосипед и должен вместе с афтаром гореть в аду.
Например, преобразование int в строку - это не паттерн...
Re: int в строку
такой компилятор надо аккуратно собрать в архив, а архив уничтожить.
кстати, ругань компиляторов по поводу const считаю совершенно идиотской: по-сути, компилятор заставляет меня делать то, что может и сам. у любого приличного компилятора хватает мозгов понять, что параметр не меняется — ну и делай себе код, чего материться-то? но нет, какой-то мудак посчитал, что это, де, понизит качество кода. я с нетерпением жду, когда же аффтары компиляторов наконец додумаются выкинуть из них кодогенераторы, а то что-то людишки совсем разбаловались. пусть переводят высокоуровневый код в машинный руками, а задача компилятора будет — проверить перевод и выдать 9e+3 варнингов, но ни в коем случае не поправлять ничего.
no subject
Если бы компилятор это проверял, тогда после любого изменения в функциях, которые действительно изменяют параметр, пришлось бы перепроверять все файлы, откуда такие функции вызываются - а не было ли там вызовов с const, которые полагались на то, что функция параметр не изменит.
Сам же на стенку от тормозов и полезешь :)
no subject
хотя, конечно, тонкая настройка варнингов решает, да и я сам везде консты леплю, факт. привычка осталось ещё со времён очень тупых компиляторов, которые часто генерили лучший код, если const зафигачить.
но всё это, опять же, не отменяет того, что у компилятора должен быть нормальный lint-режим, в котором он не идиотскими варнингами будет верещать, а нежно советовать: «вот тут const поставь, чувак. а вот тут у тебя простыня на 25 экранов с охуенным LOC, сделай с ней что-нибудь!» и ты пы.
no subject
гы гы гы :))
no subject
no subject
а если у меня не прокатывает, я посылаю компиллятор нахуй и делаю так
void fun(const int * k)
{
int * t=NULL;
__asm
{
push k
pop t
}
t[0]=30;
}
а когда происходит ошибка выполнения в прикладном коде, ну что - ну и отлаживаю полной трассировкой. Мало ли там каких квалификаторов понапридумывали!
Когда мне надо иметь один экземпляр буфера, а не копировать его я его именно передаю.
no subject
void fun(const int * k)
{
int* t= (int*)k;
t[0]=30;
}
и фсё
no subject
Re: int в строку
Re: int в строку
Re: int в строку