Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Кто использует Coffeescript в своих проектах или на работе? (https://javascript.ru/forum/node-js-io-js/25218-kto-ispolzuet-coffeescript-v-svoikh-proektakh-ili-na-rabote.html)

FINoM 29.01.2012 04:12

Кто использует Coffeescript в своих проектах или на работе?
 
Собсно сабж. Вот смотрю я на огромный кусок человечества и не понимаю, действительно ли они используют кофескрипт для создания каких-нибудь вещей, сложнее, чем хеллоу ворлд. Я, вот, в очередной раз открыл сайт сабжа, сказал "круто" и закрыл.

Да и вообще, интересны подробности и особенности языка, проявляющиеся только в процессе работы. Сильно интересует вопрос отладки. Вот появилась ошибка синтаксиса или исключение, как найти соответствующую строку?

Хотя при всей своей крутости, язык попахивает бредом:
$('.account').attr class: 'active'
Первый вопрос: что здесь что? Только потом, вчитавшись, понимаешь, что это метод attr, с аргументом {class: 'active'}.

Вот это вообще кердык:
outer = 1
changeNumbers = ->
  inner = -1
  outer = 10
inner = changeNumbers()
Только прочитав результирующий JS я понял, что функция changeNumbers возвращает outer = 10.

А еще тут не используется var o_0

Честно говоря, хотел бы иметь в арсенале быстрый компилятор ограниченного количества сахара в JS, например, (краткие) -> записи*функций, генераторы, let и yield. Может еще чего-то из новых экмаскриптов.

Что-то много тут понаписал. Удалять лень :D

Gvozd 29.01.2012 04:21

Сам в шоке от него
Для того чтобы прочитать произвольный Cofeescript надо основательно его выучить

Цитата:

Сообщение от FINoM
Честно говоря, хотел бы иметь в арсенале быстрый компилятор ограниченного количества сахара в JS, например, (краткие) -> записи*функций, генераторы, let и yield. Может еще чего-то из новых экмаскриптов.

компилятор Cofeescript умеет эти сахары?
вот и используйте его.
Пишите код, используя только необходимый вам сахар, а те конструкции, которые в Coffeescipt выглядят непривычно, записывайте стандартным JS синтаксисом.
Правда, при этом встает вопрос о невозможности использовать чужой coffeescript с незнакомыми вам конструкциями.

Но и в случае отдельного ограниченного компилятора возникает та же проблема - какое количество сахара он должен транслировать, чтобы было удобно всем читать чужой код?
Как стандартизировать?

FINoM 29.01.2012 04:48

Цитата:

Сообщение от Gvozd
Как стандартизировать?

Наводишь на ответ "написать свой"? :D

Kolyaj 29.01.2012 10:24

Рубисты всегда славились тем, что ходили в чужой монастырь со своим уставом. Сначала Prototype написали, потом вот CoffeeScript. Если ты не рубист, то и CoffeeScript тебе не понравится.
Рубист -- в широком смысле, т.е. необязательно писать на Руби, достаточно, чтобы он тебе нравился. Мне, например, не нравится ни Руби, ни, соответственно, CoffeeScript.

trikadin 29.01.2012 11:12

Kolyaj, надо посмотреть на руби)) А то я до сих пор не знаю, отношусь ли я к этой касте)

monolithed 29.01.2012 11:19

Цитата:

Сообщение от FINoM
действительно ли они используют кофескрипт для создания каких-нибудь вещей, сложнее, чем хеллоу ворлд.

Им лень учить JS, поэтому проще писать на CS

Цитата:

Сообщение от FINoM
Первый вопрос: что здесь что? Только потом, вчитавшись, понимаешь, что это метод attr, с аргументом {class: 'active'}.

Да ладно. Конечно не исключаю, что я привык к bash и такие конструкции сразу интуитивно понятны. :D

Цитата:

Сообщение от Kolyaj
Рубисты всегда славились тем, что ходили в чужой монастырь со своим уставом.

А как же .NET, Objective-J, Phype, ClojureScript, Parenscript, Dart, GWT?

Цитата:

Сообщение от Kolyaj
Если ты не рубист, то и CoffeeScript тебе не понравится.

А мне сильно нравится, хотя я далек от Ruby.
Кстати если уж пошел такой разговор, то 99% новых фич в ES6-7 будут из CS и Python.
Вобщем это эволюционное развитие языка, хоть я уже и приводил примеры будущего синтаксиса, на всякий

B@rmaley.e><e 29.01.2012 11:42

Цитата:

Сообщение от Gvozd
Пишите код, используя только необходимый вам сахар, а те конструкции, которые в Coffeescipt выглядят непривычно, записывайте стандартным JS синтаксисом.

По-моему, там так нельзя.

Цитата:

Сообщение от FINoM
Честно говоря, хотел бы иметь в арсенале быстрый компилятор ограниченного количества сахара в JS, например, (краткие) -> записи*функций, генераторы, let и yield. Может еще чего-то из новых экмаскриптов.

Traceur

monolithed 29.01.2012 11:42

Цитата:

Сообщение от B@rmaley.e><e
По-моему, там так нельзя.

Раньше вроде можно было, сейчас компилятор не понимает такие конструкции

к примеру if (true) транслирует в i; (нужно писать так: if true then)

if (1) then транслирует в if (1.) {}, что-то глучить стал.

trikadin 29.01.2012 12:35

Цитата:

Сообщение от monolithed
if true then

В этот момент я понял, что точно не буду пользоваться coffeescript. Потому что if-then меня ещё в паскале достали.

Gozar 29.01.2012 12:54

Цитата:

Сообщение от FINoM (Сообщение 153839)
Хотя при всей своей крутости, язык попахивает бредом:
$('.account').attr class: 'active'
Первый вопрос: что здесь что? Только потом, вчитавшись, понимаешь, что это метод attr, с аргументом {class: 'active'}.

А по мне так всё нормально и интуитивно понятно.

Цитата:

Сообщение от FINoM (Сообщение 153839)
Вот это вообще кердык:
outer = 1
changeNumbers = ->
  inner = -1
  outer = 10
inner = changeNumbers()
Только прочитав результирующий JS я понял, что функция changeNumbers возвращает outer = 10.

Здесь всё вообще кристально понятно.

Может быть потому тебе не ясно из-за того, что ты не сталкивался с подобным стилем написания кода. Приведенный тобой кусок кода почти один в один похож на код Erlang.

Цитата:

Сообщение от FINoM (Сообщение 153839)
А еще тут не используется var o_0

По секрету скажу что использование var меня немного бесит. В Erlang тоже нет var, но там переменную вообще нельзя переопределить и все переменные пишутся с заглавной буквы, что ну офигеть как удобно. Не нужны баксы($) или var-ы. Слово с заглавной буквы - значит переменная. ;)

Тебя смущает только первое впечатление от реализации того что уже реализовано, но более страшно, на мой взгляд.

Ты наверное ещё никогда не видел как список можно поделить на голову и хвост :)

Попробуй почитать другой язык, тот же Erlang или Ruby, может понравиться и негативного отношения не будет к другому стилю написания.

FINoM 29.01.2012 16:38

Цитата:

Сообщение от B@rmaley.e><e
Traceur

Слишком долго компилируется, да и отлаживать непонятно как.
Цитата:

Сообщение от Gozar
Здесь всё вообще кристально понятно.

Офигеть.
Цитата:

Сообщение от Gozar
Ты наверное ещё никогда не видел как список можно поделить на голову и хвост

Это ты о чем? О прологе?
Цитата:

Сообщение от Gozar
Попробуй почитать другой язык

Я читал, но только не руби, не питон и не ерланг. Читал C, C++, C#, Паскаль, PHP и, возможно, что-то еще. Вот эти языки и определили, как должны выглядеть, как минимум, процедуры и функции (функция()), что конец функции заканчивается чем-то большим, чем отсутствие табуляции. Да, надо как-то расширять сознание. Пойду-ка наркотиков куплю, чтоль.

monolithed 29.01.2012 17:06

Цитата:

Сообщение от FINoM
Я читал, но только не руби, не питон и не ерланг. Читал C, C++, C#, Паскаль, PHP и, возможно, что-то еще.

Потому что они не на столько функциональные

Цитата:

Сообщение от FINoM
Пойду-ка наркотиков куплю, чтоль.

Начни с Haskell :D

trikadin 29.01.2012 17:12

Цитата:

Сообщение от monolithed
Курни Haskell

А я пролог в своё время изучал)

Кстати, очень интересный язык, но, к сожалению, практического применения особого не имеет.

monolithed 29.01.2012 17:24

Цитата:

Сообщение от trikadin
Кстати, очень интересный язык, но, к сожалению, практического применения особого не имеет.

Ага конечно, на нем сейчас даже сервера пишут. Есть ряд веб-фреймворков, а по скорости он очень сильно приближается к С++

FINoM 29.01.2012 17:32

Цитата:

Сообщение от trikadin
практического применения особого не имеет.

Зато задачу Энштейна решает :D

Да и пролог бы мог стать неплохим языком запросов к БД, просто сложный он очень. Иногда сидишь, втыкаешь в две строки по несколько минут, перебирая пальцами в воздухе.

Gozar 29.01.2012 17:33

Цитата:

Сообщение от FINoM (Сообщение 153932)
Это ты о чем? О прологе?

В Erlang-е можно делать так:

1> List = [du, hast, { mein, herz, berührt }].
2> [A, B | Any] = List.

Соответственно A, B, Any переменные теперь содержат:
3> A.
du
4> B.
hast
5> Any.
[{mein,herz,berührt}]


Any - хвост.

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

Я привел пример языка, который сильно отличается от стереотипа каким должен быть язык.

trikadin 29.01.2012 17:34

Цитата:

Сообщение от monolithed
Ага конечно, на нем сейчас даже сервера пишут. Есть ряд веб-фреймворков, а по скорости он очень сильно приближается к С++

Значит, мои знания устарели.

Цитата:

Сообщение от Gozar
Но суть не в этом. Чтение разных языков, хотя бы просто чтение ставит мозг и позволяют взглянуть на мир под другой точкой зрения.

Полностью согласен.

monolithed 29.01.2012 18:02

Цитата:

Сообщение от Gozar
В Erlang-е можно делать так:

В ES6 тоже так можно

Gozar 29.01.2012 18:28

Цитата:

Сообщение от monolithed (Сообщение 153970)
В ES6 тоже так можно

Вот так нельзя(смысл про голову и хвост, а не про деструктуризацию):

1> List = [du, hast, { mein, herz, berührt }, 10, 20].
2> [A, B | Any] = List.
3> Any.
[{mein,herz,berührt},10,20]

Но они уже к этому движуться :)

4urbanoff 30.01.2015 17:49

Нате вам для сабжа Nali - fullstack фреймворк на coffeescript+ruby моей разработки ) Добавлю свое имхо - и coffee и ruby - отличные языки, в них надо всего лишь разобраться )

Gozar 30.01.2015 20:12

4urbanoff,
Не обязательно "некропостить в копротеме", чтобы кинуть ссылку на проект!

Octane 30.01.2015 20:28

Раз уж подняли тему.
Вчера на MoscowJS пол зала плевалось, когда примеры кода в докладе о flux показали на coffee :D
http://instagram.com/p/ycep7urb52/

Gozar 30.01.2015 21:51

Цитата:

Сообщение от Octane
пол зала плевалось, когда примеры кода в докладе о flux показали на coffee

Ахахахаха, "Мсье знает толк в извращениях"(с). Примеры flux-а надо по брутальному показывать на Node с EventEmitter-ом, чтобы всем кто впервые увидел реакт вынесло мозг зачем там нода?! :D

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

melky 30.01.2015 23:01

Цитата:

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

о, а можно поподробнее?

Gozar 31.01.2015 00:17

Цитата:

Сообщение от melky
можно поподробнее?

Цитата:

Сообщение от Gozar
по брутальному показывать на Node с EventEmitter-ом, чтобы всем кто впервые увидел реакт вынесло мозг зачем там нода?

дуль

Первая мысль была, что Реакт работает на сервере и пример с флюксом для сервера и тут мозг начинает подозревать неладное. Я на ноде ещё не писал и то, что EE это просто синтет. события знаком был только понаслышке.

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

Другие примеры приводить лень, если читал, то мысль поймешь, если нет, то перечитай.

4urbanoff 31.01.2015 11:53

Цитата:

Сообщение от Gozar (Сообщение 354304)
4urbanoff,
Не обязательно "некропостить в копротеме", чтобы кинуть ссылку на проект!

А что тут своими примерами и исходниками делиться нельзя? Разве я что-то прорекламировал и что-то с этого поимел?

Gozar 31.01.2015 13:10

4urbanoff,
В оффтопике сидят в основном ECMAScript6-теры... Если тебя не парит, что с тобой разговаривают только те, кому твоя тема не интересна, то не проблема.

coffescript mast die!

Если что, то есть еще http://javascript.ru/forum/project/

4urbanoff 01.02.2015 08:50

Gozar,
1. Вы мне нет ни кто, на "ты" мы не переходили, или "ECMAScript6-терам" вежливость чужда?
2. Что меня парит - Вас парить не должно, но похоже, что наоборот.
3. Если уж хотите понтануться своими блестящими знаниями английского - пишите правильно - "coffescript mUst die!"

Safort 01.02.2015 11:22

4urbanoff,
Цитата:

1. Вы мне нет ни кто, на "ты" мы не переходили, или "ECMAScript6-терам" вежливость чужда?
С подключением) Это интернет, тут можно и на "ты", такая тут культура общения.

nerv_ 01.02.2015 11:53

Цитата:

Сообщение от Safort
С подключением) Это интернет, тут можно и на "ты", такая тут культура общения.

категорически согласен :)

Gozar 01.02.2015 12:53

Цитата:

Сообщение от 4urbanoff
1. Вы мне нет ни кто, на "ты" мы не переходили, или "ECMAScript6-терам" вежливость чужда?

Меня персонально на этом форуме просили общаться на "ты". Со своими порядками в чужой монастырь?

Цитата:

Сообщение от 4urbanoff
2. Что меня парит - Вас парить не должно, но похоже, что наоборот.

Я обычно вежлив и ничего дурного не имею в виду. Лично мне фиолетово, что вас там парит. Вас там наверное много или у тебя ЭГО в одного человека не влезает?

Цитата:

Сообщение от 4urbanoff
Если уж хотите понтануться своими блестящими знаниями английского - пишите правильно - "coffescript mUst die!"

Чувак, это на немецкий манер ;) Типа набор бессмысленных слов вместе: "кофеСкрепт мачта она" :D

Вынь рога из ворот!

4urbanoff 01.02.2015 20:53

Цитата:

Меня персонально на этом форуме просили общаться на "ты".
Оо персонально!! Звучит-то как! Ты наверно тут авторитет! Интересно как это выглядело?
Цитата:

Со своими порядками в чужой монастырь?
А монашки в ножки тебе тут не падают?
Цитата:

Вас там наверное много или у тебя ЭГО в одного человека не влезает?
Звучит лесно) Приятно, когда тебя втройне воспринимают) А может и больше... - это уже зависит от планки умственного развития индивидуума на другом конце.
Цитата:

Чувак, это на немецкий манер Типа набор бессмысленных слов вместе: "кофеСкрепт мачта она"
Ну ну ))
Ладно оффтопь дальше, я же последую поговорке - "не спорь с дураком, иначе ты опустишься до его уровня и он тебя там задавит своим опытом". Удачи.

Gozar 01.02.2015 22:29

4urbanoff,
Цитата:

Сообщение от Gozar
Вынь рога из ворот!

Глухим по два раза обедню не служат.


Часовой пояс GMT +3, время: 11:09.