Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где и как используем Lisp? Где и как используем Lisp? 
:(
    Опции темы
 
Где и как используем Lisp?
Хобби [ 5 ]  [25.00%]
Учебный процесс. Преподаю [ 0 ]  [0.00%]
Учебный процесс. Изучаю [ 10 ]  [50.00%]
В науке/исследованиях [ 1 ]  [5.00%]
Программирую и получаю за это деньги [ 0 ]  [0.00%]
Изучаю в качестве альтернативного средства разработки и получаю за это деньги [ 0 ]  [0.00%]
Пишу свой продукт, с которым потом выйду на рынок [ 2 ]  [10.00%]
Другое [ 2 ]  [10.00%]
Всего проголосовавших: 20
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
Walker
Дата 23.10.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 23.10.2006

Репутация: нет
Всего: 16



На практике по конструированию в институте писали расширения для AutoCAD на модификации LISP'a - AutoLISP'е аж с третьего курса и до  диплома. Некоторые даже защищались на прикладных программах.

Цитата

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


Вовсе нет.  По сложности языка реализация сродни школьному BASIC.smile Мне так показалось. Во всяком случае, я его воспринял лучше, чем Фортран. Что до прикладных программ - то на языке выполняли коммерческий проект, ориентированный на инженеров, "туго" знающих конструкторское дело и требовавших быстродоступный инструмент для автоматизации разработки типовых узлов. Интерфейс получился интуитивно понятный, насыщенный всякими всплывающими окошками, менюшками, кнопочками, RADIO_BUTTON и т.д., а главное, он формируется легко.

Цитата

это, думаю, на любителя. Меня вот их скобочки достали через две минуты после просмотра кода. 


А мне понравилось.smile Зато научился ставить скобки сразу парой. И теперь при компиляции приложений на высокоуровневых языках ошибки ')' expected не получаю.;)

Сейчас LISP в силу специфичности не использую.


--------------------
"От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..."
PM MAIL   Вверх
Амортизатор2
Дата 23.10.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 6.2.2006

Репутация: нет
Всего: 2



Цитата

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


Инкапсуляция - скрытие данных и реализации в общем случае, в данном случае я имелл ввиду скрытие реализации бащового класса от производных классов. Конечно, инкапсуляция и полиморфизм - сами по себе разные вещи, т к полиморфизм в общем случае - это просто способность одной функции заменять другую. Но без инкапсуляции от полиморфизма мало толку. Если он наследует все свойства и методы (т е все они публик), как это сделано в Common Lisp, тогда не удается контролировать степень общности потомка и его родителя.

Цитата

Не понял различия. Какая разница какой статус присвоен проекту?
Оперирующие "уровнями" код не читают, а читающим - наплевать на "уровень".


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

Цитата

Вовсе нет.  По сложности языка реализация сродни школьному BASIC. Мне так показалось. Во всяком случае, я его воспринял лучше, чем Фортран. Что до прикладных программ - то на языке выполняли коммерческий проект, ориентированный на инженеров, "туго" знающих конструкторское дело и требовавших быстродоступный инструмент для автоматизации разработки типовых узлов. Интерфейс получился интуитивно понятный, насыщенный всякими всплывающими окошками, менюшками, кнопочками, RADIO_BUTTON и т.д., а главное, он формируется легко.


Интерфейс уже давно перестал быть проблемой. Все мейнстримовые платформы предоставляют прекрасные средства для построения интерфейса. А то, что ЛИСП очень специфичен - это верно подмечено. Мне кажется, если тянет на экзотику, имеет смысл обратить внимание на многопарадигменные языки - OCaml, F#, Nemerle (императивка+ООП+функционалка).
PM MAIL   Вверх
svg
Дата 24.10.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 13.4.2005

Репутация: 14
Всего: 18



Цитата(Амортизатор2 @  23.10.2006,  19:34 Найти цитируемый пост)
Если он наследует все свойства и методы (т е все они публик), как это сделано в Common Lisp, тогда не удается контролировать степень общности потомка и его родителя.


В CLOS методы являются объектами соответсвующей generic function, а не принадлежат какому-либо классу,
специализируются на типе или значении аргументов.

Смоделировать классы в стиле C++/Java в принципе не представляет труда, используя MOP и/или макросы,
но случаев, когда у кого нибудь возникала по ним тоска или необходимость я пока не встречал.


Цитата(Амортизатор2 @  23.10.2006,  19:34 Найти цитируемый пост)
Ну это просто пример большого проекта. Я имел ввиду просто большой проект. Многие говорят, что функционалка под них плохо подходит.


Опять же, Common Lisp не функциональный, а универсальный язык. Проект при его использовании может внезапно
стать из большого довольно маленьким, например у меня в CRUD-приложении около 80-ти классов, отображающих
модель базы данных и на каждый из них по три CRUD-формы (обычная MVC-модель). Весь код занимает около 50K,
так как и классы модели и формы по ним в основном генерируются макросами.

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

Цитата(Амортизатор2 @  23.10.2006,  19:34 Найти цитируемый пост)
Интерфейс уже давно перестал быть проблемой. 


Всегда был и будет. Особенно сейчас, когда приложения становятся все более конкурентными и GUI является 
результатом взаимодействия десятков параллельных процессов. 
GUI легче всего программируется в объектном стиле, взаимодействие - в функциональном, а парадигмы/языка,
удобного для обоих случаев я пока не встречал.
PM MAIL   Вверх
farm
Дата 26.10.2006, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



Цитата(svg @ 24.10.2006,  00:16)
например у меня в CRUD-приложении около 80-ти классов, отображающих
модель базы данных и на каждый из них по три CRUD-формы (обычная MVC-модель). Весь код занимает около 50K,
так как и классы модели и формы по ним в основном генерируются макросами.


а возможно посмотреть твой код?
PM MAIL   Вверх
svg
Дата 26.10.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 13.4.2005

Репутация: 14
Всего: 18



Цитата(farm @  26.10.2006,  05:25 Найти цитируемый пост)
а возможно посмотреть твой код? 


Секретного ничего нет, но для стороннего использования я код не готовил, соотвественно есть только голые исходники.

иллюстративно, все выглядит так:
Код

(gen-view-class agent-type (freeside-db-object)
   ()
   (:metaclass freeside-db-class))
(gen-set-view-defaults-from-db agent-type)


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

Код

(def-view-class agent-type (freeside-db-object)
  ((typenum :accessor typenum
            :db-kind :key
            :type integer
            :initarg :typenum)
   (atype :accessor atype
          :db-constraints :not-null
          :type (varchar 80)
          :initarg :atype)
   (agents :accessor agents
           :db-kind :join
           :db-info
           (:join-class agent
            :home-key typenum
            :foreign-key typenum
            :set t))
   (packages :accessor packages
           :db-kind :join
           :db-info
           (:join-class type-pkgs
            :home-key typenum
            :foreign-key typenum
            :set t)))
  (:base-table agent-type)
  (:metaclass freeside-db-class))


Данные макросы генерируют формы просмотра, редактирования и поиска по сгенерированному выше классу:
Код

(define-form-from-view (fs.agent-type agent-type) ()
  ()
  (:default-initargs
    :data-src *freeside-src*))

(define-set-from-view (fs.agent-type-set agent-type)
  ()
  (:default-initargs
     :data `(:fetch-order (([typenum] :asc))
                       :data-src ,*freeside-src*)))


Конечный результат выглядит так:
user posted image

так
user posted image
и так:
user posted image

Это сообщение отредактировал(а) svg - 26.10.2006, 13:50
PM MAIL   Вверх
farm
Дата 26.10.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.10.2006

Репутация: нет
Всего: нет



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

кстати, а использует ли кто лисп для web-а, какой web-сервер, что насчет шаблонов, mvc, как лисп внедрять в html, используете ли какой фреймворк?

Это сообщение отредактировал(а) farm - 26.10.2006, 17:18
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.1168 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.