Или вот, допустим, тесты. Нет ничего уёбищнее тестов. Я говорю не о unit-тестах, хотя они тоже весьма неоднозначны. И не о тестах на беременность, хотя тоже приятного мало. Говорю о тестах на так называемые «знания». Особенно для программистов.
Внимание вопрос: что вернёт следующий код?
(++i) - (i++) * (--b) + (b = 5) - (i = 6)
Единственный вменяемый ответ здесь может быть: а с какого вообще хуя мне это знать?!
Это не тест на программиста. Это не тест даже на кодера. Это тест на то, являюсь ли я машинным транслятором. А нахуй мне им являться? Трансляторы сегодня дёшевы, им много не платят.
i++ и ++i увеличивают i на единицу. Один из них возвращает значение i до увеличения, другой уже увеличенное. По-моему i++ возвращает исходное значение. А может нет. Я не помню точно, я давно не использовал возвращаемое инкрементом значение. Потому что я давно прошел этап «а давай сделаем код как можно короче, чтобы в нём вообще нихуя не было понятно».
Почему я должен держать в памяти значения нескольких переменных, последовательность комманд и выполнять их одну за другой? Может я вчера вечером водку кушал и мне сейчас тяжело этим заниматься.
Ладно, 5% подобных вопросов в тестах вполне в тему. Но посмотрите кругом, их везде по 95.
В стародавнии времена у меня в универе подобное было: «напишите код программы на бумажке». А потом: «ай-я-яй, я-я, я-яй, вы пропустили здесь точку с запятой». Блядь, почему я должен помнить о точке с запятой? За компом я её автоматически ставлю и не задумываюсь. А если забуду, компилятор напомнит и через секунду поставлю, на логику программы это никак не повлияет. Нет, блядь, вы забыли точку с запятой, забыли, а-я-яй.
Ладно в универе пердуны старые, которым ничего не нужно. И я трояк свой получил и мне тоже ничего не нужно. Но люди, которые берут на работу программистов, собираются платить им деньги, ставить доход конторы в зависимость от их работы. И эти люди проверяют их знания подобной ёбаной хуйнёй?
Вот D. Baranovskiy недавно опубликовал тест по JS под названием «Чобля, думаешь больше других знаешь?». Тест небольшой и достаточно интересный. Один из вопросов:
function a(x) { return x * 2; } var a; alert(a); |
Непосвящённые решат, что здесь сначала создаётся функция a(), потом управление доходит до var a, после чего либо функция заменяется на переменную, либо наступает конец света. Более шаристые ребята в курсе, что контекст создаётся сразу при вызове функции и все определённые в ней функции и переменные доступны сразу же. Сначала создадутся все переменные, соответствующие статически объявленным функциям, потом все переменные объявленные через var.
И здесь вопрос: а не перекроет ли var-определение определение function-declaration. А вот этого никто почти не знает, потому что никого это не ебёт. Приспичит выяснить все тонкости — можно почитать стандарт ECMA. Не приспичит, но интересно — просто запустить приведённый код.
Скорее всего var не перекроет function и alert покажет определение функции. А может перекроет. В итоге опять приходится угадывать. То есть человек, знающий про фишки с контекстом здесь ничуть не в лучшем положении, чем зелёный новичок.
Ответный вопрос — а чо ты типа умный такой предлагаешь в качестве тестов для программистов?
А ничего не предлагаю. В жопу тесты. В крайнем случае в виде: вот код, вот результат, а теперь словами объясните мне почему он таковой. А никак не выберите между A, B, C и D.
Ага, +1
adw0rd, 20.04.2009, 23:44
ZCE все равно рулит. И ниипет ;)
dallone, 21.04.2009, 7:21
зце таже хуйня как и все
зрзвгву, 4.06.2009, 13:31
нахуй такие тесты
alexey_baranov, 19.06.2009, 13:57