语料编程空手道:从 VBA,到 VBS,到 HTA

语料编程空手道:从 VBA,到 VBS,到 HTA


作者:李亮(2013 年 7 月 1 日)


谈到语料,典型的存在体是足够统计学意义的一系列文本文件;如果语料都导入了数据库管理系统(例如 Microsoft Access 或 MySQL 或 SQLite),那么我们的语料库也叫做数据库了,因为语料是“野生的”或“随机的”或“抽样的”,数据是“驯化的”或“人造的”或“附加的”。 谈到编程,典型的产出物是制造一个双击就能运行或开始安装过程的 EXE 文件;为何编程?是因为能实现自动处理与高速处理与个性需求,是因为语料库往往像个 大森林,是因为任何自动处理都不会太低速。用何编程?这是选择编程语言(例如 Ruby 或 Java 或 VBA),也是选择编程工具(例如 Turbo C 或 Eclipse或 Visual C++ 6.0 或 Zend Studio 或 Delphi),也是选择与编程语言匹配的辅助编程 技术(例如 sql 或 xpath 或 COM 或正则表达式或 javascript)。


其实,在编程与不编程之间还存在较广的“过渡地带”:(1)你可选择 DOS 命令(例如 findstr 来检索,copy 来批量合并,rename 来批量重命名)来实现一些语料加工的功能;(2)你也可选择 Office 组件 (MS Excel 或 MS Access 或 MS Word)的宏录制与宏播放来实现自动处理或自动转换;(3)你也可采用 UltraEdit 之类的通用型 文本处理工具来实现语料加工,从而避免了语料编程 的高深,也避免了不语料编程的 尴尬。


正常的编程都是把某种编程语言在某种编程工具中进行“数据定义”、“函数调用”、“模块编制”、“消息处理”、“流程控制”这一系列实践,最终诞生了一个软件。但是,“语料编程空手道”提倡的是“借助 Office 或 Windows 的脚本运行机制,摆脱专门编程工具,无需生成独立程序,依然实现对语料加工的自动高速且个性化的处
正常的编程都是把某种编程语言在某种编程工具中进行“数据定义”、“函数调用”、“模块编制”、“消息处理”、“流程控制”这一系列实践,最终诞生了一个软件。但是,“语料编程空手道”提倡的是“借助 Office 或 Windows 的脚本运行机制,摆脱专门编程工具,无需生成独立程序,依然实现对语料加工的自动高速且个性化的处理”


VBA 编程空手道”,是新建一个 Office 文件,然后点菜单“工 具”中的“宏”的“Visual Basic 编辑器”就可以在一个空白的 Word 文件或 Excel 文件或 Powerpoint文件中实现从简单的文本处理,到丰富的数据库查询,到多样化的 网页抓取,到常用的统计分析的种种功能。如果你希望有“窗体”呀、“按钮”呀、“文本框”呀、“菜单”呀之类的与用户互动的构件,也可以点“插入窗体”而 开启你的“界面打造之旅”。


VBS 编程空手道”,是新建一个文本文件或 TXT 文件,按照 VBScript 语言的规范与知识写出从简单到复杂的代码,然后保存退出,然后更改当前文件的文件扩展名为vbs(原本是 txt 的),就实现了在“记事 本”中也能编程且立即双击运行你的新软件的“奇迹”。如果当前电脑已经安装了 Office,那么你用 VBS 也能控制 Word 呀 Excel呀这些 Office 组件。为什么 VBS 比 VBA 更加空手道呢?因为 VBScript 就是来实现Windows 系统管理、Office 组件管理、数据库存取、动态 网页生成的编程语言。


HTA 编程空手道”,也是新建一个文本文件或 TXT 文件,然后用 HTML 语言和 CSS 表达式来构造主体代码和丰富的用户交互界面,混入 javascript 和 vbscript 代码,也可以调用 jQuery 来大幅度提升 javascript 的编程效率,也可以调用 jQuery 来生成统计图表,从而写出从简单到复杂的代码,然后保存退出,然后更改当前文件的文件扩展名为 hta(原本是 txt 的),也就实现了在“记事本”中也能编程且立即双击运行你的新软件的“奇迹”。本质上,一个 HTA 文件就是一个网页,但是它的 javascript 是基于IE 的,这种情况下的 javascript 不仅可以读写本地硬盘,也能与 vbscript 实现互通有无,而 vbscript 可 以调用“组件对象模型(Component Object Model,COM)”,所以 HTA 几乎是“万能”的。


从空手程度与灵活性来说,VBA 是语料编程空手道的初级,因为 VBA 要依赖 Office的安装与正常运行。而 VBS 是语料编程空手道的中级,因为它不仅可以在 Office 已经安装的情况下调用 Office 组件,也可以在 Office 尚未安装的情况下直接写出极为丰富的语料库应用软件。而 HTA 是混合语言编程,是语料编程空手道的最高级,因为它不仅具备 VBS 和 VBA 的合成优势,也具备快速构建丰富的图形用户界面的能力,也混入且具备了 javascript 语言的功能,从而站在了一系列 javascript 扩展库以及一系列基于jQuery 的扩展库的丰富天地之中。


在语料编程空手道的初级或中级或高级,你并不孤独,你随时可以与其他编程语言并肩战斗或互通有无的:你可以“引用”或“调用”已经注册的 DLL 文件、你可以“运行”或“传递参数给”某个位置上的 EXE 文件、你也可以让你运行的 EXE 文件随时“隐身”或随时“显身”。当然,如果电脑中已经正常安装了 ruby 或 perl 或 python 的脚本解释器,你从一个 doc 文件或 xls 文件或 ppt 文件或 vbs 文件或 hta 文件,也能运行一个 ruby 脚本或 perl 脚本或 python 脚本。


在语料编程空手道的初级与中级与高级之间, 是互生互助互通互控互灭互改互嵌的和谐关系。本质上,vba 程序体现为一个 doc 文件或 xls 文件或 ppt 文件,一个 vbs 程序体现为一个 vbs 文件,一个 hta 程序体现为一个 hta 文件。但是,这三种形式的程序都具备文件新建与读写能力,所以,一个 doc 文件可以随时自动产生一个 xls 文件,一
个 xls 文件也可随时自动产生一个 ppt 文件,一个 vbs 文件也能随时自动产生一个 doc文件或 xls 文件或 ppt 文件或 hta 文件,一个 hta 文件也能自动随时生成一个 vbs 文件或 doc 文件或 excel 文件或 ppt 文件。 说完了“随时自动生成与相互生成”, 我想说“语料编程空手道的初级程序与中级程序与高级程序之间也能相互删除,或者自动更改文件名”, 我把这叫“互灭互改关系”。 那么, 什么是互嵌呢?互嵌就是相互嵌入, 就是“vba代码中,一开始就含有 vbs 代码或 hta 代码”,就是“三种语料编程空手道程序都可以一开始就不是纯粹的,而是其中两个品种甚至三个品种的混合代码的状态”。

从学习难度上说,vbs 是最容易理解与最容易上手的,因为 vbs 代码可以只进行字符串计算和数值计算,而不必控制什么,而只是弹出一个”呈现计算结果的“消息框。

从学习成果上说,vba 是最轻松跨入字词句的自动处理的最生动阵地的,你会发现一两三行代码就实现了”句子切分、句子提取、单词切分、单词提取、中英文识别“这些原本非常复杂的语料处理任务,而你用其他编程语言是无法单独地轻松地实现这些效果的,因为 vba 是 office 内置编程,office 已经内置了字词句的智能识别。

从学习生动上说,hta 是最鲜艳最动态最彻底的,但 hta 需要至少懂 HTML 语言的入门知识,并且你还需要懂 vbs 或 javascript 才能在 HTML 中制造出各种程序效果。总之,vba 和 vbs是几乎同等难度的,hta 并不是一种语言而是把多种语言混合在一起的技术,而 vba 和vbs 的本质都是微软公司的专利"Visual Basic"的迷你版

从教程教材的从浅入深的推进来说,语料编程空手道的入门是学习”Visual Basic语法“,也就是学习 VB,而 VB 的图文教程和视频教程简直是满天飞或随便捡。学完了”VB 语法“,你就该学”特色任务“,就是 MS Word 中 vba 如何控制字词句,就是vbs 如何创建与删除文件(夹),就是 hta 如何混入 vba 和 vbs 和 javascript 代码。学完了”特色任务“,你就该学”跨境作战“。”跨境作战“就是 vba 与 vbs 与 hta 之间的互动互生互灭的联合作战,而更高程度的”跨境作战“就是掌握用 vba 或 vbs 或 hta来控制与配合其他编程语言及其开发的软件。

总之,学语料编程空手道,要先学”基本语法“,再学”特色任务“,最后学”跨境作战“



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值