読者です 読者をやめる 読者になる 読者になる

JavaScript, CoffeeScript, Brythonの比較

はてなインターン2013事前課題(JS-1) を通して,JavaScriptとCoffeeScript,さらにJSの代わりにPythonで書けると話題の Brython を比較してみた.

JavaScript

var parseLTSVLog = function(logStr) {
    var logArray = [];
    var requests = logStr.split('\n');
    for (i=0; i < requests.length-1; i++) {
        var fields = requests[i].split('\t');
        var logObj = new Object();
        for (j=0; j < fields.length; j++) {
            var field = fields[j].split(':');
            if (field[0] == 'reqtime_microsec') {
                field[1] = +field[1];
            }
            logObj[field[0]] = field[1];
        }
        logArray.push(logObj);
    }
    return logArray;
}

CoffeeScript

parseLTSVLog = (logStr) ->
    logArray = []
    for request in logStr.split('\n')
        if request == '' then continue
        logObj = new Object()
        for field in request.split('\t')
            e = field.split(':')
            if e[0] == 'reqtime_microsec' then e[1] = +e[1]
            logObj[e[0]] = e[1]
        logArray.push(logObj)
    logArray

Brython (※ 以下のコードは現時点では動かない.listの中にdictやobjectを入れるとエラーを生じるバグがあるみたい.)

def parseLTSVLog(logStr):
    logArray = []
    for request in logStr.split('\n'):
        if request == '': continue
        logDict = {}
        for field in request.split('\t'):
            e = field.split(':')
            if e[0] == 'reqtime_microsec': e[1] = int(e[1])
            logDict[e[0]] = e[1]
        logArray.append(logDict)
    return logArray

CoffeeScriptやBrythonは非常にシンプルに書けるが,実際開発に使うにはデメリット(デバッグの問題など)も多い気がして,なかなか使う気になれない.