Мегасрач у 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 в строку - это не паттерн...
no subject
что забавно — он прав: ему действительно надо «работать работу». а на результат и усилия насрать — лишь бы полезная деятельность активно эмулировалась.
алсо, ты говоришь «простой синтаксис» так, как будто это что-то плохое. тем не менее вон авторы Scheme48 взяли Схему, которая совсем уж проста, сделали из неё путём кастрации Pre-Scheme — и получился охуительный байтоёбский инструмент. на этой самой Pre-Scheme написали VM для Scheme48, забив на традиционное применение сей в таких задачах. а Си использовали как и полагается — как ассемблер, компилируя в него Pre-Scheme (потому что в машинный код лениво, зачем, если есть отличный переносимый макроассемблер?).
no subject
То есть, алгоритм схемера такой: берется какой-нибудь максимально примитивный синтаксис, для него пишется конвертер на C. такой конвертер любой сишник назовет скромно кодогенератором. но схемер назовет его компилятором и выпятит груди: "йа компиляторы пишу!"
казалось бы, при чем тут джамшуты...
no subject
не трудно, а нудно. да и зачем, коли уже есть вполне рабочий?
>То есть, алгоритм схемера такой: берется какой-нибудь максимально примитивный
>синтаксис, для него пишется конвертер на C.
а) у Схемы и так примитивный синтаксис, куда уж проще-то? лиспы вообще простые в этом плане — оттуда и их сила;
б) ну с чего ты так решил? разных Схем — 9e+3. какие-то в Си компилят, какие-то в машинный код, какие-то в JVM, .Net и ты пы. а у кого-то вообще байткод.
а с «кодогенератором» не всё так просто, на самом деле. Схема-то язык динамический: прямая и тупая трансляция в Си даст несмешной говнокод. потому в больших Схемах как раз не «кодогенераторы», а весьма серьёзные компиляторы, умеющие и типы выводить, и оптимизировать выходной код так, чтобы сям было удобней, и ещё много разных гитик. попробуй скажи, что Stalin — это такой вот «кодогенератор», а не компилятор. только тихо очень говори, а то конфуз получится. или посмотри на Ikarus, к примеру — там сями не воняло вообще никогда.
странно: вроде бы раньше за тобой не замечалось желания делать скоропалительные выводы. стареешь, что ли?
зыж алсо, написание компилятора Схемы — это вовсе не самоцель. просто это достаточно простая (в общем случае) задача, что иногда действительно удобней быстро накидать свой компилятор под конкретные условия.
плюс — оно полезно: хороший способ понять, что и как в языке происходит, и почему. собственно, вторая часть SICP и описывает сначала metaevaluator, а потом и компилятор Схемы. и это действительно настолько просто, что поначалу даже не верится. особенно тем, кто пытался делать компилятор хотя бы подмножества сей и жестоко посидел на ёжиках в процессе.
алсо, почитай Абдулазиза Гильома (кажется, он так транскрибируется %-): An Incremental Approach to Compiler Construction: весьма доставляющее чтиво.
схемеры в этом плане похожи на фортеров немного: писать компиляторы для Схемы забавно и помогает устаканить понимание. именно потому оно входит в классический курс.
понятно, что сишники охуевают: у них-то компилятор — это что-то из разряда чёрной магии, постичь которую попивая пивко не выйдет. эвон, цельная Драконья Книга написана (очень хорошая, если чо). а всё от того, что базы разные: лямбда-исчисление простое, как тапок, отсюда и трансляция простая достаточно (про оптимизаторы тут не говорим, это совсем другая история; но и они для Схемы как-то попонятней получаются).
no subject
Казалось бы, при чем тут трудноудержимые позывы схемеров написать компилятор для схемы... видимо, нет рабочего. :)
[ странно: вроде бы раньше за тобой не замечалось желания делать скоропалительные выводы. стареешь, что ли? ]
Чья бы корова мычала :)))
no subject
(пошёл досыпать)