Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Porównanie języków VBScript i JavaScript

System PROMOTIC wykorzystuje język skryptów VBScript już od pierwszych wersji od roku 1995. Czas jednak płynie i ten język nie należy już do najnowocześniejszych. Wspúierany jest tylko przez produkty Microsoftu, jednak pozostali producenci go nie wspierają (np. Internet Explorer go wspiera lecz nie jest wspierany przez Firefox, Chrome, Opera, Edge ..). Przez ten czas często stosowanym stał się język JavaScript i ten stał się podstawą i standardem technologii internetowych.
 
Również system PROMOTIC powoli dostosowuje się do tego trendu. Przy wytwarzaniu aplikacji PROMOTIC projektant może spotkać się ze składnią JavaScript w następujących miejscach:
- w obiekcie PmPanel w konfiguratorze Ustawienia języka skryptowego.
 
Celem tego rozdziału jest pokazanie, że nawet jeżeli język JavaScript jest bardziej ogólny (i dlatego może się wydawać, że jest bardziej złożony), to do celów systemu PROMOTIC zapisy okazują się prostszymi i w wielu przypadkach bardziej zrozumiałymi niż w przypadku języka VBScript. Składnia jest często bardzo podobna jak w języku VBScript. Na różnice tych dwu języków zwrócimy uwagę właśnie tutaj.
 

Różnica podczas pisania dużych/małych liter

Obydwa jęzuki różnią się rozróżnianiem dużych i małych liter w nazwach zmiennych, właściwościach oraz metod.

Język JavaScript rozróżnia duże i małe litery (jest case sensitive). Dlatego jest np. różnica między nazwą Value i value. Nazwy właściwości oraz metod należy pisać zgodnie z opisem w dokumentacji.

Język VBScript NIE rozróżnia duże i małe litery. Właściwość o nazwie Value można w tej składni napisać np. value, VALUE itd. Również tutaj zalecane jest pisanie nazw zgodnie z dokumentacją.

 

Domyślne właściwości lub metody

Język VBScript wspiera koncepcję tak zwanych "właściwości domyślnych" (lub metod). Każdy obiekt może posiadać jedną właściwość lub metodę określoną jakogłówną (domyślną) a wtedy tą nie trzeba w skrypcie pisać.

Przykład:

Obiekt PmData posiada metodę Item określoną jako główną. Tak samo zmienna w PmData (obiekt Var) posiada główną właściwość Value. Dlatego dostęp do wartości zmiennej "Temperatura1" można pisać w dowolny sposób:

oData.Item("Temperatura1").Value = 95
lub
oData("Temperatura1").Value = 95
lub
oData.Item("Temperatura1") = 95
lub
oData("Temperatura1") = 95
 
Język JavaScript nie posiada tej koncepcji i z tego powodu należy określić każdą właściwość oraz metodę. To znaczy, że w tym przypadku należy pisać:
oData.Item("Temperatura1").Value = 95;
 

Różnice przy oddzielaniu poleceń

W języku VBScript każde polecenie znajduje się standardowo na nowym wierszu (tzn. nowy wiersz służy jako separator poleceń).

W języku JavaScript każde polecenie musi być zakończone średnikiem i dlatego na jednym wierszu można wpisać kilka poleceń (nawet jeżeli nie jest dogodnym przesadanie w tej kwestii).

 
- dla VBScript:
a = 1
b = 1 - Dwa polecenia typu przepisanie wartości znajdują się każde na nowym wierszu
- dla JavaScript:
a = 1;
b = 2; - Dwa polecenia mogą być każde na nowym wierszu
a = 1; b = 2; - lecz mogą być także na jednym wierszu
 

Różnica przy wywoływaniu metod

Przy wywoływaniu metod jest język JavaScript prostszy w tym, że za nazwą metody zawsze muszą się znajdować nawiasy (bez względu na to, czy metoda zwraca wartość).
 
- dla VBScript:
Pm.Debug "jakiś tekst" - w tym miejscu nie ma nawiasów, ponieważ nie interesuje nas zwracana wartość
PmCommMsg.Run - w tym miejscu ponownie nie ma nawiasów i metoda nie posiada parametrów
data = Pm.FileTextRead("#data:file.txt", 1) - a tym miejscu znajdują się nawiasy, ponieważ interesuje nas zwracana wartość
- dla JavaScript:
Pm.Debug("jakiś tekst"); - nawiasy muszą być zawsze pisane
PmCommMsg.Run(); - nawiasy muszą być pisane nawet jeżeli metoda nie posiada parametrów
data = Pm.FileTextRead("#data:file.txt", 1); - nawiasy są pisana ponownie, w tym przypadku zapis jest taki sam jak w VBScript
 

Wytworzenie i inicjalizacja zmiennej

W języku JavaScript jest prostsze wytworzenie zmiennej i przyszeregowanie jej wartości. To można wykonać przy pomocy jednego polecenia, podczas kiedy w języku VBScript są konieczne dwa polecenia. Przy przypisaniu nie rozróżnia się, czy dochodzi do przypisania prostej wartości czy obiektu, podczas kiedy w języku VBScript przy przypisaniu obiektu musi być zastosowane polecenie Set.
 
- dla VBScript:
Dim nVal, oPanel - Polecenie Dim tylko wytworzy zmienne lecz nie umożliwia przypisania im wartości
nVal = 1
Set oPanel = pMe.Pm("/Panel1")
- dla JavaScript:
var nVal = 1, oPanel = pMe.Pm("/Panel1"); - Polecenie var wytworzy zmienne i umożliwia im bezpośrednio przypisać wartość
 

Operatory języka

Oba języki mają wiele wspólnych operatorów, na przykład dodawanie (+), odejmowanie (-), mnożenie (*), dzielenie (/) itd. Język JavaScript ma jednakże więcej operatorów a są bardzo przydatne. Na przykład przesunięcie bitowe (<< i >>), wyrażenie warunkowe (a ? b : c), dodawanie/odejmowani jedynki (++ i --).

Zwłaszcza przydatnym jest uproszczenie polecenia do dodania wartości (np. do proměnné v objektu PmData):

 
- dla VBScript: Dodanie wartości 15 do zmiennej oznacza konieczność powtórzenia wyrażenia także po prawej stronie polecenia.
pMe.Pm("/Data/#vars/Temperatura").Value = pMe.Pm("/Data/#vars/Temperatura").Value + 15
- dla JavaScript: Dodanie wartości 15 do zmiennej jest o wiele prostsze dzięki wyrażeniu +=, które nie oznacza "przypisz" lecz "dodaj". Istnieją podobne polecenia dla operacji "odejmij", "pomnóż", "podziel" ..
pMe.Pm("/Data/#vars/Temperatura").Value += 15;
 
Patrz również Operatory JavaScript i opis składni.
 

Funkcje języka

Oba języki posiadają duże zestawy własnych funkcji (w języku VBScript na przykład funkcje Now, Abs ..). Język JavaScript posiada również dużąilość podobnych funkcji, lecz nie zalecamy ich stosowanie - lepszym rozwiązaniem jest korzystanie z metod obiektu Pm.
 

Typy danych języka

Oba języki posiadają typy danych jak "liczba całkowita", "Liczba rzeczywista", "Łańcuch", "Obiekt". Podstawowa różnica spoczywa w tym, że język JavaScript posiada różne typy dla "Data" i "Array". Oba powyższe typy są często stosowanymi w systemie PROMOTIC i sposób implementacji tych typów w języku JavaScript nie jest odpowiedni dla systemu PROMOTIC. Problem został rozwiązany w następujący sposób:
- dla typu "Data": W języku VBScript datą jest "coś jakby liczba rzeczywista" z której trudno bezpośrednio rozeznać, jaki jest rok, miesiąc, dzień, godzina, minuta, sekunda, milisekunda. Do tych celów służą funkcje VBScript, które z tej "liczby rzeczywistej" potrafią określić rok, miesiąc, itd.

Podobna koncepcja jest wprowadzona także dla JavaScript: Wszystkie metody PROMOTIC, które zwracają datę, zwracają "coś jakby liczbę rzeczywistą". Taką wartość możnw wtedy przekazywać do innych metod i głównie przy pomocy nowego obiektu PmDateObject można z tej wartości stwierdzić jaki jest rok, miesiąc, dzień ..

- dla typu "Array": Język VBScript posiada typ "Array" (można wytworzyć na przykład przy pomocy funkcji Array). Najpowszechniejszymi są warianty 1-wymiarowe i 2-wymiarowe.

Podobna koncepcja jest wprowadzona takąe dla JavaScript: Przy pomocy nowej metody Pm.CreatePmArray można wytworzyć "Array" jako specjalny obiekt PmArray, i ten obiekt równocześnie zwraca wszystkie metody PROMOTIC, które według dokumentacji "Array" powinny zwracać.

 

Warunek IF

Oba języki potrafią wytworzyć warunek przy pomocy polecenia IF. Jednakże w języku JavaScript polecenie jest zapisywane w trochę inny sposób.
 
- dla VBScript: Warunek jest wykonywany przy pomocy poleceń If...Then...Else
If a > 1 Then
   ...
Else
   ...
End If
- dla JavaScript: Warunek jest wykonywany przy pomocy poleceń if...else. Jeżeli w warunku występuje klika wyrażeń, wtedy muszą być ujęte w nawiasach złożonych {...}.
if (a > 1)
{
   ...
}
else
{
   ...
}
 

Polecenie pętli FOR

Oba języki posiadają polecenie FOR które umożliwia kilkukrotne wykonywanie części kodu. W języku JavaScript polecenie ma trochę bardziej skomplikowany zapis, lecz zato jest bardziej ogólne.
 
- dla VBScript: Polecenie For...Next
For i=0 To 100
   ...
Next
- dla JavaScript: Polecenie for ma trzy parametry.
- 1. parametr (np. i=0) jest polecenie, które zostanie wykonane na początku pętli.
- 2. parametr (np. i<100) jest polecenie, które jest sprawdzane na końcu pętli w celu stwierdzenia, czy ma być jeszcze dalej powtarzane
- 3. parametr (np. i++) jest polecenie, które zostanie wykonane na końcu pętli w celu zmiany zmiennej pętli

Jeżeli w poleceniu for występuje kilka poleceń, które mają być powtarzane, wtedy muszą być ujęte w złożonych nawiasach {...}.

for (i=0; i<=100; i++)
{
   ...
}
 

Polecenie wielokrotnego warunku

Oba języki posiadają polecenie wielokrotnego warunku, kiedy zestaw poleceń zostanie wykonany tylko jeżeli jakaś zmienna posiada odpowiednią wartość.
 
- dla VBScript: Polecenie Select Case
Case 1
   sMsg = "ok"
Case 2
   sMsg = "warning"
Case 3
   sMsg = "alarm"
End Select
- dla JavaScript: Polecenie switch. Za każdym zestawem poleceń jest umieszcane polecenie break; które zakończy waruneki i wyskoczy z polecenia switch.
switch (nVar)
{
case 1:
   sMsg = "ok"; break;
case 2:
   sMsg = "warning"; break;
case 3:
   sMsg = "alarm"; break;
}
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice