Leave a comment

Comments 111

ext_1405098 December 20 2013, 11:03:42 UTC
Кстати, ClojureScript сегодня уже поддерживает source maps
Если я не ошибаюсь, то поддержка source maps в браузерах очень плохая. Вроде бы вебкит не дает возможности получить стектрейс в сорс языке (только в таргет js). Я сейчас программирую на coffeescript практически без использования информации из стектрейсов.

Reply

tonsky December 20 2013, 11:04:56 UTC
Можно дебажить, паузить и ходить по call-stack-у, видя локальные биндинги например

Reply

ext_1405098 December 20 2013, 12:23:24 UTC
Не думал, что программисты на clojure отлаживают программы таким способом.

Reply

ext_707972 December 20 2013, 16:00:34 UTC
Никит, а есть ли выигрыш от использования Кложескрипта вообще?

Пост клевый, но вот захожу на https://github.com/swannodette/om и что я вижу? Интерфейс какой-то. Реакт вроде бы клевая библиотека(правда, у меня еще не было возможности попробовать). Но если для работы с любой браузерной либой мне требуется еще дополнительно к ней поддерживать интерфейс в этот язык, это накладывает дополнительную стоимость.

Опять же, тот же mr_aleph толкает ихний Dart. Дарт может быть и не лишен своих минусов, но он по крайней мере должен быть нативным. А Кложескрипт, надо полагать, нативным никогда не будет.

Reply


maxim December 20 2013, 11:15:16 UTC
на N2O TodoMVC занимает в 2 раза меньше: https://github.com/b0oh/todon2o/blob/master/src/index.erl

Reply

tonsky December 20 2013, 11:17:12 UTC
напомни, он на каждый клик на сервер ходит?

Reply

ext_707972 December 20 2013, 15:41:30 UTC
Это вроде Ваадина на Эрленге, выходит?

Reply

maxim December 21 2013, 19:33:11 UTC
Как напишешь так и будет.
В данном примере что-то на клиенте, сами операции с сервером.

Reply


ext_1405098 December 20 2013, 14:02:38 UTC
Если я не ошибаюсь, то очень популярный фреймворк AngularJS умеет батчить апдейты через dirty checking. В статье утверждается, что Om выполняет dirty checking быстро за счет иммутабельности (проверка сводится к сравнению указателей), но неясно, насколько велик выигрыш по сравнению с ангуляром. Если я не ошибаюсь (знаком с ангуляром на уровне чтения презентаций), в нем ditry checking делается один раз на одно событие, что вряд ли может очень плохо повлиять на производительность.
Я не вижу, чем подход Ома хорош для типичных приложений. В начале статьи написано, что он взят из компьютерных игр. Но в компьютерных играх все время происходит экшен, даже если его нет, то все равно отыгрывается какая-то анимация, чтобы картинка выглядела живой. В веб приложениях пользователь жмет кнопку, получает статичный контент, рассматривает его, потом опять жмет кнопку, и т. д.

Reply

murkt December 20 2013, 15:00:55 UTC
> (знаком с ангуляром на уровне чтения презентаций), в нем ditry checking делается один раз на одно событие, что вряд ли может очень плохо повлиять на производительность.

Влияет плохо, на десктопе незаметно, но на мобилках тормозит, а ещё иногда ломается.

Reply

ext_707972 December 20 2013, 15:43:31 UTC
Честно говоря, я не понимаю, почему все в последнее время так стремятся перенести веб в мобилки. Неужели написать нативное приложение настолько уж тяжело? На практике сделать приложение с одной codebase, которое будет нормально адаптироваться и под мобилки, и под десктоп все равно не выходит.

Reply

murkt December 20 2013, 16:14:01 UTC
Перенос веба в мобилки - это совершенно параллельная дискуссия, а у Ангуляра стопицот проблем и без этого. И когда мы делаем действительно большое приложение, тормозить начнёт и на десктопе, кмк.

Reply


sorhed December 20 2013, 16:14:01 UTC
Чтобы нормально писать на ClojureJS, надо сначала начать нормально писать на Clojure?

Reply

theiced December 20 2013, 16:29:39 UTC
это тот же язык щемта

Reply

tonsky December 20 2013, 17:00:13 UTC
Попробуй :) В принципе там почти одно и то же.

Reply

voldmar December 21 2013, 20:07:37 UTC
Ещё помнить о том, что Clojure некоторые ошибки явно показывает из-за JVM, а в ClojureScript из-за JS иногда можно нечаянно начать складывать массив и число. Но source maps спасают.

Reply


magicprinc December 20 2013, 16:40:36 UTC
ClojureScript молодой, пользователей условно мало, поэтому оттока разочарованных ещё меньше.

На примере недовольных GWT:
http://www.guynirpaz.com/2012/04/28/gwt-is-dead/
http://polygoncell.blogspot.ru/2013/07/gwt-for-new-project-no-thanks.html

можете прокомментировать?

Убедительно уверяют, что pure javaScript only - всё остальное от лукавого...

Сам-то я Vaadin использую (server side java framework с клиентом на GWT ;-) - поэтому просто интересуюсь мнением уважаемого человека

Reply

magicprinc December 20 2013, 16:45:54 UTC
Т.е. много отзывов в стиле "мы взяли 2 пакета чистого JS, 5 упаковок лучших js библиотек, пол-солонки Node.js и целое множество html5 всех сортов и расцветок..."

PS: несмотря на похороны GWT держится http://www.gwtproject.org/:
становится полноценным opensource проектом,
поддерживается Google, Vaadin, Sencha
речь не о нем - речь о подходе "js - ассемблер"

Reply

tonsky December 20 2013, 17:04:29 UTC
Ну дык, GWT был с идеей «давайте притворимся, что у нас тут Java». ClojureScript как бы задизайнен как hosted язык и нигде не скрывает что работает на платформе.

Представление о JS как целевой платформе, а не языке, дает ряд плюсов, которые недоступны чувакам, пишушим напрямую js, так же как пишушим на ассемблере недоступные многие высокоуровневые оптимизации. Все, что они могут - микрооптимизировать свои пути, как муравьи, локально.

http://stuartsierra.com/2012/06/16/why-im-using-clojurescript
http://blog.getprismatic.com/blog/2013/1/22/the-magic-of-macros-lighting-fast-templating-in-clojurescript

Reply

ext_1405098 December 20 2013, 21:52:11 UTC
А чем

(defn example [datum]
[:li [:a {:href (str "#show/" (:key datum))}
[:div.class1.class2 {:id (str "item" (:key datum))}
[:span.anchor (:name datum)]]]])

Лучше

"""


  • #{datum.name}


  • """

    с последующим innerHtml. Это, если я не ошибаюсь, даже быстрее будет.

    Reply


    Leave a comment

    Up