URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 109072
[ Назад ]

Исходное сообщение
"Компания Bloomberg представила открытый оптимизирующий компи..."

Отправлено opennews , 12-Сен-16 09:23 
Компания Bloomberg опубликовала (https://www.techatbloomberg.com/blog/bucklescript-1-0-releas.../) первый стабильный релиз проекта BuckleScript, позволяющего компилировать проекты на языке OCaml в представление на JavaScript. BuckleScript позиционируется как альтернатива таким системам, как TypeScript (https://www.opennet.me/opennews/art.shtml?num=39488), дающая возможность разрабатывать web-проекты с использованием статической типизации, без потерь в удобстве разработки. BuckleScript позволяет организовать бесшовное использование кода OCaml в JavaScript, сохраняя имена переменных и генерируя читаемый код. Исходные тексты проекта написаны на языке OCaml и распространяются (https://github.com/bloomberg/bucklescript/) под лицензией GPLv2.


В отличие от TypeScript в BuckleScript предоставляется полноценная система типов, без нагромождения кода аннотациями. Корректность использования типов проверяется на этапе компиляции, что гарантирует отсутствие ошибок типизации во время выполнения проекта. Информация о типах также позволяет задействовать в BuckleScript большое число оптимизаций, выполняемых на этапе компиляции, таких как свёртывание констант, удаление мёртвого кода (DCE) и  оптимизация хвостовой рекурсии (TCO).

Из достоинств BuckleScript также отмечается возможность применения в проектах уже существующего языка OCaml, без необходимости изучения нового языка программирования. Написанный на  OCaml код может применяться не только для преобразования в JavaScript, но и собираться в виде нативных исполняемых файлов или в форме самодостаточных unikernel, работающих (https://www.opennet.me/opennews/art.shtml?num=42515) поверх гипервизора. Применение интерфейса FFI (Foreign Function Interface) позволяет моделировать в программах на OCaml родную систему объектов JavaScript и использовать в проектах существующие библиотеки JavaScript. Компилируемые модули OCaml отражаются в модули JavaScript.  

Для управления генерацией кода можно применять специальные атрибуты OCaml. Обеспечивается достаточно высокая скорость компиляции, например, по сравнению с TypeScript проект собирается как минимум в десять раз быстрее. Компилятор может быть собран в виде нативного исполняемого файла или в представлении на JavaScript, при этом вариант на JavaScript также обладает отличной производительностью и позволяет на лету компилировать проекты, практически в режиме реального времени.

    


    

URL: https://www.techatbloomberg.com/blog/bucklescript-1-0-releas.../
Новость: http://www.opennet.me/opennews/art.shtml?num=45124


Содержание

Сообщения в этом обсуждении
"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 09:23 
Goodbye, TS!

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 15:07 
</sarcasm>

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено омномномнимус , 12-Сен-16 10:07 
OCaml -> JS. Довольно необычно, хотелось бы увидеть примеры решения задач, для которых это необходимо.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено A.Stahl , 12-Сен-16 10:15 
Просто нашли большой коллектив толковых окамлистов и оказалось проще им дать транслятор в ЯваСкрипт, чем их переучивать на ЯваСкрипт.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено омномномнимус , 12-Сен-16 11:01 
Но ведь чтобы написать транслятор из OCaml в JS уже нужно знать оба языка ;-)

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено абвгдейка , 12-Сен-16 19:40 
ужас! Значит Ритчи знал Си, еще до того, как его придумал :)

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено IB , 12-Сен-16 11:32 
> Просто нашли большой коллектив толковых окамлистов и оказалось проще им дать транслятор
> в ЯваСкрипт, чем их переучивать на ЯваСкрипт.

Меня больше удивило, что Блумберг.
Хотя для обработки текста / данных Окамл заруливает.
Эдакий типизированный быстрый перл (с библиотеками само собой, стандартная - редкое Г).


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 13:47 
>Меня больше удивило, что Блумберг

ничего удивительного. Эта компания активно участвует в конференциях по плюсам и функциональщине, работает со студентами, и вообще видно что вкладывает много денег в исследовательскую работу.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено IB , 12-Сен-16 11:29 
JSocaml - лет 10 наверное

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено омномномнимус , 12-Сен-16 11:38 
ну так а примеры использования?

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Анонимомус , 12-Сен-16 11:35 
> ...сохраняя имена переменных и генерируя читаемый код.

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


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено омномномнимус , 12-Сен-16 11:39 
имхо, это не главная цель проекта.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 13:02 
>OCaml -> JS. Довольно необычно, хотелось бы увидеть примеры решения задач, для которых это необходимо.

Потому что у Bloomberg дохрена кода для финансового анализа, и кому-то захотелось запустить всё это в браузере.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 16:38 
Скорее в Node.js

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Led , 12-Сен-16 21:59 
> OCaml -> JS. Довольно необычно

Что же здесь "необычно"? Можно есть самую разную еду: хоть икру, хоть вермишель, хоть репу. А на выходе получить практически одно и то же, как в данном случае.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 10:22 
это что-то типа gopherjs ?

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 10:29 
А плюсы в javascript канпелируются?

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 10:44 
asm.js LLVM Emscripten

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено A.Stahl , 12-Сен-16 11:07 
>канпелируются?

Ну-у-у... Если ты объяснишь значение этого слова, то мы, возможно, и ответим. А пока ты хрюкочешь как зелюк в мове, то хрен тебя кто поймёт.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 11:14 
Прости. Конпеляются.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено ...aNALaGReSSoR... , 13-Сен-16 13:12 
а я думал, ты в комплюхтерах разбираешься

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено ueueue , 13-Сен-16 13:26 
Конпелируй в месте с нами, конпелируй лучше нас!

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено ueueue , 13-Сен-16 13:26 
> Конпелируй в месте с нами, конпелируй лучше нас!

(c) бохаце


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено th3m3 , 12-Сен-16 11:20 
Ещё один компилятор. Нафиг они нужны, обычного js достаточно.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 15:03 
Вам не нужен - не пользуйтесь, никто не заставляет.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено freehck , 12-Сен-16 11:28 
Я пока как-то не уловил, чем этот BuckleScript отличается от Ocsigen.

Вот тут можно попробовать демки. В частности трансляцию функционального кода.
http://bloomberg.github.io/bucklescript/js-demo/

Попробовал на простом функциональном примере, вроде корректно пашет.

let rec ifact acc = function
| 0 | 1 -> 1
| n -> ifact (acc*n) (n-1)
    
let fact = ifact 1


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено IB , 12-Сен-16 11:33 
> Я пока как-то не уловил, чем этот BuckleScript отличается от Ocsigen.
> Вот тут можно попробовать демки. В частности трансляцию функционального кода.
> http://bloomberg.github.io/bucklescript/js-demo/

Тем, что это только часть оксигена, не?


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено freehck , 12-Сен-16 11:39 
> Тем, что это только часть оксигена, не?

Я к тому, что возможно оно умеет что-то, что не умеет Ocsigen в плане генерации js. Если оно так, то хочется узнать, что имено.

Судя по тому, что написано в лицензии, их код основан на Ocsigen.
https://github.com/bloomberg/bucklescript#licensing


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено H2O , 12-Сен-16 11:53 
Попробовал код быстрой сортировки из Wiki, так он даже не задумывался... сразу выплюнул код JS! Такое ощущение что компилятор его уже знал.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Vkni , 12-Сен-16 19:07 
> Попробовал код быстрой сортировки из Wiki, так он даже не задумывался... сразу
> выплюнул код JS! Такое ощущение что компилятор его уже знал.

А почему он должен задумываться? Проект на 2 тыс. строк, не использующий Core, но зато с yacc/lex компилируется Ocaml'ом с 0-я на ноутбучном Core2Duo примерно 1.5 сек.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 12:05 
> без необходимости изучения нового языка программирования

Ага, а маргинальный убогий ocaml учить не надо.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Andrey Mitrofanov , 12-Сен-16 12:15 
>> без необходимости изучения нового языка программирования
> Ага, а маргинальный убогий ocaml учить не надо.

Так, он не "новый" же!? :D


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 16:42 
OCaml (не путать с ML) - 1996 г.р.
Javascript (не путать с Java) - 1995 г.р.

На фоне JS, в который он компилируется - да, новый.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено омномномнимус , 12-Сен-16 18:46 
не шлангуй

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 22:22 
Не знаю как ML по сравнению с OCaml, а Java по сравнению с JavaScript - просто идеальный язык...

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Vkni , 13-Сен-16 02:10 
> Не знаю как ML по сравнению с OCaml

Pascal vs Delphi


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено ВИРТ , 13-Сен-16 21:49 
Паскаль не трожь, БАЛВАН

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Led , 13-Сен-16 22:11 
> Паскаль не трожь, БАЛВАН

Вирта не трожь, придурок!


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Vkni , 12-Сен-16 19:09 
> Так, он не "новый" же!? :D

Дык всё старое, как говно мамонта. Хаскель вон на пару лет моложе bash'а.

Если хочется чего-то более-менее нового, прогрессивного, добро пожаловать в F*/AGDA и т.д.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 22:35 
> Если хочется чего-то более-менее нового, прогрессивного, добро пожаловать в F*/AGDA и т.д.

Вроде слишком математично. Нет, само по себе это, конечно, прекрасно, но если я правильно понимаю, для написания web-приложений она не приспособлена.



"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Vkni , 13-Сен-16 02:10 
> Вроде слишком математично. Нет, само по себе это, конечно, прекрасно, но если
> я правильно понимаю, для написания web-приложений она не приспособлена.

Оно для написания чего угодно ещё не приспособлено. До более-менее рабочей версии - 5 лет. Но рабочая версия как раз и означает закостенение. :-)


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 16:12 
Для тех, кто знаком с языками семейства ML, учить там особо нечего.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Vkni , 12-Сен-16 21:55 
> Для тех, кто знаком с языками семейства ML, учить там особо нечего.

Да и для тех, кто не знаком, тоже не очень-то много надо. :-) Хотя SML, конечно, проще.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Sergey , 12-Сен-16 12:31 
Надо заметить, что есть компилятор байткода для JVM-языков, http://teavm.org TeaVM
Я попробовал - Котлин компиляется.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Crazy Alex , 12-Сен-16 16:25 
Тут основная фишка вот в чём: "BuckleScript позволяет организовать бесшовное использование кода OCaml в JavaScript, сохраняя имена переменных и генерируя читаемый код". Читаемый генерированный джаваскрипт из байткода - очень сомнительно. А иначе - отладка становится на редкость неприятным делом.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Vkni , 12-Сен-16 19:04 
> Читаемый генерированный джаваскрипт из байткода - очень сомнительно.

Невозможно. В Zink-машине слишком низкоуровневый код.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Crazy Alex , 13-Сен-16 02:42 
Ну, джава-код довольно читаемый получается. Правда, в основном потому, что он, в общем-то, чуть ли не зеркало джавы ранних версий.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено pavlikvk , 12-Сен-16 13:47 
Зачем это нужно непойму. Готовую бизнесс логику что ли на клиенте гонять.

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 16:16 
А Блумберг - это идеологически правильно? А вдруг хотят, чтобы он нам троянского коня везде вставлял при компиляции? И зонды!

"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Andrey Mitrofanov , 12-Сен-16 16:37 
> А Блумберг - это идеологически правильно? А вдруг хотят, чтобы он нам

С одной стороны, вроде и продорасы, как LF или MS, с другой: https://github.com/bloomberg/bucklescript/blob/master/LICENS... прогрессивные продорасы. Надо смотреть, как  они в одной банке с другими пауками уживутся/уживаются.

> троянского коня везде вставлял при компиляции? И зонды!


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено freehck , 12-Сен-16 22:50 
> С одной стороны, вроде и продорасы, как LF или MS, с другой ... прогрессивные продорасы.

Ну так ещё бы он был не GPL. Они ж фактически отфоркали js_of_ocaml.
Хотя результат у них и правда получается получше в плане читаемости, тут не поспоришь.
Но это на простых примерах. А вот на сложных - это ещё надо смотреть.


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено Аноним , 12-Сен-16 22:38 
> А Блумберг - это идеологически правильно? А вдруг хотят, чтобы он нам троянского коня везде вставлял при компиляции?

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


"Компания Bloomberg представила открытый оптимизирующий компи..."
Отправлено xm , 14-Сен-16 13:38 
Bloomderg, Карл! Ждём новый язык программирования от Reuters и процессор от ИТАР-ТАСС.