Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

OberonJS - отказать.

Посмотрел я на http://oberspace.dyndns.org/oberonjs.html
MODULE test;
IMPORT JS;
 
PROCEDURE Foo*;
VAR a : ARRAY 10 OF REAL;
BEGIN
  JS.alert("Hello, World!")
END Foo;


BEGIN
    
END test.
Транслируется в:
var RTL$ = {
    makeArray: function (/*dimensions, initializer*/){
        var forward = Array.prototype.slice.call(arguments);
        var result = new Array(forward.shift());
        var i;
        if (forward.length == 1){
            var init = forward[0];
            if (typeof init == "function")
                for(i = 0; i < result.length; ++i)
                    result[i] = init();
            else
                for(i = 0; i < result.length; ++i)
                    result[i] = init;
        }
        else
            for(i = 0; i < result.length; ++i)
                result[i] = this.makeArray.apply(this, forward);
        return result;
    }
};
var JS = function(){return this;}();
var test = function (){

function Foo(){
	var a = RTL$.makeArray(10, 0);
	JS.alert("Hello, World!");
}
}();
По пунктам:

1. человекочитаемый выходной код - есть (идентификаторы сохраняются)
2. старый дизайн выходного кода - нет (отличается семантика массивов, из-за чего появляется шлак в виде RTL$ вместо new Array(10))
3. новая система типов - есть*
4. новый синтаксис - есть*
5. компактный новый язык - есть*

* - но это же 1950-е годы, Алгол-58

По списку - [1,3,4,5]
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 13 comments