Mитька Posted July 14, 2020 Report Share Posted July 14, 2020 (edited) Возник вопрос: как работает компилятор в редакторе скриптов? Пример: есть скрипт на лиспе, суммирующий длину полилиний (ну или любой другой, этот для примера). Если подгрузить его через Приложения, а потом запустить командой, всё работает. Если открыть его в редакторе скриптов и нажать "Запустить" то в моём представлении это должно запускать команду (иначе зачем ещё нужна эта функция), но по факту в командной строке пишется имя команды и не происходит вообще ничего. Это Я что-то не так делаю..? Скрипт прилагать не вижу смысла - пробовал на 3х разных - механика одна и та же. Edited July 14, 2020 by Mитька Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted July 14, 2020 Report Share Posted July 14, 2020 3 часа назад, Mитька сказал: как работает компилятор в редакторе скриптов? В данном случае речь о компиляции не идёт Здесь имеет место интерпретатор. Об отладке речь также не идёт. Это всего лишь визуальный редактор, из которого можно запустить скрипт на выполнение. По сути, на данный момент единственный способ отладки - это вывод информации о прохождении промежуточных этапов выполнения скрипта и состоянии соответствующих переменных. Единственное, надо помнить, что речь идёт не о процедурном, а о функциональном программировании. Иначе можно заблудиться в трёх соснах. Особенно, если скрипт скачет между графической частью и интерактивным приёмом информации от пользователя. В функциональном программировании ИМХО лучшего отладчика, чем мозги программиста, всё равно нет. Что касается Редактора скриптов, то лично я предпочитаю Notepad++. Quote Link to comment Share on other sites More sharing options...
Mитька Posted July 14, 2020 Author Report Share Posted July 14, 2020 45 минут назад, A.Kudrjashov сказал: Это всего лишь визуальный редактор, из которого можно запустить скрипт на выполнение. Так в том и дело, что НЕЛЬЗЯ, разве нет? добавлено через 0 минут 45 минут назад, A.Kudrjashov сказал: Единственное, надо помнить, что речь идёт не о процедурном, а о функциональном программировании. Можно для дураков переформиулировать? Quote Link to comment Share on other sites More sharing options...
A.Kudrjashov Posted July 14, 2020 Report Share Posted July 14, 2020 11 минут назад, Mитька сказал: Так в том и дело, что НЕЛЬЗЯ, разве нет? 1. Судя по приведённому скриншоту, в данном случае происходит определение команды nanoCAD, которая может быть впоследствии выполнена из командной строки. То есть, до выполнения данного скрипта команда ELEN в nanoCAD отсутствовала, а при его корректном завершении должна была появиться. Что там происходит дальше и в других скриптах - не знаю. 2. Различия между процедурным и функциональным программированием - это тема не для форума. Если очень упрощённо, то могу показать, как выглядит элементарное арифметическое выражение. Принципиальные сложности и отличия с введением условий, циклов, функций и процедур можете представить себе сами. Скажем так, функциональное программирование несколько перпендикулярно процедурному. Хотя сегодня его элементы встречаются и в обычных языках. К примеру, в каком то смысле функциональными являются конвейеры PowerShell. В обычном процедурном языке: X = Y + SIN(100* SQRT(Z/2))/(Y * Z +10) В LISP (утрирую, но не сильно): (Setq X (+ Y (/ (SIN (* 100 (SQRT (/ Z 2)))) (+ (* Y Z) 10)))) Если интересно, то вот здесь есть много чегоhttps://yadi.sk/d/qWePcZh2bdb6sQ 3 Quote Link to comment Share on other sites More sharing options...
dows Posted July 14, 2020 Report Share Posted July 14, 2020 1 час назад, A.Kudrjashov сказал: Судя по приведённому скриншоту, в данном случае происходит определение команды nanoCAD, которая может быть впоследствии выполнена из командной строки ага, верно. скрипт регистрирует команду в интерфейсе программы. В комстроке собственно это и отображается. Тут либо в конце редактора прописать вызов этой команды (что странно, ибо каждый раз будет регистрироваться новая команда). Либо убрать определение команды оставить только скрипт команды... Quote Link to comment Share on other sites More sharing options...
Mитька Posted July 14, 2020 Author Report Share Posted July 14, 2020 (edited) Понял, спасибо. Да, без первой строки прогоняет скрипт. ЛИСП - жесть... =( Edited July 14, 2020 by Mитька Quote Link to comment Share on other sites More sharing options...
EdwardSt Posted July 14, 2020 Report Share Posted July 14, 2020 7 часов назад, Mитька сказал: Да, без первой строки прогоняет скрипт. Собственно, так все было и задумано еще Автодеском. Блок скрипта (defun …) только регистрирует функцию, о чем было отмечено выше и о чем вам сообщала командная строка. Без этой преамбулы все выражения выполняются последовательно в режиме интерпретатора (о чем так же было написано выше). Если у вас в файле будет нечто типа: (defun func1 …) (print "Привет!") (defun func2 …) то после загрузки такого файла или скрипта будет сообщение о появлении функции1, приветствие и сообщение о функции2 Благодаря этому механизму возможно внесение собственных сообщений, сопровождающих загрузку скриптов. Также возможны более сложные сценарии, когда производится ветвление алгоритма загрузки отдельных функций в зависимости от состояния окружения или определенных переменных. 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.