Pull to refresh

Comments 32

Господа минусующие, пожалуйста, отпишите что не понравилось.
Просто не обращайте внимания.
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):

@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
Вообще оно должно уметь работать с любым v8-based яваскриптом (типа CoffeeScript), но я думаю вы правы — лучше перенести это в блог Node.JS
С клиентским JS мне его не удалось подружить (хотя такая возможность заявлена на сайте в виде ручной компиляции)

Спасибо!
UFO just landed and posted this here
UFO just landed and posted this here
А чем он альтернатив отличается? и чем лучше?
из плюсов — красивый, читающийся код

из минусов — таки расширение языка, пробовал только с nodejs, где он реально облегчил жизнь — потому и делюсь с общественностью
TameJS — это расширение Javascript
Мда… А казалось после нейтивной yieldы в ноде уже ничего не удивит. По теме:
1. Не нравятся вложенные функции — не используйте анонимные функции.
2. Хочется большего — async.

А давно в ноду елды добавили? И ведь это значит, что в хроме должны были появиться.
Вот такой вариант мне нравится больше, чем введение препроцессора.
Что меня смущает, что эта штука при импорте любого модуля делает его синтаксический разбор. Преобразует код и отправляет его в v8, который опять делает то же самое. А если добавится еще один слой? Много лишних действий.
Это же происходит один раз при запуске.
А отладка? На какой строке произошла ошибка?
Автору большое спасибо, как раз чрезвычайно в тему подобное решение.
Много лет писал на Delphi и C++, от веба довольно далёк. Как-то понадобилось сделать небольшой AJAX-скриптик на свой сайт. Разобрался за пару вечеров, написал на голом JS. Решительно не понимаю зачем все эти костыли.
> сделать небольшой AJAX-скриптик
> не понимаю зачем все эти костыли

Fatal Error: Ошибка при построении вывода от частного к общему.
Обновите компилятор, у вас баг.
Видимо сырая бета, или RC :)
Уже в продакшене крутится. Советуете откатиться на стабильный релиз?
UFO just landed and posted this here
Sign up to leave a comment.

Articles