NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

把脚本重新带回进 VB

  • 2008-02-27
  • 本文字数:794 字

    阅读完需:约 3 分钟

历史上,Visual Basic 有着脚本和动态编程的基础,但是并没有被完全支持。例如,它能够通过迟绑定(即所谓的 duck typing)来使用对象,但却没有能力确定他们——这样的语言特性被普遍认为是和脚本编程是不相配的。在 Lang.NET 的一个演示中,Paul Vick 谈到如何把脚本重新带回进VB

他的第一个演示展示了一个使用完整Visual Basci 引擎实现的提供了REPL 接口的Excel 原型。REPL,即“读取- 求值- 打印- 循环(Read-Evaluate-Print-Loop)”,是诸如Ruby、Python 和Lisp 这样的动态语言的一个标准特性。脚本窗口是基于动态语言运行时(Dynamic Language Runtime)的,所以它也可以支持IronPython 和JScript。

Paul 首先讨论了 VB 编译器的 3 个分层。在实现类似解析和代码生成这样传统编译器特性的核心(Core)服务的最上层,是项目(Project)服务。它处理了项目级的详细信息,比如引用和资源。它也包括一个反编译器,在 Visual Studio IDE 中被用来协助后台编译器实现增量改变。最外层的是工具 /IDE 服务,它包括了所有 Visual Studio 所需的特性,如代码完成与纠错。

VB 编译器的核心服务的完整版本是由非托管(unmanaged)C++ 代码编写的。为了支持运行时编译和迟绑定,由 Visual Basic 编写的核心服务的部分版本也是存在的。

未来版本的 VB 可能会包含适合运行时使用的完整版本的核心服务。或许,它甚至会包含工具 /IDE 服务层,以允许开发人员创建一个类似 VBA 的东西出来。

另外一个演示讨论了 VisualBasic.Editor 和 VisualBasic.Compiler 命名空间。该演示展示了如何在一个 WinForms 应用程序中托管一个 VB 编辑器。这一编辑器还比较粗糙,但是它已经能够支持类似语法着色这样的事情了。在这个演示中,Paul 示范了重写编辑器的行为来马上执行右键选中的高亮代码。

这些特性并没有一个时间线或计划。当有更多的信息时,会发表到 Paul Vic 的博客上。

查看英文原文: Bringing Scripting back to VB

2008-02-27 19:49773
用户头像

发布了 254 篇内容, 共 53.6 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

画一个冰糖葫芦祝大家甜甜蜜蜜

急需上岸的小谢

10月月更

CorelDRAW 2019 软件应用项目(五)

张立梵

设计师 CorelDRAW 2022 10月月更

前端关于面试你可能需要收集的面试题

loveX001

JavaScript

挑战 30 天学完 Python:Day6 数据类型 - 元组tuple

MegaQi

Python 挑战30天学完Python 10月月更

js异步编程面试题你能答上来几道

loveX001

JavaScript

React源码分析2-深入理解fiber

goClient1992

React

你用Go写过中间件吗?带你用Go实现【操作日志中间件】

王中阳Go

golang 高效工作 学习方法 #go 10月月更

All Eyes on Docs! 练就火眼金睛,就来StarRocks 极客营

StarRocks

数据库

翟佳:StreamNative 组织构建之路丨声网开发者创业讲堂 • 第 5 期

声网

技术管理 人工智能’

Linux中的目录结构是什么样的?有人说像“树”,你觉得呢

wljslmz

Linux 10月月更 目录结构

Go 语言入门很简单:Go 语言的错误处理

宇宙之一粟

异常处理 错误处理 Go 语言 10月月更

leetcode 380. Insert Delete GetRandom O(1) O(1) 时间插入、删除和获取随机元素 (中等)

okokabcd

LeetCode 数据结构与算法

让Jenkins执行GitHub上的pipeline脚本

程序员欣宸

GitHub jenkins 10月月更

java部分基础总结

Studying_swz

java 编程 10月月更

2022年ArchSummit全球架构师峰会杭州站感想

谙忆

ArchSummit 飞链云 架构师峰会

Zebec 以 Layer2 的形式推出 Zebec Chain,流支付新时达来临了

西柚子

【资损】知名金融企业的资损与资损防控

小明Java问道之路

架构 安全 金融科技 10月月更 资损

Java多线程 线程池的生命周期及运行状态

Yeats_Liao

后端 Java core 10月月更

抢滩东南亚,融云IM助力应用抓住经济转型红利

融云 RongCloud

互联网 数字化 IM

【一Go到底】第十九天---init函数、匿名函数

指剑

Go golang 10月月更

Vue组件入门(八)v-model + 自定义参数

Augus

Vue 3 10月月更

日志管理与分析系统的基本功能

阿泽🧸

日志管理 10月月更

Java多线程 关闭线程池 shutdown() 、shutdownNow()、awaitTermination()

Yeats_Liao

后端 Java core 10月月更

Java注解

急需上岸的小谢

10月月更

数据湖(四):Hudi与Spark整合

Lansonli

Hudi 10月月更

promise执行顺序面试题令我头秃,你能作对几道

loveX001

JavaScript

ZooKeeper数据模型

穿过生命散发芬芳

zookeeper 10月月更

高效能敏捷交付团队反思:特性团队(FeatureTeam)+Scrum

laofo

DevOps 敏捷 研发效能 持续交付 敏捷研发

CorelDRAW 2019 软件应用项目(六)

张立梵

设计师 CorelDRAW 2022 10月月更

华为云从入门到实战 | 云速建站服务与企业主机安全服务

TiAmo

华为 华为云 云开发 10月月更

改变线程状态的方法

急需上岸的小谢

10月月更

把脚本重新带回进VB_.NET_Jonathan Allen_InfoQ精选文章