跳转至

回溯未来:适用于 Visual Studio Code 的 IDL®

原文链接: https://www.nv5geospatialsoftware.com/Learn/Blogs/Blog-Details/back-to-the-future-idl174-for-visual-studio-code-1

9657 为本文评分:

4.3

回溯未来:适用于 Visual Studio Code 的 IDL®

Zachary Norman 2023年10月4日,星期三

内容提要:我们推出了适用于 Visual Studio Code 的官方扩展程序,名为 IDL for VSCode!它已在 GitHub 上开源,你可以查看我们计划实现的一些功能,并且有一个可以提问和提供反馈的地方。下文将讲述我们为实现这一目标所经历的旅程、用户体验设计灵感,以及我们在社区互动方面的目标。


大家好!

我是 Zach Norman,如果你关注我们的“新功能”网络研讨会,可能知道我是产品经理之一。作为职责的一部分,我参与了公司大部分商业产品的工作,包括 IDL

我非常高兴能与大家谈谈 Visual Studio Code 以及我们新的官方扩展:IDL for VSCode。这个项目已经进行了相当长一段时间,并于七月份正式(尽管是低调地)发布。

这是一张快速截图,展示其外观:

截图显示了语法高亮,这是在 VSCode 中运行的 IDL 会话。新的 IDL 扩展还包括任务文件的语法高亮和悬停帮助(显示在左侧)。

虽然我是产品经理,但我也是一个狂热的程序员。当我不花时间编写 IDL 代码或研究 ENVI® API 时,我通常使用 TypeScript、Node.js 和 Angular 进行某种全栈开发。

我一直非常喜欢这些极其流行的语言的一个方面是它们出色的工具链以及与 VSCode 的集成。对我来说,这真正让使用这些语言编程变得愉快,也是我们为新的 IDL 用户体验提供灵感的绝佳来源。

基于此,当我们开始踏上这条道路时,我心中设想了以下一些目标:

  • 通过改变 IDL 程序员编写和与 IDL 代码交互的方式来帮助提高他们的生产力
  • 为 IDL Workbench 提供一个现代化的替代方案
  • 降低入门门槛,创建一个可以开始使用 IDL 的新平台
  • 以一种与过去不同的新方式与社区互动
  • 不要求安装或运行 IDL 即可编写 IDL 代码

为了开始实现这些目标,我尝试借鉴我喜欢的一些特性:TypeScript 的语言支持、用于格式化代码的 prettier 工具集,以及用于为我编写的代码提供反馈的 ESLint。

这为我们带来了关于我们希望所有功能如何工作的基本要求:

  • 对代码进行静态分析,以便在编译或运行 IDL 代码之前就了解潜在问题
  • 检测到问题时,添加一些细节说明为什么是问题以及如何修复
  • 提供一个易于使用的、简洁的格式化工具,并为 IDL 代码的外观设定一个新的标准
  • 与 VSCode 集成,以便在保存文件时,可以自动格式化和修复选定的问题
  • 基于语法高亮代码,实现(几乎)无瑕疵的语法高亮

现在,我不打算在这里详细介绍所有内容,但会提及上述的几个项目。首先,让我们看一个问题检测的示例:

这里我们有一个“不良”的 IDL 代码块,展示了我们可以自动检测到的超过 100 个问题中的 5 个。其中一些问题,例如缺少“compile_opt idl2”,是强制执行现代 IDL 编程范式并避免常见陷阱的好方法。检测到的其他一些问题则比较微妙,如果你是专家并且不喜欢它们被报告,你可以更新你的首选项来关闭它们。

我们试图提高用户生产力的另一种方式是通过一个丰富且集成的悬停帮助和自动完成系统。这有很多功能,但主要集中在几个关键能力上:尝试自动检测数据类型,使用数据类型提供正确的自动完成,以及使用数据类型直接从文档提供悬停帮助。

这里有一个例子:

自动完成和悬停帮助直接来自文档或你自己的代码。如果你遵循 IDL Doc 标准来记录例程及其参数,你可以自己创建这些内容。如果你不知道 IDL Doc 标准是什么,扩展中有自动化工具可以生成或更新现有文档,帮助你节省时间。

通过悬停帮助,你还可以找到我们最兴奋的功能:IDL 笔记本!目前,该扩展包含 IDL 笔记本的预览版,以便我们在继续开发过程中获得用户的反馈。

访问和试用 IDL 笔记本的最简单方法是通过悬停帮助。当你将鼠标悬停在一个例程上时,点击“在笔记本中打开示例”按钮,正如其所说,它将打开文档中的任何示例到一个 IDL 笔记本中。这使得从文档中复制/粘贴代码或运行代码片段并查看其作用变得非常简单。

笔记本功能将在今年晚些时候随 ENVI 和 IDL 的下一个版本正式发布。在此之前,请随时试用!我们真心认为这将成为用户编写和与 IDL 及 ENVI API 交互的新方式。未来会有一些很好的功能,例如在使用 ENVI API 处理图像数据时嵌入地图和其他可视化内容,但你需要参加官方发布网络研讨会才能了解更多信息。

我想谈的最后一个项目是社区互动。作为一名产品经理,改变我们与社区和用户群互动的方式一直是我的目标。随着我们最近被 NV5 收购,这成为了现实的可能。

首先,我们将 IDL 扩展开源,并在我们的 GitHub 组织上公开提供,链接在这里。你可以找到源代码、报告问题,或者如果你想,可以做出更改并为扩展做出贡献。但这并不是我想停止的地方。

我们还有一个 GitHub 项目,记录了我们希望作为扩展一部分实现的一些功能。由于这是公开的,我们的目标是保持透明,并允许任何用户有机会请求功能或对我们花费时间开发的内容提出他们的意见。虽然你可以发送电子邮件给技术支持并提供反馈,但我发现直接在 GitHub 上操作要容易得多,希望这也能成为一个新的协作平台。

我们期待更多用户试用适用于 VSCode 的 IDL 扩展,并给予社区直接就该扩展进行互动的机会。

如果你有意见或问题,可以通过 GitHub 讨论 联系,或者直接发送电子邮件给我:Zachary.Norman@NV5.com

祝你编程愉快!


探索更多

演示视频 观看 快速演示,了解 IDL for VSCode 中的 IDL 笔记本功能

教程视频 观看 关于 IDL 笔记本的完整深度教程

使用 IDL for VSCode 重新构想编码

现场网络研讨会 - 4月11日

使用 VSCode 现代化你的 IDL 编程方式。

立即注册

学生、研究人员和教师

学术解决方案

使用 ENVI 和 IDL 进行研究,并为学生准备成功的职业生涯。

了解更多

值得信赖的答案

ENVI 软件

处理和分析各种类型的图像和数据。

了解更多

ENVI 与 ENVI Connect:改变游戏规则的组合 秋季学生聚焦奖得主使用 ENVI® 软件对飞机诱导云进行创新研究