Comments 32
Господа минусующие, пожалуйста, отпишите что не понравилось.
Просто не обращайте внимания.
P.S. Я не минусовал
P.S. Я не минусовал
UFO just landed and posted this here
Ну к вашему сведению если язык обладает такой семантикой что к нему можно прикрутить монады без их нативной поддержки то этот язык сложно назвать недоязыком.
Ну, вообще-то, это не к языку прикрутили, а написали транслятор, первая же строчка из ридми — This package is a source-to-source translator that outputs JavaScript.
Ну строго говоря тут как раз пришлось писать расширение для языка и вводить новые ключевые слова, что говорит как раз не в пользу языка, ведь код на tamejs — это уже не код на js.
Тут ведь никакой экзотики нет — да в том же питоне асинхронный код imho красивее можно организовать, используя тот факт, что через генераторы можно писать сопрограммы (пример для tornado + библиотечки adisp):
foo и bar тут вычислятся параллельно и асинхронно, к строке baz =… управление вернется, когда оба значения будут готовы, ну и baz тоже вычислится асинхронно.
Никаких новых ключевых слов, никаких хаков, работает уже 5 лет как, синтаксис асинхронного вызова практически такой же, как и синхронного, можно возвращать значения и => выполнять команды как для зависимых, так и для независимых функций, ну и с обработкой исключений все в полном порядке (в отличие от tamejs, судя по их сайту).
Мне изначально javascript показался более удобным для асинхронного программирования из-за того, что лямбды можно объявлять сразу, пописал на node, потом по техническим причинам перешел на tornado и оказалось, что асинхронный код в питоне-то писать удобнее, inline-лямбды не нужны. В js все-таки не хватает нормальной поддержки таких фич со стороны языка, оттого все и велосипедят control flow библиотеками разной степени приятности.
Это полезная библиотека, но наличие таких библиотек все-таки не говорит в пользу языка, и это все-таки костыли.
Тут ведь никакой экзотики нет — да в том же питоне асинхронный код imho красивее можно организовать, используя тот факт, что через генераторы можно писать сопрограммы (пример для tornado + библиотечки adisp):
@adisp.process
def my_func():
foo, bar = yield client.get('foo'), client.get('bar')
baz = yield client.get(foo+bar)
print baz
foo и bar тут вычислятся параллельно и асинхронно, к строке baz =… управление вернется, когда оба значения будут готовы, ну и baz тоже вычислится асинхронно.
Никаких новых ключевых слов, никаких хаков, работает уже 5 лет как, синтаксис асинхронного вызова практически такой же, как и синхронного, можно возвращать значения и => выполнять команды как для зависимых, так и для независимых функций, ну и с обработкой исключений все в полном порядке (в отличие от tamejs, судя по их сайту).
Мне изначально javascript показался более удобным для асинхронного программирования из-за того, что лямбды можно объявлять сразу, пописал на node, потом по техническим причинам перешел на tornado и оказалось, что асинхронный код в питоне-то писать удобнее, inline-лямбды не нужны. В js все-таки не хватает нормальной поддержки таких фич со стороны языка, оттого все и велосипедят control flow библиотеками разной степени приятности.
Это полезная библиотека, но наличие таких библиотек все-таки не говорит в пользу языка, и это все-таки костыли.
Верно, но это недостаток именно этого расширения, можно было сделать библиотеку выполняющую подобные манипуляции потоком исполнения и без расширений языка.
Эм, а где она, эта библиотека? Странно же, что ее нет, с учетом того, что на node.js в асинхронном стиле пишут абсолютно все и вопрос стоит очень остро (в отличие от питона, где асинхронные фреймворки занимают лишь небольшую нишу). Ни одной библиотеки не видел на js, которая бы работала с удобством, хотя бы примерно аналогичным adisp. То исключения вручную везде таскать как параметр, то вместо js компиляторы почти-js в js, то какие-то чудные конфигурации вместо вызовов функций. Друг с другом никто не совместим, переход с одной на другую — нетривиальная задача. Бывает, что 1 человек пишет по несколько control flow библиотек. 90% control flow библиотек (которые с год назад расплодились) заглохло, похоже. «Можно сделать библиотеку» поэтому не очень меня убедило. Сомнительно же как-то, что это мол разработчики асинхронного кода на питоне такие умные, а в толпе программистов на node.js все такие глупые. Скорее на js больше с языком бороться нужно, вот и результат. Сделать-то может и можно, но где она, удобная хорошая надежная библиотека без хаков, почему каждые несколько месяцев находится кто-то, кто пишет еще одну (тут вон даже домен зарегали), хорошую на 80%, а не на 100?
UFO just landed and posted this here
UFO just landed and posted this here
А чем он альтернатив отличается? и чем лучше?
TameJS — это расширение Javascript
Мда… А казалось после нейтивной yieldы в ноде уже ничего не удивит. По теме:
1. Не нравятся вложенные функции — не используйте анонимные функции.
2. Хочется большего — async.
Мда… А казалось после нейтивной yieldы в ноде уже ничего не удивит. По теме:
1. Не нравятся вложенные функции — не используйте анонимные функции.
2. Хочется большего — async.
парсер лох. вот async: github.com/caolan/async
А давно в ноду елды добавили? И ведь это значит, что в хроме должны были появиться.
Вот: habrahabr.ru/blogs/nodejs/116124/
Про нейтивную я образно, со слов авторов. В ноду конечно не добавляли и надеюсь не добавят.
Про нейтивную я образно, со слов авторов. В ноду конечно не добавляли и надеюсь не добавят.
Что меня смущает, что эта штука при импорте любого модуля делает его синтаксический разбор. Преобразует код и отправляет его в v8, который опять делает то же самое. А если добавится еще один слой? Много лишних действий.
Автору большое спасибо, как раз чрезвычайно в тему подобное решение.
Много лет писал на Delphi и C++, от веба довольно далёк. Как-то понадобилось сделать небольшой AJAX-скриптик на свой сайт. Разобрался за пару вечеров, написал на голом JS. Решительно не понимаю зачем все эти костыли.
UFO just landed and posted this here
Sign up to leave a comment.
TameJS — приручаем асинхронное программирование