CoffeeScript - няшечка!!! Или почему я использую CoffeeScript.

250 views
Skip to first unread message

Дмитрий Карпич

unread,
Jul 5, 2012, 5:54:55 PM7/5/12
to coffees...@googlegroups.com
Илья просил коротенько озвучить - почему CoffeeScript.

Попробую, хотя по-моему это очевидно.

CS это нормальный язык, на котором можно писать И который можно читать. Собственно, после первого же большого проекта из одностраничего приложения с навороченной логикой (простите, проприетарное, но вышло примерно строк на 500) стало понятно, что писать это на чистом JS - ад, и получается write-only.

CS удобен инфраструктурой, типа coffee REPL, в котором можно спокойно играться с идеями. Кроме того он вообще очень удобен, я его даже как калькулятор использую. Без шуток.

CS компилируемый, следовательно часть тупых ошибок поймает компилятор.

CS дает нормальный синтаксис. В том числе и для работы с наследованием.

CS делает явно очень многие вещи, которые в JS происходят "магически". Типа подъема объявлений переменных и всего такого, о чем пишут в книжках, сопровождая эти gotch-и желтыми восклицательными знаками. Язык, разработанный по принципу "наименьшего удивления" (как и Ruby) - наше все.

Собственно, я уже даже не смотрю на получаемый на выходе компилятора JS - CS + тесты дарят понимание происходящего.

Резюме - CS позволяет делая меньше брать больше и кидать дальше!

Рекомендую.

Митяй.

ilya ilya

unread,
Jul 6, 2012, 12:31:31 AM7/6/12
to coffees...@googlegroups.com
Спасибо за впечатления, Дмитрий!

На мой взгляд это важно - так как это впечатление сможет сформриовать
у человека кто уже поработал с CS, и это полезно для тех кто смотрит в
сторону его изучения.

Я вот тоже думаю, что конечно JS знать надо, но если
CoffeeScript+тесты - проходят, то можно с большой долей говорить, что
код рабочий.

Про себя могу сказать - что на JS - я очень мало программировал, и как
правило это было типа <form onsubmit="testForm(this)"... :)

Больше на серверной стороне опыт - php, python, ruby. Но клиентская
сторона - становится всё актуальнее, а для пользователя - это
очевидный плюс - нет задержек по работе с сервером по сети.

И такие задачи как браузерные игры - которые решает по большей частью
Flash - вполне могут перейти на CS.

Второй момент, что очень не большой уровень вхождения - всё работает
на браузере - надо лишь установить компилятор CS. Или через небольшой
веб-сервер - работать с JS компилятором в браузере.


2012/7/6 Дмитрий Карпич <mee...@gmail.com>:

Dmitry Karpich

unread,
Jul 6, 2012, 1:43:23 AM7/6/12
to coffees...@googlegroups.com
On Jul 6, 2012, at 8:31 AM, ilya ilya wrote:

Спасибо за впечатления, Дмитрий!

На мой взгляд это важно - так как это впечатление сможет сформриовать
у человека кто уже поработал с CS, и это полезно для тех кто смотрит в
сторону его изучения.


Вот впечатления человека, который немало поработал над всем - http://vimeo.com/35258313
Хорошая презентация.

Я вот тоже думаю, что конечно JS знать надо, но если
CoffeeScript+тесты - проходят, то можно с большой долей говорить, что
код рабочий.


JS достаточно понимать, не зарубаясь на его фигечки, а это всего 20% времени на изучения при 80% результате на выходе.

Про себя могу сказать - что на JS - я очень мало программировал, и как
правило это было типа <form onsubmit="testForm(this)"... :)

Больше на серверной стороне опыт - php, python, ruby. Но клиентская
сторона - становится всё актуальнее, а для пользователя - это
очевидный плюс - нет задержек по работе с сервером по сети.


Есть node.
Вполне себе серверная технология. Активно разрабатываемая.
Пишутся фреймверки, пишутся cms-ки, пишутся dbi-биндинги, на npm тонна модулей.
Так что CS можно (и нужно) использовать где угодно.

И такие задачи как браузерные игры - которые решает по большей частью
Flash - вполне могут перейти на CS.


С приходом HTML5 и canvas - несомненно, так и произойдет.

Второй момент, что очень не большой уровень вхождения - всё работает
на браузере - надо лишь установить компилятор CS. Или через небольшой
веб-сервер - работать с JS компилятором в браузере.


Ну, все работает и в консоли :) Так что порог вхождения еще меньше.

ilya

unread,
Jul 10, 2012, 4:49:57 AM7/10/12
to CoffeeScript2ru
Приветствую, Дмитрий!

> Есть node.
> Вполне себе серверная технология. Активно разрабатываемая.
> Пишутся фреймверки, пишутся cms-ки, пишутся dbi-биндинги, на npm тонна модулей.
> Так что CS можно (и нужно) использовать где угодно.

Всё познаётся в сравнении, мне на данный момент ближе Ruby на
серверной стороне.

Но было бы интересно увидеть как будет выглядеть несложное
CoffeeScript web-приложение работающее с БД (на ServerSide)

Если найдешь время, то вот я сделал небольшую постановку на ToDo
приложение:
https://github.com/nemilya/ruby-todo-demo/blob/master/spec.ru.md

Приложение тривиальное, но тем и интересно посмотреть как это будет
выглядеть в сравнении с Ruby.

И по поводу развёртывания - пробовал ли ты CloudFoundry?
Там есть поддержка Nodejs - было бы интересно там "захостить" демку на
CoffeeScript.

Со своей стороны - постараюсь сегодня сделать по этой постановке на
Ruby, и развернуть демку на CloudFoundry.com

С уважением,
Илья

ilya

unread,
Jul 19, 2012, 7:18:28 AM7/19/12
to CoffeeScript2ru
Привет, Дмитрий!

по поводу серверной стороны (в сравнении с CoffeeScript) - вот на
основе спецификации на простое ToDo приложение,
сделал на базе Руби:
http://nemilya.github.com/ruby-todo-demo/app.html

документация в стиле docco :)

Дмитрий Карпич

unread,
Jul 19, 2012, 11:59:41 AM7/19/12
to coffees...@googlegroups.com
Ну, будет время можно будет попробовать, пока некогда да и лениво.

Хотя, сказать честно - sinatra это читерство, там всего довольно много "под капотом" если я не путаю. Надо будет для ноды найти аналог.

Кстати, на CoffeeScript есть аналог Rails http://towerjs.org/ - пока в процессе строительства, но надежды есть.

ilya ilya

unread,
Jul 20, 2012, 3:49:24 AM7/20/12
to coffees...@googlegroups.com
Ну, лень - это двигатель прогресса.

Я как раз Sinatra и использую, т.к. на всём другом что я знаю - мне
потребуется больше усилий )

Как раз в этом фреймворке отсутствует всё в чём нет необходимости (а
это частое заблуждение - что чем больше функционала и возможностей тем
лучше) - чистая обработка роутов. И всё остальное разработчик
добавляет по вкусу - ActiveRecord, или DataMapper и т.п. для работы с
базой данных, Haml, или Slim и т.п. для шаблонирования.

Насколько я слышал Express как раз был сделан по аналогии с Sinatra,
но для меня важен объём кода, для запуска приложения.

Вот из первых строк поиска:
https://github.com/abesto/algo/blob/nodejs/app.coffee


Если я правильно понимаю, то этот фрагмент CoffeeScript/Express:

app.get '/', (req, res) ->
res.render('index', {
title: 'Algorithms and Data structures'
})

на Ruby/Sinatra будет примерно аналогичен:

get '/' do
@title = 'Algorithms and Data structures'
haml :index
end

Что грубо говоря: 102 / 75


2012/7/19 Дмитрий Карпич <mee...@gmail.com>:

> --
> Вы получили это сообщение, поскольку подписаны на группу CoffeeScript2ru.
>
> Чтобы отменить подписку на эту группу, отправьте сообщение по адресу
> coffeescript2...@googlegroups.com.
> Подробнее о функциях можно узнать на странице
> https://groups.google.com/groups/opt_out.
>
>

Reply all
Reply to author
Forward
0 new messages