The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проекты по компиляции кода на языках Clojure и Pascal в JavaScript-представление

21.07.2011 12:59

В рамках проекта ClojureScript разработан компилятор, позволяющий преобразовать код на языке Clojure в представление на языке JavaScript. Итоговый JavaScript код может быть выполнен в обычном браузере или использован для работы с серверной платформой node.js. Clojure представляет собой диалект языка Lisp, ориентированный на функциональное программирование и многопоточность. Ранее Clojure можно было использовать только совместно с виртуальными машинами JVM и CLR.

Как и оригинальная реализация Clojure, проект ClojureScript распространяется в рамках открытой лицензии EPL (Eclipse Public License). Разработчиком проекта является Рич Хикки (Rich Hickey), автор языка Clojure. Пример компиляции Clojure-кода и встраивания результирующего JavaScript в web-страницы можно найти в кратком руководстве.

Одновременно анонсирован проект OP4JS, целью которого является создания транслятора с языка Object Pascal в код на языке JavaScript.

Дополнительно можно отметить тенденцию использования JavaScript в роли "ассемблера" для Web. В частности, день за днем растет число проектов по созданию компиляторов, написанных на JavaScript или преобразующих в JavaScript код на других языках программирования. Из наиболее интересных можно отметить:

  • Python: PYXC-PJ (генератор JavaScript-кода а основе кода на языке Python), Pyjamas (компилятор с Python на JavaScript), Skulpt (реализация языка Python, написанная на JavaScript), PyCow (преобразователь кода Python в MooTools JS), PyvaScript (поддержка синтаксиса, напоминающего Python, для JavaScript);
  • Ruby: HotRuby (запускает объектный код YARV внутри браузера), rb2js (преобразует код Ruby в JavaScript), RubyJS (форк rb2js), Red (компилятор Ruby в JavaScript), Opal (компилятор Ruby в JavaScript), 8ball (преобразователь кода на Ruby в код на JavaScript);
  • C/C++: Emscripten (компилятор байткода LLVM в JavaScript), Maja (компилятор Vala в JavaScript), ClueCC (компилятор кода на Си в представление на языках Lua, JS, Perl 5, C, Java и CL);
  • Java: GWT (Google Web Toolkit, компилирует java-код в JavaScript), Java2Script (Eclipse-плагин для компиляции Java в JavaScript), j2js (преобразует Java-байткод в JavaScript);
  • PHP: phype (PHP-компилятор, написанный на JavaScript);
  • Perl: p2js (конвертер Perl-кода в JavaScript);
  • Basic: qb.js (реализация QBASIC на JavaScript), NS Basic (компилятор Visual Basic в JavaScript);
  • Smalltalk: Silver Smalltalk, JTalk, Lively Kernel;
  • Haskell: UHC (Utrecht Haskell Compiler), YHC (York Haskell Compiler), jshaskell;
  • OCaml: Ocamljs, O'Browser, Js_of_ocaml;
  • Scala: scalagwt;
  • Scheme: Fargo (реализация Scheme на JavaScript), Moby Scheme, nconc, scheme2js;
  • Lisp: EdgeLisp (Lisp на JavaScript), Parenscript, Ralph, Sibilant, Spock.


  1. Главная ссылка к новости (http://www.readwriteweb.com/ha...)
  2. OpenNews: Релиз серверной JavaScript-платформы node.js 0.4
  3. OpenNews: На языке JavaScript написан полноценный эмулятор ПК, способный загрузить Linux
  4. OpenNews: Представлен проект JSMad, с реализацией проигрывателя MP3 на языке JavaScript
  5. OpenNews: Полноценная программа для чтения PDF, написанная целиком на JavaScript
  6. OpenNews: Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/31249-closure
Ключевые слова: closure, lisp, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (29) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 14:25, 21/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Половина списка, если не больше, протухла много-много лет назад.
     
     
  • 2.7, Andrey Mitrofanov (?), 14:50, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Именно для этого нужен SourceForge! Ж)
     
     
  • 3.27, Avator (ok), 20:38, 23/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    причем тут SourceForge? Проекты хостятся на совершенно разных ресурсах.
     
     
  • 4.29, Andrey Mitrofanov (?), 12:09, 24/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Правда? Не знал, что бизнес захоронения мёртвого кода сброшенных проектов так разросся... Чё-то про него в прессе не пишет обзоров -- я всё пропустил.
     

  • 1.3, Аноним (-), 14:33, 21/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ассемблер для web был придуман давно - это java bytecode.
     
     
  • 2.5, namefields (?), 14:44, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    всё надеетесь? ну-ну...
     
  • 2.12, Аноним (-), 16:54, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Ассемблер для web был придуман давно - это java bytecode.

    Веб-аналитика не согласна с вами: JS есть у куда большего числа пользователей чем тормознутая и переросшая ява.

     
     
  • 3.15, Crazy Alex (??), 17:54, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, но что-то компактное и независимое от исходного языка было бы очень неплохо иметь. Это же совершенно лишний шаг - компиляция кода на нормальных языках в JS (что явно особо хороший JS не выдаст), чтобы потом браузер пыхтел, преобразуя это в свой байткод. Эх, где там NaCl - на нём все проблемы решились бы предельно элегантно, веб наконец-то превратился бы в то, к чему идёт дело - в систему запуска полноценного софта без установки... И всё наконец пошло бы на новый виток - репозитории доверенного софта, какие-то механизмы фиксации версий приложения и т.д.
     
     
  • 4.19, all_glory_to_the_hypnotoad (ok), 00:01, 22/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > И всё наконец пошло бы на новый виток - репозитории доверенного софта, какие-то механизмы фиксации версий приложения и т.д.

    ну-ну. Будет новая эра спам ботнетов, теперь уже не только windows онли

     
     
  • 5.21, Crazy Alex (ok), 02:08, 22/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> И всё наконец пошло бы на новый виток - репозитории доверенного софта, какие-то механизмы фиксации версий приложения и т.д.
    > ну-ну. Будет новая эра спам ботнетов, теперь уже не только windows онли

    Это вы о фиксации версий или о чём-то другом? Если о ней - на десктопе это прекрасно решается дистрибутивами вроде Дебиана, где к выпущенному релизу применяются только security fixes, не вносящие нового функционала и, соответственно, не мешающие пользователю. В вебе пока в этом плане сплошное хамство (что ещё раз показал недавно гугль, сменив интерфейс на какое-то извращение).

     
  • 4.22, Аноним (-), 02:32, 22/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну да, но что-то компактное и независимое от исходного языка было бы очень неплохо иметь

    Это не про яву. Компактной ее может назвать разве что iZEN (бешеному быдлокодеру 100 метров - не даунлоад).

     
     
  • 5.24, bvf (ok), 14:13, 22/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    В следующей версии обещают, сделать скачивание явы модульным. В начале нужно будут поставить микроядро которое будет весит где-то 5-7 метров, но по необходимости ядро сможет докачивать нужные либы прямо онлайн, прямо в момент запуска апплета/приложения. Это обещают сделать с выходом JavaFXv2.
     
  • 4.30, anonymous (??), 17:12, 21/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > веб наконец-то превратился бы в то, к чему идёт дело

    …в сисему запуска блобов для прогнившего x86. именно об этом все и мечтали, без сомнения.

     

  • 1.4, Aztec (?), 14:44, 21/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "ClueCC (компилятор кода на Си в представление на языках Lua, JS, Perl 5, C, Java и CL);"

    Си в Си?

     
     
  • 2.6, Andrey Mitrofanov (?), 14:49, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Си в Си?

    Так надо.(тм)

    ""What's the 'c' target?

    That's C code emitted by Clue. That is, we're compiling C into C. Clue's output code uses double precision floats for all numbers, but even then it's impressively fast.""

     

  • 1.8, cobold (ok), 16:12, 21/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    CoffeeScript забыли, очень ладная штучка : http://jashkenas.github.com/coffee-script

    Во тут отзывы были: http://habrahabr.ru/blogs/javascript/118721/#habracut

     
  • 1.9, anon8 (ok), 16:39, 21/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Мда, скоро для того чтобы серфить по тырнету придется покупать 8ми ядерный ЦПУ и 16 гигов ОЗУ.
     
     
  • 2.13, Аноним (-), 16:54, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Мда, скоро для того чтобы серфить по тырнету придется покупать 8ми ядерный
    > ЦПУ и 16 гигов ОЗУ.

    Конечно %) не забудьте пару наших скриптиков запустить.

     
  • 2.14, hummermania (ok), 17:31, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    ...и RAID x из 4ТБ дисков, чтобы хоть пару фильмов влезло....
     

  • 1.10, Xasd (ok), 16:39, 21/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    для Python можно ещё добавить что есть CPython@Emscripten

    http://syntensity.com/static/python.html

    (хотя про Emscripten и говорилось в новости)

     
     
  • 2.11, Xasd (ok), 16:44, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    проблем у него конешно дофигища (например нет юникода, и нет текстового-кодека 'utf-8') , но зато это самый чистый CPython по сравнению с другими альтернативными реализациюми

    ...в альтернативных-же реализация -- то и дело встречаются глупые ошибки, типа неправильное восприятие строковых-констант типа 'abc\'123\'xyz'.. или нереализованные мезанизмы Exceptions, ...

    вобщем думаю что Emscripten-версия CPython -- самая перспективная.... остальынеже альтернативные реализации будут ещё долго исправлять свои детские баги

     
     
  • 3.23, Аноним (-), 02:34, 22/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    На перспективы этого "самого перспективного" я бы и рубля не поставил.
     

  • 1.16, Crazy Alex (??), 18:01, 21/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Принципиальная проблема всех этих извращений - крайне неудобная отладка, так как браузер ни разу не расчитан на подобное, и никакого debug info держать не получается. В результате в случае ошибки видишь вместо кода что-то невразумительное, и как это соотносится с исходниками - неведомо.

    А извращения - потому что (за исключением CoffeeScript) всё это многообразие от JS принипиально отличается и эффективно в него не транслируется - всегда будут какие-то фичи, которые будут реализованы с дикими потерями производительности. Поэтому предрекаю, что полноценной (=production) реализации ни одного из этих трансляторов не будет.

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

     
     
  • 2.18, all_glory_to_the_hypnotoad (ok), 23:41, 21/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А извращения - потому что (за исключением CoffeeScript) всё это многообразие от JS принипиально отличается и эффективно в него не транслируется

    многие фичи из этого многообразия в принципе не транслируются один к одному на веб платформу. Т.е. получаются после трансляции алгоритмы с потерей первоначальной логики.

     
     
  • 3.20, Crazy Alex (ok), 01:57, 22/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и в результате получается "почти язык" - если пытаться на нём писать, выяснится, что каких-то привычных идиоматичных кусков нет.
     
  • 2.28, Avator (ok), 20:53, 23/07/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > А извращения - потому что (за исключением CoffeeScript) всё это многообразие от
    > JS принипиально отличается и эффективно в него не транслируется - всегда
    > будут какие-то фичи, которые будут реализованы с дикими потерями производительности. Поэтому
    > предрекаю, что полноценной (=production) реализации ни одного из этих трансляторов не
    > будет.

    Полностью поддерживаю, единственное, добавил бы к CoffeeScript еще и GWT. Честно говоря с большим недоверием относился к инструментам генерирующим код. Как-то казалось ненадежно, но когда _внимательно_ рассмотрел GWT понял, что этот инструмент имеет шансы выжить.

    > Уж лучше тогда изобрести удобный именно для представления разннобразных языков байткод
    > и интегрировать его в браузеры, благо опыт уже накоплен и что
    > нужно реализовывать понятно.

    Хотелось бы... но ведь не договорятся! =/

     
  • 2.31, anonymous (??), 17:15, 21/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > и интегрировать его в браузеры

    вообще-то с точностью до наоборот: «и переписать на нём браузер». чтобы браузер был просто одним из компонентов среды, а не мутантом, в которого пытаются запихнуть то, что там не нужно.

     

  • 1.17, Аноним (-), 23:14, 21/07/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Да это нифига не для продакшена и даже не для чего-то мало-мальски серьезного, неужели непонятно!

    "Когда коту заняться нечем, он яйца лижет" (С)

     
     
  • 2.32, anonymous (??), 17:16, 21/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    когда кодеру заняться нечем, он кложуру пишет.

    obvious fix

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру