LINUX.ORG.RU

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

 


1

1

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

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

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

★★★★★

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

когда речь идёт о коллективной разработке

и потом группа энтузиастов, пишущих на Erlang, отбивает тендер на разработку у матёрой компании, которая больше заботится нормами коллективной разработки и использует C++. в уже сложившемся проекте подобные эксперименты наказуемы, но в начале они могут дать существенное конкурентное преимущество

а вот версию 2.0 уже можно будет переписать на PHP

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

(Ладно, раз основная тема считается исчерпанной)

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

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

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

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

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

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

> Конечно, зачем программисту знать про теорию категорий. Или про

реляционную алгебру. Или про NP-полноту какой-то хитрожопой задачи,

про алгоритмы на графах, про генетические алгоритмы и всякую заумь.



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

Нет никакой чёткой границы между научным и инженерным знанием,

одно является продолжением другого



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

это как бы фазовый переход второго рода.


Чего?? Я как бы физик, вам напомнить определение фазового перехода второго рода?

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

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

да...?

мне вот извесны 3 потребности: жрать, спать и трахаццо.

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

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

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

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

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

дирак перевернулся наверно, а вместе с ним еще и все ученые-экспериментаторы.

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

> мне вот извесны 3 потребности: жрать, спать и трахаццо.

Извините, это не моя вина, что у вас других потребностей нет.

все что-то делают в первую очередь для себя, и уже потом,

много позже, оно может оказаться кому-то полезным.



К счастью не все такие как вы. Советую почитать вам работы Кропоткина, очень просветляет.

дирак перевернулся наверно, а вместе с ним еще и все

ученые-экспериментаторы.



При чём тут ученые-экспериментаторы? Я, если что, специализировался на кафедре экспериментальной физики, и то чем занимаются физики-экспериментаторы не имеет никакого отношения к промышленному проектированию.

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

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

Все лучшие вещи делались потому что интересно =)

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

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

Вообще говоря, это уже вопрос веры.

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

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

> К счастью не все такие как вы.

это может быть шикарным тредом в толксах.

Советую почитать вам работы Кропоткина, очень просветляет.

что ж не мать терезу-то? от науки далека, да, но альтруистичненько дальше некуда.

прикинешь процентное отношение людей альтруистов/эгоистов. грубо, на глаз.

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

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

А как насчет отечественной школы инженеров начала XX-го века? Это люди по необходимости заложили и обосновали фундамент вычислительной математики в области уравнений мат физики.

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

галерка может тихо шепнуть состав нашей команды ;)

Планк, Фарадей, Максвелл, Джоуль, Майкельсон, Милликен

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

> что ж не мать терезу-то? от науки далека, да,

но альтруистичненько дальше некуда.


мать тереза то тут при чём? Кропотки, кстати, если вы не в курсе, был всемирно известным учёным (в СССР это, правда, тщательно скрывали).

прикинешь процентное отношение людей альтруистов/эгоистов.

грубо, на глаз.



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

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

> А как насчет отечественной школы инженеров начала XX-го века?

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

P.S. Всем спасибо, но у меня через час поезд в Сочи, не хочу опоздать ;) Если настрою завтра вечером инет, то может загляну сюда.

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

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

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

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

> альтруисты очень быстро бы исчезли элементарно в силу естественного

отбора: я забочусь о себе, альтруист обо мне.


Я ещё здесь ) Это примитивная ранняя трактовка Дарвинизма, от которой полностью отказались ещё в начале прошлого века. Человек, ценящий научное знание, должен был бы об это знать.

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

>Не имел удовольствия быть с ними знакомым

Ну как не знаком?

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

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

> Это примитивная ранняя трактовка Дарвинизма, от которой полностью отказались ещё в начале прошлого века.

это оппозиция к кропоткину ;)

про принцип гамильтона я тоже в курсе. удивительно, но он эгоистичен.

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

если верить товарищу Маслоу, потребность «трахаццо» Вы ещё не удовлетворили =/

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

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

> Чего?? Я как бы физик, вам напомнить определение фазового перехода второго рода?

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

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

Категорично. Помимо слылок на времена минувшие (выше набросали) могу привести личный пример. Учавствовал в разработке систем hyperspectral vision, и кем я там был больше, учёным или инженером — сам затрудняюсь установить. Потому что я занимался и разработкой-доводкой алгоритма, и собственно программированием, и контролем установок, и обработкой экспериментальных данных. Хранением и архивированием только не занимался. Так вот, ряд результатов получался только после упорных и нетривиальных усилий (порой почти всей группы), всё висело на волоске. То есть просто программист без знаний в предметной области тут бы явно не справился. Были конечно и узкие специалисты: спец по оптике, по системам цифровой электроники и т.п, но вот подобный многостаночник я был далеко не единственный, так что на исключение это уже никак не тянет. Это в той конторе была и есть вот такая ниша. Насколько плохим можно считать навыки учёного или инженера в данном случае, если полезные результаты, которые ты вроде бы уважаешь, были достигнуты (и процесс идёт и сегодня afaik)?

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

> ну как же, вот только вот, вечером.....

судя по количеству точек — много раз?

но тогда всё ещё хуже, раз Вы даже после удовлетворения первичных потребностей не можете перейти на уровень выше =/

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

> есть альтернативная Пирамида Лебедева, заставляющая сделать еще более жесткий выбор на ночь.

забавно

Кем ты уснешь: верхним или нижним?

я относительно давненько в секте арчево^Wмудаков

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

>Вот именно, по разному распорядились, о чём я и говорю весь тред. Это не имеет отношения к уровню интеллекта

то есть, ты утверждаешь, что уровень интеллекта - это жёсткая данность на всю жизнь? мне жаль тебя огорчать, но ты идиот

уровень интеллекта колеблется в обе стороны, вниз - от веществ, убивающих мозг, от постоянного умственного расслабления; вверх - от умственного напряжения, так сказать, тренировок, от веществ, опять же

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

я давал ссылку именно на перевод этого курса. Вы хоть проверяйте сначала - на сайте есть ссылка на оригинал :-)

ott ★★★★★
()

Прошу прощения за оффтопик, но присоединяюсь к Love5an и *начать* советую SICP и Scheme.

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

>Прошу прощения за оффтопик, но присоединяюсь к Love5an и *начать* советую SICP и Scheme.

Ну разве что под чутком руководством SICP. Просто на схеме емнип все же можно писать императивно. А вот, если взять хаскель, то.. в общем тоже можно, но не понимая монады трудно, а значит придется учиться ФП =)

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

Что он идиот было ясно еще после треда про алгебру.

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

> Вот именно, по разному распорядились, о чём я и говорю весь тред. Это не имеет отношения к уровню интеллекта. Но вам, вероятно, трудно это понять, шаблон рвётся?

Ох, ну и дебил... Позор физфака. Стыдоба то какая.

Это именно что уровень интеллекта. Один этот самый интеллект с нуля раскачивает всю жизнь, другой сил не прикладывал и стал идиотом.

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

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

Точно, не опознал перевод по ссылке.

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

Ну разве что под чутком руководством SICP. Просто на схеме емнип все же можно писать императивно.

Там в третьей главе очень активно set! используется :)

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

> проприетарное вендовое ПО стоит денег, поэтому легально домой нищий студент себе его позволить не может.

Купил ноут - ОЕМ виндовс за ~100 баксов в комплекте, студию покупать не надо, студенту за глаза - VS Express, оно бесплатное.

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

> Купил ноут - ОЕМ виндовс за ~100 баксов в комплекте

100 баксов-то не лишние.

студию покупать не надо, студенту за глаза - VS Express, оно бесплатное.

Ичо, в исходниках студии можно поковыряться? В исходниках компилятора? Нет? А в Linux можно. Или студенту нужен компилятор для сборки хелловорлда?

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

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

все бесплатно. я, что хочу - то и качаю. и студию интерпрайзную и семку ультимайт, и офис 2010.

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

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

И исходники по shared source?

все бесплатно. я, что хочу - то и качаю

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

tailgunner ★★★★★
()

Вообще-то в SICP конкретно к «ФП» относится только первая глава:

1. lambda абстракции (анонимные функции), и аппликации (постановочная модель, энергичность и ленивость), функции высшего порядка, рекурсия.

А всё что потом, это уже относится к «Lisp» ну и к «вообще»:

2. Символьные вычисления.

3. Суть объектов и их состояний (ООП), активно используется мутабельные данные (окружения, замыкания, присваивания, категория времени :)).

4. Интерпретаторы (может быть полезно, например, для реализации быстрого интерпретатора каких-либо специфичных данных).

5. Суть императившины - регистровые машины, ассемблер, транслирование в язык регистровых машин.

--

Можно двинутся в другую сторону - например в сторону ML семейства, и почитать введение в ФП. Потом уже можно в сторону Haskell посмотреть - Gentle introduction to Haskell и RWH.

З.Ы. а вот в PCL функциональщины особо и нет (да и не должно).

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

> Что по твоему есть прокачка мозга?

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

Ты реально считаешь, что становишься умнее?

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

на тему пользы: хотя кажется, что я достаточно нагружаю пальцы печатью текстов, __НО__ (для меня) оказывается, что сравнительно небольшая нагрузка в клавиатурном тренажере увеличивает скорость печати

вполне возможно, что с умом так же

по-моему «умный» это:

главное:

1. рабочий libastral.so

2. способность держать высокую ментальную нагрузку

остальное — это скорость:

3. работы с уже имеющейся инфой и догадками

4. хождения по ассоциативным связям и аналогиям

5. догадок (опять libastral.so) «что тут главное», «откуда копать»

6. ощущений (опять libastral.so) что я знаю, а что не знаю и т.п.

Тема была полезна, т.к. я пришел к мысли, как прокачивать п.1 (и возможно 2). Видимо, стоит написать программу. Надо подумать над прокачкой остальных пунктов.

З.Ы. я себя считаю не умным, а ментально ориентированным.

З.Ы.Ы. Пол Грэм был не прав, что в науке «начинают с совершенства, а заканчивают оригинальностью»; это просто так поставлено образование — что в человека закачивают знания вместо умений их добывать — а умение их добывать в науке напрямую связано с *эскизами* как он их называет.

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

> Ичо, в исходниках студии можно поковыряться? В исходниках компилятора? Нет? А в Linux можно.

Зачем студенту ковыряться-то в исходниках студии и её компиляторов?

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

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

Альтруизм — это *расширенная* забота о себе; «сделаю что-то, и наплевать, что 99% пользы достанется другим — но мне все же достанется 1%»

и насчет естественного отбора — это тоже порядочный бред; в подробности вдаваться не буду, но рассмотри ситуацию, когда допустим в средневеком городке идет чума, и кто-то альтруистично дает деньги особо нуждающимся на лечение и на отвоз и закапывание трупов; при этом, из-за цепного характера реакции, его личная польза (повышение вероятности незаразиться), кстати, может быть гораздо больше, чем отношение пожертвованные_деньги/общий_объем_необходимых_работ

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

>> Ичо, в исходниках студии можно поковыряться? В исходниках компилятора? Нет? А в Linux можно.

Зачем студенту ковыряться-то в исходниках студии и её компиляторов?

Смотря какому. Тому, которому тупо сдать лабы, ковыряться в компиляторе не нужно. А кому интересны именно компиляторы, сам ЛММ сказал «ковыряйся в компиляторах». То же с СУБД, ядром ОС и всем прочим.

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

> Альтруизм — это *расширенная* забота о себе; «сделаю что-то, и наплевать, что 99% пользы достанется другим — но мне все же достанется 1%»

сходи в педевикию что ли...

его личная польза (повышение вероятности незаразиться)

ты пишешь с ошибками. надо так: «его личная польза — повышение вероятности незаразиться». принцип гамильтона буквально во всей красе.

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

> Зачем студенту ковыряться-то в исходниках студии и её компиляторов?

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

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

>> его личная польза (повышение вероятности незаразиться)

ты пишешь с ошибками. надо так: «его личная польза — повышение вероятности незаразиться». принцип гамильтона буквально во всей красе.

жду ссылку, обосновывающую это якобы «правило» и подтверждающую мою якобы «ошибку»

по сути же, я так понимаю, возразить нечего?

сходи в педевикию что ли...

там статья с обильным цитированием подозрительных рассуждений; если мы возьмем в качестве определения ее первый абзац (как вероятно наиболее выдержанный), то где ты видишь его противоречие с моим определением?

www_linux_org_ru ★★★★★
()

ЛОР тортовее с каждым днем.

Условно говоря, топикстартер спросил, с чего лучше начинать знакомство с астрологией. Что комплексует из-за незнакомства с ней. На протяжении пяти страниц топикстартеру накидали средневековых и современных астрологических трактатов, назвали имена ведущих астрологов и процитировали их. И только пара человек посоветовала не заниматься ерундой и учить астрономию.

От себя посоветую топикстартеру: выяснить, какое место занимает астрологияФП в структуре знаний современного человечества. Разобраться в причинах этого. И лишь потом принимать решение, чем заниматься в этой жизни.

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

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

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