Re[8]: Что мы потеряли?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 30.08.06 11:00
Оценка:
eao197,

LCR>>http://en.wikipedia.org/wiki/Read-eval-print_loop

E>Т.е. приведенный мной здесь
Автор: eao197
Дата: 04.10.05
пример на Ruby является примером REPL (в конце сообщения)?


Очень похоже на это.

Весь кайф REPL (и отличие от обычной командной строки) в том, что работа идёт с настоящими объектами. Они "плавают" в "море" сами по себе, мы вытаскиваем их, модифицируем их, и возвращаем обратно плавать. И таким образом наворачиваем функционал системы (начиная с нуля), которая уже работает и мы наблюдаем её работу. Естественно такая командная оболочка должна помогать "вылавливать" нужные сущности (объекты, функции и т.п.) и результатом таких сеансов "объектной ловли" в конечном итоге должен быть работающий исходный код.

Вычисления в command window — это не то. Объекты в command window берутся от пользователя (а не из "моря") и после вывода их представления на экран исчезают. Eclipse и IDEA имеют такое окно, но им почти никто не пользуется, потому что сформировать нужный объект, потом провести над ним вычисление — это нетривиальная работа, чтобы затем просто выкинуть объект. Поэтому все, кого я знаю, действуют по старинке: редактор-компилятор-отладчик.

Я пробовал писать из шелла в Эрланге, но оттуда удобно только наблюдать за состоянием системы. Определять функции (особенно рекурсивные) требует некоторого усилия и расширять/изменять их неудобно. И в общем, я не думаю, что можно всю систему написать таким образом. Тем не менее у Эрланга всё для этого имеется (read, eval, print).

Если Ruby компилируем, то нужно расширить список компилируемых языков с REPL.

ps: Ещё Питон и OCaml.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.