| 
		
			Сообщение от Erolast
			
		
	 | 
	| 
		Хотя читаемость ужасна.
	 | 
	
Читаемость прекрасна, как разговорный английский практически. Ты просто не привык. Это как ты всегда едлал q = q+1
 а потом ввели оператор q++ и ты такой "читаемость ужасна"
а во  вторых 
if (!(type in modules)) {
        modules[type] = [];
    }
}
А если тебе нужно этот массим получить в переменную а потом с ним играться?
modules = @modules[type] or = []
modules.push()
modules.length
в ЯС это будет вот такой ужос:
if(!this.modules[type]){
  this.modules[type] = []
}
modules = this.modules[type]
modules.push()
modules.length
или даже такой:
modules = this.modules[type] || (this.modules[type] = [])
modules.push()
modules.length
В общем я не буду учавствовать в дискуссии на тему сравнения синтаксиса кофескрипта и яваскрипта. Каждому дураку очевидно что это небо и земля и что яваскрипт не сравнится с кофескриптом. Если у тебя есть какие-то сомнения то погугли про кофескрипт. 
п.с. это каким надо быть не грамотным чтобы начать ДОКАЗЫВАТЬ ЧТО у кофескрипта НЕ лучше синтаксис)!! ЭТО ЖЕ ЖЕСТЬ)!!! ЕГО И СДЕЕЕЛАЛИ потому что лучше синтаксис!! Его ДЛЯ ЛУЧШЕГО СИНТАКСИСА И ИЗОБРЕЛИ МЛЯТЬ)!!!! Как можно не знать таких вещей?
ЧТО же до модулей? 
Cat = require 'modules/Cat'
module.exports = ->
  new Cat
Я чет не врубаю, ты не знал что так можно писать? на node вообще штоле не писал?