Они конечно - "близнецы-братья". С точки зрения парадигмы.
Только в FORTH - обратная польская запись, а в LISP - прямая.
Ну по моему скромному мнению - FORTH проще и технологичнее. И более расширяем с плане "синтаксического сахара". Он на это - идеологически заточен.
ОЧЕНЬ хорошая идея - взять FORTH-машину и сделать над ней DSL. Который бы позволял сделать примерно следующее:
: K216794957
ТБ24
ППР
"Перевести фокус в поле 'Орган/Источник' в ППР"
"в поле 'Орган/Источник' ввести {('Правительство России и СССР')}"
"Выделить текст в поле"
"Начинаем набирать {('Органы')}"
"Сравнить абзац текущего редактора с эталоном"
"Нажать {('Enter')}"
"Сравнить абзац текущего редактора с эталоном"
"Нажать Искать"
"Проверить информацию о списке"
;
--------------
K216794957
: K224135514
"Копировать в буфер строку {('01.01.2010')}"
ППР
"Перевести фокус в поле 'Дата принятия' в ППР"
"Вставить"
"Выделить текст в поле"
"Сравнить выделенный текст текущего редактора с эталоном"
;
--------------
K224135514
: K224790135
"Открыть НК"
"Список редакций"
СР
"Вызвать Список редакций из статусной строки"
;
--------------
K224790135
: K226006496
: Действия1
"Перевести фокус в текст"
"В конец документа"
"Перевести фокус в оглавление"
"Получить заголовок текущего контрола"
;
: Действия
"Выставить форме размеры {(1400 800)} ширину навигатора в {(300)} и {(@ Действия1)}"
;
"Открываем НК"
"Сделать {(@ Действия)} с изменением состояния и размеров окна {("Найти главное окно")}"
;
--------------
K226006496
: K232098711
"Открываем НК"
"Список редакций"
"Стрелка вниз"
"Выделить текущий элемент"
"Построить обзор изменений для выбранных редакций"
"Сравнить текст с эталоном"
"Открываем НК"
"Список редакций"
"Стрелка вниз"
"Выделить текущий элемент"
"Сравнить выбранные редакции"
;
K232098711
--------------
: K235865644
"В БП ищем контекст {('Сдача результата работ заказчику оформляется актом приемки выполненных работ, составленным по форме N КС-2')}"
"Нажать {('Enter')}"
// - открываем первый документ списка - он д.б. флешом
"Установить фокус во флеш"
"Проверить что номер кадра флеша равен {(2)}"
;
K235865644
-- это - ТЕСТЫ, а не просто "кейсы". Они - КОМПИЛИРУЮТСЯ и ВЫПОЛНЯЮТСЯ. FORTH-машиной.
Простите уж мне моё занудство. Я писал и на FORTH и на AutoLISP.
Идея AutoLISP меня кстати давным давно - ОЧЕНЬ вдохновила. Что можно не только было рисовать чертежи мышью, но и "программировать" их.
Но FORTH - по-любому - круче. Для "синтаксического сахара".
И в конечном итоге для снижения порога вхождения.
Попробуйте подумать в эту сторону. Может быть вам понравится.
Только в FORTH - обратная польская запись, а в LISP - прямая.
Ну по моему скромному мнению - FORTH проще и технологичнее. И более расширяем с плане "синтаксического сахара". Он на это - идеологически заточен.
ОЧЕНЬ хорошая идея - взять FORTH-машину и сделать над ней DSL. Который бы позволял сделать примерно следующее:
: K216794957
ТБ24
ППР
"Перевести фокус в поле 'Орган/Источник' в ППР"
"в поле 'Орган/Источник' ввести {('Правительство России и СССР')}"
"Выделить текст в поле"
"Начинаем набирать {('Органы')}"
"Сравнить абзац текущего редактора с эталоном"
"Нажать {('Enter')}"
"Сравнить абзац текущего редактора с эталоном"
"Нажать Искать"
"Проверить информацию о списке"
;
--------------
K216794957
: K224135514
"Копировать в буфер строку {('01.01.2010')}"
ППР
"Перевести фокус в поле 'Дата принятия' в ППР"
"Вставить"
"Выделить текст в поле"
"Сравнить выделенный текст текущего редактора с эталоном"
;
--------------
K224135514
: K224790135
"Открыть НК"
"Список редакций"
СР
"Вызвать Список редакций из статусной строки"
;
--------------
K224790135
: K226006496
: Действия1
"Перевести фокус в текст"
"В конец документа"
"Перевести фокус в оглавление"
"Получить заголовок текущего контрола"
;
: Действия
"Выставить форме размеры {(1400 800)} ширину навигатора в {(300)} и {(@ Действия1)}"
;
"Открываем НК"
"Сделать {(@ Действия)} с изменением состояния и размеров окна {("Найти главное окно")}"
;
--------------
K226006496
: K232098711
"Открываем НК"
"Список редакций"
"Стрелка вниз"
"Выделить текущий элемент"
"Построить обзор изменений для выбранных редакций"
"Сравнить текст с эталоном"
"Открываем НК"
"Список редакций"
"Стрелка вниз"
"Выделить текущий элемент"
"Сравнить выбранные редакции"
;
K232098711
--------------
: K235865644
"В БП ищем контекст {('Сдача результата работ заказчику оформляется актом приемки выполненных работ, составленным по форме N КС-2')}"
"Нажать {('Enter')}"
// - открываем первый документ списка - он д.б. флешом
"Установить фокус во флеш"
"Проверить что номер кадра флеша равен {(2)}"
;
K235865644
-- это - ТЕСТЫ, а не просто "кейсы". Они - КОМПИЛИРУЮТСЯ и ВЫПОЛНЯЮТСЯ. FORTH-машиной.
Простите уж мне моё занудство. Я писал и на FORTH и на AutoLISP.
Идея AutoLISP меня кстати давным давно - ОЧЕНЬ вдохновила. Что можно не только было рисовать чертежи мышью, но и "программировать" их.
Но FORTH - по-любому - круче. Для "синтаксического сахара".
И в конечном итоге для снижения порога вхождения.
Попробуйте подумать в эту сторону. Может быть вам понравится.
Common Lisp в тысячу раз мощнее и практичнее AutoLISP
ОтветитьУдалитьЯ знаю :-)
УдалитьCLOS
Меня вот всё время интересует МОТИВАЦИЯ людей, которые пишут (в ответ на чужие сообщения) про то, что "язык XXX мощнее YYY". И начинают пропагандировать Haskell, CommonLISP, Python, etc. Вы чего ждёте :-) Просто так сообщить? Или чтобы другие взялись "завтра же программировать" на языке XXX? Просто так если - СПАСИБО :-) Но "завтра же" - никто не обещает :-)
УдалитьА какая мотивация у людей, которые узнали что-то, но не собираются изучать вопрос ? Остаться безграмотными ?
УдалитьCLOS далеко не самое большое отличие от AutoLisp, вспомним, что в стандарте Common Lisp есть всё, что надо для языка общего назначения: структуры, хэш-таблицы, массивы, символы UNICODE, макросы, переопределяемый Reader и т.д., а в AutoLisp насколько я помню, были только списки и куцая библиотека. Не удивительно, что народ судил Лисп по нему отрицательно. Типичный стиль программирования на AutoLisp - стиль Лиспа 20 летней давности - глобальные переменные где попало (SEQT MyVar (LIST 2 3 4)), это все равно что древний Фортран рядом с современным диалектом или в сравнении с каким-нибудь Ruby.
Лисп стоит чтобы его просто изучить для души, никто не заставляет на нём программировать. То же можно сказать насчет Пролога, Форта, Хаскел, Ocaml, Erlang - это основные парадигмы современного программирования.