有人使用一种叫作交互式数据语言(IDL)的编程语言吗?它在科学家中很受欢迎。我认为它是一种糟糕的语言,因为它是专有的(每个运行它的终端都需要购买昂贵的许可证),而且它的支持很少(现在在堆栈上搜索IDL这种语言试试)。我正在努力说服我的同事停止使用它,学习C/C++/Python/Fortran/Java/Ruby。有人知道或关心IDL吗?你对它有什么看法?我应该告诉我的同事现在停止浪费时间吗?我该如何说服他们?
编辑:人们得到了这样一个印象,即我不知道或不使用IDL。此外,我说IDL的支持很少,在某种意义上是正确的,因此我必须澄清科学库确实非常大。我一直在使用IDL,但这正是问题所在:我只是因为同事使用它才使用IDL。IDL使用一种名为.sav的文件格式,只能在IDL中打开。因此,我必须使用IDL来处理这些数据并将数据传输回同事,但我知道我在另一种语言中会更有效率。这就像有人在电子邮件附件中发送给你一个Microsoft Word文件,如果你不知道这有多么错误,那么你可能写的是太多的文字而不是足够的代码,并且你买了Microsoft Word。
编辑:作为IDL的替代方案,Python很受欢迎。以下是AstroBetter提供的IDL的优点(以及缺点)列表:
IDL的优点
- 成熟的数值和天文学库可用
- 广泛的天文用户群体
- 数值方面与语言本身良好集成
- 许多有经验的本地用户
- 对于小数组更快
- 安装更容易
- 好的、统一的文档
- 标准GUI运行/调试工具(IDLDE)
- 单个窗口小部件系统(无需担心选择或学习哪一个)
- SAVE/RESTORE功能
- 使用关键字参数作为标志更方便
IDL的缺点
- 适用范围较窄,不适合一般编程
- 大数组速度较慢
- 数组功能不够强大
- 表格支持差
- 使用C或Fortran扩展的能力有限,这些扩展很难分发和支持
- 昂贵,有时会出现与其他没有或无法购买许可证的人协作的问题。
- 闭源(只有RSI可以修复错误)
- 与IRAF任务集成非常笨拙
- 内存管理更麻烦
- 单个窗口小部件系统(如果在另一个框架内工作,则无用)
- 绘图:
- 支持符号和数学文本的支持不方便
- 许多字体系统,可移植性问题(v5.1在一定程度上缓解了这个问题)
- 不够灵活或可扩展
- 绘图窗口本质上不是交互式的(例如,平移和缩放)
Python的优点
- 非常通用且强大的编程语言,易于学习。具有强大但可选的面向对象编程支持
- 用户和开发者社区非常庞大,库非常广泛
- 可通过C、C++或Fortran进行扩展,可提供可移植的分发机制
- 免费;非限制性许可证;开源
- 正在成为天文学的标准脚本语言
- 与IRAF任务一起使用很容易
- STScI应用程序工作的基础
- 更通用的数组功能
- 对于大型数组更快,对于内存映射提供更好的支持
- 有许多书籍和在线文档资源(针对语言及其库)
- 更好的表格结构支持
- 绘图
- 框架(matplotlib)更具可扩展性和普遍性
- 更好的字体支持和可移植性(只有一种方法)
- 可在许多窗口框架中使用(GTK、Tk、WX、Qt…)
- 独立于所使用的框架的标准绘图功能
- 图形可嵌入其他GUI中
- 更强大的图像处理(多个同时LUTS,可选的重采样/缩放,alpha混合等)
- 支持许多小部件系统
- 对正在开发Python功能的能力具有很强的本地影响力
Python的缺点
- 需要单独安装更多的项目
- 在天文学界不太受欢迎(但支持明显增长)
- 科学库不够成熟:
- 文档不够完整,不够统一
- 在天文库和实用程序中不够深入
- 并非所有IDL数值库函数都有相应的Python功能
- 某些数字构造与语言不太一致(或比IDL略不方便)
- 数组索引约定“倒置”
- 小数组性能较慢
- 没有标准的GUI运行/调试工具
- 支持许多小部件系统(对于要选择哪个感到不安)
- 目前缺少与IDL中SAVE / RESTORE等效的功能
- matplotlib尚未具备所有IDL 2-D绘图功能的等效物(例如曲面绘图)
- 使用关键字参数作为标志不太方便
- 绘图:
- 相对不够成熟,仍然有很多开发工作进行中
- 缺少某些绘图类型(例如曲面)
- 3-d功能需要VTK(尽管matplotlib具有基本的3-d功能)