Скриптол, JavaScript, PHP, сравнение

Сопоставленные синтаксисы трех языков программирования.

Основная функция

Скриптол JavaScript PHP
print "Hello"
console.log("Hello");
echo "Hello", "\n";
print a[x .. y] 
console.log(a.slice(x,y-x+2));
print_r(array_slice($a,$x,$y-($x)+
   count($a)*(($y<0)-($x<0))+1));echo "\n";
a[.. y] = b[1 .. 3]
a.splice.apply(a,[0,y-0+1].
  concat(b.slice(1,4)));
array_splice($a,0,$y-(0)+count($a)*($y<0)+1,
  array_slice($b,1,3));
a[2 .. 8] = nil 
a.splice.apply(a,[2,7].concat([]));
array_splice($a,2,7);

JavaScript иногда проще PHP, иногда наоборот. Скриптол всегда проще, чем два других языка.

Структуры данных

Скриптол JavaScript PHP
array a = [ 1, 2, 3 ]
var a=[1,2,3];
$a=array(1,2,3);
<car speed=150 name="Spitfire">
  <engine power=100></engine>
  <passengers num=4>
    "Clara, Dana, Elisa, Farah"
   </passengers>
</car>
var car={
  "speed":150,
  "name":"Spitfire",
  "engine":{
     "power":100
  },
  "passengers":{
  "num":4,
  "data":"Clara, Dana, Elisa, Farah"
 }
};
$car=[
  "speed"=>150,
  "name"=>"Spitfire",
  "engine"=>[
    "power"=>100],
    "passengers"=>[
      "num"=>4,
      "data"=>"Clara, Dana, Elisa, Farah"
   ]
];

Объект XML преобразуется в ассоциативный массив в JS или PHP. XML-структура имеет эквивалент JavaScript в виде вложенных объектов, который можно сохранить в файле формата JSON. Поэтому JavaScript имеет все возможности для развитого и динамического представления данных, но в рудиментарной и не очень читаемой форме. У других языков таких возможностей даже нет.
JSON - это способ сериализации (копирования в файл) таблицы JavaScript.

Контрольные структуры

Скриптол JavaScript PHP
for int i in 0 .. 9 print i
for(i=0;i<=9;i++) 
 console.log(i);
for($i=0;$i<=9;$i++)
echo $i, "\n";
for int i in 0 .. 9
print i
/for
for(i=0;i<=9;i++) {
 console.log(i);
}
for($i=0;$i<=9;$i++)
{
echo $i, "\n";
}
if j in [ 1, 2, 3, 4 ] print "in"
if(([1,2,3,4].indexOf(j)!=-1)) {
console.log("in");
}
if(in_array($j,array(1,2,3,4)))
{
echo "in", "\n";
}
do
case x = 1: print 1
case x > 1: print 2
else print 0
/do
do {
   if(x===1) {
      console.log(1);
   }   
   else {   
     if(x>1) {
       console.log(2);
     }   
     else {
       console.log(0);
     }
   }
} while(false);
do
{
   if($x===1)
   {
      echo 1, "\n";
   }
   else
   {
   if($x>1)
   {
      echo 2, "\n";
   }
   else
   {
      echo 0, "\n";
   }
   }
}
while(false);
text t  
input "O/N?", t
if t.lower()
= "o": print "oui"
= "n": print "non"
else
print "quoi?"
/if
var t="";
process.stdout.write("O/N?");
t=fs.readSync(process.stdin.fd, 100, 0, 'utf8').shift();
process.stdin.pause();

t=t.toLowerCase();
if(t==="o") {
   console.log("oui");
}
else {
   if(t==="n") {
      console.log("non");
   }
else {
   console.log("quoi?");
}}
$t="";
echo "O/N?";
$fp=fopen("php://stdin","r");
$t=rtrim(fgets($fp,65536));
fclose($fp);

$t=strtolower($t);
if($t==="o")
{
   echo "oui", "\n";
}
else
{
   if($t==="n")
   {
      echo "non", "\n";
   }
else
{
   echo "quoi?", "\n";
}
}

Цикл for является общим для всех языков, и вариация для in или для each, которая позволяет просканировать содержимое списка, добавляется ко всем динамическим языкам. Однако в JavaScript для each настолько мало производительности, что лучше использовать классический цикл для.

Паттерн-совпадение реализовано в Script со структурой do... поле.

Классы

Скриптол JavaScript PHP
class Car is Vehicle   
int speed   
int getSpeed()      
speed + 1
return speed
/class
var Car=(function(_super)
{
   scriptol.extends(Car,_super);
   Car.prototype.getSpeed=function()
   {
      this.speed+=1;
      return this.speed;
   }
   function Car() {
      _super.apply(this, arguments);
      this.speed=0;
   }
   return Car;
})(Vehicle);
class Car extends Vehicle
{
   var $speed=0;
   function getSpeed()
   {
      $this->speed+=1;
      return $this->speed;
   }
}

Объявление класса в JavaScript версии 6 становится похожим на то, что было в Script или PHP, но веб-совместимость наступит не раньше многих лет.