Несколько позже я попробую "разразиться" ещё одной "заметкой"
в том же духе, в том числе и по поводу эволюции языков. В данный
момент мне этим заниматься некогда.
Отмечу, что я не хочу агитировать за повальный переход на Лисп,
т.к. достаточно хорошо отдаю себе отчёт в том, насколько это может быть
затруднительно. Это относится как к существующим проектам, так и ещё не начатым.
Я лишь хотел сказать, что
1) Изучение немейнстримовых языков, и в особенности лучшего метаязыка — Лиспа,
способствует повышению квалификации программиста и существенно более глубокому
пониманию мейнстримовых технологий;
2) Лисп более чем пригоден для практического применения, и в ряде случаев
является наилучшим вариантом — в частности (но не ограничиваясь), для реализации
каких-либо единоличных/немноголюдных/open source проектов
(это не подразумевает необходимость мгновенного и поголовного перехода);
3) Практическая ценность "костылей" типа boost ограничена, т.к. по большому
счёту они представляют собой использование языка не по назначению.
Что касается п. 2, зачастую 1-2 человека могут сделать на Лиспе больше, чем
приличная контора мейнстримовцев. Это касается Yahoo Store (откуда Грэхэм свалил,
т.к. заработал на пару с небезызвестным Робертом Моррисом что-то вроде $40M+, а что ещё надо,
чтобы достойно встретить старость? ), а также например вот этого: http://groups-beta.google.com/group/comp.lang.lisp/browse_thread/thread/1cf0a2866faef1d0/7983e2224c4974ef
Кстати, когда смотрите LOTR, не забывайте, что харю и мимику тов. Gollum'а
тоже сделал Лисп (IZware).
Напоследок приведу ссылку на одну интересную вещь — пример работы с Common Lisp,
в режиме самого что ни на есть interactive development'а. Я уже давал ссылку на
статью известного деятеля в области OO, XP и пр. Martin'а Fowler'а: http://martinfowler.com/articles/languageWorkbench.html
Если в кратце, то в статье рассказывается о пользе DSL, и в качестве
примера рассматривается написание на C# расширяемого парсера некоего
лога вызовов/чего-то ещё с конфигурацией через XML. Идея заключается
о создании нужного класса в зависимости от типа записи и последующем
раскидовании по пропертям определённых подстрок. Исходные данные выглядят
так:
Что более интересно, позже он выложил Quicktime movie, показывающий
процесс разработки Лисп-решения. Торрент доступен тут: http://www.xach.com/bt/dsl-in-lisp.mov.torrent
Для тех, у кто с торрента скачать не может, здесь отмиррорен сам мувик http://depni.sinp.msu.ru/~ivan_iv/lisp/dsl-in-lisp.mov
(125 Mb; я, честно говоря, затрудняюсь сказать, почему Rainer Joswig предпочитает
делать квиктаймы, вместо того, чтобы сделать гораздо более компактный swf).
Разработка происходит в среде LispWorks на Power Mac G5. Виден процесс
отладки DSL'я Прошу заметить, в плюсах так просто не посмотришь, во что
разворачивается темплейт. (По поводу самой среды — Personal Edition, более чем
достаточный, чтобы побаловаться, доступен забесплатно для Винды, Мака и Линуха
на сайте www.lispworks.com)
Остается еще пара вопросов:
1. Мэйнстрим-языки хороши еще тем, что они уже интегрированы в привычную инфраструктуру. А большинство задач это сопровождение/адаптация уже существующих приложений/решений, выбирать язык вообще не приходится. Единственный вариант — встраивать Лисп примерно как сейчас это происходит с SQL. Вопрос — где взять эти lisp.cpp, lisp.java, lisp.pas, lisp.cs?
2. Что нельзя написать на Лисп? То есть куда отодвигается горизонт "слишком сложно" при переходе на Лисп.
Здравствуйте, ON, Вы писали: ON>2. Что нельзя написать на Лисп? То есть куда отодвигается горизонт "слишком сложно" при переходе на Лисп.
На мой взгляд будет сложно, или точнее малоцелесообразно писать низкоуровневый "железный" код на лиспе, т.к. всёже там есть сборщик мусора и проч. довольно высокоуровневые инструкции языка. Т.е. аналогия с забиванием гвоздей микроскопом. Для таких задч лучше использовать более подходящие инструменты — ассемблер, си (и молоток )
Здравствуйте, mihoshi, Вы писали:
M>Здравствуйте, fionbio, Вы писали:
M>И все-таки. Какие Lisp имеет преимущества, кроме сверхлегкой для машины (и неудобной для человека) грамматики?
Хм... меня скобки перестали угнетать где-то к 4-ой главе Practical Common Lisp. Вы попробуйте и зацените.
К 6-ой главе я уже считал что как раз у Лиспа и есть сверхлегкая для человека грамматика, после всяких mainstream XML велосипедов типа BPEL просто наслаждаешся жизнью.
Единственное условие — пользуйтесь IDE! Без элементарной расскраски и возможности перехода на определение метода, даже прекрасно написанные исходники Eclipse IDE на прекрасно синтаксически вылизанной Java — дремучий лес.
-- Главное про деструктор копирования не забыть --
Здравствуйте, mishaa, Вы писали:
M>>И все-таки. Какие Lisp имеет преимущества, кроме сверхлегкой для машины (и неудобной для человека) грамматики?
M>Хм... меня скобки перестали угнетать где-то к 4-ой главе Practical Common Lisp. Вы попробуйте и зацените.
Здравствуйте, mihoshi, Вы писали:
M>Здравствуйте, mishaa, Вы писали:
M>>>И все-таки. Какие Lisp имеет преимущества, кроме сверхлегкой для машины (и неудобной для человека) грамматики?
M>>Хм... меня скобки перестали угнетать где-то к 4-ой главе Practical Common Lisp. Вы попробуйте и зацените.
M>Ты не ответил на мой вопрос.
Просто в самом вопросе предпосылка неверна, поэтому отвечать на него смысла не имеет если её не отрицать. Просто смысл в скобках, т.е. в том факте что программа на лиспе есть по сути AST, т.е. программа==данные, и трансформации она подвергается с такой же лёгкостью как данные в традиционных императивных языках. Т.е. экспрессивность решений повышается в разы, паттерны реализуются запросто и т.д.
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Mishka, Вы писали:
M>>2. Как получать больше денег программируя на Lisp, чем, например, на C# или VBA?
К>Сделай Yahoo Shops
Боюсь, что для этого нужно быть Полом Грэхэмом.
... << RSDN@Home 1.1.4 stable rev. 510>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Курилка wrote:
> M>>Хм... меня скобки перестали угнетать где-то к 4-ой главе Practical > Common Lisp. Вы попробуйте и зацените. > M>Ты не ответил на мой вопрос. > Просто в самом вопросе предпосылка неверна, поэтому отвечать на него > смысла не имеет если её не отрицать. Просто смысл в скобках, т.е. в > том факте что программа на лиспе есть по сути AST, т.е. > программа==данные, и трансформации она подвергается с такой же > лёгкостью как данные в традиционных императивных языках. Т.е. > экспрессивность решений повышается в разы, паттерны реализуются > запросто и т.д.
Вот с этим можно поспорить.
Во-первых, писать программу в виде чистого AST — неудобно.
Во-вторых, писать нетривиальные преобразования AST — весьма непросто,
причем тестировать их тоже не легко.
В-третьих, для обычных языков типа Java/C# уже существуют системы для
редактирования AST. Только называется это Aspect Oriented Programming. А
для C# у нас еще и R# есть
Здравствуйте, mishaa, Вы писали:
M>Единственное условие — пользуйтесь IDE! Без элементарной расскраски и возможности перехода на определение метода, даже прекрасно написанные исходники Eclipse IDE на прекрасно синтаксически вылизанной Java — дремучий лес.
Если уж зашел об этом разговор... Какие есть более-менее качественные (минимум — с поддержкой отладки) некоммерческие IDE для Common Lisp? Желательно, чтобы работали под Windows.
P.S. Из IDE для Scheme — я нашел DrScheme, и он мне понравился. По крайней мере, для обучения он хорош (вроде для этого и предназначен). Под Windows работает (как и под Linux). Какие-то возможности отладки есть. А Project Management я там не нашел .
Здравствуйте, eao197, Вы писали:
M>>1. Как найти работу программистом на Lisp? E>Вот об этом есть интересная автобиография: Lisping at JPL
То есть: "хочешь есть, не трогай lisp?"
В этой истории не упоминается одна вещь — для того, чтобы писать на Lisp, нужно думать, что хорошо говорит о людях, его использующих.
Но проекты зависят от людей, а не от языков программирования. Хороший программер закончит проект и на VB в срок и в рамках бюджета, а плохому даже Lisp не поможет.
Так что "наш проект провалился из-за того, что мы не использовали Lisp" — это детский лепет
P.S. Немножко не по теме, но всё же. Microsoft собирается избавится от VBA и пересадить всех на .NET. Для меня это хорошая новость, но вот наши desk developer-ы этому не слишком рады — придётся больше думать, и C# — это не VBA. Попробуй кто меня пересадить на Lisp, я б тоже наверно не был бы слишком счастлив.
Здравствуйте, pvgoran, Вы писали:
P>Здравствуйте, mishaa, Вы писали:
M>>Единственное условие — пользуйтесь IDE! Без элементарной расскраски и возможности перехода на определение метода, даже прекрасно написанные исходники Eclipse IDE на прекрасно синтаксически вылизанной Java — дремучий лес.
P>Если уж зашел об этом разговор... Какие есть более-менее качественные (минимум — с поддержкой отладки) некоммерческие IDE для Common Lisp? Желательно, чтобы работали под Windows.
P>P.S. Из IDE для Scheme — я нашел DrScheme, и он мне понравился. По крайней мере, для обучения он хорош (вроде для этого и предназначен). Под Windows работает (как и под Linux). Какие-то возможности отладки есть. А Project Management я там не нашел .
Если от emacs сильно не тошнит, то глянь сюда
Лично мне показалось юзабельным.
P>>Если уж зашел об этом разговор... Какие есть более-менее качественные (минимум — с поддержкой отладки) некоммерческие IDE для Common Lisp? Желательно, чтобы работали под Windows.
P>>P.S. Из IDE для Scheme — я нашел DrScheme, и он мне понравился. По крайней мере, для обучения он хорош (вроде для этого и предназначен). Под Windows работает (как и под Linux). Какие-то возможности отладки есть. А Project Management я там не нашел .
К>Если от emacs сильно не тошнит, то глянь сюда К>Лично мне показалось юзабельным.
Здравствуйте, pvgoran, Вы писали:
P>Если уж зашел об этом разговор... Какие есть более-менее качественные (минимум — с поддержкой отладки) некоммерческие IDE для Common Lisp? Желательно, чтобы работали под Windows.
Будем считать, что про Emacs+SLIME я ответ уже получил