Мегасрач у 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
чо те стоит на бумажке накалякать 10 строк =)
no subject
я, кстати, вообще очень плохо ручкой пишу. я мыслю блоками, а не строками, и на листочке привычно сначала пишу обрамления блока, а потом долго думаю, как туда строку вставить. мне чо, со своим нетбуком ходить, что ли? так я бы не взял, например, на работу существо, которое по доброй воле дома работает под Slackware, и водружает Слаку на все машины в области досягаемости. %-)
no subject
no subject
no subject
no subject
no subject
no subject
главное тут — это не дать схемерам начать делать Свой Охуенно Крутой И Быстрый Диалект Схемы Для Нашего Проекта. потому что — как показывает практика — в итоге получается очередной монстрокомпилятор Схемы, без доков, с 9e+3 фичами, а проект так никто писать и не начинает: «ну щаз, вот ещё чуть-чуть компилятор допилим, и быстро напишем ваш сраный проект, ну чего пристали-то с ерундой всякой?!»
кстати, трёх схемеров нанимать тоже не надо: двое ещё как-то могут договориться, а трое сначала будут долго выяснять, какой именно компилятор Схемы наиболее крут, а потом плюнут на всё и сядут писать свой. и см. выше.
no subject
no subject
no subject
no subject
из забавных — могу назвать HOP или Roadsend PHP Compiler.
а охуенным для меня продукт будет, например, потому, что я буду иметь бесплатный REPL. то бишь, возможность вломиться в работающую систему и посмотреть, что там пошло не так, на реальном работающем релизе, в realtime, а не в криптологах/криптодампах при помощи libthelepaty и libtimemachine. плюс — инкрементальное построение продукта («дунул-придумал-написал-проверил»).
думаешь, откуда в современных игрушках все эти «консоли»? оттуда, что надо иметь возможность «подёргать за потроха», а язык не позволяет. в Схеме же я имею внутри продукта полную и рабочую Схему, доступ ко всем нужным переменным, возможность позвать любую функцию и ты пы. а также, например, немаловажную возможность тупо переопределить пару функций, не останавливая весь продакшн — что важно для мелких багофиксов: не надо ждать очередного релиза и тормозить рабочий процесс при его накатывании, достаточно просто запустить на самом продукте мелкофайл и работать себе дальше.
плюс, конечно, совершенно убойная выразительность языка и возможности метапрограммирования — тут все «мэйнстримовые» языки атомно отсасывают.
при всём при этом, к сожалению, я почти не пишу на Схеме. потому что найти людей, для которых «функциональное программирование», «лябмда-исчисление», «immutable structures», «state-less programs» и ты пы не просто фоновый шум, а осмысленые словосочетания, весьма сложно (или весьма дорого %-).
no subject
no subject
Лисп (и Схема в частности) далеко не экзотика. просто они идут вразрез с современной IT-индустрией, где совершенно не нужны думающие и понимающие, а нужны высиральщики кода. ну, that's life. понятно, что один хороший лиспер стоит по деньгам как пара десятков обезьян (и выше). понятно, что выкинуть его и взять другого — напряжно, это не обезьяны, которых на каждом углу пучок за пятак. понятно, что на модные базворды он срать хотел с колокольни. а то, что стоимость поддержки обезьяновысеров с лихвой перекроет деньги, потраченые на лиспера — это до манагеров не доходит, потому что в программерской области они не смыслят ни хуинки (гы, многие до сих пор уверены, что если в проект, который пролажал все сроки, нанять 50 обезьян заместо десяти, то проект зарелизится в пять раз быстрее). ну, и так далее.
скука, в общем, это всё — везде так, на самом деле. нанимают джамшутов, а потом удивляются, что стены косые, потолки падают, а сетевые кабеля разведены как угодно, только не так, как надо было. зато дёшево, хуле. умных слов не говорят, поставили — сразу, типа, «работают». было бы смешно, если бы рыдать не хотелось.
кстати, о Лиспе: Emacs. то, что у него марсианские кнопкобиндинги — ерунда, это можно поправить в пару минут (хоть и не надо, потому что они достаточно удобны). аналогов-конкурентов реально нет.
no subject
да... это к вопросу, зачем переписывать весь код на схему, ага ;)))))
no subject
штука же в том, что обезьян-байтоёбов выращивать выгодно. это дёшево и даёт неисчерпаемый ресурс джамшутов. именно потому в MIT, например, заменили Схему на бидон: «творцы нам тут нахуй не нужны. Криэйтором, Вава, криэйтором.»
no subject
Другие языки из перечисленного списка столь же фееричны?
no subject
а Forth, например, отлично для однокристалок подходит. Схема тоже, но в это не все верят. %-)
но с точки зрения обезьяны-императивщика — фееричны все, да. у обезьяны от них заклинивает череп и начинается словоизвержение на тему «это высоколобая хуйна, а нам работу работать надо».
no subject
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
(пошёл досыпать)