Каков наиболее эффективный метод преобразования устаревшего кода AutoLISP в C#?
Я участвую в проекте, который в основном работает в AutoCAD, по разработке и производству сборных строительных элементов, таких как кровельные фермы. Одна из наших целей - изменить программу, написанную на LISP, которая предназначена для проектирования кровельных ферм. Мы должны переписать код LISP на C# и постепенно внедрить его в текущие библиотеки, которые они создали.
Моя проблема в том, что мне было поручено создать элементарный конвертер LISP в C#. После некоторого исследования (поскольку результаты Google быстро показывают, что такого не существует под рукой), я пришел к вопросу о том, какой способ преобразования этого унаследованного кода был бы более эффективным. Было бы лучше взять куски кода LISP для анализа и переписать в C#, или мне следует продолжить разработку элементарного конвертера для кода AutoLISP?
2 ответа
Вы должны взять куски кода LISP и переписать на C#.
Даже если бы было проще написать интерпретатор LISP общего назначения на C#, чем переписать LISP на C# (что крайне маловероятно), LISP, вероятно, выполняет команды AutoCAD, как если бы вы вводили в командной строке AutoCAD, вместо этого выполняя ObjectARX. путь. Таким образом, вам также необходимо преобразовать команды для использования ObjectARX API.
C# - это скомпилированный объектно-ориентированный язык программирования, тогда как AutoLISP - это интерпретируемый язык, ориентированный на выражения. Поэтому никогда не будет действительно простого способа преобразования одного в другое без колоссальных усилий.
Стоит отметить, что AutoLISP обладает гибкостью, позволяющей быстро изменять его без необходимости перекомпиляции. Преимущество использования встроенного C# в процессе заключается в том, что он чрезвычайно быстр по сравнению с аналогичным подходом LISP. Я обнаружил, что есть хорошая середина для поддержания гибкости LISP со скоростью и мощью C#, которая использует флаг команды LispFunction и тип ResultBuffer в собственном API.NET.