中国虫
发表于 2005-6-25 17:27:00
rackyye发表于2005-6-25 14:10:00static/image/common/back.gif看了上面的发言,能做出那几个界面来的人确实是高手,不过充其量是对MFC和ACAD的框架非常熟悉而已。
其实从ACAD的二次开发角度来讲,能做出那几个界面,顶多只...
<BR>你的观点,我同意一半。
我赞同你说的:“一个基于ACAD的二次开发软件,其内容才使最重要的”。
但是专职程序员如果不是真正做过一段时间的某行业软件,对该行业的专业知识是不可能清楚的。就象你所说的建筑设计软件,我可以非常明确的告诉你,天正、理正等知名建筑软件的开发人员都不是学建筑专业的,同时也不是学计算机的。
回到我公司的招聘,我公司从事的是通信行业软件开发,找一个会VC编程,同时会ARX和通信行业专业知识的几乎没有可能性。我公司同别的成熟的软件开发商一样,软件开发流程是系统分析员->程序员->测试员,所以只要能找到有潜质的程序员,在系统分析员的带领下就能做出高水准的产品。而在开发的过程中,程序员逐渐了解了通讯行业的专业知识,工作也就越来越顺手,甚至能做到系统分析员的层次。
ishou
发表于 2005-6-25 22:44:00
本帖最后由 作者 于 2005-6-26 0:13:50 编辑
<BR>楼主出的题目偏重界面设计,不过,用不着为楼主担心,呵呵!还有面试、试用几关啊。基础很重要,是否曾经做过此事其实并不重要,重要的是要懂得如何入手,如何在较短的时间内学会解决问题。
ACAD的巨大成功,关键在于其提供较好的二次开发语言、接口。如果没有这些二次开发功能,ACAD根本不适合设计,因为没有效率,在现在这个非常讲究效率的年代,怎么能接受没有效率的软件!早期的AutoCAD仅仅提供AutoLISP开发语言,尽管该语言很简单,功能也不太强,却使ACAD的功能成千成万的提高!
早期软件的开发,人们往往非常重视、陶醉于软件本身功能的开发,严重忽视用户的参与,很少会提供二次开发接口、语言,往往是提供配置文件,让用户根据本身需要进行基本设置。这些配置文件的设置功能简单,却并不好掌握,往往需要软件提供者设置好。现在软件设计者们越来越明白二次开发功能的重要性,新的大型软件基本上都有提供二次开发语言/接口。
顺便说一下,目前人们基本上是止于二次开发,在二次开发出来的实用软件中很少提供好的方法/语言进行三次开发(最终用户使用),即使有,也是相当简单,可能也只是配置之类。显然,对用于三次开发的语言的简便程度要求更高,很重要的是能够被“程序水平”更低人员(往往是ACAD操作者)使用,目前市面上好象还没有这样的三次开发语言。
rackyye所言极是,ACAD的二次开发,非常需要所用场合的专业知识。另外,也需要所用场合、环境的深刻认识,不是几句咨询话,就可以了解客户的真正意图,老实说,往往客户也很难表达清楚,因为他们一般上对ACAD二次开发上能达到什么程度并不清楚,要么认为无所不能,要么不寄托厚望(因此不愿意多投资)。别说“隔行如隔山”的不同专业,就是做同样事的不同单位,由于生产、设计部门等运作方式的不同,使用ACAD设计的方式可能也会很大的不同!我公司与一家完全同行的公司“合作交流”,老板从对方拿到一些ACAD二次开发的实用软件,如获至宝,硬要设计部门使用,真是让人哭笑不得,不是那软件本身不好,而是我们的设计工作方式与那家公司差异很大,除非我们的设计工作方式改成那家的方式(这是不可能的事,况且我们有类似、更好的软件)。非相关专业出身的程序员,想在ACAD二次开发方面有所作为,不是一件容易的事,但不是不可能,只是需要付出更多的时间、努力去了解、熟习相关专业知识(这要看软件公司的耐性了,呵呵!)。曾经掌握的具体专业知识其实并不是很重要,重要的是掌握学习新知识的方法,能够在较短时间内领悟、学会需要的知识。软件公司提供配套的系统分析员,对程序员把握相关专业知识帮助非常大,可以显著缩短程序员进入角色的时间。能写出一些二次开发程序,与开发出很实用的二次程序(良好的程序运行效率与用户操作效率、操作安全、易于使用、易于更正错误、对使用者要求低等),在本质上可能会有很大的差别,后者相当不容易。
ARX程序的功能可以非常强大,运行效率可以很高,美中不足的是,它存在所有编译型软件的固有缺陷:版本兼容问题,虽然ACAD已在这方面很努力(比如Acad2004/2005/2006的ARX可以兼容),但是,另一方面Autodesk却在疯狂的更新ACAD版本。ARX也存在普通C/C++程序的缺陷:在大量、重复构造普通的程序码。LISP语言程序比较简化,但是鉴于LISP语言架构的先天不足,它并不能很好地克服ARX中的缺陷和不足。
ACAD虽然提供多样化的二次开发语言、接口,但是,没有一个很理想的语言、或语言组合。可能不少人不同意我的说法,毕竟迄今大家还没有见到更好的ACAD二次开发语言面市(功能强大,简单易学、易写、易用,与其他语言良好沟通,语言本身能进行再次开发,二次开发出来的程序可以进一步进行简易的三次开发、拓展功能、增加灵活适应性,等等)。
总之,ACAD二次开发不是易事,但也不是高不可攀,其发展空间非常大。前途光明啊!
rackyye
发表于 2005-6-26 10:43:00
本帖最后由 作者 于 2005-6-26 12:01:20 编辑
有优秀的系统分析员做需求分析,确实能省很多事情,其实国内好多ACAD的二次开发商都缺少这样对对行业非常了解的系统分析员,以至于优秀的ACAD的二次开发软件好少看到。
现在的客户越来越懒,在给他们提供了辅助设计软件之后,他们总是希望软件能更加简单使用,能在输入数据最少,所作调整最小,交互最少的情况下把他们的设计做的最好。
在缺少优秀系统分析员的情况下,往往做的需求分析不到位,导致客户总是以为我们能按照他们的想法做出相应的软件来,然后在最后交付使用时客户总是说这个软件能帮我自动把这个东西转换过来吗?他们往往需要很多自动的功能,这就需要开发软件的人员本身也具有相关行业的专业知识,能自动按照用户的需求做出调整,最好能是专家系统。但是,好长一段时间来,许多有志之士总是想做出专家系统来,而最终只能把他们的项目废弃掉,就是因为缺少好多又懂专业又懂软件开发的优秀人才。
即使有系统分析员在,许多软件细节功能的实现不可能要系统分析员去做吧?可以说,一个优秀的软件不仅能完成大体的功能,在细节功能上也是非常能满足用户需求的。细节功能把握不住,往往会导致一个具有优秀功能的软件遭到市场的淘汰,用户总是希望在所有的小问题上都能满足他们的要求,就象微软的操作系统,已经做得比较完美了,但总是还有这么多人挑毛病。用户很可能会因为一些小细节问题不能满足他们的要求,而放弃这款软件,投入另外一款软件的怀抱,所以,要想开发处优秀的软件,尤其是是工程方面的软件,必须在实现大体功能的同时,满足很多细部功能需要。而要能做到这一点,也需要去做这些细部功能的开发人员具备相关专业知识,甚至是对专业知识非常了解,对具体的需求都非常清楚,因为这些东西系统分析员是不肯能做到的。
ishou
发表于 2005-6-26 14:34:00
<b><FONT color=#000066>To: rackyye, 深有同感。</FONT></b>
良好的二次开发软件,其功能和使用便利程度等,应该比用户提出的要求更多、更好。软件开发者对软件的认识程度,往往与软件使用者会有很大的差别,软件开发者应该更多的站在使用者立场看问题,不应该要求使用者应该这样或那样,把软件使用者的操作水平尽可能想象得低一些。就象现在的照相机要提供傻瓜化功能一样,让普罗大众都能操作、甚至小孩都能操作,这样才有大的市场,M$的视窗化操作系统大概就是基于这样的理念,结果非常成功!ACAD的二次开发的实用软件的具体操作上应该也基于这样的理念。要做到这点,不对软件的使用者、使用场合等有比较深入的认识是难以想象的。一个对ACAD、相关专业把握很好、但是VC等开发工具软件知识很一般的人(可能称不上专业程序员)做出的 ACAD二次开发的软件,往往会比相反把握知识的人(理论上的专业的程序员)做出的要好很多,因此,在ACAD二次开发软件中,对相关专业知识的把握,比开发工具的把握要重要得多,也艰难得多,这不是说开发工具不重要,现在对于开发工具,无论是开发工具语言的功能,还是参考资料,都很容易取得,相反,要取得能用于开发的相关专业资料却比较困难。比较理想的情况是企业内部做二次开发,不过,很多企业决策者不会认识到ACAD二次开发的极其重要性和价值,或者认为成本太高,或缺少信心,认为只有软件专业公司才能做,事实上,除非是大的开发工程,普通中小型企业设计中需要的二次开发实用软件的设计规模不会大到哪里去。一两个人就能搞定,甚至不要专职搞开发。
因此,一个ACAD二次开发的软件专业公司的成功,在很大程度上依赖对相关专业的认识和把握,不一定要程序员一个人把握方方面面,但起码一个相对独立的开发组必须把握方方面面。
软件专业开发公司往往比较陶醉自己搞出来的软件,如果他们能够更注重一些表面上看微不足道的细节,可能会使自身的软件发生质的飞跃!在激烈竞争的市场上,不能仅仅满足于客户反应良好、或没有意见上,客户反应的往往只是局部形状。这里顺便提一下,在我刚刚看到中望ZWCAD时,比较兴奋,试用几天,发现一些问题,反馈给中望,后来发现越来越多问题,尤其在我发现一个难以置信的问题后,放弃了。ZWCAD的宣传热点是对ACAD的完全仿真!表面上看ZWCAD的界面基本上象ACAD(从编程角度讲这方面非常容易实现!不是全部象!他们坚持一些不象---而且我认为是画蛇添足的---不知道为什么!),但是ZWCAD并没有很好地把握好ACAD的各个“操作”细节,ZWCAD在最新版本中 对ACAD的透明命令执行过程的仿真 仍然没有到位!看来什么是“透明”过程他们迄今还没有搞清楚!
中国虫
发表于 2005-6-26 16:58:00
两位的对专业软件的“专业”两字的相关论述,我深以为然。
我从事CAD二次开发,非常偶然,原来我是做设计的,源于对编程的爱好,开始在设计工作中自己编点LISP自己用,在功能做多了过后,最后居然在全设计室推广。应该说这是我做过的最贴近实际的一套软件。到了AutoCAD R12出来后,用ADS重写了一遍。后来到专业软件公司从事ACAD开发,在业余时间为原单位又免费将那套软件在R13-14上用ARX重写了一遍,所以他们现在还在用R14。
我做过建筑行业系列CAD开发,后来才做通信行业的软件开发,虽然现在的CAD二次开发只是开发工作的一部份,不过确实如两位所说,即使是非CAD软件,用户的需求是第一位的,技术是第二位的。
用户的需求分两部分,第一部份是专业需求,第二部份是使用方便或习惯性需求。两者相辅相成,满足了第一个需求,表示产品可卖,基本满足第二个需求,表示可以卖到很好。我做过一套系统,用户原来有一套DOS的软件,想升级倒Windows,要求就是在Windows操作系统下,尽可能和原来的操作方式相同。原来有几家给他们升级过,最终都不满意。我做了个640X480的界面,字体调到尽可能大,吸取DOS程序了一些特性,最后用户认可了。
<A name=82202><FONT color=#000066><B>ishou</B></FONT></A>朋友讲“比较理想的情况是企业内部做二次开发”,<b><FONT color=#000066>rackyye</FONT></b>朋友讲“现在的客户越来越懒”,都能在我的前述例子中得到印证。可惜的是,对软件公司而言,做一个项目,可能能做到让这家用户满意,但想做为商品软件再clone到其它家,比较难;如果是商品软件(比如CAD设计软件),要想能普适,就得付出非常大的劳动。对于企业(用户)而言,如果真的有一些人给做自己做开发,这些人不可能总有开发任务,通常情况就是最后企业去成立软件公司,承接外包任务或开发别的软件让这些人干,这样他们就又回到软件公司的困惑中了。
我公司的系统分析员,有的水平是完全可以做到非常详细的设计的(可惜只有一个),而且能够完全按照软件工程将文档写到详细设计,程序员直接画瓢就行了。其它的确实象<b><FONT color=#000066>rackyye</FONT></b>朋友讲的“往往做的需求分析不到位”,这时候高级程序员就得分担一部份需求和详细设计的工作。别说系统分析员和程序员了,一个称职的测试员也不是那么好找的。
至于<A name=82202><FONT color=#000066><B>ishou</B></FONT></A>朋友提及的ZWCAD,和CAD二次开发专业软件还不太一样。举个天正建筑和理正建筑的例子,天正6的开发水平明显高于理正,但不少用户明显偏爱理正,天正6让天正的用户在流失。当然这两家有渊源,参见:<A href="http://www.xdcad.net/forum/showthread.php?s=&threadid=326630&perpage=15&display=&pagenumber=6" target="_blank" >http://www.xdcad.net/forum/showthread.php?s=&threadid=326630&perpage=15&display=&pagenumber=6</A> 81楼。这个例子也是佐证两位前边所言,二次开发产品技术不一定是第一位的。而ZWCAD是平台,技术却是第一位的,所以ZWCAD不行的根源不在于来源于ICAD,而是他们的水平太差。
rackyye
发表于 2005-6-26 18:36:00
好久没有看到过这么精彩的讨论了。说实话,我从事ACAD二次开发时间不是很长,本来我公司也有一批有志之士在搞CAD平台开发,不过最终只能把一个雏形锁到柜子里,究其原因,一个是在ACAD没有大行其道时没有把握好机会,坚持把自己的东西做下去,另外一个是ACAD的推销策略太厉害了,等到现在市场上到处充斥着ACAD的时候,就再也没有和他们一拼的资本了。等到现在ACAD占领了大部分市场,搞的我们现在只有选择为ACAD作二次开发了。现在要想再搞一个CAD平台去和ACAD拼,基本上没多少希望了,说出来确实有点心寒。要是在R12时代,其实我们还是有很多优秀的高手可以做出和AutoDesk一拼的产品来,至于最后为什么都流产了,相信大家也知道什么原因,在中国要想搞出这样的东东来太难了。
ishou
发表于 2005-6-27 22:45:00
本帖最后由 作者 于 2005-6-28 0:31:55 编辑
1) 看了“中国虫”朋友指引的“XDCAD中的81楼”贴子,感觉上很滑稽、很心酸、很混乱、很。。。搞不清谁是谁,当事人可能一时也难以理清自身的身份。这也许就是我国软件业的一个典型缩影,甚至是不少行业的缩影。创建公司必须 有资金、技术、和需求市场,这些都是比较能看得到的东西,但是人们往往严重忽视公司管理机制(尤其是用人机制、股东合作机制等)的重要性,也就是人的关键性,许多公司的失败就是出在这点上,公司刚刚创建时大家都有美好憧憬,很少有个长远规划,理由好象堂皇:离成功还八字没有一瞥谈什么长远问题,对于利益分配问题所持态度是 将来有收益了、有钱了一切都好说(这是新公司老板对员工一个普遍说法/“承诺”),但是,开始有成果了、有钱收入了往往就是公司混乱的开始。高工资可以暂时留住好的员工,但是很难长期留住,原因很简单,为了竞争,其他公司可以以更好的工资把好的员工挖走,也有可能好的员工(主要是核心员工)认为已经成功掌握核心技术,该是自己做老板的时候了。在中国,高工资也没有什么保障,只要老板一句话,你就得滚蛋,而且没有什么赔偿,在发达国家有很好的劳保条规,老板可没有那么简单可以随意开除员工。要长期留住核心员工唯一的方法就是让其成为有一定分量的股东之一,这个方法不是一定有效,还要看该公司的造化---前景和那个员工的眼光长短了。
2) ACAD是很好的CAD(2D)产品,但是并不是最好的产品,也有其弱点,起码其提供的二次开发语言方面仍然有相当大的发展空间。ACAD二次开发方面,从功能上看,ObjectARX是其强点,从用户群来看却是其弱点、难点,从各论坛发贴数基本上可以看到这点,要用好ARX确实需要高手,因此该语言(确切地说是C/C++)难以大众化,VBA、LISP的情况恰好相反,对ACAD普及化的实际贡献方面,LISP应该会比ARX大很多。但是LISP/VBA架构的先天不足妨碍其发展,Visual LISP的出台显著增强LISP的功能,但是无法改变其架构。LISP在表达、存取一些复杂结构数据方面显得相当力不从心、甚至很丑陋----说其“丑陋”,曾经引起一个LISP迷的强烈不满,他坚持说LISP很优雅,我说LISP象机器语言,他却坚持说是人们的习惯问题,实际上,他也没有完全说错,美丑有相对和绝对之分,在他从来没有见过美女前,把某个丑女说成美女也很自然,但是美就是美、丑就是丑,见过美女后,还说丑女是美女,那就是阿Q心态--“情人眼里出西施”改变不了美丑的本质。ACAD比较大而全,一个普通用户需要用到的功能往往并不多,高版本中的许多功能,在低版本下进行二次简易开发就可以实现。
因此,ACAD也有它的弱点,没有必要被ACAD吓倒, 搞一个小巧精悍的CAD(2D),并且拥有极好的一组二次开发语言(可以称扩展平台---集各方专业精英,让各个专业公司为你迅速扩展---不要什么都想自己做!否则必败无疑!本人多年的业余时间一直致力于n次开发语言方面的研究和设计,现在在ACAD上试用效果挺好,也许能够在这方面帮些忙),与ACAD 局部竞争、甚至抗衡不是不可能。不要小看这个局部,如果能够在局部上取得重大突破,扩展到全局就成为可能。不要惊吓于过去人们种种的失败,基于过去种种的失败,现在人们更容易成功,起码现在的计算机硬件比以前好很多,现在更容易架构好的软件,倒是一些“传统”软件限于架构的问题而发展艰难(重写架构几乎不可能---代价太大了,因为系统太庞大了。〕。现在要搞CAD,就应该搞3D的,否则没有意思,这是不少人的看法,我个人倒是认为应该先2D,2D市场比3D大很多,起码现在是这样,因为2D更易于普及化,3D涉及的几何概念比2D要大得多!不是普罗大众能够好好掌握的,现在的ACAD为什么2D那么好,而3D却差很多,反之,为什么UG/Pro_E的3D那么好,而2D却没有ACAD那么好?很多人都习惯地说成是习惯造成好坏感觉,其实不然,根源于软件架构,要在一个系统里兼顾2D和3D的客户使用便利,目前并没有一个很好的系统,ACAD是这样,UG等也是这样。
一一
发表于 2005-6-28 18:01:00
我写了一个多文档(2002)的,请指教。
<A href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=39036" target="_blank" >http://bbs.mjtd.com/forum.php?mod=viewthread&tid=39036</A>
RedCAD
发表于 2005-8-12 21:09:00
<P>谁愿做程序员,要做软件开发工程师</P>
uusky
发表于 2005-8-29 12:32:00
菜鸟板凳