LINUX.ORG.RU

[ФП][LISP] С чего начать?

 


1

1

Недавно узнал, что на нашей специальности ФП преподавать не будут. Считаю это крайне неверным ходом, по-этому хочу взять всё в свои руки.

С чего лучше всего начать изучать ФП (с нуля)? Думается, что для общего развития будет полезно осилить LISP.

PS На других языках программировал, матан сдавал :)

★★★★★

Ответ на: комментарий от Rastafarra

> есть мнение что чтение хороших сырцов ведет к просветлению, не?

Ну и пусть смотрит хорошие сорцы, в студии-то ему зачем ковыряться?

Вообще, комментарий был на реплику про запредельное бабло для студента при использовании технологий MS. Это не так. Другое дело, что SC в приличных универах начинается с математики, ML и имакса, а дальнейший курс лекций традиционно охватывает технологии из мира Unix, а не MS.

Reaper ★★
()
Ответ на: комментарий от Kuka

Убогий дурачок кука, ты конечно не в теме (потому как убогий, и потому как дурачок), но ФП занимает совершенно фундаментальное место в структуре знаний современного человечества. Если бы ты не был необразованным ламеришкой, то знал бы, из чего уши растут у лямбда-исчисления и комбинаторной логики. Это всё - результаты решения задачи обоснования математики. Фундаментальнейшая задача цивилизации. Другая фундаментальнейшая область знания - теория информации, конкретнее, алгоритмическая теория информации, где без ФП тоже совершенно никуда. Можно, конечно, по Колмогорову пытаться ее строить, от машины Тьюринга, но только херово очень получается. У Грегори Чейтина намного стройнее теория вышла.

anonymous
()
Ответ на: комментарий от tailgunner

> Какая прелесть, M$ наконец-то поняла тактику «первая доза - бесплатно».

[ванга] мы ещё дождемся когда они будут таки приплачивать [\ванга]

psv1967 ★★★★★
()
Ответ на: комментарий от anonymous

> Передёргиваешь ведь... сравнение астрологии и ФП в структуре знаний совершенно некорректно

Возможно, я перегнул палку. Но топикстартер явно не из числа тех, кто ищет фундаментальных знаний, стремится познать лямбда-исчисление, комбинаторную логику и теорию информаций. Он же сам сказал: комплексует по поводу того, что не знает Лиспа.

Точно так же комплексует восьмиклассник по поводу того, что у соседа по парте есть айфон, а у него - нет. Так что тут явное стремление к псевдо-ценностям, инспирированное всеобщим хайпом. Отсюда и сравнение с астрологией, не более того.

Kuka ★★
()
Ответ на: комментарий от Kuka

s/теорию информаций/теорию информации/

самопочин

Kuka ★★
()
Ответ на: комментарий от anonymous

Что ты там сказал про Колмогорова, сука анонимная? Это что нужно курить, чтобы противопоставлять его работы Чайтиновским? Пиздец. Молчи лучше.

anonymous
()
Ответ на: комментарий от anonymous

Дурачок, да? Никто ничего не противопоставляет. Колмогоров заложил основы теории, и как это всегда бывает с первыми попытками, использовал для этого неудачный формализм. Чейтин развил теорию, переписав ее на гораздо более адекватный аппарат. Так что бей себя вилкой в глаз, дебил.

anonymous
()
Ответ на: комментарий от anonymous

хайтин был упоротый фрик, свихнувшийся на теореме Гёделя о неполноте

anonymous
()
Ответ на: комментарий от anonymous

А вот «Можно, конечно, по Колмогорову пытаться ее строить, от машины Тьюринга, но только херово очень получается. У Грегори Чейтина намного стройнее теория вышла.» — это кто говорил? Хамить меньше надо. Возможно, у тебя и с восприятием языка какие-то сложности, но читатель воспримет это «херово» именно как противопоставление. А на самом деле работа Чайтина (Хайтина) это сужение первоначальной и далеко не самое блестящее достижение (хотя заметное) в теории информации. И Хайтин не упоротый конечно (выше другой анонимус), но воспринимать его без розовых очков можно и нужно.

Считаю введение К-сложности, она же Algorithmic «Kolmogorov» Complexity (AC), одним из самых высоких пиков математической мысли за всю историю. Есть у AC предшественница, Algorithmic «Solomonoff» Probability (AP), но всё же более существенным был признан вклад Колмогорова. Потом появились ещё Universal «Levin» Search (US) и Algorithmic «Martin-Loef» Randomness(AR). Развитие идёт.

JFYI: вся Agorithmic Information Theory (AIT) базируется именно на этом формализме, который запустил в полёт Колмогоров. С добрым утром. «Херово получается», «неудачный формализм»... просто тихо охуеваю с тебя. Не знаю, где тебе мозги промывали, но явно нужно что-то править в консерватории.

В том числе в AIT укладывается и подход Хайтина с его константой вероятности останова и полировкой «pure lisp». Так вот я интересуюсь: у Хайтина лучший формализм, потому что он тебе лично нравится? Или твоему научнику? И ссылкой не поделишься, где, на какой конференции он признан лучшим? Да если бы ты был прав про «лучший формализм», про сложность Колмогорова и т.п. на фоне более удачной работы уже бы давно забыли.

Короче нефиг обижаться, моя реакция была ответом на твоё хамство и невежество. И бить себя вилкой в глаз не буду. Просто ещё раз рекомендую: завязывай. Ты сюда пальцы гнуть пришёл, или информацией делиться? Тебе самому ещё учиться надо.

Вот я поделюсь, интересующихся призываю почитать и сравнить самостоятельно, книги нарыть можно в инете на раз:

1. Ming Li & Paul Vitanyi, An Introduction to Kolmogorov Complexity and Its Applications

2. А. Н. Колмогоров, Теория информации и теория алгоритмов. М.: Наука, 1987. 304 с.

3. G.J. Chaitin, Algorithmic Information Theory. Third Printing

anonymous
()
Ответ на: комментарий от balodja

Определенно и безоговорочно — Торт.

побольше бы таких тредиков, да

jtootf ★★★★★
()

Вывод из треда таков: специалист в предметной области даст алгоритм - обезьянка закодирует.

III
()
Ответ на: комментарий от anonymous

>но ФП занимает совершенно фундаментальное место в структуре знаний современного человечества

ФП не совместимо с императивными алгоритмами и структурами данных в плане вычислительной сложности (на существующем железе).

результаты решения задачи обоснования математики

Всего лишь полной алгоритмизации.

теория информации, конкретнее, алгоритмическая теория информации, где без ФП тоже совершенно никуда

Что под этим следует понимать? Кодирование можно представить в виде обычного алгоритма. Доказательства свойств и правильности явно за рамками логики первого порядка и ФП.

III
()
Ответ на: комментарий от III

> специалист в предметной области даст алгоритм - обезьянка закодирует.

Не стоит утрировать, кодирование алгоритмов лишь довольно небольшая, и при этом не самая сложная, часть работы программистов. Кроме того, такие эксперты в предметной области, которые могли дать алгоритм, мне не встречались.

Лучший программист, с которым я имел удовольствие общаться, был ведущим в команде из человек 15 - они писал софт, для нашего проектного института. Раз в несколько месяцев он приезжал и собирал требования к следующей версии софта. Он садился с пользователями системы и начинал вместе с ними выполнять их работу, однажды он попал в горячий момент и провёл таким образом вместе с ними почти 24 часа за рутинной работой. Команда под его руководством делала замечательный софт.

Это, собственно, кульминация того, о чём говорил Грэм - сопереживание. Задача хакера, в терминологии Грэма, - понять проблему и предложить хорошее решение, и это и есть самое сложное в разработке. Только большинству разработчиков плевать на пользователей, и поэтому, как бы хорошо они не владели теорией, их используют в качестве «тупо-кодеров» - им просто нельзя доверять более важную и сложную работу.

archimag ★★★
()
Ответ на: комментарий от archimag

ППКС. Настоящий программист должен разбираться в своей предметной области на уровне ее лучших *теоретиков* и на уровне ее лучших *практиков*.

Даже, «алгоритмист». Кстати, именно поэтому наших советских программистов задрачивали математикой: им предполагалось работать в области вычислительной математики (за неимением другой).

А если кто-то программирует в рамках крошечной конкретной задачи или, упаси Боже, в рамках парадигмы или в рамках конкретного фреймворка — это как раз быдлокодер, сменная насадка.

Macil ★★★★★
()
Ответ на: комментарий от archimag

>Не стоит утрировать, кодирование алгоритмов лишь довольно небольшая, и при этом не самая сложная, часть работы программистов.

ну это всё в потреблятском секторе. путь оно там и остаётся. а то навернётся какой-нибудь виндовс терминал из-за вируса, и случится авария, поскольку никто не мог следить за соответствующим процессом.

понять проблему и предложить хорошее решение, и это и есть самое сложное в разработке.

это тоже проблемные области - взаимоотношение с людьми, юзабили, и т.д. в индустрии этим занимают соответствующие люди.

Задача хакера

Мне всегда казалось, что это максимальный профит за минимальный срок. И уж никаких морализмов, особенно в современном понятии данного слова.

III
()
Ответ на: комментарий от III

Но, я вообще-то не об этом хотел сказать, а о том, что предметные области и их анализ, куда включены и дизайн, и психология и алгоритмы, куда важнее умения писать много кода. Его можно нааутсорсить, в потребительском секторе так и делают, а писать много строчек - вот и есть та самая видимость работы, о ней тоже Грэм писал.

III
()
Ответ на: комментарий от III

> взаимоотношение с людьми, юзабили, и т.д. в индустрии этим

занимают соответствующие люди.


Во-первых, у меня очень плохой опыт работы с этими людьми. Всё равно приходилось идти к пользователям и разбираться во всём самому. Это как у нас на кафедре говорили: «если хочешь поставить нормальный эксперимент, то меряй всё сам - а то тебе намеряют...».

Во-вторых, важнейшая черта хорошего программиста - способность к предвидению, что бы заложить в программу возможности по расширению: будешь закладывать их где попало - раздуешь размер и сложность, не будешь закладывать - всё потом придётся переделывать. А способность к предвидению основана на сопереживании, на понимании истинных потребностей и возможных вариантов развития.

В-третьих, Грэм писал о том, что ушёл из yahoo потому, что там были такие люди, а задачей разработчиков считалось тупо реализовывать «придумки» топ-менеджеров. Ему такая работа не нравилась, мне она не нравится тоже.

В-четрвёрых, если вы захотите делать стартап, то таких людей у вас не будет.

Мне всегда казалось, что это максимальный профит за минимальный срок


Слишком абстрактно, что бы можно было о чём либо рассуждать, либо использовать как критерий. Это примерно примерно эквивалентно «миру во всём мире».

archimag ★★★
()
Ответ на: комментарий от archimag

>во всём самому

так никто не работает.

хорошего программиста - способность к предвидению

это ещё большее понимание предметной области нужно. ну и всю архитектуру тоже отдельные люди делают.

если вы захотите делать стартап, то таких людей у вас не будет.

В стартапе главное не код - а идея, то есть предметная область. И прототип. Без первого второго не будет, независимо от квалификации программиста. А с чётким пониманием желаемого результата, что-нибудь всегда получится. Навыки «чистого» программирования не помешают, но это явно на втором плане.

а задачей разработчиков считалось тупо реализовывать «придумки» топ-менеджеров. Ему такая работа не нравилась, мне она не нравится тоже.

Очень немногие могут иметь такой кругозор.

Слишком абстрактно, что бы можно было о чём либо рассуждать, либо использовать как критерий. Это примерно примерно эквивалентно «миру во всём мире».

Далеко нет.

III
()

Кратко резюмируя...

«вы используете максимум два процента от полученных знаний, проблема в том, что

а)в том что никто не знает, какие это будут два процента

б) это будут два процента от имеющихся знаний :)»

psv1967 ★★★★★
()
Ответ на: комментарий от III

> так никто не работает.

так работает весь опенсорс.

это ещё большее понимание предметной области нужно. ну и всю архитектуру тоже отдельные люди делают.

не столько знание предметной области, сколько умение слушать пользователей и хорошо представлять процесс их работы.

paranonymous
()
Ответ на: комментарий от fool_anon

> Наверняка слышал про метод конечных элементов - finite element method. Так вот его автор - по ссылке. Он инженер, потом стал математиком, однако продолжал консультировать на строительствах. Он ученый или инженер?

Чехов писал рассказы, пьесы и в свободное время лечил людей. Он доктор или писатель?

paranonymous
()
Ответ на: комментарий от Macil

> Настоящий программист должен разбираться в своей предметной области на уровне ее лучших *теоретиков* и на уровне ее лучших *практиков*.

Бугага. Ничего, что прогер физически этого не может?

tailgunner ★★★★★
()
Ответ на: комментарий от fool_anon

> Логика намекает, что за такие «или» надо вешать за яйца. Зачем ты это родил?

А зачем ты родил «Он ученый или инженер?»?

tailgunner ★★★★★
()
Ответ на: комментарий от fool_anon

Исключения, как известно, только подтверждают правила, особенно такие редкие ;) Кроме того, времена и требования меняются...

archimag ★★★
()
Ответ на: комментарий от Waterlaz

Именно что SICP не даст императивно писать :)

Или ещё проще. Не используй процедуры, содержащие восклицательный знак в названии. А как это правильно делать - читай в SICP.

naryl ★★★★★
()
Ответ на: комментарий от archimag

>Исключения, как известно, только подтверждают правила

Брехня для домохозяек. И я не говорил про редкие случаи, я сказал про целую школу инженеров, успешно занимавшихся наукой. Кто по-твоему ЦЕРН строил - инженеры или ученые?

fool_anon
()
Ответ на: комментарий от fool_anon

> Кто по-твоему ЦЕРН строил - инженеры или ученые?

Хм, рабочие? А если, серьёзно, то кто? Я полагаю, что проектировали его инженеры под требования учёных. Ибо, во-первых, нужно очень хорошо знать доступные материалы и способности фирм подрядчиков. Во-вторых, нужно очень хорошо знать все существующие нормативы. Там ещё много чего. И я уверен, что сейчас нет ни одного серьёзного учёного, который бы владел конструкторским делом на должном уровне. В этом, кстати, заключается существенная разница с 20-ыми годами.

На космическом предприятии, где я работал, первостепенный фактор проектирования заключался в том, что бы обеспечить возможность реального производства на данном предприятии при должном качестве. Посмотри на пример «Булавы», спроектировали может и хорошо, только сделать качественно не могут.

Это, кстати, фундаментальное отличие - наука стремится к идеалу, а инженерия очень предметна и должна полностью учитывать существующие реали.

archimag ★★★
()
Ответ на: комментарий от archimag

>Это, кстати, фундаментальное отличие - наука стремится к идеалу, а инженерия очень предметна и должна полностью учитывать существующие реали.

Это ты наукой теоретическую науку называешь. Но в экспериментальной всё немного иначе. Какой уж там идеал, хоть что-то бы осмысленное получить для начала, соответствующее теории. Её, эту теорию, ещё может быть уточнять придётся по ходу. А хороший, объяснимый и повторяемый результат в исследовании какого-нибудь тонкого эффекта уже может быть заявкой на промышленное внедрение. Собственно, получением подобного более качественного и стабильного по сравнению с кустарным экспериментом результата и занимаются или исследовательские центры, обычно при крупных фирмах, или же НИИ, работающие на госзаказ.

Ты помнишь, с чего спор начался вообще? Кто-то сказал, что учёные — негодные инженеры. В ответ приводили уже примеры деятельности на стыке, когда нужна квалификация в обеих отраслях. Даже если её не может обеспечить один человек, её обеспечит коллектив. В котором могут быть и те, кто более инженер, и те, кто более учёный. Высокотехнологичные производства так примерно и работают AFAIK. Ты же видел два примера, как ты говоришь, и экстраполируешь этот опыт вообще на всю отрасль. Сомнительно, не перевесит возражений никак.

Так что исходный посыл считаем опровергнутым.

nuffsaid
()
Ответ на: комментарий от nuffsaid

Что-то я особой логики не уловил. Кстати, выше я говорил, что обучался на кафедре экспериментальной физики и вполне себе представляю работу физиков-экспериментаторов (и по работе также приходилось этим заниматься) и знаю, что к промышленному проектированию она не имеет никакого отношения.

Высокотехнологичные производства так примерно и работают


Угу, там я и работал. И научный отдел постоянно срался с конструкторским, ибо не понимали друг друга, плюс каждый себя считал самым важным.

archimag ★★★
()
Ответ на: комментарий от archimag

> Кстати, выше я говорил, что обучался на кафедре экспериментальной физики

Дык, и мне тоже довелось закончить физфак и поработать практически по специальности. У нас, тем не менее, несколько разный взгляд на этот вопрос, дальше что, как это поможет разрешить спор? Ты авторитетом пытаешься давить? Напрасно, я и не таких видел. Без обид, просто это не аргумент.

archimag: знаю, что к промышленному проектированию она не имеет никакого отношения.

nuffsaid: Собственно, получением ... стабильного ... результата и занимаются или исследовательские центры, обычно при крупных фирмах, или же НИИ, работающие на госзаказ.

...а дальше дело попадает уже в промышленность, идёт в серию. (Кстати, промышленное проектирование это далеко не вся инженерная деятельность). Так вот если на выходе из НИИ получается фантастическое нечно, невозможное в производстве, ни в какую серию оно не пойдёт никогда. Так понятна мысль? Никакого отношения — слишком сильно сказано. Они звенья в цепи совершенствования знания о предметной области и создания сопутствующих приборов и инструментов. То, что получено в лабораторных условиях на коленке и с большим трудом, после ряда усилий получается, скажем, внутри некой закрытой коробки легко и просто. Разумеется, чтобы выжать это «легко и просто», нужно поработать. И те, кто знает, в чём тут соль, в такой работе очень кстати. И со стороны науки, и со стороны производства.

И научный отдел постоянно срался с конструкторским, ибо не понимали друг друга, плюс каждый себя считал самым важным.

Может, дело в организации производства, а не в каких-то фундаментаментальных препонах. Плохо, что не понимали. Это, вообще говоря, достижимо. Это уже я видел своими глазами. Генеральный был в курсе и научных, и инженерных вопросов, старался их разруливать. Ну и подчинённые (я в том числе) тоже не так просто погулять вышли. И мы делали не разовую работу. Вначале были конечно НИОКР (R&D), первые блины комом, а через них перешли к поздним и более совершенным изделиям, которые пошли в серию по подготовленной документации. Конструкторский отдел тоже кстати был, отдельный, и ничего, не ругались особо.

Что-то я особой логики не уловил.

Она отличается от твоей, только-то и всего. Мне тоже кое-что непонятно. Прежде всего я не понимаю, зачем тебе упорствовать и делить людей в данном вопросе на два несвязанных класса. Выше я писал о пользе кругозора в hi-tech, возражений не прозвучало (более того, ты сам пишешь, что люди ругались, не понимая друг друга). Может, тебе просто не повезло с местом работы.

Не услышал я обоснований, почему человек не может ориентироваться в обеих областях, науке и инженерии. Потому что их нет. Это не является невозможным, даже наоборот, полезно. Деление на классы вообще весьма условно, да, есть своя специфика, но уж насколько кто хороший учёный или инженер — пусть история рассудит. По делам.

Ты кстати обратил внимание, что судишь о том, что учёный не может быть инженером и наоборот, сам считая себя кем? Первым или вторым? А можно ли судить, не зная, о чём речь? Нет ли здесь взаимоисключающих параграфов? :)

nuffsaid
()
Ответ на: комментарий от archimag

>И я уверен, что сейчас нет ни одного серьёзного учёного, который бы владел конструкторским делом на должном уровне.

Ты хочешь сказать, чтобы быть очень большим профессионалом в своей области необходима очень жесткая специализация. Однако тебе хотят объяснить, что помимо этого еще нужен кругозор, знания в смежных областях. Любой физик-экспериментатор обязан уметь ставить опыты, а для этого требуется некое прикладное знание, не отличающееся от навыков инженера.

fool_anon
()
Ответ на: комментарий от fool_anon

> Не услышал я обоснований, почему человек не может ориентироваться в

обеих областях, науке и инженерии.


Ты хочешь сказать, чтобы быть очень большим профессионалом в своей

области необходима очень жесткая специализация.



Хм, это наверное это я виноват, что постоянно кроме основной линии сбиваются ещё и на сопутствующие темы. Да причём тут знания? Я не о знаниях, а о том, что инженеры и ученые это очень разные люди по своему характеру. И те личностные свойства, которые необходимы хорошему инженеру, очень вряд ли могут в необходимом объёме присутствовать в учёном.

archimag ★★★
()
Ответ на: комментарий от archimag

>инженеры и ученые это очень разные люди по своему характеру

И какие же столь радикальные различия?

личностные свойства, которые необходимы хорошему инженеру,

Что за свойства?

очень вряд ли могут в необходимом объёме присутствовать в учёном

Огласи примерную оценку ученых, обладающих ими, относительно общего числа.

fool_anon
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.