Comments: |
Это типа замыкания в нефункциональных языках??
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 17th, 2010 - 09:11 pm |
---|
| | | (Link) |
|
ну, справедливости ради, замыкания не обязательно тянут за собой функциональщину, но тем не менее полезны. тот же JS, например, в силу отсутствия ТСО для функциональщины подходит чуть менее, чем никак, но замыкания там весьма полезны.
однако основной батхёрт даже не в этом. оно позиционирует сей вопрос как «сито на собеседовании». я слабо могу понять, как вообще на собеседование проходит нечто, не знакомое с замыканиями.
ну это смотря куда..
кстати много ли сейчас вакансий настоящего крутого программирования? чтоб на таком уровне, что лисп не знать позор?)
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 17th, 2010 - 09:26 pm |
---|
| | | (Link) |
|
полагаю, что как и всегда — три с половиной на половину глобуса.
From: | (Anonymous) |
Date: | February 17th, 2010 - 09:40 pm |
---|
| | | (Link) |
|
Вот, кстати, в нормальных функциональных языках проблем с пониманием замыканий нет. Ничего особенного и неестественного, даже неудобно заострять внимание на этом.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 17th, 2010 - 10:27 pm |
---|
| | | (Link) |
|
так с ними вообще проблем нет, по-моему. достаточно естественная концепция, как мне всегда казалось (ну ладно, не всегда, а с тех пор, как я о ней узнал).
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | From: | ppkk |
Date: | February 18th, 2010 - 01:50 am |
---|
| | | (Link) |
|
я слабо могу понять, как вообще на собеседование проходит нечто, не знакомое с замыканиями. Это зависит от того, что требуется. Ты же не написал, что за вакансия и т.п., да это и не написать кратко.
Навскидку я могу считать вопрос "ситом" в случае, например, если требуется человек с опытом достаточно хитрой работы с применением Яваскрипта, чтобы защитить себя от каких-нибудь огромных чудовищных ассемблероподобных сценариев. Но тогда нужны и "сита", чтобы он демонстрировал легкоподдерживаемый код и т.п.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 18th, 2010 - 01:55 am |
---|
| | | (Link) |
|
а похуй, какая там вакансия (ну, очевидно, что программер, думаю). это как придёт слесарь и скажет: я умею работать только с ключами на 9, и только конторы «хуйключи». это не слесарь, это по определению ленивое, бесполезное и неумелое говно. зачем такой жопогрей нужен вообще?
да, он может охуительно этим ключом крутить. но если он даже не попытался что-то ещё освоить — он ленивое бесполезное тупое хуйло.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | From: | ppkk |
Date: | February 18th, 2010 - 04:16 pm |
---|
| | | (Link) |
|
Я ни с самой аналогией, ни с выводом отдельно не согласен.
Приведу и сам аналогию, связав заодно с сисадминами из другого обсуждения: если претендент на вакансию не знает, что такое доминант-септ-аккорд, то он ленивое бесполезное тупое
К тому же по твоей логике вопрос как раз нормальный: отсеят ленивое бесполезное тупое
По мне так лучше тестовые задания, например, чем вопросы. Программисты какими я их знаю не слишком образованные и эрудированные люди, если поскрести, окажется, что комбинаторику плохо знают, сложность алгоритмов не умеют оценивать, зачёт по линейному программированию сдали за взятку и т.п., но программы писать могут "на уровне", так что нечего скрести: одно уныние от этого.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 18th, 2010 - 04:29 pm |
---|
| | | (Link) |
|
>К тому же по твоей логике вопрос как раз нормальный: отсеят ленивое бесполезное >тупое… это должно быть отсеяно до собеседования. если оно пробралось на собеседование — такая контора спошь состоит из тупого ебанутого говна.
>Программисты какими я их знаю не слишком образованные и эрудированные люди, если >поскрести, окажется, что комбинаторику плохо знают, сложность алгоритмов не >умеют оценивать, зачёт по линейному программированию сдали за взятку и т.п., но >программы писать могут "на уровне" какой, нахуй, после этого уровень? быдлокодить может кто угодно после недели тренировки. ещё раз подчеркну: цитируемый говорил о программистах, а не о быдлокодерах. от быдлокодера я, конечно, не стану требовать познаний в теории компиляции, лямбда-исчислении и прочем матане. даже не стану спрашивать, что такое «о большое». а то потом ещё офис отчищай после взрыва мозга.
просто один дорогой программист всё равно дешевле ста обезьян, работающих за гроздь бананов. те, кто этого не понимает, или быстро дохнут, или потом вынуждены нанимать ещё более дорогих программистов, которые будут переделывать то, что набыдлокодили обезьяны.
впрочем, есть исключение: успеть построить сеть по впариванию. дебилов на свете много, впаривать можно долго.
и потому люди жили, живут и будут жить в говне. потому что главное не сделать хорошо, чтобы можно было спокойно продавать, а быстро сляпать хуйню и впаривать. так везде, не только в программинге.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | From: | ppkk |
Date: | February 18th, 2010 - 05:13 pm |
---|
| | | (Link) |
|
до собеседования Да, это разумный аспект, который я отчасти упустил. Но "до собеседования" человеку в этом может помочь Википедия какая-нибудь, наверное.
цитируемый говорил о программистах, а не о быдлокодерах Тогда забей, я не понимаю существенной разницы (по причинам, изложенным выше намёками на реальные ситуации из жизни): предыдущий мой собеседник (в реальной жизни), который чётко видел разницу, был слишком безумен, чтобы я мог сейчас рассуждать в таких категориях. Правда, он говорил "кодировщик", а не "быдлокодер".
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 18th, 2010 - 05:34 pm |
---|
| | | (Link) |
|
>Правда, он говорил «кодировщик», а не «быдлокодер». я люблю демосцену, а там «кодер» — весьма уважаемо. бдлокодерам до сценовских кодеров срать кровавм поносом с гвоздями. это так, личные предпочтения терминов.
>Но «до собеседования» человеку в этом может помочь Википедия какая-нибудь, >наверное. если человек озадачился тем, чтобы узнать подобные вещи самостоятельно — он уже не безнадёжен. я же обзываю говном не тех, кто не знает, а тех, кто не знает и знать не желает. незнание само по себе характеристикой не является.
>Тогда забей, я не понимаю существенной разницы сходи на любой форум по похапэ: там быдлокодеры дисцилированные, во всей красе. потом можешь сходить на нульчановский кодач.
From: | alamar |
Date: | February 22nd, 2010 - 02:47 pm |
---|
| | | (Link) |
|
Те, кто знакомы, обычно уже работают, а те, кто незнакомы - год за годом каждый день ходят на собеседования, их этим ситом можно поотсеивать, хотя лучше FizzBuzzом А что такое ТСО?
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 22nd, 2010 - 08:30 pm |
---|
| | | (Link) |
|
ну так их отсеивать надо до собеседований. как профессиональных импотентов.
TCO — tail call optimization, хвостовая рекурсия без расходования стека.
From: | alamar |
Date: | February 22nd, 2010 - 10:43 pm |
---|
| | | (Link) |
|
Согласен.
Где-то обещали, вроде? Но ИМХО в современном ФП уже не столь это важно.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 23rd, 2010 - 03:59 am |
---|
| | | (Link) |
|
э... это в функционалке-то ТСО не важно? O_O королева в охуении.
From: | alamar |
Date: | February 23rd, 2010 - 06:03 pm |
---|
| | | (Link) |
|
А в каких алгоритмах нужна глубокая рекурсия, кроме рекурсивного обхода списка? Факториал чур не считается.
Впрочем, возможно, это меня хаскелл испортил.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 23rd, 2010 - 06:28 pm |
---|
| | | (Link) |
|
интересно знать, как ты сделаешь, например, цикл без рекурсии. или машину состояний. не забываем, что у нас функциональщина — goto нет, мутабельности нет, while нет.
From: | alamar |
Date: | February 23rd, 2010 - 08:26 pm |
---|
| | | (Link) |
|
Цикл? for :: int -> int -> (a -> b) -> [b] То есть, сигнатура функции, которая третьим параметром, может весьма варьировать Например, (a -> st -> (b, st)) для вычислений с состоянием А for такой уже реализуется в жаваскрипте нативно без tail callов.
Для меня FP - это не заёбы с cons и tail call, а map/foldl/композиции функций. Допускаю, что я хиппи.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 23rd, 2010 - 10:04 pm |
---|
| | | (Link) |
|
и ты намекаешь, что вот тут у тебя нет рекурсии? continuations — это тоже такой вид рекурсии, кстати. %-)
From: | alamar |
Date: | February 23rd, 2010 - 10:55 pm |
---|
| | | (Link) |
|
Мне просто кажется, что примитивы могут быть реализованы через неявную итерацию, а в конечном коде очень уж глубокая и быстрая рекурсия не нужна.
Что значит "всегда"? А без компьютера - тоже например отлично?
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | From: | ketmar |
Date: | February 18th, 2010 - 02:35 pm |
---|
| | | (Link) |
|
кстати, вполне. формальные-то правила есть, кто мешает вычислить функцию и без компа? | |