Я бы первым признал, что VBScript / ASP далек от идеальной платформы, но это далеко не так плохо, как предполагают некоторые комментарии.Это не самый современный язык в мире, и у него есть свои бородавки, но вполне возможно написать хороший, надежный код на VBScript.И это не должно быть тяжелым испытанием;хотя в платформе отсутствуют многие инструменты, облегчающие программирование на других языках (списки, наследование, импорт, разумный синтаксис присваивания, правильные конструкторы), большинство из них можно заменить, смоделировать или обойти.И VBScript дает вам немало возможностей для работы:
- Динамичность
- Свойства по умолчанию
with
блоки - Предсказуемая сборка мусора
- Эффективный буфер ответов
Я часто слышу, что многие функции VBScript (особенно свойства по умолчанию) осуждаются как сбивающие с толку, но если вы знакомы с языком, они могут быть мощными ресурсами.Думайте о встроенных функциях и возможностях как о базе, на которой можно строить.С помощью этих инструментов вы можете исправить большинство бородавок.Например:
Проблема: friggin 'обязательный набор синтаксиса.Пример:
if isObject(foo) then
set bar = foo
else
bar = foo
end if
Боль в тылу, да?
Решение: VBScript поддерживает передачу по ссылке!
function assign (byref var, val)
if isObject(val) then
set var = val
else
var = val
end if
end function
Пример:
assign bar, foo
Очевидно, это техника, используемая с дисциплиной, но идеально понятная при правильном использовании.
Еще примеры того, что вы можете сделать в VBScript, если вы хотите, чтобы он работал:
myList.map getRef(lcase)
set myDict = DB.get_record "select * from Foo where id=?", Array(42)
import "MyLib"
printf "%s, %!s" Array("Hello", "<World>")
' => Hello, <World>'
with Form.define("User")
with .field("name")
.validate_nonempty
.validate getRef("userNameNotTaken"), "That user name is taken"
end with
with .field("email")
.validate_format emailRegex
end with
with .field("password")
.validate_length 6, null
.validate getRef("passwordIsComplex"), "Your password must contain…"
end with
end with
Существует старая поговорка, что вы можете писать на языке COBOL на любом языке.Это более или менее означает, что возможности языка менее важны, чем программист, для создания хорошего кода.Теперь вы не можете написать ruby или python на VBScript, но вы можете подойти намного ближе, чем вы думаете.
РЕДАКТИРОВАТЬ: Почти забыл. Эрик Липперт был одним из дизайнеров VBScript, и его блог является бесценным ресурсом для некоторых хитрых частей языка.