Как стать автором
Обновить

Комментарии 120

Разбил мне сердцо. Партнёр… :) Щютка
забавно, но в массы не пойдет.
НЛО прилетело и опубликовало эту надпись здесь
лол
Лолищще. Привет из 2013.
:D. Правда ужасные точки из языка всё же убрали :).
Некропостинг — это весело.
Вы даже не представляете насколько!
НЛО прилетело и опубликовало эту надпись здесь
Ну вообще-то он перешёл в ES6 больше. Но отлично просуществовал, открыв дорогу Babel.

Зря смеялись.

>С распространением HTML 5, он начнёт теснить Flash и Silverlight
расплылся в улыбке :D, это ж надо в такое поверить
Ну тут имелось больше, что с HTML 5 Javascript получит больше возможностей в браузере. Например, веб-сокеты и видео, для которых традиционно используется Flash.
HTML никогда не потеснит Silverlight, который ориентирован для бизнеса. Flash, который используется для всего чего только можно. Потому что скорость внедрения изменений в JS в десятки раз меньше.
Бред полнейший. Ни разу ни в одну флешку изменения не вносились быстрее чем за пол дня. Нужно найти исходники, человека, который разбирается, перекомпилировать, залить. Даже если это простое изменение шрифта.

Об интеграции я молчу. Для интеграции флешки с контентом всего остального сайта нужно делать огромную работу. HTML не надо интегрировать, его можно генерировать сразу такой, какой нужно.
Я говорю не о изменении кода, а о изменениях в технологии.
Бред! Привет из 2013.
Да я вижу ты крут писать 4 года спустя
плюс еще появился canvas!
Читаемость кода хуже.
Другой програмист не знакомый Coffeescript не разберется.
PS. Или привычка
Ну, например, для Ruby программистов только проще. Так что в Ruby on Rails проекте проблем с читаемостью не будет.
Ой не факт. Одно присвоение через ":" и python-like циклы чего только стоят.
Присвоение через: действительно странно (хотя мне нравится единством с синтаксисом хеша), но его можно заменить на =. А Python-like циклы говорят очень удобны :), но можно их не писать, а использовать Array#forEach и Array#map из JS 1.6.
Возможно и удобны, для программистов на python :) После руби-кода глаз сильно «цепляется» (лучшего слова для описания ощущения не нашел) за них. Мне больше нравится подход prototype'а с его each, map, и т.п. Он-то как раз ближе всего к руби, как мне кажется.
Мне тоже такой подход больше нравится :). В качестве небольшой защиты Pythin-like циклов могу заметить, что они быстрее :). Но вообще это конечно фишка Python’а — расширяться за введения новых возможностей в язык, а не использование гибкости уже существующего синтаксиса (чего только аннотации стоят) :).
Отлично! Теперь любой Ruby программист без труда разберется в JS, который, возможно, он в первый раз в жизни видит. Зато нормальный JS программист застрелится от такого. Кому это нужно?
Будут
Боже какой бред!
Над синтаксисом языка работают десятки профессоров, которые целыми днями сидят и дискутируют о тех или иных аспектах синтаксиса… Но нет, найдется какой-то умник, который решит, что они мудаки, и напишет свой ненужный транслятор.
Взгляды на синтаксис тоже постоянно меняются. Мы же не пишем на COBOL потому что его разработали те же десятки профессоров.
Да, синтаксис меняется. Однако это эволюционное развитие, а не попытка «переписать все по новому».
Тут тоже изменения не коренные. Код транслируется явно. Сам синтаксис — не более чем заимствование уже проверенных хороших идей из Ruby и Python.
https://developer.mozilla.org/en/New_in_Javascript_1.8
(Почемуто у меня Хабр с тегами не хочет дружить.)
Да, очень хорошо, что JS развивается, но даже в версии 1.8 лямбда слишком длинна для её массовым применения (особенно чувствуется в jQuery).
Генераторы!!111
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
> Coffeescript — язык, чтобы писать на Javascript с более удобным синтаксисом.
Карандаш — палка, чтобы писать на бумаге с более отчётливым следом.
НЛО прилетело и опубликовало эту надпись здесь
Не знал, спасибо. Но недавно появилась вторая волна из-за ВМ нового поколения.
>Coffeescript — язык
>Javascript с более удобным синтаксисом

>После Ruby и Python даже скобки вокруг условия в if или обязательные return кажется лишними символами.
>Вот бы тот же Javascript, только с немного другим синтаксисом.

ололо
Программа не должна быстра писаться, она должна быстро читаться.
Верно, но Coffeescript настолько же читаем, как и Javascript. Просто у него другой синтаксис, как у Ruby, LISP и любого другого не C-подобного синтаксиса. Так что тут только дело привычки.
К примеру, замыкания абсолютно не выделяются среди кода.
Хм, ну в Ruby они тоже выделяются не сильнее блоков в if. Собственно, поэтому в Ruby всё и строится на лямбдах (даже работа с массивами).
Кроме того, вроде именно такой синтаксис лямбды, где-то уже был. Вроде в Haskell, я его видел.
>синтаксис… не C-подобного
ну и на*уй нужен js без С-подобного синтаксиса?
вобщем сомнительная разработка.
Лучше чтобы и то и то :)
Многим языкам это удалось
НЛО прилетело и опубликовало эту надпись здесь
Мне тоже нравится JS и jQuery, но на 10 раз устаёшь писать function() {} (ну хотя бы def() { }). Синтаксис Coffeescript выглядит дико только для C-style программистов. Это дело привычки, для Ruby и Python это совершенно читабельный код.
По моему того же можно добиться грамотной настройкой макросов в любимой IDE.
Тем больше букв, тем ниже читаемость. Да и решение через огромную IDE — это «кастыль».
НЛО прилетело и опубликовало эту надпись здесь
Если для других ЯП это читатебельно, тогда это дело вкуса, а не «ЭТО» ;). Карму то точно снижать не стоит — я понимаю, что на Хабре больше PHP программистов, чем Ruby, но у них тоже есть свои темы.
А вообще очень плохо, когда кругозор ограничен языками одного стиля.
Что такое «стиль языка»? Ссылку в студию.

Или вы имеете в виду «парадигму»? В таком случае выше — верное замечание в неверно выбранный момент — отсутствие curly braces не меняет «стиль языка», как вы сказали. Это далеко не не ФП vs Имератив.
Действительно, я больше имел в виду парадигму. Но если человек не может понимать, а самое главное не хочет принимать язык из-за не C-синтаксиса, разве это хорошо и не однобокое мышление?
Все, что меняет coffeescript — это синтаксис. Парадигма не сдвигается ни на миллиметр.

Ваше утвеждение про кругозор выше верно, но не для этого случая — тут нет смены «стиля языка»
НЛО прилетело и опубликовало эту надпись здесь
Но в проекте могут быть также file.lisp, file.erl или любые другие ЯП, у которых не C-стиль. Основной аргумент минусующих — я всю жизнь программировал на C-стиле, а это не C-стиль, поэтому язык плохой, а статью нужно заминусовать. Чем не консерватизм к стилю ЯП? ;)
НЛО прилетело и опубликовало эту надпись здесь
Тоже самое можно сказать и о Haml или Sass, но они активно применяются. Их синтаксис другой, разработчик должен их знать. Но поскольку отличается только синтаксис, который учится за пару дней, то Haml и Sass активно применяются как в мире Ruby, так и вне его.
Кстати, не надо забывать, что PHP начинал именно как Coffeescript — небольшое расширение Perl ;).
C как раз тут причем он консервативен и бородат. не думаю, что не зная ruby и python вы пойдете разбираться в коде RoR проекта. А если уж начнете — то код вам уже будет понятнее. А также всегда можно транслировать код в javascript.
Причем тут С-стиль или нет? Давайте еще приведем в пример Perl с его синтаксисом. Или brain fuck… Ну чем не языки программирования?

Ценность языка не может определяться лаконичностью его синтаксиса.

А разница между временем написания «function(){}» и "=>" со временем нивелируется до незаметного минимума.

 

При желании все, что вы написали можно сделать при помощи макросов в IDE. А вот сделали бы вы классы (в привычном понимании) и еще черь знает сколько другого полезного синтаксического сахара, вот тогда было бы полезно.
Классы в прототипном ЯП?! «привычное понимание»? O_o

Ладно, извините, просто я сторонник, что языков и парадигм много и не надо в монастырь JS входить с уставом ООП Java :). Классы в привычном понимание есть в ExtJS, но они ужасают разработку. Самый неплохой вариант, JS.Class, но всё равно это как-то не правильно :).
Кстати, в Coffeescript синтаксис работы с классом тоже становится чуть понятнее. Например, наследование: Snake extends Animal вместо
Snake.__superClass__ = Animal.prototype;
Snake.prototype = new Animal();
.
Ну тогда вы откроете незнакомый file.js скомпилированный из file.coffee и увидите тот же javascript.
НЛО прилетело и опубликовало эту надпись здесь
Код из Coffee транслируется явно. Действительно, надо несколько мгновений подумать, где эта же строка в coffee-файле, но опыт Haml и Sass показывает, что это не проблема.
НЛО прилетело и опубликовало эту надпись здесь
вас кто-то заставляет это делать? это просто +1 возможность, +1 вариант синтаксиса.
Ну я думаю, что если вам не нравится coffee, а нравится javascript, вы просто выкидываете coffee-файл и поддерживаете дальше только javascript-код.
это да, правильный аргумент, но как сказано ниже можно самому догадаться в какой строчке косяк.
Там и будет JS код, это же транслятор. Аналогия с haml была проведена.
для человека который не знаком с яваскриптом проще coffee выучить :)
Ерунду говорите
Ну изучить Coffeescript с нуля, как минимум, не сложнее Javascript. Наш мозг отравляется знаниями и изучив JS, многие вещи Coffee кажутся нам странными, хотя новичку (или программисту из мира Ruby и других не C-языков) кажутся понятными.
«Не сложнее» не значит «проще», нет?
Но и не значит сложнее, раз Вы говорите, что это ерунда ;). Язык просто другой. Как уже написал andoriyu, не все думают в узких рамках пары популярных языков. Если кто-то учился программировать с Python (а его преподают в некоторых школах), то и с Coffee начинать проще, так как синтакс JS ему будет непривычен.
А мне не нужно ничего утверждать или говорить «ерунда/не ерунда». Автор выше сказал, что выучить (цитирую) «проще», вы съехали ослабили утверждение, заменив его на «не сложнее», т.е. _может быть_ проще.

У меня есть желание спорить только с оригинальным утверждением, извините.
я говорю от своего лица, я не так тесно знаком с яваскриптом и мне проще переключится на этот сладкий синтаксис чем париться с си подобным синтаксисом собственно из-за которого я не перестал си.
Тем не менее вы утверждаете, что возможность не вбивать пару лишних символов в строке делает его проще, чем js. Очень странное заявление — с потолка прямо-таки.
Ну если столько программистов не принимают Coffee из-за отсутствия C-синтаксиса, то и Ruby/Python/Lisp-программистам будет тяжелее смотреть на JS-синтаксис.
Откуда тут взялись Ruby-программисты? Опять с потолка?
Да причём тут C-синтаксис,
просто вместо расширения получаем другой синтаксис для того что уже все знают. Профит минимальный.
И haml и sass такие же. (чего только требования отступов стоит, привет питон)
Не успели утихнуть страсти по поводу Ruby-надстроек над CSS…
Ну успех Sass и Haml в Ruby мире и вселяет в меня уверенность в будущем Coffeescript :).
Узок круг революционеров. Страшно далеки они…
Упреки брошенные в адрес Coffeescript один в один повторяют упреки к Sass
А Haml — вообще недоразумение. У php-программистов таких недоразумений вагон и маленькая тележка и любое упоминание об этом выливается в холивар.
Спасибо, тяжело «воевать» с большинством :).
Кстати где можно посмотреть на доли использования haml vs erb?
Мне вот кажется что erb не сдаст свои позиции haml
Haml для питонистов хорошо
нелепо, особенно точка в конце функции. по мне так концепция блоков кода (или как это правильно называется) в руби куда интереснее.
Точка меня тоже смутила, но думаю привыкнуть к ней легче, чем к скобкам в LISP. Блоки в JS точно так же есть — просто синтаксис другой (в JS 1.6 есть и map, each, reject и inject, только у последних 3х названия чуть другие). В том-то и дело, что из-за длинного синтаксиса лямбды, блоки в JS используются редко, а Coffeescript map будет выглядить так:
array.map(i =>
i + 1.)
Вообще-то, в javascript 1. == 1.0. Если не в стандарте, то во многих реализациях — точно.
В данном случае точка оканчивает лямбду, т. е.:
array.map(i =>
  i + 1
.)


Проверил, Coffee именно так и транслирует.
вообще то, точка не нужна, видимо автор попутал что то, подробно же все расписано в документации и примерах coffeescript.org
Вот вместо выдумывания Coffiescript лучше бы потратил 2% времени на настройку автокомплита и написания шаблонов, которые используются постоянно. А остальные 98% времени уделил бы родным/любимому человеку или отдыху. Толку было бы больше.

З.Ы. Комменты про тяжелые IDE насмешили — не нужно в бедный эклипс пихать ту кучу плагинов. Я как посмотрел этот список, это хуже чем окно сервисов в Win7 (но она хотя бы не тормозит!) — NetBeans, Aptana, WebIDE — всё такая жуть, как вы с этим работаете?
Это решение — кастыль, лечение симптомов, а не болезни. Код всё равно получается слишком длинный, в for (i = 1; i < array.length; i++) всё равно делаешь ошибки.
Кстати, автокомпилит и шаблоны есть не только в IDE, но и в лёгких текстовых редакторах типа TextMate, только Haml и Sass всё равно пользуются успехом, хотя проблемы HTML и CSS тоже можно решить с помощью различным граф. редакторов и т. д.
НЛО прилетело и опубликовало эту надпись здесь
В чём собственно загвоздка?
Был язык, для которого синтаксис разработан и принят.
Его используют по всему миру. Он стандарт.
И уже какой есть, такой есть. Он может нравиться, может не нравиться.
Вообще нету ни одного языка, который бы нравился на 100%.
Существуют несколько путей изменения этого.
Отказаться от языка, эволюционно его развить, или же революционно.
sass, haml, cofeescript попытки революционного изменения.
В результате получается нечто, что уже не может работать само по себе, и это самое главное.
Это лишает автономности технологий, которые разрабатывались таковыми.
Также это заставляет изучать второй синтаксис для того, что уже известно.
Какие варианты могут быть?
Примеры эволюционного подхода:
ERB, LESS.
Им тоже присуще выше описанные недостатки, но они уже не так ярко выражены.
И ERB и LESS расширяют HTML и CSS, но при этом сохраняют дань традициям языка, чтут его.
Вот для JS можно поискать подобное решение, хотя чего ещё не хватает JS?
Ведь в отличие от языков разметки, он то полноценный язык, да ещё какой!

Насчёт длинных функций и прочего. Посмотрите как в jQuery сделано. Куда ещё короче — $().

Проделанная работа вызывает уважение, по крайней мере для себя создали то, о чём мечтали. А другие зато теперь имеют права выбора.
Почему LESS эволюционный, а SASS — революционный? Или вы именно про sass? Но им ведь мало кто пользуется, практически все используют его в виде SCSS, и когда говорят SASS подразумевают SCSS.
Привет из 2009-ого :D
Лол. Гуглил на тему кофескрипта, открыл пару ссылок, потом отвлекся, забыл об этом, и читал как новую статью))
А я пока так и не стал пользоваться CoffeScript,
хотя променял ERB на Slim
Ну практически все — это далеко не все. Не понимаю, почему они заменили sass на scss. Может для того, что бы снизить порог вхождения?
Потому что scss обратно совместим с css. В следствии чего можно безболезненно переводить старые проекты на него и он понятен другим людям, которые могут работать с этим проектом.
Автоматически конвертируется прекрасно что в sass, что в scss. А если человеку непонятен sass, то у этого человека явные проблемы.
Вы живете в каком-то идеальном мире. Если человеку который будет работать с проектом после меня будет непонятен sass то проблемы будут у меня в первую очередь. Т.к. важен результат.
Sass кристально понятен, даже автоматически сгенерированный. Он тоже самое, что и scss только с отступами вместо скобок. Здравый человек не может понять css, scss, но не понять sass. Более того, человеку с минимальной смекалкой даже не нужно лезть в документацию, по уже написаному коду можно все понять.

А, как вы говорите, результат будет быстрее и качественней на sass.
Завидую, вас окружают здравые люди.

Нет, человек НЕ может понять scss. Фишка в том, что ему и не надо, он может в scss файлике писать на чистом css и оно будет работать, потому что scss обратно совместим с css.
Хотя конечно то что для работы с scss нужно установить руби и что-то там компилировать — уже является практически непреодолимой преградой.
а в javascript 1.7 есть генераторы списков (вроде так они в питоне называются):
var numbers = [1, 2, 3, 4];
var doubled = [i * 2 for each (i in numbers)];
alert(doubled); // Alerts 2,4,6,8
Идея не нова.
Странно что до сих пор не вспомнили про Cappuccino

Но все таки я не думаю что это правильный путь развития языка
Почитал комменты — всё-таки забавно, как подаётся и воспринимается информация. Автор статьи, не являясь автором Coffeescript-a, пытается его отстаивать, как будто имеет к нему особое отношение (кроме как пользователя). Комментирующие с категоричным видом думают, что им что-то навязывают и (зачем-то) отстаивают Си-подобный синтаксис, как будто имеют к нему какое-то отношение (кроме как пользователей).

Автору: не распинайтесь Вы особо. Предоставили информацию, осветили — всё. Дальше люди сами решат, будут они это использовать или нет. Анализируйте со стороны — умейте видеть плюсы и минусы. Не принимайте какую-то конкретную сторону по причине, что Вы — не автор Coffeescript-a; Вы можете его осветить и рассказать, что к чему, не нарываясь на «консерваторов» (как Вы сами отмечаете).

Кстати, клянчить где-то карму (или, тем более, просить кого-то заминусовать), всё-таки, некрасиво. За такое вот уже можно и послать (с Хабра; хотя, я понимаю, что это проблема Хабра и 80% так поступают — это нужно искоренять).

Тем, кто отвечает — не нравится что-то — не используйте, вам навязывает что ли кто-то? Че вы накинулись на автора статьи, как на автора Coffeescript-a, который как будто навязывает вам этот Coffeescript в ваши текущие проекты? Какой смысл минусовать ему карму?

По теме: я не буду использовать ;) Хоть Ruby и Python мне очень нравятся. Но больше мне нравится JS. С учётом того, что я знаю JS достаточно хорошо, у меня также будут сомнения по поводу качестве сгенерированного кода.

P.S.: Да, и сниппеты с автокомплитом в редакторе, всё-таки, рулят ;)
Ошибку с выпрашиванием кармы осознал. Просто с начала не смирился с тем, что не все топики попадают на главную :).
Описка. Спасибо, исправил на a += 1.
Синтаксис довольно сомнителен — на мейнстрим не тянет, а еще надо транслятор запускать.
Лучше уж haxe использовать. Он хоть более близок в JS.
этот коммент сюда (забыл нажать кнопочку)
Ну тут немного задачи разные. Отличие Coffeescript от Javascript только в синтаксисе и управляющих конструкциях (транслятор можно настроить как префильтр при запросе к серверу, пустяк). А haxe — это целое API с кучей бонусов, в то время как coffee — это тот же js, только вид другой
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории