История изменений
Исправление tp_for_my_bunghole, (текущая версия) :
Clojure это не Lisp.
Lisp в первую очередь это Машина:
Весь код программы Lisp находится в памяти. Гранулярность компиляции одна функция - это значит что наводишь курсор на код и нажимаешь eval. Эта функция сразу помещается в исполняемую память. Для завершения сессии программирования весь образ программы в памяти сохраняется на диск(функция как save-lisp-and-die). Перед сохранением откатывается текущий стэк. Запуск этой программы в следующий раз означает загрузку всего образа в память и указание с какой функции начать исполнение. Входные функции могут быть разные.
Для Lisp нет дебаггеров. Сам Lisp это дебаггер. Исключения(exceptions) могут быть интерактивные. Когда происходит ошибка в runtime, откатывается стек до обработчика и показывает командную строку в терминале(REPL) предлагая варианты перезапуска с этой точки. Это может быть мощным инструментом для создания игр например.
Разработка с загруженным рабочим образом даёт возможность найти значение/определение абсолютно любого символа. Для динамических языков как Python чаще используют статический анализ(Jedi) кода для «go to definition», что для динамики просто приблизительная оценка.
Никакой обфускации кода(изменение имён), все символы в Lisp доступны всегда в рантайме. Не знаю как в Clojure, на VM Java.
Ни одна современная система кажется не предлагает ничего аналогичного. Guile Scheme это Lisp, но в Scheme ошиблись с тем что у них будет очень минималистичная реализация(«не так как в Common Lisp»). Теперь уже 7-й пересмотр стандарта Scheme, R7RS. A компиляция Guile из «C» makefile идёт вроде намного дольше чем SBCL.
Исправление tp_for_my_bunghole, :
Clojure это не Lisp.
Lisp в первую очередь это Машина:
Весь код программы Lisp находится в памяти. Гранулярность компиляции одна функция - это значит что наводишь курсор на код и нажимаешь eval. Эта функия сразу помещается в исполняемую память. Для завершения сессии программирования весь образ программы в памяти сохраняется на диск(функция как save-lisp-and-die). Перед сохранением откатывается текущий стэк. Запуск этой программы в следующий раз означает загрузку всего образа в память и указание с какой функции начать исполнение. Входные функции могут быть разные.
Для Lisp нет дебаггеров. Сам Lisp это дебаггер. Исключения(exceptions) могут быть интерактивные. Когда происходит ошибка в runtime, откатывается стек до обработчика и показывает командную строку в терминале(REPL) предлагая варианты перезапуска с этой точки. Это может быть мощным инструментом для создания игр например.
Разработка с загруженным рабочим образом даёт возможность найти значение/определение абсолютно любого символа. Для динамических языков как Python чаще используют статический анализ(Jedi) кода для «go to definition», что для динамики просто приблизительная оценка.
Никакой обфускации кода(изменение имён), все символы в Lisp доступны всегда в рантайме. Не знаю как в Clojure, на VM Java.
Исправление tp_for_my_bunghole, :
Clojure это не Lisp.
Lisp в первую очередь это Машина:
Весь код программы Lisp находится в памяти. Гранулярность компиляции одна функция - это значит что наводишь курсор на код и нажимаешь eval. Эта функия сразу помещается в исполняемую память. Для завершения сессии программирования весь образ программы в памяти сохраняется на диск(функция как save-lisp-and-die). Перед сохранением откатывается текущий стэк. Запуск этой программы в следующий раз означает загрузку всего образа в память и указание с какой функции начать исполнение. Входные функции могут быть разные.
Для Lisp нет дебаггеров. Сам Lisp это дебаггер. Исключения(exceptions) могут быть интерактивные. Когда происходит ошибка в runtime, откатывается стек до обработчика и показывает командную строку в терминале(REPL) предлагая варианты перезапуска с этой точки. Это может быть мощным инструментом для создания игр например.
Разработка с загруженным рабочим образом даёт возможность найти значение/определение абсолютно любого символа. Для динамических языков как Python чаще используют статический анализ(Jedi) кода для «go to definition», что для динамики просто приблизительная оценка.
Исправление tp_for_my_bunghole, :
Clojure это не Lisp.
Lisp в первую очередь это Машина:
Весь код программы Lisp находится в памяти. Гранулярность компиляции одна функция - это значит что наводишь курсор на код и нажимаешь eval. Эта функия сразу помещается в исполняемую память. Для завершения сессии программирования весь образ программы в памяти сохраняется на диск(функция как save-lisp-and-die). Перед сохранением откатывается текущий стэк. Запуск этой программы в следующий раз означает загрузку всего образа в память и указание с какой функции начать исполнение. Входные функции могут быть разные.
Для Lisp нет дебаггеров. Сам Lisp это дебаггер. Исключения(exceptions) могут быть интерактивные. Когда происходит ошибка в runtime, откатывается стек до обработчика и показывает командную строку в терминале(REPL) предлагая варианты перезапуска с этой точки. Это может быть мощным инструментом для создания игр например.
Исходная версия tp_for_my_bunghole, :
Clojure это не Lisp.
Lisp в первую очередь это Машина:
Весь код программы Lisp находится в памяти. Гранулярность компиляции одна функция - это значит что наводишь курсор на код и нажимаешь eval. Эта функия сразу помещается в исполняемую память. Для окончания работа весь образ программы в памяти сохраняется на диск. Для этого откатывается текущий стэк. Запуск этой программы в следующий раз означает загрузку всего образа в память и указание с какой функции начать исполнение. Входные функции могут быть разные.
Для Lisp нет дебаггеров. Сам Lisp это дебаггер. Исключения(exceptions) могут быть интерактивные. Когда происходит ошибка в runtime, откатывается стек до обработчика и показывает командную строку в терминале(REPL) предлагая варианты перезапуска с этой точки. Это может быть мощным инструментом для создания игр например.