はてなインターン2013事前課題(JS-1) を通して,JavaScriptとCoffeeScript,さらにJSの代わりにPythonで書けると話題の Brython を比較してみた.
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は非常にシンプルに書けるが,実際開発に使うにはデメリット(デバッグの問題など)も多い気がして,なかなか使う気になれない.