交互式数据语言,IDL:有人关心吗?

时间:2008-11-04 04:09:10

标签: astronomy idl-programming-language

13 个答案:

答案 0 :(得分:9)

这里有很多IDL粉丝!我也是一名天文学家,我广泛使用过IDL和Python。我只能说IDL幸存至今,因为天文学家的懒惰,他们不能或不想学习新的更好的编程语言。除了Fortran或IDL之外,我的大多数同事都没有使用过任何其他东西。对他们来说,整个世界只有IDL。顺便说一句,许多年轻的天文学学生也都是关于IDL的,甚至不想检查Fortran,或者上帝禁止使用Python或C / C ++。这些是程序员和数学家的语言,而不是天文学家的语言。

关于许可费用。已经有多少个IDL版本以及你们大学购买了多少个?我想很多......

是的,继续购买新的IDL 8.x版本。我听说它的新绘图包允许你在生成后修改部分绘图。 WOOOW!真是太酷了!

P.S。 IDL中没有任何内容无法以更好,更清晰的方式在Python中完成。其中的大多数科学工具都是广泛且非常稳定的。我在matplotlib中绘制各种图表没有任何问题。它的GUI工具非常棒且直观,与蹩脚的IDL“小部件”不同。

这与我的旧大学的情况非常相似,旧的教授在时间上有点难过,因为他们拒绝学习任何新的编程。他们变得没有竞争力,停止做任何重要的工作。

答案 1 :(得分:5)

我是辛辛那提儿童医院的fMRI研究员,多年来,放射学研究人员使用IDL开发了一套图像处理软件包(称为CCHIPS)。这是一个非常发达的一揽子计划,多年来已经有不少人在扩大其效用。虽然我几乎是一个硬核MATLAB用户,因此倾向于倾向于使用SPM等软件包进行fMRI图像处理,但我仍然经常使用CCHIPS并编写/编辑一些IDL脚本。对我来说,它不像MATLAB那样“舒服”(毕竟我们都有最喜欢的“空白”),但这很容易学习。

我想我的观点是这样......如果一个编程资源运行良好,已经很好地建立,很多人都很好用,并且(最重要的是!)你组织中仍然有人愿意维护/调试/修改/扩展资源,然后没有必要采取危言耸听的立场,即必须立即改变新事物。如果您所在的机构中根本没有人愿意再保留资源,那么这可能会引起紧急关注。否则,我会建议你更熟悉你不喜欢的东西,然后施加温和的压力来介绍你认为更好的选择,并以明确的改变理由予以支持。

答案 2 :(得分:3)

击败你的敌人you must learn it,但不一定掌握它。

我会选择你最喜欢的语言,并与IDL进行比较和对比。 IDL有哪些优势?有什么缺点?请您的同事向您展示他们最喜欢的IDL代码,并将其与您喜欢的一些代码片段进行比较。这可能并不全是坏事 - 毕竟人们付出了巨大的代价并使用它。

尝试替换最喜欢的东西可能不是赢得朋友或赢得争论的好方法。如果你得出结论,IDL只提供微薄或没有优势,那么尝试从较新的语言(如Ruby)到IDL构建网关,以便人们可以结合使用。您可能正试图删除一种非常高兴的IDL感谢非常高兴的文化 - 尽管如果他们采用混合方法并最终用另一种语言替换他们的IDL,因为另一种语言实际上更优越你会产生积极的影响。

无论如何,I'm never a fan of paradigm shifts并且浪费时间和金钱投入一种工具以获得另一种工具的意识形态利益是一个糟糕的商业决策。然而,有必要逐步淘汰旧的专有技术 - 尽管分阶段的方法是关键。

答案 3 :(得分:3)

成为博士天文学学生我大约一年前开始使用IDL。我也不完全相信这种语言,并且肯定对它是专有的非常恼火(但请查看开源变体GDL:http://gnudatalanguage.sourceforge.net/)。然而,它是一种非常强大的语言,其中包含许多科学家使用的工具和功能,例如:它可以开箱即用,并有大量的图形绘图工具可供使用。此外,还有许多基于IDL的工具,如IDL天文用户图书馆(http://idlastro.gsfc.nasa.gov/)。因此,虽然最初将所有这些工具实现为一种开放式语言可能更好,但我担心现在没有人会使用这么多人 - 并且已经习惯了。

答案 4 :(得分:3)

我是气候科学家,我每天都使用IDL。这是一种爱恨交织的关系。但我会在这里来IDL的辩护,因为我认为你没有明确说明你与之合作的科学家做出改变的理由。

该列表中唯一可行的IDL替代品是Python以及全套科学库。即便如此,许多事情在python中比在IDL中更难或更冗长。像C和Fortran这样的语言对于分析数据集或制作一些数据的工具来说太低了,而且它们缺少交互式shell。

大多数科学家都对获得问题的答案感兴趣,IDL,Matlab和NCL等工具的目的是帮助我们更快地得到答案。

答案 5 :(得分:2)

如果主要关注费用,并且您只需要IDL语言解释器本身,而不是花哨的包,那么您可以对Fawlty语言感到满意,这是IDL的免费克隆。

(链接现已死!)http://fl.net23.net/

我实际上已经完成了向公众发布的实际工作而不是IDL,没有告诉老板,作为测试,并且成功了,但后来我主要运行非GUI程序并进行交互式命令行工作。上次检查时,GUI小部件不完整。然而,在简单的编程方面,Fawlty领先于GDL。

答案 6 :(得分:2)

我是一名天文学家,多年来一直使用IDL。有些事情非常好 - 例如包括字符串数组的数组处理 - 以及相当多的天文相关例程。另一方面,作为一种语言,我更喜欢python。成本是IDL许可证的问题 - 即使对于单个用户也不便宜。还有其他烦恼。 IDL默认制作的PostScript图表不是很好。每次都指定粗线并且字体有点难看是很烦人的。我已经开始使用matplotlib python模块,它有很多值得推荐的。例如,一个人不需要重新绘制图表来更改轴标题。我只希望我拥有用python为matplotlib编写的所有方便的IDL天文库例程。

答案 7 :(得分:1)

好吧,我确实在堆栈上搜索IDL,这就是我到达这里的方式! : - )

我已经编程了近30年,我只是在学习IDL。到目前为止,我承认我并不过分喜欢它。但是,它确实有许多其他语言没有的东西(例如,数学数组操作可以使用单个命令完成,而不是使用循环或其他设备)。

正如其他人所说,IDL的受欢迎程度在某种程度上是文化上的,而且是根深蒂固的问题。我差不多20年前第一次听说过IDL。在那个时候,在我看来,Stallman有一些不错的想法和一些有用的工具,而Linus还没有推出他着名的comp.os.minix消息。因此,IDL在任何具有竞争力的开源资源上都有良好的开端;据我所知,开源社区中没有任何东西是有竞争力的(而且我知道GDL,但如果我没有弄错,它会落后于IDL - 我很乐意对此进行纠正)。最终,它可能会被取代,但我不希望很快发生。

答案 8 :(得分:1)

如果我错了,请纠正我,但是你在问你是否应该告诉你的同事“停止在语言上浪费时间”,你不知道,但不喜欢因为它是专有的????

嗯,我认为这有点短视。首先,你应该问你的同事“为什么他们使用IDL”。我一直在使用IDL大约十五年,我想他们会告诉你“因为我可以做我必须做的事情”。我已经用IDL / C ++ / LabVIEW / Python / Pascal编程了20年,我认为你应该使用最适合这项工作的语言/环境。我不会将IDL用于华而不实的用户界面应用程序,但是为了分析和可视化千兆字节的数据,它很难被击败。 (我当然不会使用Python或Ruby!)

关于IDL是专有软件。这是真的(虽然你需要昂贵的许可证来运行IDL应用程序。你可以使用虚拟机来运行应用程序,你需要一个昂贵的(真正的)许可证来开发应用程序)。但是,专有权有什么问题?我的车是专有产品(我想你的也是:-)),我的电视机,电话等也是如此。 所以IDL是专有的,这意味着你不能改变语言(除了要求ITTVIS进行更改),但你甚至不懂语言!所以有什么问题? (BTW提到了开源版GDL,还有其他(开源)替代品)。你为C ++ / Python / Ruby等做了多少贡献?

我希望专有论证不被(错误)使用,因为你不喜欢(高)许可证费用?确实存在免费(阅读:没有资金被转移)C ++ / Python / Java编译器,但ITTVIS是一家想赚钱的商业公司。我是一名专业的程序员,虽然我支持开源思想,但我确实希望在月底获得报酬(猜猜这笔钱必须来自:-))。 (顺便说一下,我不是ITTVIS的员工。)

所以,简而言之。如果您认为IDL过于昂贵,那就没关系(但不要使用专有参数)。还有其他选择,您可以自由选择!但在你(请你的同事)转换之前,问问自己你的生产力会带来什么后果!您可以节省几千美元的许可费,但如果完成工作需要10倍的时间.........

亲切的问候

答案 9 :(得分:1)

我在医学影像研究实验室使用IDL已有8年了。我还使用MATLAB,LabVIEW和Visual C ++。

IDL成本:编程终端确实需要IDL许可证。但是,如果您可以设置启动画面,则可以在任何终端上的免费“虚拟机”下运行IDL应用程序。此外,许多其他语言/开发环境的成本与IDL一样多(如果您合法使用它们)。根据IDL,Visual Studio在这个大学的每个许可证的成本更高。

IDL / MATLAB与Visual C ++ / etc:您可以在IDL中编写程序或GUI应用程序,这需要一周时间才能用C ++ / Visual C ++编写 - 这是我们专家Visual C ++程序员的一句话。 IDL只需要两周的时间来学习,并且有一本很好的书可供学习。当然,如果添加Visual GUI,C ++程序运行速度会更快,您可以使用更多控件。但是,如果您想要使用用户界面对算法或应用程序进行原型分析来分析数据,IDL(或MATLAB)将为您节省大量时间。

IDL与MATLAB:IDL比MATLAB更冗长,没有用户群或工具箱数量,但它拥有的主要用户论坛非常出色,有许多响应专家。过去,IDL GUI编程接口非常出色,虽然MATLAB可能已经赶上了 - 我仍然更喜欢编写IDL“小部件”。此外,IDL的内置功能有时似乎有一些“内置”功能,这可能会弥补其较小的用户群。一个很好的例子是convolve命令:IDL中的“convol”与MATLAB中的“conv”。该命令是IDL中较长的单词,但也包含用于规范化结果的标志,以及用于处理无效数据和边缘效应的标志。 MATLAB语法更优雅,更简洁,能够直接从函数返回多个值是很好的。

相信我:如果你想花更多时间处理数据而不是使用代码,那么学习像IDL和MATLAB这样的“科学数据”语言是值得的。我不会说一个比另一个好,但是这样的语言在实验室中是必不可少的,尤其是成像实验室。

答案 10 :(得分:1)

当我开始学习IDL时,我有类似的想法 - 我仍然不喜欢它,但我现在在SolarSoft(一个太阳物理软件分发系统)支持的野外有一些代码。 ..以及IDL中的大部分软件。)

IDL擅长处理大型数据立方体和数字图像,如果您了解Fortran,则相当容易学习。 (大多数年长的科学家都这样做,我不得不在大学里当工程学生而不是CompE)

问题是 - IDL中有很多代码。将其全部转换为其他语言并进行必要测试的成本只是天文数字。我的老板的估计是它需要十几年的时间,而且我们需要了解IDL的人,无论是什么新语言,还是实际科学所以他们理解为什么代码的逻辑存在(而不仅仅是一些奇怪的)的语言)。 ......然后你必须考虑对所有科学家进行再培训。在我们目前的资金水平,这是不会发生的。

所有这一切,我喜欢他们的Regex引擎使用PCRE或至少支持零宽度断言。他们终于做到了这一点,所以我可以将字符串传递给XML解析器,而不必先将其写入文件,但我仍在等待真正的SOAP支持,而不是我的黑客尝试。我必须解决诸如没有零元素数组的限制(我使用指向数组的指针,所以我可以留下空指针),命名空间(我用对象伪造它)和缺乏XPath支持(我看到一些奇怪的问题时在遍历DOM树之后,清理时间会在树中每增加一倍的元素四倍...我必须将大型记录集作为tax delim而不是XML返回,但希望测试它们的VOTable实现是否具有相同的问题)< / p>

此时,我并不是建议人们停止使用IDL - 但我竞选让人们停止存储和分发他们的数据目录作为IDL保存文件,由于限制用IDL以外的任何东西读它们。我知道有一些努力为科学家提供服务来运行他们的数据准备工作,因此希望他们可以避免要求科学家让IDL能够使用这些数据。

答案 11 :(得分:1)

我是地球科学的博士后,并广泛使用IDL来处理大型数据集。我不得不说这对我来说非常容易(对我和其他许多人来说),如果它节省了我数百小时的调试内存错误,那么很容易获得许可证成本(我也有CS学位) ,所以我知道“真正的”编程语言)。

听起来你的问题不是IDL,而是文件格式。而不是说服你的同事使用不同的语言,说服他们使用不同的文件格式。我几乎从未使用.sav文件,我总是使用常用格式的数据,如geotiff,HDF,netCDF,甚至是简单的二进制或ASCII。这样,我的所有同事都可以使用他们选择的语言来阅读。

我到这里寻找有关使用IDL和SOAP的信息,遗憾的是,上面的评论赢得了谷歌竞赛。现在,如果我能找到一些实际信息:)

答案 12 :(得分:1)

这可能对某人有所帮助:GDL确实处理(读取和写入)IDL .sav文件。 SAVE和RESTORE例程是在免费CMSV库(用IDL编写)的帮助下实现的。

此外,GDL可以构建为Python模块 - 然后也可以使用Python中的.sav文件。 GDL中的Python支持仍然使用numarray包,所以它可能不太方便。