LINUX.ORG.RU

Помогите господа маститые программеры


0

0

Понимаю, что такие темы вызывают флуд, флейм и холивар. Но все таки прошу сегодня помощи у больших программистов. Вот в чем дело - решил посвятить себя всегод функциональным языкам и соотвественно программироавнию на них. На глаза попались такие языки как Erlang и Haskell. Первый отмел по личным предпочтениям. Так же прочитал о LISP, в частности Scheme и Common LISP. Прошу вот ответить на что - что посоветуете изучать и какие книги при этом лучше брать (предпочтительно конечно русские, так как приятней, но инглиш понимю хорошо). Ну и конечно IDE для всего этого. Заранее благадарю.

Ответ на: Re: Помогите господа маститые программеры от tailgunner

Re: Помогите господа маститые программеры

Ник у меня такой так как 88 мое счстливое число. А про ФЯ - так правда нужна помощь в начинании:) ВОт и решил спросить у знающего народа.

lemoor88 ()

Re: Помогите господа маститые программеры

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

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

> Прошу вот ответить на что - что посоветуете изучать и какие книги при этом лучше брать

Для начала вот эту http://lib.rus.ec/b/32033

> предпочтительно конечно русские

"1C для профессионалов" -- твой потолок

a3 ()

Re: Помогите господа маститые программеры

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

Лучше стихотворение посвяти, иль чего ещё.

>На глаза попались такие языки как Erlang и Haskell. Первый отмел по личным предпочтениям.

Название не понравилось?

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

Scheme и SICP (книга такая), чтобы понять что это вообще такое. Дальше должен сам понять.

>Ну и конечно IDE для всего этого.

Текстовый редактор.

И вообще учи Си.

anonymous ()

Re: Помогите господа маститые программеры

Оч помогло. Спасибо. Только вот, понимаете из-за таких как вы и сложно спрашивать советов. Про "1С" - очень остроумно. Где смеяться? Подскажите? А то как-то в зале тихо. Да и откуда вы знаете про умственные способности? Книги просто приятно читать на свое языке, чтобы не тратить лишнее время на перевод каких-то теренов, котроые не знаешь. А если серьездно - то язык это инструмент это "ясенхрен", но вот только какие-то инструменты изучаются проще, а какие-то сложнее. А вообще данный вопрос был адресован к тем, кто на ФЯ и "Лиспе" пишет, а явно не к императивщине.

lemoor88 ()

Re: Помогите господа маститые программеры

> Где смеяться? Подскажите? А то как-то в зале тихо.

А на моих концертах и не смеются. Хочешь посмеяться -- сходи на концерт к Евгению Вагановичу, его зал хохочет, да.

a3 ()

Re: Помогите господа маститые программеры

маститые это с мвститом? боюсь таких нет тут

маситые

Sylvia ★★★★★ ()

Re: Помогите господа маститые программеры

>И вообще учи Си. anonymous (*) (12.01.2009 4:19:02) Спасибо за советпо схеме. Си я знаю. Как и ЦеШарп. Потянуло так сказать на неизвестное.

Ну тогда таки SICP почитай, пусть он и прост местами. Зато от лисповых скобочек страшно не будет. Русская версия есть в инете.

anonymous ()

Re: Помогите господа маститые программеры

>И начался флуд и тролинг:(. Эх... Человек помощи попросил а вы:(

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

anonymous ()

Re: Помогите господа маститые программеры

Haskell - идеальный инструмент для изучения ФП парадигмы. Приводит в порядок голову (либо выносит моск - по вкусу). Писать потом можно на чем угодно - хоть на F#.

imp ★★ ()

Re: Помогите господа маститые программеры

(vote 'sicp + 1000000) Сам совсем недавно начал читать, пока дочитал до середины второй главы и книгой безумно доволен. Расширяет кругозор и приводит в порядок мозги.

anonymous ()

Re: Помогите господа маститые программеры

SICP, How to Design Programs - для начала

для Хаскеля - Real World Haskell - очень понятно написано, с массой практических примеров, без лишней теоретизации. Для теории можно почитать тот же Introduction to Functional Programming Харрисона

ott ★★★★★ ()

Re: Помогите господа маститые программеры

SICP же.

>Ну и конечно IDE для всего этого


vi, emacs, Kate, етц

redgremlin ★★★★★ ()

Re: Помогите господа маститые программеры

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

Common Lisp не является функциональным языком. Scheme променяла многие фишки CL на ФП, не является чисто функциональным языком. Erlang - это такая библиотека под С для построения распределенных event-driven систем ;)). Haskell - чисто ФП язык, что с одной стороны дает много преимуществ, с другой стороны - готовься в уме считать комбинации нескольких монад (в реальных задачах). Ocaml похож на хаскель, но не является чисто функциональным языком.

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

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

После чего нужно понять, что функциональная композиция (.) и монадический bind (>>=) одно и то же, а все сложности, связанные с монадами - "расплата" за "контейнерный" тип. И как функция от многих аргументов сводится к "комбинаторам" тиа a 'op' b 'op' c ... == op a b c ...

Ну а после чего придет понимание, что ФП ради ФП не бывает.

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

Macil ★★★★★ ()

Re: Помогите господа маститые программеры

Спасибо за советы. Может тогда еще объясните в чем приемущества Haskell перед Lisp или наоброт. Особенно было бы интересно спрактической точки зрения узнать.

lemoor88 ()

Re: Помогите господа маститые программеры

>Спасибо за советы. Может тогда еще объясните в чем приемущества Haskell перед Lisp или наоброт. Особенно было бы интересно спрактической точки зрения узнать.

ответ читай тут:

http://www.amazon.co.uk/Haskell-Road-Logic-Maths-Programming/dp/0954300696/re...

jtootf ★★★★★ ()

Re: Помогите господа маститые программеры

>приемущества Haskell перед Lisp или наоброт.

Нет никаких преимуществ хаскеля перед лиспом. Их между собой сравнивать некорректно.

Хаскель - это максимальное приближение к математической нотации и обкатка инновационных вещей типа типизации Хиндли-Милнера и GADT.

Коммон Лисп - это метапрограммирование. Т.е. мы делаем программу, которая делает программу, которая ... На лиспе ты программируешь в терминах AST (абстрактного синтаксического дерева т.е. того, что получается когда выражение на языке проходят через парсер), грубо говря, любая лисп-форма принимает дерево символов и дерево символов же возвращает (по-другому дерево символов называется S-выражение или S-expression).

Это не значит что у лиспа нет синтаксиса. Он у него есть, притом программист может им очень гибко управлять через SET-MACRO-CHARACTER и SET-DISPATCH-MACRO-CHARACTER т.е. конструкции типа ' (quote) или #' (functional quote) не являются аттрибутами языка, как например операторные скобки в C, а просто стандартная настройка лисп-системы.

Что же скрывается за символом - дело третье. Т.е. выражение (foo bar baz) может значить вообще все что угодно и не обязательно каждый раз одинаково. Все определяется тем, как конкретный символ связан со своим "значением", это может быть переменная, функция, какой-то другой объект, плюс многое зависит от того в каком окружении это связывание произошло. Ну и мы можем скормить выражение самому лиспу c помощью EVAL, а можем сами разбирать, как в режиме интерпретации, так и в режиме компиляции, вообще хоть в машинный код.

В лиспе нет разницы между eDSL и DSL. Захотели - приделали "морду" к нашему eDSL'ю. Самый простой пример - скомпилировать регулярное выражение.

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

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

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

Macil ★★★★★ ()

Re: Помогите господа маститые программеры

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

писать DSL (и eDSL) на Haskell ненамного сложнее чем на CL. благо и Parsec есть, и квазиквотация с GHC > 6.9

это уж скорее вопрос стиля - кому-то ближе комбинаторы, кому-то всепоглощающее AST (так и хочется сказать "AST головного мозга")

ну и немножко сахарку (критика SICP):

http://kmmbvnr.livejournal.com/62197.html

jtootf ★★★★★ ()
Ответ на: Re: Помогите господа маститые программеры от tailgunner

Re: Помогите господа маститые программеры

>Отлично :) А есть учебник вроде SICP, но на чем-нибудь статически типизированном (Хаскель, *ML)?

есть The Craft Of Functional Programming, два варианта: Miranda и Haskell, но там скорее основы - т.е. первые две-три главы SICP'а

есть чудесная читаемая мною сейчас Haskell Road To Logic, Maths, And Programming (там выше давал ссылку на amazon) - там, судя по всему, уровень повыше SICP'овского

а такого чтобы один к одному - не встречал

jtootf ★★★★★ ()

Re: Помогите господа маститые программеры

>писать DSL (и eDSL) на Haskell ненамного сложнее чем на CL. благо и Parsec есть, и квазиквотация с GHC > 6.9

Даже проще + есть еще и BNF Converter

http://www.cs.chalmers.se/Cs/Research/Language-technology/BNFC/

imp ★★ ()
Ответ на: Re: Помогите господа маститые программеры от tailgunner

Re: Помогите господа маститые программеры

Кузино и Мони примерно того же уровня, что и SICP, там Caml Light.

Лекции Харрисона - тоже caml light, уровень поглубже чем SICP, но охват тем сильно уже.

anonymous ()

Re: Помогите господа маститые программеры

> это уж скорее вопрос стиля - кому-то ближе комбинаторы, кому-то всепоглощающее AST (так и хочется сказать "AST головного мозга")

Аллё! Ты какого сраёна?!? Это вопрос вовсе не только стиля, но и производительности. Правда, есть конечно же и Template Haskell, но это ровно то же самое "AST головного мозга".

anonymous ()

Re: Помогите господа маститые программеры

>это уж скорее вопрос стиля - кому-то ближе комбинаторы, кому-то всепоглощающее AST

Комбинаторы хороши тем, что такую программу можно распараллеливать и результаты кешировать. Настоящие проблемы начинаются тогда, когда в стройную функциональную программу вторгается real^W world.

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

Как-то я попробовал в хаскеле написать обработчик ошибок и пришел к тому, что это нужно либо делать через монаду Error (она же Either), либо по эрланговскому принципу: при возникновении ошибки процесс обязан как можно быстрее сдохнуть. В принципе, можно еще через STM, но на осознание этой концепции меня не хватило.

Первый путь меня не вдохновил, т.к. приходится комбинировать Error, как минимум с IO, а второй путь пока неприемлем до тех пор пока виртуальную машину хаскеля не вылижут.

Macil ★★★★★ ()
Ответ на: Re: Помогите господа маститые программеры от anonymous

Re: Помогите господа маститые программеры

> Кузино и Мони примерно того же уровня, что и SICP

"The Functional Approach to Programming with Caml"?

> там Caml Light.

Caml снизу вверх совместим с Ocaml, так?

tailgunner ★★★★★ ()

Re: Помогите господа маститые программеры

>Еще один DSL, а потом еще один DSL, чтобы разработать свой собственный DSL. Плавали, знаем :(

сначала хотел сказать, что всё намного проще

а потом вспомнил о том, что то, что ты написал - это и есть Ъ LISP-way. в чём же проблема-то с иерархией DSL'ей? :)

jtootf ★★★★★ ()

Re: Помогите господа маститые программеры

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

Пистон. Python Essential Reference (3rd Edition)

anonymous ()
Ответ на: Re: Помогите господа маститые программеры от tailgunner

Re: Помогите господа маститые программеры

> "The Functional Approach to Programming with Caml"?

Оно самое.

> Caml снизу вверх совместим с Ocaml, так?

Не совсем, синтаксис несколько отличается. Например, инфиксные функции по другому определяются, есть отличия в синтаксисе конструкторов ADT.

anonymous ()
Ответ на: Re: Помогите господа маститые программеры от anonymous

Re: Помогите господа маститые программеры

>Это вопрос вовсе не только стиля, но и производительности

производительности ЧЕГО? производительности ГДЕ? анонимус, ты какой-то очень невнятный сегодня

jtootf ★★★★★ ()
Ответ на: Re: Помогите господа маститые программеры от anonymous

Re: Помогите господа маститые программеры

Ананимус, спасибо. Питон так же уже изучал в применении правда к вэбу. Язык хороший и очень удобный. Ничего против него не имею. Но не лежит к нему душа. Да и нет вокруг него такой культуры как вокруг Lisp, Haskell или того же (не к ночи будет упомянут, но заграницей очень даже живой) Smalltalк.

lemoor88 ()

Re: Помогите господа маститые программеры

>проблема-то с иерархией DSL'ей? :)

Проблема в том, что это во-первых не "твой" DSL. Т.е. своя кривая обучения, свой кривой синтаксис и т.д. Во-вторых проблемы с расширяемостью. Понятно конечно, что это опен-сорс и все такое, но согласись, что eDSL расширяется намного проще и лучше, чем DSL. Причем в лиспе есть такая мега вещь как shadowing, как на уровне пакетов, так и на уровне лексического окружения... Баловство это все, конечно, но позволяет быть проще и гибче. И в третьих у eDSL _всегда_ одинаковый синтаксис (не нужно помнить, что DSL1 присваивание осуществляется с помощью := а в DSL2 с помощью = и т.п.)

Macil ★★★★★ ()

Re: Помогите господа маститые программеры

>Да и нет вокруг него такой культуры как...

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

Конечно, языки программирования нужно изучать... Но не основываясь на какой-то умозрительной "крутости".

Macil ★★★★★ ()

Re: Помогите господа маститые программеры

>Питон так же уже изучал в применении правда к вэбу. Язык хороший и очень удобный. Ничего против него не имею. Но не лежит к нему душа. Да и нет вокруг него такой культуры как вокруг Lisp, Haskell или того же (не к ночи будет упомянут, но заграницей очень даже живой) Smalltalк.

>нет вокруг него такой культуры

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

Сам вот думаю схему попробовать, от осамл-а блевал, видимо, не осилил.

anonymous ()
Ответ на: Re: Помогите господа маститые программеры от anonymous

Re: Помогите господа маститые программеры

>схему попробовать

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

Macil ★★★★★ ()

Re: Помогите господа маститые программеры

> производительности ЧЕГО? производительности ГДЕ?

Производительность кода, написанного на этом твоём DSL.

На комбинаторах ты максимум тормозной интерпретатор сделаешь. На метапрограммировании над AST можешь хоть сразу машинный код из DSL генерить.

anonymous ()
Ответ на: Re: Помогите господа маститые программеры от anonymous

Re: Помогите господа маститые программеры

>Производительность кода, написанного на этом твоём DSL

бред. какая разница, какими методами я буду писать кодогенератор?

>На комбинаторах ты максимум тормозной интерпретатор сделаешь. На метапрограммировании над AST можешь хоть сразу машинный код из DSL генерить

ты не в теме. или, что тоже возможно, тролль

jtootf ★★★★★ ()

Re: Помогите господа маститые программеры

>Не нужно, лучше CL.

Да ладно, я просто хочу сначала проверить, как мой организм среагирует на такое количество скобок. :D

anonymous ()

Re: Помогите господа маститые программеры

> бред. какая разница, какими методами я буду писать кодогенератор?

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

> ты не в теме

Возможно. Но тогда изволь показать пример, опровергающий мои утверждения.

anonymous ()
Ответ на: Re: Помогите господа маститые программеры от anonymous

Re: Помогите господа маститые программеры

Ну на счет писькамерчества среди лисперов не согласен. По крайней мере те, которых знаю я - заслуженно считаются оч хорошими программерами. А про надо или нет учить ФЯ- про это оч хорошо написано в сатье "Опасности обучения Java": http://local.joelonsoftware.com/wiki/Опасности_обучения_на_Java

lemoor88 ()

Re: Помогите господа маститые программеры

>http://kmmbvnr.livejournal.com/62197.html
Херня какая, а.

Типа, в sicp нет паттерн матчинга, а заодно и ленивых вычислений(которые там есть по сути), поэтому sicp - говно, и схема заодно с ней, и сам лисп заодно со схемой.
Очередной тупоголовый фанатик хаскеля.

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