Не уверен что сюда, но на мой взгляд вопрос скорее философский, чем практический.
Есть ряд задач автоматизации который в силу ряда причин следует реализовать в виде скриптов для WSH. Вопрос, чем отличается направленность этих языков???
Дело в том что согласно референсу JScript показался мне более гибким, навороченым в смысле готовых функций, более WEB ориентированым. И в качестве минуса — не возмоджность передать несколько возвращаемых значений без сложностей (т.е. нужно делать коллекции или массивы, что не всегда удобно)
В VBScript не вводились нововведения достаточно давно, т.е. и на 2000м я получу тот же функционал что и на XP. Ну и вроде бы и все.
L>Дело в том что согласно референсу JScript показался мне более гибким, навороченым в смысле готовых функций, более WEB ориентированым. И в качестве минуса — не возмоджность передать несколько возвращаемых значений без сложностей (т.е. нужно делать коллекции или массивы, что не всегда удобно)
Лехко :
function ReturnManyValues()
{
return {strFirstValue:"1", nNumValue:2, bBoolValue:true};
}
var oRes = ReturnManyValues();
window.alert(oRes.strFirstValue);
window.alert(oRes.nNumValue);
window.alert(oRes.bBoolValue);
L>А как на самом деле обстоит дело?
JScript — это самый красивый язык из всех которые я видел. Очень лаконичный и минималистичый — но одновременно мощный и красивый. VBScript просто жуткое убожество по сравнению с JScript.
Здравствуйте, loknalori, Вы писали:
L>Не уверен что сюда, но на мой взгляд вопрос скорее философский, чем практический. L>Есть ряд задач автоматизации который в силу ряда причин следует реализовать в виде скриптов для WSH. Вопрос, чем отличается направленность этих языков???
L>Дело в том что согласно референсу JScript показался мне более гибким, навороченым в смысле готовых функций, более WEB ориентированым. И в качестве минуса — не возмоджность передать несколько возвращаемых значений без сложностей (т.е. нужно делать коллекции или массивы, что не всегда удобно)
L>В VBScript не вводились нововведения достаточно давно, т.е. и на 2000м я получу тот же функционал что и на XP. Ну и вроде бы и все.
L>А как на самом деле обстоит дело?
Я бы (IMHO, разумеется) выбрал JScript. Все-таки он очень похож на JavaScript, который стандартизован.
Приходиться заниматься гадостью — зарабатывать на жизнь честным трудом (Б.Шоу)
Здравствуйте, _pk_sly, Вы писали:
L>> не возмоджность передать несколько возвращаемых значений без сложностей (т.е. нужно делать коллекции или массивы, что не всегда удобно)
Здравствуйте, loknalori, Вы писали:
L>этот способ не удобно реализовывать когда ты в свое приложение встраиваеш WSH
сразу поясню — для сложных типов нужно реализовывать свои COM интерфейсы, что менее тривиально как для встроенных типов.
L>>этот способ не удобно реализовывать когда ты в свое приложение встраиваеш WSH L>сразу поясню — для сложных типов нужно реализовывать свои COM интерфейсы, что менее тривиально как для встроенных типов.
встраивал.
никаких сложностей.
благо есть wizardы — что для ATL что для MFC. добавления нового объекта или свойства делается в несколько кликов либо копи-пастов.
Здравствуйте, loknalori, Вы писали:
L>А как на самом деле обстоит дело?
Имхо на JScript возможностей побольше, но у VBScript более прозрачный синтаксис в некоторых вещах. Есть такой оператор как class, методы могут быть приватными. У JScript объектно ориентированный синтаксис очень уж нестандартный, но возможности практически как в нормальных языках. Тут и конствукторы c параметрами, и исключения нормальные, и еще много всего (можно у объекта в процессе выполнения подменить, удалить и добавить метод и т.д., собственно объект это Map<VARIANT,VARIANT>, очень оригинально).
Othello wrote:
>> > Единственное, что я не видел в JScript — это аналога MidB и их братьев >> > из VB. > .>substr > там есть Mid и Mid*B*
Байтов в js нету (да и нафиг оно в скриптовом языке??). И MidB уже выкинули из следующей версии VB.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
L>>А как на самом деле обстоит дело? E>Имхо на JScript возможностей побольше, но у VBScript более прозрачный синтаксис в некоторых вещах. Есть такой оператор как class, методы могут быть приватными. E>У JScript объектно ориентированный синтаксис очень уж нестандартный, но возможности практически как в нормальных языках.
Возможности его — ПОБОЛЬШЕ чем во многих "нормальных" языках
Оччень вкусная штука — возможность создавать функции где угодно c возможностью юзать переменные из текущего контекста
В JS надо привыкнуть к таким непривычным вещам:
— "окрытости" обьектов. Т.е. к обьекту могут добавляться свойства и функции, которые суть тоже свойства, в течение всего времени жизни обьекта.
— "странным" областям видимости переменных/функций — к примеру, фигурные скобки внутри функции не влияют на видимость. Т.е.:
function foo()
{
var i = 0;
{
var j = 1;
}
i = j; // Тут всё OK! i <= 1
}
— прототипы и конструкторы обьектов. Единственная, имхо, сложная вещь в JS. Впрочем, после того как я её для себя понял я перестал ей пользоваться Просто потому что наследование — вешь неродная для JS. Тут рулят функции, а не классы
— замысловатая система передачи параметров в функцию — надо привыкнуть к тому что строки и числа — только по значению, обьекты (в т.ч.) массивы — только по ссылке.
Поначалу после С++ было сложно. Правда, здОрово помогало наличие прекрасного (по сравнению с C++) отладчика c возможностями подёргать код "на коленке". Но после привыкания к JS слезть с него уже становится проблемой
L>>этот способ не удобно реализовывать когда ты в свое приложение встраиваеш WSH L>сразу поясню — для сложных типов нужно реализовывать свои COM интерфейсы, что менее тривиально как для встроенных типов.
Ты разъясни подробнее суть проблемы. Что именно тебе нужно сделать? У тебя функция f() вызывается из C++ и ты хочешь получить много возвращаемых значений?
L>Поначалу после С++ было сложно. Правда, здОрово помогало наличие прекрасного (по сравнению с C++) отладчика c возможностями подёргать код "на коленке". Но после привыкания к JS слезть с него уже становится проблемой
Здравствуйте, Left2, Вы писали:
L>>>этот способ не удобно реализовывать когда ты в свое приложение встраиваеш WSH L>>сразу поясню — для сложных типов нужно реализовывать свои COM интерфейсы, что менее тривиально как для встроенных типов.
L>Ты разъясни подробнее суть проблемы. Что именно тебе нужно сделать? У тебя функция f() вызывается из C++ и ты хочешь получить много возвращаемых значений?
да. Суть сложности (на счет проблемы — не знаю, пока не пробовал), что значения предадутся по COM интерфейсу. Если данные укладываются в VARIANT, то все нормально, но 2 значения — это уже массив...
L>>Ты разъясни подробнее суть проблемы. Что именно тебе нужно сделать? У тебя функция f() вызывается из C++ и ты хочешь получить много возвращаемых значений?
L>да. Суть сложности (на счет проблемы — не знаю, пока не пробовал), что значения предадутся по COM интерфейсу. Если данные укладываются в VARIANT, то все нормально, но 2 значения — это уже массив...
Напиши простенькую обёрточку которая из обьекта JS (видимого в C++ как IDispatch) доставала все значения (или значения по их именам). Это решит твою проблему?