The bad, the good and the Haskell
Sep. 20th, 2007 01:06 pmВынесу-ка я это из глубокого треда, может получиться флейм, а флейм это хорошо.
ifp5 пишет:
Реально проблема есть только одна единственная (и она та же самая что препятствует использованию OCaml, Haskell, LISP и пр) - что решение выбора языка принимают люди (такие бывают толстые и важные начальники), которые уже решили, что проект будет на жабе. Никаких других проблем в использовании шарпа (или хаскеля) нет.
Ну это на самом деле далеко не так. Это черезвычайно распространенное мнение, которое на самом деле базируется на такой красивой гиковской картине мира, в которой есть good programmers and evil managers. И все плохое проистекает из менеджеров, а все хорошее пишется умными программистами, которые вникают в проблему с полувзгляда и выбирают идеальный инструмент.
Попробуйте написать полезную программу на лиспе и продать ее пользователям (продать в широком, хорошем, смысле - пусть даже и забесплатно). Чтобы она была как программа на С++/Win32 или там на сишарпе/дотнете. Чтобы у нее был гуй, какой модно в этом сезоне (совершенно необязательно, кстати, чтобы он был один в один стянут с последнего оффиса), чтобы у нее был нетворкинг, чтобы она работала с трехмерной графикой под DX9/10 и использовала многоядерные процессоры. По-моему я описал гамез, сам того не желая, ну да ладно. Пусть это будет не гамез, а САПР.
Ровно та же самая проблема у всех на свете "скриптовых языков, лучших чем Перл". Они все безусловно лучше чем Перл (трудно быть хуже с точки зрения среднего программиста), но у перла есть CPAN. End of story here.
P.S. Всех, кто напишет что у Автокада в пузе как раз лисп - сразу забаню. Настолько short minded тут не нужны :-)
Реально проблема есть только одна единственная (и она та же самая что препятствует использованию OCaml, Haskell, LISP и пр) - что решение выбора языка принимают люди (такие бывают толстые и важные начальники), которые уже решили, что проект будет на жабе. Никаких других проблем в использовании шарпа (или хаскеля) нет.
Ну это на самом деле далеко не так. Это черезвычайно распространенное мнение, которое на самом деле базируется на такой красивой гиковской картине мира, в которой есть good programmers and evil managers. И все плохое проистекает из менеджеров, а все хорошее пишется умными программистами, которые вникают в проблему с полувзгляда и выбирают идеальный инструмент.
Попробуйте написать полезную программу на лиспе и продать ее пользователям (продать в широком, хорошем, смысле - пусть даже и забесплатно). Чтобы она была как программа на С++/Win32 или там на сишарпе/дотнете. Чтобы у нее был гуй, какой модно в этом сезоне (совершенно необязательно, кстати, чтобы он был один в один стянут с последнего оффиса), чтобы у нее был нетворкинг, чтобы она работала с трехмерной графикой под DX9/10 и использовала многоядерные процессоры. По-моему я описал гамез, сам того не желая, ну да ладно. Пусть это будет не гамез, а САПР.
Ровно та же самая проблема у всех на свете "скриптовых языков, лучших чем Перл". Они все безусловно лучше чем Перл (трудно быть хуже с точки зрения среднего программиста), но у перла есть CPAN. End of story here.
P.S. Всех, кто напишет что у Автокада в пузе как раз лисп - сразу забаню. Настолько short minded тут не нужны :-)
no subject
Date: 2007-09-20 11:28 am (UTC)no subject
Date: 2007-09-20 12:02 pm (UTC)Когда задача позволяет брать не сильных программеров, то не имеет смысла брать сильных программеров.
А большинство задач позволяет-таки брать не сильных программеров.
PS: немного поясню, если непонятно моё мнение - для сильного программера язык важен чисто эстетически, но не практически. Питон изучается за месяц, а работают люди годами. Сам код (набор классов/функций/etc) является языком, изучить который в случае C++ может быть сложнее, чем весь питон как язык. Когда же сложность ещё и на уровне концепций/алгоритмов, то собственно язык вообще отходит на пятый план.
PPS: при прочих равных я выберу контору, в которой пишут на лиспе, просто мне так приятнее. Также я выберу контору, офис которой ближе к моему дому - мне тоже так приятнее. Почему меня страшно брать на работу?
no subject
Date: 2007-09-20 12:09 pm (UTC)А с теми, кто решает по абстрактной "хорошести" языка, у нас скорее всего будут серьезные расхождения и в других областях. Не хочу нанимать себе проблемы.
no subject
Date: 2007-09-20 01:16 pm (UTC)PS: я бы не сказал, что у лиспа абстрактная хорошесть. Мне реально там очень комфортно, в отличие от других языков.
no subject
Date: 2007-09-20 01:31 pm (UTC)no subject
Date: 2007-09-20 01:32 pm (UTC)no subject
Date: 2007-09-20 03:22 pm (UTC)...А лиспы изучаются за пару часов.
Боюсь, что это популярное заблуждение. У каждого языка свой набор идиом, cвой стиль, cвой way-of-doing-things. И он изучается постепенно, годами разработки. Правила шахмат можно объяснить за пару минут, научится играть умно - нужно очень долгое время (это не я придумал эту аналогию, я её стащил из sicp-a). Это косвенно связано с проблемой в заглавном посте. Найти гика, который за ночь зафанател от Хаскелла - нет проблем, найти человека, который глубоко понимает идиоматику Хаскелла - крайне сложная задача. И её решение имеет больше накладных раходов, чем предоставляет преимуществ более короткий код какого-нибудь квиксорта :)
no subject
Date: 2007-09-21 05:00 am (UTC)На scheme можно начать писать и править баги реально через неделю (проверено). Нормально писать - через месяц-полтора. Хорошо - хз когда (я больше полугода уже наверное пишу, но не могу сказать, что делаю это хорошо).
Но неважно, хорошо ли я пишу на scheme или нет. Важен результат.
Я не фанатик, и в сказки не верю (например, я до сих пор не верю в хаскель, потому что У МЕНЯ не получается на нём что-то серьёзное писать). Я сейчас пишу одновременно на PHP и на scheme. И scheme намного эффективнее, хотя знаю я scheme наверняка хуже, чем PHP (семь лет и полгода - есть разница?).
Проект на PHP за три года я не смог вылизать так, чтобы там не было критичных багов (а всего там нашли около 300 серьёзных багов по функциональности).
Проект на scheme, который решает ровно ту же задачу (точнее, он решает побольше задач, но зато в нём нет GUI), что и проект на PHP, был написан за полтора месяца, и за полгода использования в нём не найдено ни одного бага по функциональности.
Это просто факты.
no subject
Date: 2007-09-20 06:13 pm (UTC)А большинство задач позволяет-таки брать не сильных программеров
Как будто-бы есть выбор. Взать сильного программиста - удача. Набрать команду сильных программистов - большая удача.
Просто есть задачи, которые можно таки решить, не имея сильных программистов. И есть задачи, за которые без них лучше и не браться.
Но мне очень трудно себе представить задачу, решение которой кому-то нужно, но для решения которой брать сильных программистов нет смысла. Ну если, конечно, задача не звучит как "организовать работу таким образом, чтобы идиотизм большого технического начальства не был виден невооруженным взглядом".
no subject
Date: 2007-09-21 05:26 am (UTC)Можно взять посредственного и вырастить сильного, раз готовых сильных нету.
> Но мне очень трудно себе представить задачу, решение которой кому-то нужно, но для решения которой брать сильных программистов нет смысла.
У каждой задачи есть бюджет. Сильные могут не влезть в этот бюджет (срок найма/взращивания сильного тоже сводится к бюджету). При этом вполне возможно, что эффект от сильного будет такой же, как от слабого (ну например если их посадить набивать текст с голоса, или там писать на PHP ;) ).
no subject
Date: 2007-09-21 10:53 am (UTC)Писать на ПХП тоже можно по разному и я легко могу себе представить когда применение сильного программиста даст вполне реальный выигрыш даже при создании чего-то весьма простого. Просто потому что продукт качественный, дырки какого нужно диаметра, четко где запланировано и не насквозь :-)
no subject
Date: 2007-09-21 11:26 am (UTC)"дырки какого нужно диаметра, четко где запланировано и не насквозь" - ну наверное да, соглашусь. Но всё равно вопрос овчинки и её выделки остаётся актуальным.
no subject
Date: 2007-09-21 11:36 am (UTC)no subject
Date: 2007-09-21 12:11 pm (UTC)В лиспе можно писать в java-style, и будет работать.
(no subject)
From:no subject
Date: 2007-09-21 04:34 pm (UTC)Если заменить слово "посредственный" на слово "молодой", то я согласился бы, пожалуй. Если бы моя компания называлась бы IBM, Microsoft, или, на худой конец, RFMD. Т.е., я располагал бы неограниченным бюджетом и неограниченным временем.
У каждой задачи есть бюджет. Сильные могут не влезть в этот бюджет (срок найма/взращивания сильного тоже сводится к бюджету). При этом вполне возможно, что эффект от сильного будет такой же, как от слабого (ну например если их посадить набивать текст с голоса, или там писать на PHP ;) )
Не, ну мы говорим о программистских задачах, или как?
Что до программистских, то сильный программист обходится в конечном итоге дешевле, чем слабый. Если сильный выдает 10 тыс. строк кода в месяц, делая в среднем одну ошибку на 500 строк, и при этом сам себе еще и архитектуру придумывает, а слабый выдает в месяц пару тысяч строк, с ошибкой в каждой десятой строке, и требует к себе еще и архитектора (а то он такого накодирует), то кого выгоднее брать в плане бюджета? При том что их месячная зарплата у них вряд ли различается более чем в 3-4 раза?
no subject
Date: 2007-09-23 07:00 am (UTC)В плане бюджета нередко ключевым является время найма - пока идёт охота за хорошим программером, можно успеть создать версию 1.0 с помощью слабых, которых много. Если рынок таков, что дата выхода продукта на него важнее качества продукта, то ждать хороших программеров невыгодно.
PS: 10 тысяч строк кода в месяц - это 500 строк каждый рабочий день. Мне почему-то кажется, что хороший программер тем и отличается от кодера, что не является машинисткой, и старается писать кода как можно меньше.
no subject
Date: 2007-09-23 01:11 pm (UTC)Важная заметка на полях: ни я ни Саша не имеем в виду создание овечек долли, типа "магазин-склад" или "вертикальный интернет-портал с горизонтальной специализацией". Это, в общем, совсем другой бизнес, он не о том.
Если хороший программист так сильно старается писать поменьше кода, что кода совсем не пишет - это плохой программист.
no subject
Date: 2007-09-25 04:08 am (UTC)Когда писал на PHP, писал по 700-900 в день.
Конечный результат явно говорит в пользу 200 строк в неделю.
PS: ну да, это конкретно один проект, не стоит наверное распространять опыт на все проекты, но даже логически маленькое количество строк лучше, чем большое.
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-09-25 04:11 am (UTC)no subject
Date: 2007-09-23 04:25 pm (UTC)К слабым нужен сильный архитектор, а его тоже еще поискать...
PS: 10 тысяч строк кода в месяц - это 500 строк каждый рабочий день. Мне почему-то кажется, что хороший программер тем и отличается от кодера, что не является машинисткой, и старается писать кода как можно меньше
Это как раз с учетом пожелания писать кода как можно меньше. Правда иногда вместо кода целевого приложения получается компилятор, который генерирует на выходе целевое приложение :-)
no subject
Date: 2007-09-21 07:35 am (UTC)no subject
Date: 2007-09-21 04:37 pm (UTC)Толпа идиотов может за пару лет запросто довести код написанной до них программы до такого состояния, что проще будет код стереть, диски отформатировать, а всех, кто этот код видел, заслать к врагам в качестве идеологической деверсии, чем поддерживать такую программу дальше.
no subject
Date: 2007-09-21 04:40 pm (UTC)no subject
Date: 2007-09-21 04:43 pm (UTC)(no subject)
From:no subject
Date: 2007-09-20 05:09 pm (UTC)