找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1128|回复: 7

[讨论]:Auto lisp 和VLISP有何区别?

[复制链接]
发表于 2008-5-3 22:01:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请教各位Auto lisp 和VLISP有何区别?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-5-3 23:21:41 | 显示全部楼层
LISP,全称为LISt Processing language, 即表处理语言,是由John McCarthy在1958年开发出的一种用于人工智能的语言,该语言与常用的高级语言不一样的是,该语言主要由表和原子组成,语法规则相对简单,对书写格式无严格要求,因此,与其一起诞生的其它语言都已退出历史舞台,而它却还在大放异彩。1986年,John Walker将LISP语言的一个分支Common LISP引入了AutoCAD并对其加以扩展,使其成了对AutoCAD进行二次开发的最早工具——AutoLISP(随AutoCAD v2.18一起发行),从而成为AutoCAD的最好伙伴,也让AutoCAD因其开放的开发环境而成为各行各业都不可或缺的CAD软体。
AutoLISP是惟一的一种解释型语言,几乎可以调用AutoCAD的所有命令。它的最典型应用之一就是实现参数化绘图程序的设计,包括尺寸驱动程序和鼠标拖动程序;另一个典型应用就是驱动AutoCAD提供的PDB模块构成DCL文件,创建自己的对话框。
这种解释型语言具有以下优点:
A.        语言规则十分简单,易学易用;
B.        直接针对AutoCAD,易于交互;
C.        解释执行,立竿见影。
但是,AutoLISP也有以下缺点:
A.        功能单一,综合处理能力差;
B.        解释执行,程序运行速度慢,处理图元较多时尤其明显;
C.        缺乏很好的保护机制,源程序保密性差(源程序不可编译,只能作简单的加密方式进行加密,而这种加密方式早已被破解了);
D.        AutoLISP用表来描述一切,并不能很好反映现实世界和过程,跟人的思维方式也不一致(即不支持面向对象技术);
E.        不能直接访问硬件设备,进行二进制文件的读写;
F.        没有专用的编程开发环境,调试就显得有些困难。
AutoLISP这些缺点,也在很大程度上限制了它在开发大型程序时的功能。
随着C++,Delphi,Java等高级语言开始对面向对象编程(OOP)的支持,Autodesk公司也开始对AutoLISP进行了改进和扩展,增加了其对面向对象技术和可视化编程技术的支持,从而形成了Visual LISP(简称VLISP,下同)。
Visual LISP是一个可视化LISP语言的开发环境,是AutoLISP语言的扩展与延伸。基于ObjectARX技术的Visual LISP提供了一组性能优越的面向对象开发工具集,使AutoCAD的LISP语言功能上了一个新台阶。
Visual LISP与AutoLISP完全兼容,并提供了它所有的功能。Visual LISP对AutoLISP语言进行了扩展,可以通过Microsoft ActiveX Automation接口与对象进行交互。同时,它通过实现反映器函数,还扩展了LISP语言响应事件的能力。但是,和其它高级语言不同的是,VLISP不能离开AutoCAD单独执行。而且,相对于其它高级语言来讲,VLISP可以获得的支持资源相对较少。其特点如下 :
A.        VLISP脱胎于AutoLISP,完全兼容AutoLISP,能合AutoCAD完全无缝结合,这样,以前开发过的AutoLISP程序不至于毫无用处,或是从头改写;而且VLISP语法规则与AutoLISP一样,简单易学(特别是对于有LISP基础的人来说,不必另外学习即可掌握VLSIP);同样,VLISP对编程环境没有特别要求,任何编辑器均可用于编程(但是,与AutoLISP不同的是,VLISP有专用的IDE,而且必须在专用的IDE下才可对其程序进行编译);
B.        VLISP与高级语言相比,对系统进行控制的功能不如C++,Java等高级语言,然而对于模具开发软件来说,这未尝不是一件好事:因为它的这一特点,使其编出的程序在运行出错时不会导致AutoCAD系统崩溃,更不会引起系统的崩溃(除非你用VLISP编写恶意代码,因为VLISP一样可以对注册表和硬件进行操作,而不当地修改注册表或者硬件参数可能导致系统的崩溃);而C++,Java等高级语言出错时则常常会致使AutoCAD系统崩溃(如用C++进行AutoCAD二次开发,未清空指针时,可能导致AutoCAD崩溃),有时甚至会引起操作系统的崩溃;
C.        VLISP采用Compile-during-Load(随载即编译)技术,使其看起来和AutoLISP一样,可以解释执行,立竿见影。也就是说,可以写一句,执行一句,即不需编译和连接就可看到执行结果,真正达到所见即所得的效果(What you see is what you get),因此相对来说,开发难度会小很多;
D.        尽管VLISP和AutoLISP一样,可以利用任何文本编辑器进行代码编写(如NOTEPAD,WordPad,ULTRAEDIT等),但VLISP也有专用的IDE(Integrated Development Environment),在这个IDE下,不仅可以实现色彩代码编写,而且还可利用其对程序进行调试(debug),检测(check),链接(link),编译(compile),从而使编程效率大大提高;
E.        VLISP可使用户的AutoCAD应用程序运行得更快,它的编译器将LISP源程序编译成Object ARX应用程序(可与AutoCAD共享地址空间),由于LISP程序通过AutoCAD的Object ARX接口运行,所以它比AutoLISP程序快3到10倍,并且省去每次打开新图重新调用的麻烦;
F.        由于VLISP采用ObjectARX平台,可将AutoCAD和其他应用程序如Windows、Office、ActiveX包含到LISP的源程序中,改善了ActiveX与AutoCAD对象模型之间的接口特性,提高了应用程序的灵活性;
G.        与C++、Java、Delphi等高级语言不同的是,VLISP不需要单独购买,它集成于AutoCAD,也就是说,只要你买了AutoCAD,您就拥有了VLISP,也拥有了指导你进行VLISP程序开发的指南;尽管VLISP完全免费,但相对于AutoCAD来说,其功能却是非常强大的:用它可以对AutoCAD进行各种图形对象进行各种操作(如移动,旋转,镜像,复制,删除等),也可以对非图形对象进行处理(图档更新,重绘,存档等),甚至它也可以对操作系统、办公软件等进行操作(如删除文件,建立目录,开启新的应用程序,读写数据库等操作);
H.        由于VLISP编译成的二进制代码文件(Binary File)无法直接读取,加上这种语言的用户相对来说并不是很多,因此,到目前为止,还没有软件声称能够对编译过的VLISP文件(VLX格式或者FAS格式)进行反编译,因此采用这种语言开发的应用程序到目前为止不担心有人会对其进行反编译,应用程序更加安全(而相比之下,AutoLISP程序加密保全则早已被破解了,毫无保护知识产权的可能性)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10259个

财富等级: 富甲天下

发表于 2008-5-4 09:56:36 | 显示全部楼层
楼上说得太多了。
AutoLISP是VLISP的子集,VLISP是在AutoLISP的基础上的扩充。
AutoLISP在AutoCAD2000以上版本上也可以编译成VLX和FAS格式。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-5-4 11:35:52 | 显示全部楼层
“VLISP可使用户的AutoCAD应用程序运行得更快,它的编译器将LISP源程序编译成Object ARX应用程序(可与AutoCAD共享地址空间),由于LISP程序通过AutoCAD的Object ARX接口运行,所以它比AutoLISP程序快3到10倍,并且省去每次打开新图重新调用的麻烦 ”

请教一下,上面这段话怎么理解,编译后形成的VLX或FAS文件就是“Object ARX应用程序”吗?它能比lisp源码的执行速度“快3到10倍”吗?“可与AutoCAD共享地址空间”和“省去每次打开新图重新调用的麻烦”又是怎么理解? 盼赐教,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-5-5 00:10:17 | 显示全部楼层
最初由 TYEEXDD 发布
[B]“VLISP可使用户的AutoCAD应用程序运行得更快,它的编译器将LISP源程序编译成Object ARX应用程序(可与AutoCAD共享地址空间),由于LISP程序通过AutoCAD的Object ARX接口运行,所以它比AutoLISP程序快3到10倍,并且?.. [/B]


VL和老L相比,功能提高是肯定的,快不尽然,至少目前的实测不见得快,甚至更慢。不过设计的过程更多的时间是思考而不是画图,纯画图的兄弟也不会去研究程序,所以快慢是比出来的,没有实质意义。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2008-5-5 19:51:47 | 显示全部楼层
同意楼上的看法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-5-9 07:14:33 | 显示全部楼层
lisp是一个 公共的免费的共享东西,
Vlisp  则可以不是,它不再完全的开放, 所谓的知识产权让喜爱开放性的lisp者越来越不喜欢,却让不是那么喜欢lisp的人开始喜欢上可以编译不共享的vlisp了

就这个区别
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-5-23 08:53:49 | 显示全部楼层
vlisp 用起来要比LISP方便,仅此而已
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-28 12:34 , Processed in 0.393974 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表