Нюансы Vbs скриптинга в AkelPad`e

Russian main discussion
  • Author
  • Message
Offline
Posts: 30
Joined: Sat Nov 26, 2011 1:52 pm

Post by Egor »

...

(3). В топике, где выкладывают скрипты для AkelPad, подавляющее большинство скриптов написано на JS, но для WSH (как мне казалось) обычно пишут на VBS, это какое-то религиозное предпочтение? Просто лично я не люблю JS, у него смнтаксис тупой какой-то, в коде разобраться трудно.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

(3) Есть несколько скриптов на VBS, а так да, основной - JS, видимо, потому, что похож на С :)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

обычно пишут на VBS
Обычно делают то что умеют лучше. В данном случае большинство народа лучше всего умеют писать на ECMA262, так как он более распространен(ибо развелось школоты аля программисты - веб программисты). Как только WSH научится Lua я перейду на него. А если научится С++ - тем более.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Egor(3).
Кроме синтаксиса есть и иные различия. Пусть и малозаметные, но иногда "вдруг" становящиеся важными.
Например в списке методов AkelPad есть начинающиеся с символа подчеркивания: _TCHAR, _TSTR, _TSIZE, _X64. В VBS такие имена недопустимы, поэтому если такие методы вам в скрипте понадобятся, то очевидно, что этот скрипт будет написн на JS. А когда что-то кем-то ранее написано на JS, то логичнее не изобретать велосипед на VBS, а просто "подворовывать" из имеющегося. Но с другой стороны, в Jscript нет, например, полного аналога паре Asc()/Chr() из VBScript (если возникает необходимость работать не с юникодом, а именно с байтовыми кодировками), поэтому отказываться от VBScript окончательно ни к чему.

Offline
Posts: 30
Joined: Sat Nov 26, 2011 1:52 pm

Post by Egor »

opk44 wrote:В списке методов AkelPad есть начинающиеся с символа подчеркивания: _TCHAR, _TSTR, _TSIZE, _X64. В VBS такие имена недопустимы, поэтому если такие методы вам в скрипте понадобятся, то очевидно, что этот скрипт будет написн на JS
Понятно. А почему они начинаются именно с "_" — это какая-то неизбежная необходимость или просто разрабам "так захотелось"?

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Egor
Вы исключаете вероятность тьго, что "разрабы" не знают Васика и ограничений его синтаксиса?

(Я не знаю)

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Так, вроде, открытым текстом написано:

Code: Select all

  'VBScript deny names start with (_) underscope
  if AkelPad.IsOldWindows() then
    TCHAR="A"
    TSIZE=1
    TSTR=0
  else
    TCHAR="W"
    TSIZE=2
    TSTR=1
  end if
(Scripts-Rus.txt)

А вот аналога для _X64 что-то не видать.

P.S. И да, underscore :)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

А почему они начинаются именно с "_" — это какая-то неизбежная необходимость или просто разрабам "так захотелось"?
А почему у нас правостороннее дорожное движение, а у японцев и англичан левостороннее?
В общем легенда такая.
Заметили что эти константы имеют общее? А именно: _T
Так такая вот комбинация символов используется в Microsoft SDK для унификации структуры приложений которые должны быть совместимы на разных версиях оболочки: на ANSI-версиях и на UNICODE-версиях. Ну а так как это довольно таки удобно, то почему бы его тут не сделать?

Offline
Posts: 30
Joined: Sat Nov 26, 2011 1:52 pm

Post by Egor »

Я все-таки так и не понял: когда разрабы создавали AkelPad и его объектную модель, они были _вынуждены_ использовать символ "_" в начале некоторых констант, или они просто решили, что это типа прикольно ("похоже на C++")? Я не программист и не имею ни малейшего представления, как там WSH прикручен к AkelPad, я рассуждаю, наверное, тупо, но: если плагин Scripts основан на WSH, а под WSH пишут либо на JS, либо на VBS, то почему произошло так, что VBS применительно к AkelPad претерпел "расовую дискриминацию":)?

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Egor
Также у программистов принято начинать с символа _ или называть только символом _ переменные либо функции, которые не имеют значения для процесса решения прикладной задачи(служебные) либо вообще не нужны. Например, код для обмена двух переменных значениями:

Code: Select all

int supernumberone = 55;
int supernumbertwo = 66;
// меняем используя временную пременную
int _temp = supernumberone;
supernumberone = supernumbertwo;
supernumbertwo = _temp;
В этом примере переменная _temp не играет никакой полезной прикладной роли в отличии от supernumberone и supernumbertwo, а потому её назвали с подчеркиванием в голове. Конечно могли назвать и temp, но тогда при обилии таки временных переменных среда разработки засоряла бы список подсказки на слова начинающиеся с temp, и вместо того что-бы сразу же подсказать например какого-нибудь temperature_last_known, оно засорит его temp1,temp2,temp2, и т.д. и вся польза от подсказки улетучится.
Второй пример:

Code: Select all

const _TCHAR* format = _T("Super format string %s%s%s");
_tprintf(format,_T("Hello"),_T(", "),_T("World!\n"))
В этом примере макросы _T, _TCHAR и _tprintf - служебныу макросы, суть которых знать не обязательно, ибо прикладной задачи не несут. Потому оформлены с _. Так удобно, ибо программист знает что полезной прикладной функции они не несут.

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

FeyFre
но все же надо признать, что это фича в основном сишная. И как большинство сишного, неинтуитивная (а ведь есть еще и двойное "_" ...)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Fr0sT, игнорируя свою практику, говорю: судя по тому чего напринимали в ISO/IEC 14882:201 (известен как C++11) то нам понадобятся не только _T но и хз ещё что.
Post Reply