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:49771
用户头像

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

关注

评论

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

在线文本字符串转十六进制工具

入门小站

工具

flutter系列之:flutter中常用的Stack layout详解

程序那些事

flutter 程序那些事 6月月更

Elux-将企业级工程化框架带入小程序开发

hiisea

小程序 taro 前端架构 前端框架 前端工程化

Maven实用技巧

Nick

Java maven 技巧 pom 6月月更

数据库每日一题---第12天:上升的温度

知心宝贝

数据库 云计算 前端 后端 6月月更

读《Software Systems Architecture》(02)—— Software Architecture Concepts

术子米德

架构师成长笔记

读《Software Systems Architecture》(04)—— Architectural Perspectives

术子米德

架构师成长笔记

读《Software Systems Architecture》(07)—— The Architecture Definition Process

术子米德

架构师成长笔记

在线JSON转Excel工具

入门小站

工具

DDD是个何许人也

卢卡多多

DDD 领域建模 6月月更

Thread 源码分析

zarmnosaj

6月月更

前端uni-app框架之实战主要技术栈day_3

恒山其若陋兮

6月月更

读《Software Systems Architecture》(09)—— Identifying and Engaging Stakeholders

术子米德

架构师成长笔记

读《Software Systems Architecture》(10)—— Identifying and Using Scenarios

术子米德

架构师成长笔记

6月15号MOVE PROTOCOL上线测试版,如何参与呢?

EOSdreamer111

3个月软件测试培训出来后的感悟-写给正在迷茫是否去学软件测试

伤心的辣条

Python 程序员 程序人生 软件测试 自动化测试

GetX — Flutter 开发的百宝箱

岛上码农

flutter ios 跨平台 安卓 6月月更

linux之我常用的20条命令(之一)

入门小站

Linux

JS学习笔记之异同点

北洋

Andriod 6月月更

【Java Web 系列】Session的工作流程与基本使用

倔强的牛角

Java javaWeb session 6月月更

c语言不挂科(上)

工程师日月

6月月更

读《Software Systems Architecture》(06)—— Introduction to the Software Architecture Process

术子米德

架构师成长笔记

Java Core 「7」各种不同类型的锁

Samson

学习笔记 Java core 6月月更

盲盒系统新品开发,盲盒 APP 酷炫 UI 成品源码开发

WDL22119

盲盒商城 盲盒 盲盒开发 盲盒源码 盲盒H5开发

详解MOVE PROTOCOL的测试版,让健康运动如影随形

股市老人

读《Software Systems Architecture》(03)—— Viewpoints and Views

术子米德

架构师成长笔记

读《Software Systems Architecture》(05)—— The Role of the Software Architect

术子米德

架构师成长笔记

读《Software Systems Architecture》(01)—— Introduction

术子米德

架构师成长笔记

读《Software Systems Architecture》(08)—— Concerns,Principles,and Decisions

术子米德

架构师成长笔记

浅谈微服务框架选型

阿泽🧸

微服务 6月月更

【愚公系列】2022年06月 通用职责分配原则(二)-创造者原则

愚公搬代码

6月月更

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