LINUX.ORG.RU

[v8]использование javascript для численных задач

 


0

1

В свете новостей о том, что движок js V8 все больше и лучше оптимизируют, можно ли уже сейчас использовать яваскрипт для _десктоп-ориентированных_ вычислительных задач? Насколько я понял, у node.js другие задачи.
В связи с этим вопросы, которые остались после прочтения википедии:
* как у JavaScript V8 с ffi ?
* есть ли namespace и модули?
* есть ли стандартная библиотека с часто используемыми алгоритмами (сортировка, графы и проч.) и структурами данных?
* как у V8 с многопоточностью и поддержкой SMP?
* есть ли развитые привязки к Qt/Gtk/Tk

заранее спасибо

★★

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

tensai_cirno ★★★★★
()

* есть ли развитые привязки к Qt/Gtk/Tk

В Qt из коробки. Причем можно даже многопоточность лепить :)

Gorthauer ★★★★★
()

Вы хотите считать что-то на стороне клиента при помощи JavaScript? O_o

Это же будет оочень медленно...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Вы все же посмотрите, что такое V8 - ну хоть в Википедии. Никто не предлагает делать это в браузерной реализации javascript.

shylent
()
Ответ на: комментарий от shylent

Вообще я был удевлен, что SpiderMonkey сливает безбожно tcl:
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=tcl&lang2=j...
хоть и горбатые тут тесты ...
и судя по тестам: http://weblogs.mozillazine.org/roadmap/archives/2008/09/tracemonkey_update.html

V8 будет УЖЕ чем-то напоминать tcl.

Такой вот он прогресс и развитие - бег по кругу.))

elipse ★★★
()
Ответ на: комментарий от elipse

V8 будет УЖЕ чем-то напоминать tcl.

Такой вот он прогресс и развитие - бег по кругу.))

В итоге все вернутся к лиспу. Ну а лиспоненавистники — к Алголу :-)

decadent
()
Ответ на: комментарий от elipse

а ничего, что по той ссылке, что вы привели, написано «OUT-OF-DATE!»? смотрите свежие тесты, где v8 отстает от gcc всего раза в 3. (тогда как tcl сливает gcc раз в 20-50)

bik ★★
() автор топика
Ответ на: комментарий от elipse

> Вообще я был удевлен, что SpiderMonkey сливает безбожно tcl

Не могу сказать, что мне очень интересно сравнение «производительности» двух мертвых языков (точнее, мертворожденного и мертвого).

С другой стороны, я должен сказать, что, скорее всего, javascript действительно далеко не лучший выбор для CPU-intensive (числодробильных) задач.

shylent
()
Ответ на: комментарий от Eddy_Em

не будет, V8 стал де факто самым быстрым компилятором из динамических языков. и потом, ffi никто не отменял

bik ★★
() автор топика
Ответ на: комментарий от shylent

как компромисс между скоростью и выразительными возможностями синтаксиса, почему бы и нет?

bik ★★
() автор топика
Ответ на: комментарий от bik

ну это все костыли, да
можно tcl на java (jacl) и tcl на net запустить.
Ничего, когда начнут делать аналог PyPy на JavaScript, оно будет быстрее и С и ассемблера ))

elipse ★★★
()
Ответ на: комментарий от elipse

> можно tcl на java (jacl) и tcl на net запустить.

и он все равно будет тормозить. разве нет? тут дело не хост-машине, а в высокоуровневых оптимизациях

bik ★★
() автор топика
Ответ на: комментарий от bik

> как компромисс между скоростью и выразительными возможностями синтаксиса, почему бы и нет?

Ключевое слово - «компромисс». Когда вас интересует именно производительность вычислений, такие критерии, как «выразительные возможности синтаксиса» отступают на второй план - за все надо платить.

shylent
()
Ответ на: комментарий от shylent

а если важней именно компромисс? задачи-то разные бывают

bik ★★
() автор топика
Ответ на: комментарий от elipse

можно ссылку? и потом, jacl, похоже, полумертвый. а tcl под .нет, образно говоря, еще в пеленках.

bik ★★
() автор топика
Ответ на: комментарий от bik

> полумертвый.

Я не понимаю этих молодежных гоцалок и игр в обновления.
Есть плохая сделанная работа и надо дотрахивать что-то постоянно - это да.

можно ссылку?


раз такой умный - ищи сам.

elipse ★★★
()
Ответ на: комментарий от bik

Дело не только в SBCL.

Подавляющее большинство компиляторов CL точно так же уделывает V8 одной левой. И, кстати, некоторые компиляторы Scheme - тоже.

но тут есть оправдание - про него многие забыли

Не надо тут выпячивать свое невежество. Ты про него даже и не знал. Так вот иди и узнай. И не страдай перверсиями, вроде применения JS вне браузеров.

Вообще JS кроме ковыряния в браузере не подходит практически ни для чего. Язык - дерьмо.

anonymous
()
Ответ на: комментарий от anonymous

> Вообще JS кроме ковыряния в браузере не подходит практически

ни для чего. Язык - дерьмо.


А мне нравится, очень приятный такой язык и с замыканиями работать удобней, чем в CL, например.

archimag ★★★
()
Ответ на: комментарий от anonymous

> JS кроме ковыряния в браузере не подходит практически ни для чего

Напротив - худшее применение javascript, которое только можно придумать - в браузере. В основном, из-за его реализации этими браузерами. Что не меняет того факта, что это - самое распространенное его применение.

shylent
()
Ответ на: комментарий от archimag

>и с замыканиями работать удобней, чем в CL, например.

Тем, что не надо funcall писать?

(set-macro-character
  #\{ (lambda (s c)
        (declare (ignore c))
        (let ((form (read-delimited-list #\} s t)))
          (if (null form)
            '()
            (cons 'funcall form)))))

(set-macro-character
  #\} (lambda (s c)
        (declare (ignore s c))
        (error "Unmatched close brace.")))
anonymous
()
Ответ на: комментарий от shylent

Он слишком тупой и простой для чего-то еще.

anonymous
()
Ответ на: комментарий от shylent

> худшее применение javascript, которое только можно придумать

- в браузере


А что, собственно, не так?

Тем, что не надо funcall писать?


Нет, тем что синтаксис CL вообще получается слишком громоздким. Просто для таких задач синтаксис JS подходит лучше.

Он слишком тупой и простой для чего-то еще.


Это называется «ниасилил».

archimag ★★★
()
Ответ на: комментарий от anonymous

>Подавляющее большинство компиляторов CL

Подавляющее число компиляторов CL стоит как космический корабль. Да и если рассмотреть вариант типа «много мелких числодробильных скриптов», то еще не ясно кто кого уделает.

Обидно, что гуглевцы не сделали оптимизатор V8 отдельной сущностью. SSA оптимизатор, с JIT'ом был бы ой как полезен. А то получается как с GIMPLE в составе GCC >4.

Macil ★★★★★
()

Кстати, а никто не знает как к V8 прикрутить DOM? Чтобы можно было на стороне сервера генерить HTML.

Macil ★★★★★
()
Ответ на: комментарий от archimag

Closure templates — штука хорошая, но намного прикольнее манипулировать DOM деревом, которое, допустим получаешь из HTML, на стороне сервера.

Macil ★★★★★
()
Ответ на: комментарий от Macil

А чем прикольнее? Для генерации контента лучше шаблонов ещё ничего не придумали. Я пробовал работать с DOM на сервере и не скажу, что мне это понравилось.

archimag ★★★
()
Ответ на: комментарий от Macil

> О! А можно подробнее?

Я использовал решение (в разных вариантах) для генерации разметки на базе libxml2 (cl-libxml2) когда начинал писать для веб на CL. В последствии всё переписал на базе шаблонов, при этом произошло сокращение и прощение кода. Единственное, где у меня до сих пор осталось решение на базе cl-libxml2 - генерация html для wiki-страниц, там шаблоны не очень хорошо ложатся, а вот DOM даёт возможность доступа к любой части создаваемой страницы, что важно для некоторых деталей.

archimag ★★★
()

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

anonymous
()

пока в js не будет опциональной типизации и любая численная операция будет неявно кастовать double <-> int я бы не советовал. Те когда бы пишите `i += j;` в js на траслируемом коде С вы получаете `double temp = i + j; if(temp <= 0xFFFFFFFF) i = (int)temp; else i2 = temp;` где `i2` - переименованая `i` по стратегии http://en.wikipedia.org/wiki/Static_single_assignment_form (по коей все js движки и работают когда транслируют в jit). Те если внимательно посмотреть то на каждую численную операцию у нас потенциально новый бранч кода. Итого или ждите es6(harmony) http://wiki.ecmascript.org/doku.php?id=strawman:types и то если одобрят. Или пишите на дин. языке с опциональной типизаций или там где int и double явно разделены. Или вообще на С.

bga_ ★★★★
()

Да еще в js массивы - хеш таблицы всегда. Те привет оверхед по памяти и времени доступа в угоду дырявости массивов.

bga_ ★★★★
()
Ответ на: комментарий от archimag

>разметки на базе libxml2

Я имел ввиду именно «браузерную» DOM. Вроде как браузер — только без рендеринга.

Macil ★★★★★
()
Ответ на: комментарий от Macil

> Я имел ввиду именно «браузерную» DOM.

А чем браузерная реализация DOM отличается от других реализаций?

archimag ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.