LINUX.ORG.RU

Lisp, стратегия изучения.


0

4

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

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

То есть применение программированию на работе - это numerical methods, не вижу, чтобы лисп был здесь сильно востребован, но в случае, если выучу обязательно попробую :). Немного знаком с фортраном и питоном.

Для себя выбрал такой план: сначала схема SICP, возможно HTDP, потом Practical Common Lisp и можно что-то из AI специфики, параллельно собираюсь решать примеры из project euler?

Нормальный план, или что-то еще посоветуете?

Надо в первую голову:

  • теория множеств
  • мат. логика
  • теория графов
  • лямбда-исчисление
  • типизированные теории (ещё раз теория множеств, но уже без парадоксов)
  • комбинаторика
  • теория вычислимости (complexity theory и theory of computation)
  • алгоритмическая теория информации
  • конечные автоматы
  • теория языков (денотационные семантики, и т.п.)
zfsed
()
Ответ на: комментарий от runtime

> Очень важно, что она учит декомпозиции задачи, разбиению сложного

на мелкие составляющие


Хм, а каким, собственно, образом?

которого так не хватает мозгам, в своё время травмированным

недо-ООП типа жабы или c++



Уверен, что Java и C++ причиной каких-либо травм головного мозга быть не могут. И ООП там нормальное.

Возможно, кто-то не сталкивался с этой проблемой и сразу

программировал «правильно»



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

Для остальных SICP очень полезен.


Прежде всего за счёт того, что расширяет кругозор.

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

> Очень важно, что она учит декомпозиции задачи, разбиению сложного

на мелкие составляющие

Хм, а каким, собственно, образом?

все уже знают кому «не пошел» SICP на пользу :)

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

Когда Засман на четырех досках крупным шрифтом, _постепенно_ добавляя новые понятия, пишет интерпретатор используя рекурсию это впечатляет.

Жаль что ты лишен возможности почувствовать это :(

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

> в первую можно и если их как минимум одна

Можно, но ведь не «надо». Вот если бы голов было много, тогда да.

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

> И я могу подтвердить

Откуда тебе знать? Ты же вообще не программист. Психиатр?

это впечатляет.


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

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

> Программирование вещь жутко рациональная

Все время находятся такие, которые пытаются рационализировать программирование, но ни у кого это прежде не получилось. Особенно много шума было с UML. Думаю, что и не получится никогда, к счастью для нас ;)

з.ы. в мире, вообще, мало рационального...

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

О, это хорошо! Как обстоят дела с параллелизацией всего этого хозяйства(в особенности mpi), есть ли модули, которые позволяют использовать лисп как диспетчер задач или cl используется для написания прототипа, а потом все равно приходится все переписывать на с?

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

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

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

В общем, за UML стоит своя методология разработки, одной из главных целей которой является «рационализация» самого процесса разработки софта, упрощенно и образно говоря, создание конвейера. На рубеже 90-х и 2000-х годов было связано много надежд с этим. Наверное, ты еще не застал то время как программист.

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

Опять кривляешься? В общем, разговор закончен.

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

> за UML стоит своя методология разработки, одной из главных целей

которой является «рационализация» самого процесса разработки


И как это связано с тем, что

Программирование вещь жутко рациональная


Пару похожих слов увидел?

В общем, разговор закончен.


Не стоило и начинать, а то ты вечно как ляпнешь.

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

>Уверен, что Java и C++ причиной каких-либо травм головного мозга быть не могут. И ООП там нормальное.

Увы, могут. Это, конечно, лечится, но разговаривать с людьми, прочно испорченными С++, трудно.

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

>> это впечатляет.

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

Экий ты словоблуд.

Waterlaz ★★★★★
()

Tcl же. Может лучше его? Он так не перегружен всем подряд, как CL, а все основные возможности присутствуют.

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

> Надо в первую голову:

И будешь ты хорошим математиком, а не программистом, да.

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

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

В SICP говорится, что разбивать задачу надо на маленькие, чтобы было легче. Но это же говорится во многих других кнжижках - страуструпа, фаулера, буча - ничего нового. В sicp показано, как это может быть сделано в функциональном ЯП - scheme - с помощью потоков (lazy sequence), лексических замыканий, функций высшего порядка. Но просто слова не научат тебя делать декомпозицию на реальных задачах, навык приобретается только с опытом на реальных задачах, а не детских упражнениях в конце главы.

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

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

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

SICP не научит тебя правильно программировать, потому что это «правильно» сильно разнится от языка к языку. Техники декомпозиции задачи для java и для scheme несколько разные. Программирование на CL в стиле Си или на яве в стиле схемы скорее всего приведут к плачевным результатам. Потому что это во многом разные вселенные, в них действуют разные законы. Можно и нужно использовать различные техники в языке, смешивать различные парадигмы, но опять же и для этого нужен опыт и знание возможностей языка. Я как-то видел код человека, искалеченного функциональщиной - вместо простейших циклов - лапшу из рукописных map'ов, везде, где только можно, использовались «лямбды» и прочее - лучше (быстрее, понятнее, расширяемее) от этого код не стал. Да и на лоре такой был - bugmaker, точно также писал. С другой стороны появляются всякие «правильные» (удобные и нужные) функциональные штуки - immutable sequences, map/reduce от гугля.

Вообще, хороший кругозор можно получить, прочитав более интересные и полные книжки. Мне вот сильно понравилась вот эта - «Concepts, Techniques, and Models of Computer Programming» by Peter van Roy and Seif Haridi.

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

(troll «Хуже фанатов лиспа могут быть только фанаты недолиспа.»)

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

Раскрою тему — Tcl, конечно, хороший язык в своей нише, я сам его люблю и пользую, но я же не сую его затычкой в каждую бочку, особенно когда меня спрашивают не про него.

Посмотри, на ЛОРе полно людей, знающих Tcl и профессионально на нём программирующих (ну хотя бы того же jtootf возьми), но никто, кроме тебя, не кричит на каждом углу про крутость Tcl, особенно если речь изначально шла про Lisp.

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

> Откуда тебе знать? Ты же вообще не программист. Психиатр?

ты сразу в сантиметрах оглашай :) длину зонда :)

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

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

Ок, согласен.

Вообще, хороший кругозор можно получить, прочитав более интересные и полные книжки. Мне вот сильно понравилась вот эта - «Concepts, Techniques, and Models of Computer Programming» by Peter van Roy and Seif Haridi.

Спасибо, обязательно почитаю.

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

> Какая связь между «рационализировать» и UML?

один не компетентный человек может сгенерировать столько вопросов, что и сто компетентных не ответят (С)

если ты не понял, то к чему издавать звуки?

в SICP который ты (из презрения наверное) так и не осилил, или сия попытка произвела в твоем хрупком организме весьма странные последствия... короче там прямо говорится: CS на самом деле не C, и не S.

впрочем зачем это я говорю «галерному рабу», который просто кайфует как ему качественно баланду наливают?

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

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

Так и я его всюду не сую, а только там где он может подойти. Или может где-то предложил писать на нем драйвера или ядро ОС?

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

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

При чём тут драйвера и ядро? CL более универсальный, чем Tcl, с этим спорить даже как-то странно. Особенно это касается тем, заявленных ТС.

О похожести языков: сравнивать Tcl и несуществующий «лисп» глупо. Похожесть зависит от диалекта. CL похож мало, схема — еще меньше (кроме встраиваемости разве что), самое близкое — это picolisp. Последнее — экзотика (правда, добротно сделанная) и ТС вряд ли подойдёт.

Про ореол элитарности — так что, ты клин клином вышибаешь? Я твои реплики про Tcl вижу уже в трех ветках, причём в каждой сравнивается с CL (зачем?) и в 2х случаях спрашивали совсем не про него.

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

Надо в первую голову:

* теория множеств * мат. логика * теория графов * лямбда-исчисление * типизированные теории (ещё раз теория множеств, но уже без парадоксов) * комбинаторика * теория вычислимости (complexity theory и theory of computation) * алгоритмическая теория информации * конечные автоматы * теория языков (денотационные семантики, и т.п.)

Это тематика для тренажёрного зала.

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

> Уверен, что Java и C++ причиной каких-либо травм головного мозга быть не могут. И ООП там нормальное.

Гм... этот новый, повзрослевший archimag мне определенно нравится больше :)

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

> Насчёт численных методов: моя практика показывает, что лисп (CL, SBCL) отлично подходит для _разработки_ расчётных программ, особенно в связке с C. Дело в том, что далеко не всегда ясно, какой именно алгоритм лучше всего подходит для расчёта.

Извольте уточнить: речь идет о прототипировании самих мат. методов, или о прототипировании их программной реализации? Сдается мне, в первом случае лисп сольет МатКаду или Октаве (где важна близость к математической нотации), а во втором - какому-нибудь Питону (где речь идет о простоте программирования).

Кстати, в том же Питоне FFI на порядок проще и эффективнее лиспового.

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

Kuka, ты меня определённо с кем-то путаешь.

Кстати, в том же Питоне FFI на порядок проще и эффективнее лиспового.


Ну не правда же.

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

Спешу поставить запоздалую точку в этом треде.

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


Молодой человек. Если ваше желание начать изучать лисп - обоснованное и взвешенное, то я за вас могу только порадоваться. Просто на основании вот этого:

Заинтриговал лор меня лиспом ... фор фан ... не программист


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

Я счастлив, если это не так.

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

>Кстати, в том же Питоне FFI на порядок проще и эффективнее лиспового.

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

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

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

Больной, пожалуйста, держите себя в руках. Мы отчетливо понимаем, что вы бездарно потратили несколько месяцев своей жизни на Virgil, пытаясь хоть на толику приблизиться к тому FFI, что есть в современных языках. Теперь к вам пришло осознание никчемности ваших трудов. С этим знанием вам придется жить. Но жизнь ведь на этом не заканчивается, впереди - необъятные горизонты непознанного и незапрограммированного.

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

> Чем же FFI «в нормальных языках» так нормальнее и удобее CFFI+Virgil?

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

Ну-ка давай, высри очередную порцию бреда.


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

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

> Ах да, ну и конечно - почему я так и не увидел ни одного примера в той теме?

Примера, который бы показывал превосходство функционала FFI какого-либо языка над Virgil?


Потому что ни одному здравомыслящему человеку не придет в голову тратить свое время на доказательство превосходства Общей теории относительности Эйнштейна над псевдотеорией торсионных полей Шипова-Акимова.

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

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

Это я уже слышал.
Но, как известно, talk is cheap. Show me the code.

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

>Потому что ни одному здравомыслящему человеку не придет в голову тратить свое время на доказательство превосходства Общей теории относительности Эйнштейна над псевдотеорией торсионных полей Шипова-Акимова.

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

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

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

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

gameover__
() автор топика
Ответ на: комментарий от vertexua

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

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

Надо со всеми фичами цитировать, а то эффекта мало ;)

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

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

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

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