这个问题,得看提问的人是谁,答案是因人而异的。

autolisp是什么?

autolisp是一门编程语言,是XLISP子集,XLISPLISP 语言的一种“方言”(实现implement)。

AutoLISP最早出现于1986年1月,是随着AutoCAD 2.18版一起发布的。在autolisp出现之前, autocad的二次开发除了写script脚本,大概就只有c语言了。有了autolisp之后,普通的cad用户无需全面的编程技能, 通过autolisp就可以写出来自己的插件了。

到了1995年2月发布autocad r13之后1,Autodesk就把autolisp打入冷宫了,因为那个时候有vba、.net、 ObjectARX这些更时髦的技术。关于autolisp被打入冷宫的时间,还有一种说法是1992年6月发布autocad r12的时候2

后来,第三方软件开发商Basis Software,开发了Vital-LISP,引入了包括对ActiveX的支持在内的众多功能, 提供了ide、debugger、compiler,使得AutoLISP如虎添翼。

Autodesk收购了这个软件包,改名为Visual LISP,在1997年5月发布autocad r14的时候, 把Visual LISP作为autocad插件拿出来销售。到了1999年3月发布autocad 2000版的时候, Visual LISP已经作为内置组件出现在autocad 2000当中了。

现在使用的autolisp,实际上是visual lisp,纯粹的autolisp代码已经很难见到了,就连dassault的DraftSight 都支持vl-*系列函数了。autolisp的叫法,只是一种习惯上的沿袭罢了。

autolisp的竞品

autolisp的用途是用于autocad二次开发,也有人在尝试把它变成一个通用脚本语言3,不过,它最开始的、 最主要的用途还是autocad二次开发。

在autocad二次开发,或者说广义的cad开发当中,autolisp的竞品至少有:

  1. vba
  2. .net/C#
  3. ObjectARX/C++
  4. python
  5. javascript

在autocad中,以及类似于autocad的autocad-like的cad软件当中,前3种api是普遍都会提供的, javascript目前来看是autocad独有的,python的支持也可以看做是普遍的,因为, python也可以调用ActiveX组件,而ActiveX到目前为止还是windows的基础技术之一。

从编程语言的角度来讲,autolisp是没有什么劣势的,唯一的劣势只是生态上的劣势, 这种劣势在99%的情况下都不存在问题,因为它的定位就决定了它根本不需要什么“生态”。

vba毫无疑问是过时了的,autocad好多年以前就不再内置vba组件了,微软也早就宣布要放弃vba了。

C#/C++自然是永不过时的,至少,目前来看是不可能过时的。autolisp跟这二者也不是相互替代的关系, 它是这两者的补充,毕竟,脚本语言始终有存在的必要性,搞cad开发总不能首选lua吧?

python和javascript毫无疑问是流行的、强大的,问题在于,这两者过于通用了。 它们都有数量庞大的各种各样的库,调包是很方便很爽的,可是,你搞cad二次开发真的需要调那么多包?

结论

autolisp是否过时,取决于你是autocad用户还是软件开发商。

从软件开发商的角度来看,autolisp是过时的。Autodesk在autocad中引入JavaScript就表明了它的态度, 连自家人都想要放弃的技术,自然是过时的。

不过,这里边有个微妙的问题。

第三方软件开发商跟Autodesk,其实是有利益冲突的。Autodesk想要放弃的技术,不代表不适合第三方软件开发商。

对于autocad用户来讲,autolisp过时与否完全不重要,想要学习就应该立即开始,早学早受益。 很多人到今天还在使用autocad 2007,连这种已经发布了十六七年的老软件都能用,被支持了快40年的autolisp, 还有什么好担心的呢?

总之,cad用户是要提高效率,能提高效率的工具无所谓过时与否;Autodesk和第三方软件开发商是要赚钱, 能赚钱的技术、能赚更多钱的技术才是心头好,过时的自然是不好的,流行的当然更容易赚到钱。🤣